// Suitbuilder JavaScript - Constraint Solver Frontend Logic console.log('Suitbuilder.js loaded - VERSION: SCORE_ORDERING_AND_CANCELLATION_FIX_v3'); // Configuration const API_BASE = '/inv/suitbuilder'; let currentSuits = []; let lockedSlots = new Set(); let selectedSuit = null; let currentSearchController = null; // AbortController for current search // Initialize when page loads document.addEventListener('DOMContentLoaded', function() { initializeSuitbuilder(); }); /** * Initialize all suitbuilder functionality */ function initializeSuitbuilder() { loadCharacters(); setupEventListeners(); setupSlotInteractions(); } /** * Load available characters for selection */ async function loadCharacters() { try { const response = await fetch(`${API_BASE}/characters`); if (!response.ok) { throw new Error('Failed to load characters'); } const data = await response.json(); displayCharacters(data.characters); } catch (error) { console.error('Error loading characters:', error); document.getElementById('characterList').innerHTML = '