• { if (entry.type !== 'directory') return; if (!writable) return; if (!e.dataTransfer?.types.includes(dragType)) return; e.preventDefault(); e.stopPropagation(); dragOverFolder = true; if (!expanded && !expandTimer) { expandTimer = setTimeout(() => { onToggleExpand(directoryPath); expandTimer = null; }, 600); } }} on:dragleave={(e) => { if (entry.type !== 'directory') return; e.stopPropagation(); dragOverFolder = false; clearExpandTimer(); }} on:drop={async (e) => { if (entry.type !== 'directory') return; if (!writable) return; const raw = e.dataTransfer?.getData(dragType); if (!raw) return; e.preventDefault(); e.stopPropagation(); dragOverFolder = false; clearExpandTimer(); try { const data = JSON.parse(raw); const paths = (data.paths || (data.path ? [data.path] : [])) as string[]; const destFolder = directoryPath; await onMove( paths.filter((p) => p + '/' !== destFolder && p !== destFolder), destFolder ); } catch {} }} > {#if variant === 'workspace'} {:else if entry.type === 'directory'} {:else} {/if} {#if selectionMode || selected} {/if}
    {#if variant !== 'workspace' || entry.type !== 'directory'} {/if} {#if entry.type === 'file' && onSelectForComparison} {#if onCompareWithSelected} {/if} {/if} {#if entry.type === 'directory'} {:else} {/if}