|
|
| document.addEventListener('DOMContentLoaded', function() { |
| const fetchBtn = document.getElementById('fetch-btn'); |
| const fileFilterSelect = document.getElementById('file-filter'); |
| const customFilterSection = document.getElementById('custom-filter-section'); |
| |
| |
| fileFilterSelect.addEventListener('change', function() { |
| if (this.value === 'custom') { |
| customFilterSection.classList.remove('hidden'); |
| } else { |
| customFilterSection.classList.add('hidden'); |
| } |
| }); |
| const repoUrlInput = document.getElementById('repo-url'); |
| const fileFilterSelect = document.getElementById('file-filter'); |
| const templateSelect = document.getElementById('template'); |
| const themeSelect = document.getElementById('theme'); |
| const previewSection = document.getElementById('preview-section'); |
| const previewContent = document.getElementById('preview-content'); |
| const downloadBtn = document.getElementById('download-btn'); |
| const deployBtn = document.getElementById('deploy-btn'); |
| fetchBtn.addEventListener('click', async function() { |
| const repoUrl = repoUrlInput.value.trim(); |
| const fileFilter = fileFilterSelect.value; |
| |
| if (!repoUrl) { |
| showAlert('Please enter a GitHub repository URL', 'error'); |
| return; |
| } |
|
|
| |
| if (!isValidGitHubUrl(repoUrl)) { |
| showAlert('Please enter a valid GitHub repository URL', 'error'); |
| return; |
| } |
|
|
| |
| if (fileFilter === 'code') { |
| showAlert('Filtering for code files only: .js, .ts, .py, .java, .cpp, .h, .c, .cs, .go, .rb, .php, .swift, .kt, .rs, .sh', 'info'); |
| } |
| |
| fetchBtn.disabled = true; |
| fetchBtn.innerHTML = '<span class="loading-spinner"></span> Processing...'; |
| |
| try { |
| |
| await simulateApiCall(); |
| |
| |
| previewSection.classList.remove('hidden'); |
| |
| |
| generateSamplePreview(); |
| |
| showAlert('Repository fetched successfully!', 'success'); |
| } catch (error) { |
| showAlert('Error fetching repository: ' + error.message, 'error'); |
| } finally { |
| |
| fetchBtn.disabled = false; |
| fetchBtn.innerHTML = '<i data-feather="download" class="mr-2"></i> Fetch'; |
| feather.replace(); |
| } |
| }); |
|
|
| downloadBtn.addEventListener('click', function() { |
| showAlert('Download started!', 'success'); |
| |
| }); |
|
|
| deployBtn.addEventListener('click', function() { |
| showAlert('Deployment initiated!', 'success'); |
| |
| }); |
|
|
| function isValidGitHubUrl(url) { |
| const pattern = /^https:\/\/github\.com\/[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+(\/)?$/; |
| return pattern.test(url); |
| } |
|
|
| function simulateApiCall() { |
| return new Promise((resolve) => { |
| setTimeout(resolve, 1500); |
| }); |
| } |
| function generateSamplePreview() { |
| const template = templateSelect.value; |
| const theme = themeSelect.value; |
| const fileFilter = fileFilterSelect.value; |
| |
| previewContent.className = 'border border-gray-200 rounded-lg p-6 min-h-[400px]'; |
| if (theme === 'dark') { |
| previewContent.classList.add('bg-gray-800', 'text-gray-100'); |
| } else if (theme === 'solarized') { |
| previewContent.classList.add('bg-[#fdf6e3]', 'text-[#657b83]'); |
| } else if (theme === 'monokai') { |
| previewContent.classList.add('bg-[#272822]', 'text-[#f8f8f2]'); |
| } |
|
|
| |
| let content = ''; |
| if (template === 'default') { |
| content = ` |
| <h1 class="text-2xl font-bold mb-4">Sample Repository</h1> |
| <p class="mb-4">This is a sample preview of how your |