Builds node/wire data in the same shape as the app's CIRCUITS entries.
Drag a node to move it. Click one to edit its fields below.
When dragging one node, its ports/center pull into line with anything else on the sheet within a few pixels — a pink guide line shows what it snapped to. Grid snap still applies if nothing else is nearby. Off by default for multi-select drags, to keep group moves predictable.
While placing a dot, the preview rides along whichever wire is closest to the cursor, snapped exactly onto it. Turn this off to drop a dot in open space near a wire without it pulling onto the line \u2014 useful in a crowded area. Port alignment above still shows its pink guide either way, whether the dot is riding a wire or free.
Matches node.rot in app.js exactly — ports rotate with the symbol, and the artwork rotates in place around the assembled part's own centre, the same way the real renderer does it (CSS rotate on an unrotated image, not a re-flowed one).
Matches node.flipH/flipV in app.js — a genuinely different move from rotation, not a substitute for it: it mirrors a single axis only (e.g. swap which side a cylinder's rod exits from, keeping the same orientation otherwise), something no combination of 0°/90°/180°/-90° can do. Flip is applied before rotation, so the two combine predictably together.
—
Anchor is where inside the box the pinned port sits — 0.5/0.5 is dead centre, 0.5/1 is bottom-middle, etc. Only used when the ref/port isn't in the known-parts library.
Not drawing. Switch to "Draw wire" and click a start point.
Nothing to undo yet.
Keyboard: Ctrl/Cmd+Z to undo, Ctrl/Cmd+Y (or Ctrl/Cmd+Shift+Z) to redo, Delete/Backspace to remove whatever's currently selected, Escape to cancel a wire in progress or clear selection, arrow keys to nudge a selected node one grid step (Shift+arrow for a bigger step). All of these are ignored while typing in a text field.