// Preset registry for LEDLab const RainbowPreset = require('./rainbow-preset'); const AuroraCurtainsPreset = require('./aurora-curtains-preset'); const BouncingBallPreset = require('./bouncing-ball-preset'); const CircuitPulsePreset = require('./circuit-pulse-preset'); const FadeGreenBluePreset = require('./fade-green-blue-preset'); const LavaLampPreset = require('./lava-lamp-preset'); const MeteorRainPreset = require('./meteor-rain-preset'); const NebulaDriftPreset = require('./nebula-drift-preset'); const OceanGlimmerPreset = require('./ocean-glimmer-preset'); const SpiralBloomPreset = require('./spiral-bloom-preset'); const VoxelFirefliesPreset = require('./voxel-fireflies-preset'); const WormholeTunnelPreset = require('./wormhole-tunnel-preset'); class PresetRegistry { constructor() { this.presets = new Map(); this.registerDefaults(); } registerDefaults() { this.register('rainbow', RainbowPreset); this.register('aurora-curtains', AuroraCurtainsPreset); this.register('bouncing-ball', BouncingBallPreset); this.register('circuit-pulse', CircuitPulsePreset); this.register('fade-green-blue', FadeGreenBluePreset); this.register('lava-lamp', LavaLampPreset); this.register('meteor-rain', MeteorRainPreset); this.register('nebula-drift', NebulaDriftPreset); this.register('ocean-glimmer', OceanGlimmerPreset); this.register('spiral-bloom', SpiralBloomPreset); this.register('voxel-fireflies', VoxelFirefliesPreset); this.register('wormhole-tunnel', WormholeTunnelPreset); } register(name, presetClass) { this.presets.set(name, presetClass); } createPreset(name, width = 16, height = 16) { const presetClass = this.presets.get(name); if (!presetClass) { throw new Error(`Preset '${name}' not found`); } return new presetClass(width, height); } getPresetNames() { return Array.from(this.presets.keys()); } getPresetMetadata(name) { try { const preset = this.createPreset(name); return preset.getMetadata(); } catch (error) { console.error(`Error getting metadata for preset '${name}':`, error); return null; } } getAllPresetMetadata() { const metadata = {}; for (const name of this.getPresetNames()) { metadata[name] = this.getPresetMetadata(name); } return metadata; } } // Export the constructor class module.exports = PresetRegistry;