let lastSelectedIndex = null; function toggleSelection(element) { const elements = Array.from(document.getElementsByClassName('icon-text')); const index = elements.indexOf(element); if (document.body.classList.contains('shift-pressed') && lastSelectedIndex !== null) { const [start, end] = [lastSelectedIndex, index].sort((a, b) => a - b); let allSelected = true; for (let i = start; i <= end; i++) { if (!elements[i].classList.contains('selected')) { allSelected = false; break; } } for (let i = start; i <= end; i++) { if (allSelected) { elements[i].classList.remove('selected'); elements[i].classList.add('unselected'); } else { elements[i].classList.add('selected'); elements[i].classList.remove('unselected'); } } lastSelectedIndex = null; const elements2 = Array.from(document.getElementsByClassName('icon-text')); for (let i = 0; i < elements2.length; i++) { elements2[i].classList.remove('shiftselected'); } } else if (document.body.classList.contains('shift-pressed') && lastSelectedIndex === null) { lastSelectedIndex = index; element.classList.toggle('shiftselected'); } else { element.classList.toggle('selected'); element.classList.toggle('unselected'); } toggleSendButton(); } function getSelectedModelsIDs() { var selectedModelsIDs = []; var selectedModels = document.getElementsByClassName('selected'); for (var i = 0; i < selectedModels.length; i++) { selectedModelsIDs.push(selectedModels[i].getAttribute('data-id')); } return selectedModelsIDs.length > 0 ? JSON.stringify(selectedModelsIDs) : '[]'; } function toggleSendButton() { var selectedModels = document.getElementsByClassName('selected'); var sendButton = document.querySelector('button[disabled]'); sendButton.disabled = selectedModels.length === 0; }