/** * Modern Media Library - Reusable Component * Used across: Dashboard, Homepage, Products, Portfolio, Blog, Custom Pages, Settings */ class MediaLibrary { constructor(options = {}) { this.options = { multiple: options.multiple || false, onSelect: options.onSelect || null, selectMode: options.selectMode || false, containerId: options.containerId || "media-library-modal", ...options, }; this.currentFolder = null; this.folders = []; this.files = []; this.selectedItems = []; this.viewMode = localStorage.getItem("mediaLibraryView") || "grid"; this.sortBy = localStorage.getItem("mediaLibrarySort") || "date"; this.searchQuery = ""; this.draggedItem = null; this.modal = null; this.initialized = false; } // Initialize the media library modal init() { if (this.initialized) return; // Create modal HTML this.createModal(); this.bindEvents(); this.initialized = true; } createModal() { // Remove existing modal if any const existing = document.getElementById(this.options.containerId); if (existing) existing.remove(); const modalHtml = `
${ this.searchQuery ? "Try a different search term" : "Upload files or create a folder to get started" }