import {shell} from '../shared/runtime.js'; export function mount(element, options = {}) { const clean=shell(element,options); const grid=element.querySelector('.file-grid'); const icons={doc:'',image:'',video:'',code:''}; const fallback=[['image','cover.png'],['color','palette.fig'],['doc','brief.pdf'],['video','intro.mp4'],['code','tokens.json'],['audio','theme.wav'],['image','texture.jpg'],['doc','notes.md'],['image','poster.png'],['video','reel.mov'],['doc','license.txt'],['code','theme.css'],['image','scene.webp'],['audio','voice.wav'],['doc','guide.pdf']].map(([type,name])=>({type,name})); const files=Array.isArray(options.content?.files)?options.content.files:fallback; grid.replaceChildren(); for(const file of files){ const type=file.type || 'doc',tile=document.createElement('div'),art=document.createElement('div'),label=document.createElement('span'); tile.className='file-tile';art.className='file-art'; art.innerHTML=type==='color'?'
':type==='audio'?'
'+[12,23,32,17,27,35,22,13,24].map(h=>``).join('')+'
':`${icons[type] || icons.doc}`; label.textContent=String(file.name ?? '');label.title=label.textContent;tile.append(art,label);grid.append(tile); } if(!files.length){const empty=document.createElement('p');empty.className='file-empty';empty.textContent=options.content?.emptyText ?? '还没有文件';grid.append(empty);} element.querySelector('.file-collection i').hidden=!files.length; if(!files.length && options.content?.status===undefined)element.querySelector('[data-text="status"]').textContent='暂无文件'; return{destroy(){clean();grid.replaceChildren();}}; }