@tscircuit/schematic-trace-solver 0.0.125 → 0.0.126

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 (18) hide show
  1. package/dist/index.d.ts +45 -1
  2. package/dist/index.js +427 -35
  3. package/lib/solvers/NetLabelTraceCollisionSolver/NetLabelTraceCollisionSolver.ts +15 -0
  4. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +69 -11
  5. package/lib/solvers/TraceElbowTransitionSimplificationSolver/TraceElbowTransitionSimplificationSolver.ts +216 -0
  6. package/lib/solvers/TraceElbowTransitionSimplificationSolver/generateElbowTransitionSimplificationCandidates.ts +186 -0
  7. package/lib/solvers/TraceElbowTransitionSimplificationSolver/types.ts +10 -0
  8. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.ts +3 -0
  9. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/OverlapAvoidanceStepSolver/OverlapAvoidanceStepSolver.ts +16 -0
  10. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +56 -13
  11. package/package.json +1 -1
  12. package/site/bug-reports/bug-report-20260806T093501Z.page.tsx +4 -0
  13. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +3 -3
  14. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +6 -6
  15. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +135 -0
  16. package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.json +505 -0
  17. package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.test.ts +66 -0
  18. package/tests/examples/__snapshots__/example33.snap.svg +1 -1
@@ -0,0 +1,135 @@
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="-12,6.88 -8.9,3.3" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 256.5635852488838,207.3424838763023" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8,6.88 -8.3,3.3" data-type="line" data-label="" points="284.3459566727303,96.83038421255722 275.0851661981148,207.3424838763023" fill="none" stroke="hsl(200, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8,6.12 -8.1,3.3" data-type="line" data-label="" points="284.3459566727303,120.29105341491649 281.2590265145252,207.3424838763023" fill="none" stroke="hsl(200, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4,6.88 -8.5,3.3" data-type="line" data-label="" points="407.82316300093714,96.83038421255722 268.9113058817045,207.3424838763023" fill="none" stroke="hsl(312, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-10,-6.12 -7.9,3.3" data-type="line" data-label="" points="222.60735350862694,498.13130477922925 287.43288683093544,207.3424838763023" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.5,3.3 -8,-8.2" data-type="line" data-label="" points="299.78060746375616,207.3424838763023 284.3459566727303,562.3394520698968" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.3,3.3 -5,-8.2" data-type="line" data-label="" points="305.9544677801665,207.3424838763023 376.9538614188854,562.3394520698968" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.1,3.3 -2,-8.2" data-type="line" data-label="" points="312.12832809657687,207.3424838763023 469.5617661650405,562.3394520698968" fill="none" stroke="hsl(288, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8.9,3.3 -8.7,3.3" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 262.73744556529414,207.3424838763023" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.9,3.3 -12,6.88" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 160.8687503445235,96.83038421255722" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.9,3.3 -4,6.12" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -12,6.88" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 160.8687503445235,96.83038421255722" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -4,6.12" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.88 -4,6.12" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -12,6.12" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 160.8687503445235,120.29105341491649" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -10,-6.88" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 222.60735350862694,521.5919739815886" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -8,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -5,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -2,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -10,-6.88" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 222.60735350862694,521.5919739815886" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -8,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -5,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -2,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -8,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -5,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -2,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8,-8.8 -5,-8.8" data-type="line" data-label="" points="284.3459566727303,580.8610330191278 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8,-8.8 -2,-8.8" data-type="line" data-label="" points="284.3459566727303,580.8610330191278 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-5,-8.8 -2,-8.8" data-type="line" data-label="" points="376.9538614188854,580.8610330191278 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -8.7,3.499999999999999 -8.9,3.499999999999999 -8.9,3.3" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 262.73744556529414,201.16862355989196 256.5635852488838,201.16862355989196 256.5635852488838,207.3424838763023" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.1,3.3 -7.1,3.5 -2,3.5 -2,-8.200000000000003" data-type="line" data-label="" points="312.12832809657687,207.3424838763023 312.12832809657687,201.16862355989196 469.5617661650405,201.16862355989196 469.5617661650405,562.3394520698969" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-10,-6.88 -10,-9.000000000000002 -8,-9.000000000000002 -8,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 222.60735350862694,587.0348933355383 284.3459566727303,587.0348933355383 284.3459566727303,580.8610330191278" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5,-8.8 -5,-9 -2,-9 -2,-8.8" data-type="line" data-label="" points="376.9538614188854,580.8610330191278 376.9538614188854,587.0348933355382 469.5617661650405,587.0348933355382 469.5617661650405,580.8610330191278" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-12,6.88 -12,8.301 -5.9,8.301 -5.9,5.920000000000001 -4,5.920000000000001 -4,6.12" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 160.8687503445235,52.96510666446176 349.1714899950389,52.96510666446176 349.1714899950389,126.46491373132682 407.82316300093714,126.46491373132682 407.82316300093714,120.29105341491649" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.7,3.299999999999999 -7.7,4.840999999999999 -8.699999999999998,4.840999999999999 -8.699999999999998,4.71 -12,4.71 -12,6.12" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 293.6067471473458,159.77289013836065 262.7374455652942,159.77289013836065 262.7374455652942,163.8167686456094 160.8687503445235,163.8167686456094 160.8687503445235,120.29105341491649" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-8" data-y="0" x="191.73805192657522" y="207.3424838763023" width="185.2158094923102" height="203.73739044154115" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-11.6275" data-y="6.5" x="146.97756463260032" y="96.83038421255722" width="50.78000110247501" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-9.8075" data-y="-6.5" x="208.7161677967037" y="498.13130477922925" width="39.667052532936395" height="23.460669202359327" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-7.927499999999999" data-y="6.5" x="270.4547709608071" y="96.83038421255722" width="32.25842015324406" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-3.8674999999999997" data-y="6.5" x="393.93197728901384" y="96.83038421255722" width="35.96273634309023" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="-7.785" data-y="-8.5" x="270.4547709608071" y="562.3394520698968" width="41.05617110412868" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="-4.665" data-y="-8.5" x="363.0626757069622" y="562.3394520698968" width="48.46480348382113" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="-1.8450000000000002" data-y="-8.5" x="455.6705804531173" y="562.3394520698968" width="37.35185491428257" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="DRV8323HRTAR" data-x="-4.580000000000001" data-y="3.25" x="367.69307094426983" y="206.10771181302022" width="44.45179427815441" height="5.556474284769308" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="U_GATE" data-x="-4.940000000000001" data-y="3.0149999999999997" x="365.84091284934675" y="212.28157212943057" width="25.9302133289234" height="7.7173253955129155" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP &gt; .pin2 to .U_GATE &gt; .CPL
2
+ globalConnNetId: connectivity_net2" data-x="-8" data-y="5.459" x="281.2590265145252" y="120.32192271649856" width="6.1738603164102415" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP &gt; .pin2 to .U_GATE &gt; .CPL
3
+ globalConnNetId: connectivity_net2" data-x="-8.1" data-y="3.961" x="278.17209635632" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP &gt; .pin1 to .U_GATE &gt; .CPH
4
+ globalConnNetId: connectivity_net1" data-x="-8" data-y="7.541" x="281.2590265145252" y="56.052036822666906" width="6.1738603164102415" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP &gt; .pin1 to .U_GATE &gt; .CPH
5
+ globalConnNetId: connectivity_net1" data-x="-8.3" data-y="3.961" x="271.99823603990967" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_VCP &gt; .pin1 to .U_GATE &gt; .VCP
6
+ globalConnNetId: connectivity_net3" data-x="-4" data-y="7.541" x="404.73623284273197" y="56.052036822666906" width="6.173860316410355" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_VCP &gt; .pin1 to .U_GATE &gt; .VCP
7
+ globalConnNetId: connectivity_net3" data-x="-8.5" data-y="3.961" x="265.8243757234993" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: VM
8
+ globalConnNetId: connectivity_net0" data-x="-12" data-y="8.511000000000001" x="155.31227605975423" y="39.99999999999997" width="11.11294856953856" height="12.965106664461757" fill="#ef444466" stroke="#ef4444" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: VM
9
+ globalConnNetId: connectivity_net0" data-x="-8.9" data-y="3.709999999999999" x="251.00711096411447" y="188.20351689543025" width="11.112948569538617" height="12.9651066644617" fill="#ef444466" stroke="#ef4444" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
10
+ globalConnNetId: connectivity_net8" data-x="-12" data-y="4.5" x="153.46011796483108" y="163.8167686456094" width="14.817264759384841" height="12.965106664461729" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
11
+ globalConnNetId: connectivity_net8" data-x="-10" data-y="-9.210000000000003" x="215.19872112893452" y="587.0348933355382" width="14.817264759384841" height="12.9651066644617" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
12
+ globalConnNetId: connectivity_net8" data-x="-5" data-y="-9.21" x="369.54522903919303" y="587.0348933355381" width="14.817264759384784" height="12.965106664461814" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE &gt; .IDRIVE to .R_IDRIVE &gt; .pin1
13
+ globalConnNetId: connectivity_net6" data-x="-7.3" data-y="4.141" x="302.86753762196133" y="155.45118791687338" width="6.173860316410355" height="51.86042665784686" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE &gt; .IDRIVE to .R_IDRIVE &gt; .pin1
14
+ globalConnNetId: connectivity_net6" data-x="-5" data-y="-7.358999999999999" x="373.8669312606803" y="510.44815611046783" width="6.173860316410298" height="51.86042665784686" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE &gt; .VDS to .R_VDS &gt; .pin1
15
+ globalConnNetId: connectivity_net7" data-x="-7.1" data-y="4.16" x="309.0413979383717" y="160.42114547158366" width="6.173860316410355" height="40.74747808830827" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE &gt; .GAIN to .R_GAIN &gt; .pin1
16
+ globalConnNetId: connectivity_net5" data-x="-7.5" data-y="4.021" x="296.693677305551" y="162.85982029656577" width="6.173860316410355" height="44.45179427815444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE &gt; .GAIN to .R_GAIN &gt; .pin1
17
+ globalConnNetId: connectivity_net5" data-x="-8" data-y="-7.478999999999999" x="281.2590265145252" y="517.8567884901603" width="6.1738603164102415" height="44.451794278154466" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_DVDD &gt; .pin1 to .U_GATE &gt; .DVDD
18
+ globalConnNetId: connectivity_net4" data-x="-10" data-y="-5.399" x="219.5204233504218" y="453.6486411994928" width="6.173860316410298" height="44.451794278154466" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_DVDD &gt; .pin1 to .U_GATE &gt; .DVDD
19
+ globalConnNetId: connectivity_net4" data-x="-7.9" data-y="4.021" x="284.34595667273027" y="162.85982029656577" width="6.173860316410298" height="44.45179427815444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><circle data-type="point" data-label="schematic_port_0
20
+ y+" data-x="-8.1" data-y="3.3" cx="281.2590265145252" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_1
21
+ y+" data-x="-8.3" data-y="3.3" cx="275.0851661981148" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_2
22
+ y+" data-x="-8.5" data-y="3.3" cx="268.9113058817045" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_3
23
+ y+" data-x="-8.9" data-y="3.3" cx="256.5635852488838" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_4
24
+ y+" data-x="-8.7" data-y="3.3" cx="262.73744556529414" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_5
25
+ x+" data-x="-5" data-y="0.7999999999999999" cx="376.9538614188854" cy="284.5157378314315" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_6
26
+ x+" data-x="-5" data-y="0.6" cx="376.9538614188854" cy="290.6895981478419" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_7
27
+ x+" data-x="-5" data-y="0.4" cx="376.9538614188854" cy="296.86345846425223" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_8
28
+ y-" data-x="-8.6" data-y="-3.3" cx="265.8243757234993" cy="411.07987431784346" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_9
29
+ y-" data-x="-8.4" data-y="-3.3" cx="271.9982360399096" cy="411.07987431784346" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_10
30
+ y-" data-x="-8" data-y="-3.3" cx="284.3459566727303" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_11
31
+ y-" data-x="-8.2" data-y="-3.3" cx="278.17209635632" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_12
32
+ x+" data-x="-5" data-y="-0.19999999999999984" cx="376.9538614188854" cy="315.38503941348324" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_13
33
+ x+" data-x="-5" data-y="1.1102230246251565e-16" cx="376.9538614188854" cy="309.2111790970729" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_14
34
+ x+" data-x="-5" data-y="0.20000000000000007" cx="376.9538614188854" cy="303.03731878066253" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_15
35
+ x+" data-x="-5" data-y="-0.3999999999999999" cx="376.9538614188854" cy="321.55889972989354" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_16
36
+ x+" data-x="-5" data-y="-0.5999999999999999" cx="376.9538614188854" cy="327.7327600463039" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_17
37
+ x+" data-x="-5" data-y="-0.7999999999999999" cx="376.9538614188854" cy="333.90662036271425" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_18
38
+ y-" data-x="-7.8" data-y="-3.3" cx="290.5198169891407" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_19
39
+ y-" data-x="-7.6" data-y="-3.3" cx="296.693677305551" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_20
40
+ y-" data-x="-7" data-y="-3.3" cx="315.21525825478204" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_21
41
+ y-" data-x="-7.2" data-y="-3.3" cx="309.0413979383717" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_22
42
+ y-" data-x="-7.4" data-y="-3.3" cx="302.86753762196133" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_23
43
+ y-" data-x="-6.8" data-y="-3.3" cx="321.3891185711924" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_24
44
+ x-" data-x="-11" data-y="-0.7999999999999999" cx="191.73805192657522" cy="333.90662036271425" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_25
45
+ y+" data-x="-7.7" data-y="3.3" cx="293.6067471473458" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_26
46
+ y+" data-x="-7.3" data-y="3.3" cx="305.9544677801665" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_27
47
+ y+" data-x="-7.1" data-y="3.3" cx="312.12832809657687" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_28
48
+ y+" data-x="-7.5" data-y="3.3" cx="299.78060746375616" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_29
49
+ x-" data-x="-11" data-y="-0.4" cx="191.73805192657522" cy="321.55889972989354" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_30
50
+ x-" data-x="-11" data-y="-0.6" cx="191.73805192657522" cy="327.7327600463039" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_31
51
+ y-" data-x="-8.8" data-y="-3.3" cx="259.65051540708896" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_32
52
+ y+" data-x="-7.9" data-y="3.3" cx="287.43288683093544" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_33
53
+ x-" data-x="-11" data-y="0.7999999999999999" cx="191.73805192657522" cy="284.5157378314315" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_34
54
+ x-" data-x="-11" data-y="0.5999999999999999" cx="191.73805192657522" cy="290.6895981478419" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_35
55
+ x-" data-x="-11" data-y="0.3999999999999999" cx="191.73805192657522" cy="296.86345846425223" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_36
56
+ x-" data-x="-11" data-y="0.19999999999999984" cx="191.73805192657522" cy="303.03731878066253" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_37
57
+ x-" data-x="-11" data-y="-1.1102230246251565e-16" cx="191.73805192657522" cy="309.2111790970729" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_38
58
+ x-" data-x="-11" data-y="-0.20000000000000007" cx="191.73805192657522" cy="315.38503941348324" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_39
59
+ y-" data-x="-9.2" data-y="-3.3" cx="247.3027947742683" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_40
60
+ y-" data-x="-9" data-y="-3.3" cx="253.4766550906786" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_41
61
+ y+" data-x="-12" data-y="6.88" cx="160.8687503445235" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_42
62
+ y-" data-x="-12" data-y="6.12" cx="160.8687503445235" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_43
63
+ y+" data-x="-10" data-y="-6.12" cx="222.60735350862694" cy="498.13130477922925" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_44
64
+ y-" data-x="-10" data-y="-6.88" cx="222.60735350862694" cy="521.5919739815886" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_45
65
+ y+" data-x="-8" data-y="6.88" cx="284.3459566727303" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_46
66
+ y-" data-x="-8" data-y="6.12" cx="284.3459566727303" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_47
67
+ y+" data-x="-4" data-y="6.88" cx="407.82316300093714" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_48
68
+ y-" data-x="-4" data-y="6.12" cx="407.82316300093714" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_49
69
+ y+" data-x="-8" data-y="-8.2" cx="284.3459566727303" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_50
70
+ y-" data-x="-8" data-y="-8.8" cx="284.3459566727303" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_51
71
+ y+" data-x="-5" data-y="-8.2" cx="376.9538614188854" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_52
72
+ y-" data-x="-5" data-y="-8.8" cx="376.9538614188854" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_53
73
+ y+" data-x="-2" data-y="-8.2" cx="469.5617661650405" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_54
74
+ y-" data-x="-2" data-y="-8.8" cx="469.5617661650405" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
75
+ orientation: y-" data-x="-8" data-y="6.12" cx="284.3459566727303" cy="120.29105341491649" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
76
+ orientation: y+" data-x="-8.1" data-y="3.3" cx="281.2590265145252" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
77
+ orientation: y+" data-x="-8" data-y="6.88" cx="284.3459566727303" cy="96.83038421255722" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
78
+ orientation: y+" data-x="-8.3" data-y="3.3" cx="275.0851661981148" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
79
+ orientation: y+" data-x="-4" data-y="6.88" cx="407.82316300093714" cy="96.83038421255722" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
80
+ orientation: y+" data-x="-8.5" data-y="3.3" cx="268.9113058817045" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
81
+ orientation: y+" data-x="-12" data-y="8.301" cx="160.8687503445235" cy="52.96510666446176" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
82
+ orientation: y+" data-x="-8.9" data-y="3.499999999999999" cx="256.5635852488838" cy="201.16862355989196" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
83
+ orientation: y-" data-x="-12" data-y="4.71" cx="160.8687503445235" cy="163.8167686456094" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
84
+ orientation: y-" data-x="-10" data-y="-9.000000000000002" cx="222.60735350862694" cy="587.0348933355383" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
85
+ orientation: y-" data-x="-5" data-y="-9" cx="376.9538614188854" cy="587.0348933355382" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
86
+ orientation: y+" data-x="-7.3" data-y="3.3" cx="305.9544677801665" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
87
+ orientation: y+" data-x="-5" data-y="-8.2" cx="376.9538614188854" cy="562.3394520698968" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
88
+ orientation: y+" data-x="-7.1" data-y="3.5" cx="312.12832809657687" cy="201.16862355989196" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
89
+ orientation: y+" data-x="-7.5" data-y="3.3" cx="299.78060746375616" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
90
+ orientation: y+" data-x="-8" data-y="-8.2" cx="284.3459566727303" cy="562.3394520698968" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
91
+ orientation: y+" data-x="-10" data-y="-6.12" cx="222.60735350862694" cy="498.13130477922925" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
92
+ orientation: y+" data-x="-7.9" data-y="3.3" cx="287.43288683093544" cy="207.3424838763023" 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[
93
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
94
+ const svg = e.currentTarget;
95
+ const rect = svg.getBoundingClientRect();
96
+ const x = e.clientX - rect.left;
97
+ const y = e.clientY - rect.top;
98
+ const crosshair = svg.getElementById('crosshair');
99
+ const h = svg.getElementById('crosshair-h');
100
+ const v = svg.getElementById('crosshair-v');
101
+ const coords = svg.getElementById('coordinates');
102
+
103
+ crosshair.style.display = 'block';
104
+ h.setAttribute('x1', '0');
105
+ h.setAttribute('x2', '640');
106
+ h.setAttribute('y1', y);
107
+ h.setAttribute('y2', y);
108
+ v.setAttribute('x1', x);
109
+ v.setAttribute('x2', x);
110
+ v.setAttribute('y1', '0');
111
+ v.setAttribute('y2', '640');
112
+
113
+ // Calculate real coordinates using inverse transformation
114
+ const matrix = {"a":30.869301582051698,"c":0,"e":531.3003693291439,"b":0,"d":-30.869301582051698,"f":309.2111790970729};
115
+ // Manually invert and apply the affine transform
116
+ // Since we only use translate and scale, we can directly compute:
117
+ // x' = (x - tx) / sx
118
+ // y' = (y - ty) / sy
119
+ const sx = matrix.a;
120
+ const sy = matrix.d;
121
+ const tx = matrix.e;
122
+ const ty = matrix.f;
123
+ const realPoint = {
124
+ x: (x - tx) / sx,
125
+ y: (y - ty) / sy // Flip y back since we used negative scale
126
+ }
127
+
128
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
129
+ coords.setAttribute('x', (x + 5).toString());
130
+ coords.setAttribute('y', (y - 5).toString());
131
+ });
132
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
133
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
134
+ });
135
+ ]]></script></svg>