(function () { "use strict"; let currentView = "grid"; let selectedFile = null; let aiPanelOpen = true; function toggleView(type) { currentView = type; const fileView = document.getElementById("file-view"); if (fileView) { fileView.classList.remove("grid-view", "list-view"); fileView.classList.add(type + "-view"); } document.querySelectorAll(".app-btn-secondary").forEach((btn) => { btn.classList.remove("active"); }); event.target.classList.add("active"); } function openFolder(el) { const folderName = el.querySelector(".file-name").textContent; const breadcrumb = document.querySelector(".breadcrumb"); if (breadcrumb) { const separator = document.createElement("span"); separator.className = "breadcrumb-separator"; separator.textContent = "β€Ί"; breadcrumb.appendChild(separator); const item = document.createElement("span"); item.className = "breadcrumb-item current"; item.textContent = folderName; breadcrumb.appendChild(item); breadcrumb.querySelectorAll(".breadcrumb-item").forEach((i) => { i.classList.remove("current"); }); item.classList.add("current"); } addAIMessage("assistant", `Opened folder: ${folderName}`); } function selectFile(el) { document.querySelectorAll(".file-item").forEach((item) => { item.classList.remove("selected"); }); el.classList.add("selected"); selectedFile = { name: el.querySelector(".file-name").textContent, meta: el.querySelector(".file-meta").textContent, }; } function toggleAIPanel() { const panel = document.getElementById("ai-panel"); if (panel) { aiPanelOpen = !aiPanelOpen; panel.classList.toggle("hidden", !aiPanelOpen); } const toggle = document.querySelector(".ai-toggle"); if (toggle) { toggle.classList.toggle("active", aiPanelOpen); } } function aiAction(action) { const actions = { organize: "Analyzing folder structure to suggest organization...", find: "What file are you looking for?", analyze: "Select a file and I'll analyze its content.", share: "Select a file to set up sharing options.", }; addAIMessage("assistant", actions[action] || "How can I help?"); } function sendAIMessage() { const input = document.getElementById("ai-input"); if (!input || !input.value.trim()) return; const message = input.value.trim(); addAIMessage("user", message); input.value = ""; setTimeout(() => { processAIQuery(message); }, 500); } function addAIMessage(type, content) { const container = document.getElementById("ai-messages"); if (!container) return; const div = document.createElement("div"); div.className = "ai-message " + type; div.innerHTML = '
' + escapeHtml(content) + "
"; container.appendChild(div); container.scrollTop = container.scrollHeight; } function processAIQuery(query) { const lowerQuery = query.toLowerCase(); let response = "I can help you manage your files. Try asking me to find, organize, or analyze files."; if (lowerQuery.includes("find") || lowerQuery.includes("search") || lowerQuery.includes("buscar")) { response = "I'll search for files matching your query. What type of file are you looking for?"; } else if (lowerQuery.includes("organize") || lowerQuery.includes("organizar")) { response = "I can help organize your files by type, date, or project. Which method would you prefer?"; } else if (lowerQuery.includes("share") || lowerQuery.includes("compartilhar")) { if (selectedFile) { response = `Setting up sharing for "${selectedFile.name}". Who would you like to share it with?`; } else { response = "Please select a file first, then I can help you share it."; } } else if (lowerQuery.includes("delete") || lowerQuery.includes("excluir")) { if (selectedFile) { response = `Are you sure you want to delete "${selectedFile.name}"? This action cannot be undone.`; } else { response = "Please select a file first before deleting."; } } else if (lowerQuery.includes("storage") || lowerQuery.includes("space") || lowerQuery.includes("espaΓ§o")) { response = "You're using 12.4 GB of your 50 GB storage. Would you like me to find large files to free up space?"; } addAIMessage("assistant", response); } function uploadFile() { const input = document.createElement("input"); input.type = "file"; input.multiple = true; input.onchange = function (e) { const files = Array.from(e.target.files); if (files.length > 0) { const names = files.map((f) => f.name).join(", "); addAIMessage("assistant", `Uploading ${files.length} file(s): ${names}`); simulateUpload(files); } }; input.click(); } function simulateUpload(files) { setTimeout(() => { addAIMessage("assistant", `Successfully uploaded ${files.length} file(s)!`); files.forEach((file) => { addFileToView(file.name, formatFileSize(file.size)); }); }, 1500); } function addFileToView(name, size) { const fileView = document.getElementById("file-view"); if (!fileView) return; const icon = getFileIcon(name); const div = document.createElement("div"); div.className = "file-item"; div.onclick = function () { selectFile(this); }; div.innerHTML = `
${icon}
${escapeHtml(name)}
${size}
`; fileView.appendChild(div); } function getFileIcon(filename) { const ext = filename.split(".").pop().toLowerCase(); const icons = { pdf: "πŸ“„", doc: "πŸ“", docx: "πŸ“", xls: "πŸ“Š", xlsx: "πŸ“Š", ppt: "πŸ“½οΈ", pptx: "πŸ“½οΈ", jpg: "πŸ–ΌοΈ", jpeg: "πŸ–ΌοΈ", png: "πŸ–ΌοΈ", gif: "πŸ–ΌοΈ", mp4: "🎬", mov: "🎬", mp3: "🎡", wav: "🎡", zip: "πŸ“¦", rar: "πŸ“¦", txt: "πŸ“", md: "πŸ“", js: "πŸ’»", ts: "πŸ’»", rs: "πŸ’»", py: "πŸ’»", }; return icons[ext] || "πŸ“„"; } function formatFileSize(bytes) { if (bytes < 1024) return bytes + " B"; if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + " KB"; if (bytes < 1024 * 1024 * 1024) return (bytes / (1024 * 1024)).toFixed(1) + " MB"; return (bytes / (1024 * 1024 * 1024)).toFixed(1) + " GB"; } function escapeHtml(text) { const div = document.createElement("div"); div.textContent = text; return div.innerHTML; } function initKeyboardShortcuts() { document.addEventListener("keydown", function (e) { if (e.target.tagName === "INPUT" || e.target.tagName === "TEXTAREA") return; if (e.key === "Delete" && selectedFile) { addAIMessage("assistant", `Delete "${selectedFile.name}"? Press Delete again to confirm.`); } if (e.ctrlKey && e.key === "u") { e.preventDefault(); uploadFile(); } if (e.key === "Escape") { document.querySelectorAll(".file-item").forEach((item) => { item.classList.remove("selected"); }); selectedFile = null; } }); } function initSearch() { const searchInput = document.querySelector(".search-input"); if (searchInput) { searchInput.addEventListener("input", function (e) { const query = e.target.value.toLowerCase(); document.querySelectorAll(".file-item").forEach((item) => { const name = item.querySelector(".file-name").textContent.toLowerCase(); item.style.display = name.includes(query) ? "" : "none"; }); }); } } function initTabs() { document.querySelectorAll(".topbar-tab").forEach((tab) => { tab.addEventListener("click", function () { document.querySelectorAll(".topbar-tab").forEach((t) => t.classList.remove("active")); this.classList.add("active"); const tabName = this.textContent.trim(); addAIMessage("assistant", `Switched to ${tabName} view.`); }); }); } function initAppLauncher() { document.querySelectorAll(".app-icon").forEach((icon) => { icon.addEventListener("click", function () { const app = this.dataset.app; if (app && app !== "drive") { window.location.href = "/suite/" + app + "/"; } }); }); } function init() { initKeyboardShortcuts(); initSearch(); initTabs(); initAppLauncher(); const aiInput = document.getElementById("ai-input"); if (aiInput) { aiInput.addEventListener("keypress", function (e) { if (e.key === "Enter") { sendAIMessage(); } }); } } window.toggleView = toggleView; window.openFolder = openFolder; window.selectFile = selectFile; window.toggleAIPanel = toggleAIPanel; window.aiAction = aiAction; window.sendAIMessage = sendAIMessage; window.uploadFile = uploadFile; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } })();