Files
logic-gates/js/state.js

38 lines
764 B
JavaScript

// Shared application state — single source of truth
export const state = {
// Circuit
gates: [],
connections: [],
nextId: 1,
// Interaction
placingGate: null,
dragging: null,
dragOffset: { x: 0, y: 0 },
connecting: null,
hoveredGate: null,
hoveredPort: null,
mouseX: 0,
mouseY: 0,
// Camera (pan/zoom)
camX: 0,
camY: 0,
zoom: 1,
// Waveform
waveformVisible: false,
waveformHeight: 220,
recording: true,
waveData: {}, // { gateId: [{ t, value }] }
timeStep: 0,
waveZoom: 20, // pixels per time step
waveScroll: 0,
resizingWave: false,
// Simulation
simRunning: false,
simInterval: null,
simSpeed: 500 // ms per tick
};