• { if (entry.type !== 'directory') return; if (!writable) return; if (!e.dataTransfer?.types.includes(dragType)) return; e.preventDefault(); e.stopPropagation(); dragOverFolder = true; if (viewMode === 'list' && !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 folderCard} {#if folderItemCount !== null && folderItemCount > 0} {/if} {/if} {#if viewMode === 'list' && variant === 'workspace'} {:else if viewMode === 'list' && entry.type === 'directory'} {:else if viewMode === 'list'} {/if} {#if selectionMode || selected} {/if} {#snippet child({ props })} {/snippet} {#if openPreview} {#key JSON.stringify( [terminalUrl, terminalKey, terminalSessionId, entryPath, entry.modified, entry.size] )} {#await import('./FileHoverPreview.svelte') then { default: FileHoverPreview }} {/await} {/key} {/if}
    {#if entry.type === 'directory' && onNewFolder} {/if} {#if entry.type === 'directory' && onNewFile} {/if} {#if entry.type === 'directory' && (onNewFolder || onNewFile)}
    {/if} {#if variant !== 'workspace' || entry.type !== 'directory'} {/if} {#if entry.type === 'file' && onSelectForComparison} {#if onCompareWithSelected} {/if} {/if} {#if entry.type === 'directory'} {#if viewMode === 'list'} {/if} {:else} {/if}