kxrkstudios/codevision-ide-next-generation-code-editor
0
1// CodeVision IDE - Main Script2document.addEventListener('DOMContentLoaded', () => {3 // Initialize Feather Icons4 feather.replace();5 6 // State management7 const state = {8 activeFile: 'app.tsx',9 openTabs: ['app.tsx', 'index.tsx', 'package.json'],10 activeTab: 0,11 terminalVisible: false,12 settingsVisible: false,13 commandPaletteVisible: false,14 activeSidebarView: 'explorer'15 };16 17 // DOM Elements18 const terminal = document.getElementById('terminal');19 const settingsModal = document.getElementById('settingsModal');20 const commandPalette = document.getElementById('commandPalette');21 const codeEditor = document.getElementById('codeEditor');22 const closeTerminal = document.getElementById('closeTerminal');23 const closeSettings = document.getElementById('closeSettings');24 const settingsBtn = document.getElementById('settingsBtn');25 26 // Terminal toggle27 function toggleTerminal() {28 state.terminalVisible = !state.terminalVisible;29 if (state.terminalVisible) {30 terminal.classList.remove('hidden');31 } else {32 terminal.classList.add('hidden');33 }34 }35 36 // Settings modal toggle37 function toggleSettings() {38 state.settingsVisible = !state.settingsVisible;39 if (state.settingsVisible) {40 settingsModal.classList.remove('hidden');41 } else {42 settingsModal.classList.add('hidden');43 }44 }45 46 // Command palette toggle47 function toggleCommandPalette() {48 state.commandPaletteVisible = !state.commandPaletteVisible;49 if (state.commandPaletteVisible) {50 commandPalette.classList.remove('hidden');51 commandPalette.querySelector('input').focus();52 } else {53 commandPalette.classList.add('hidden');54 }55 }56 57 // Tab switching58 function switchTab(index) {59 const tabs = document.querySelectorAll('.tab');60 tabs.forEach((tab, i) => {61 if (i === index) {62 tab.classList.add('active');63 tab.classList.remove('bg-vscode-sidebar');64 tab.classList.add('bg-vscode-editor');65 } else {66 tab.classList.remove('active');67 tab.classList.remove('bg-vscode-editor');68 tab.classList.add('bg-vscode-sidebar');69 }70 });71 state.activeTab = index;72 }73 74 // Activity bar navigation75 function switchView(view) {76 const buttons = document.querySelectorAll('.activity-btn');77 buttons.forEach(btn => {78 if (btn.dataset.view === view) {79 btn.classList.add('active');80 } else {81 btn.classList.remove('active');82 }83 });84 state.activeSidebarView = view;85 }86 87 // File tree navigation88 function selectFile(element) {89 const allFileItems = document.querySelectorAll('.file-item');90 allFileItems.forEach(item => item.classList.remove('active'));91 element.classList.add('active');92 }93 94 // Settings section switching95 function switchSettingsSection(section) {96 const sections = document.querySelectorAll('.settings-section');97 sections.forEach(sec => {98 if (sec.textContent.toLowerCase() === section.toLowerCase()) {99 sec.classList.add('active');100 } else {101 sec.classList.remove('active');102 }103 });104 }105 106 // Keyboard shortcuts107 document.addEventListener('keydown', (e) => {108 // Ctrl/Cmd + P for command palette109 if ((e.ctrlKey || e.metaKey) && e.key === 'p') {110 e.preventDefault();111 toggleCommandPalette();112 }113 114 // Ctrl/Cmd + ` for terminal115 if ((e.ctrlKey || e.metaKey) && e.key === '`') {116 e.preventDefault();117 toggleTerminal();118 }