// 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 // Puzzle/Components customComponents: {}, // { id -> component definition } // Component Editor componentEditorActive: false, savedMainCircuit: null, // { gates, connections, nextId } saved before entering editor componentEditorName: '', editingComponentId: null, // ID of component being edited (null = new component) // Bus cutting (shift+drag) busCutting: null // { startX, startY, endX, endY } in world coords, or null };