import { state } from '../state.js'; import { t } from '../i18n.js'; import { fetchAssets } from './api.js'; import { renderLibrary, createAssetElement, renderFlyout } from './renderer.js'; import { renderPackSelector } from './selector.js'; import { initSearch } from './search.js'; import { renderFixedSection } from './fixed_objects.js'; import { logger } from '../utils/logger.js'; /** * initAssets - Main initialization for the asset library sidebar */ export async function initAssets() { try { const data = await fetchAssets(); const library = document.querySelector('.asset-library'); if (!library) return; // 1. Initial Header & Global UI library.innerHTML = `

${t('asset_library') || 'Asset Library'}

`; // 2. Setup Manage Packs Button document.getElementById('manage-packs-btn').onclick = (e) => { e.stopPropagation(); renderPackSelector(data.packs || []); }; // 3. Initialize selection if empty if (state.selectedPackIds.length === 0 && data.packs && data.packs.length > 0) { state.selectedPackIds = data.packs.map(p => p.id); localStorage.setItem('selectedPackIds', JSON.stringify(state.selectedPackIds)); } // 4. Render Sections renderFixedSection(library); renderLibrary({ ...data, state }, library, renderPackSelector); // 5. Handle Flyouts for Fixed/Custom Sections via Event document.addEventListener('render-fixed-flyout', (e) => { const { container, assets, meta } = e.detail; renderFlyout(container, assets, meta); }); initSearch(); } catch (e) { logger.critical("Asset Initialization Error:", e); } } export { createAssetElement, renderFlyout, renderPackSelector };