iced-swdir-tree 0.7.1

iced widget for file tree powered by swdir, supporting selection, lazy loading and filtering.
Documentation
# Features

A quick tour of what the widget provides. Each bullet links to a
dedicated reference page with concrete examples.

- **Multi-select** with Shift/Ctrl-click and Shift-arrow range
  extension. A per-path authoritative set survives filter changes
  and subtree reloads; see [Multi-select]../guide/multi-select.md.
- **Drag-and-drop between nodes.** Drag one or more selected
  paths onto another folder; the widget emits a
  `DragCompleted { sources, destination }` event and the app
  performs the actual move/copy/upload/whatever. The widget
  performs no filesystem operations itself. See
  [Drag-and-drop]../guide/drag-and-drop.md.
- **Parallel pre-expansion.** Opt into `with_prefetch_limit(N)`
  and the widget will speculatively scan the first `N`
  folder-children of any folder the user expands, in parallel
  via the executor, so clicking any of them is instant. One
  level deep only (no cascade). See
  [Parallel pre-expansion]../guide/prefetch.md.
- **Incremental search.** `tree.set_search_query(q)` narrows the
  visible rows to basename-substring matches plus their ancestor
  chain, so users see tree context alongside their hits.
  Selection survives the filter. See
  [Incremental search]../guide/incremental-search.md.
- **Lazy loading.** Only the root is created eagerly; child
  folders are scanned on first expand.
- **Non-blocking.** Directory traversal runs on a worker thread
  through `iced::Task::perform`; the UI thread never stalls on
  disk I/O. Plug in your own executor (`tokio`, `smol`, etc.)
  via [`with_executor`]../guide/custom-executor.md if you don't want the
  per-expansion thread-spawn default.
- **Three display filters.** `FoldersOnly`, `FilesAndFolders`
  (default), `AllIncludingHidden`. Filter changes are applied
  from an in-memory cache, so switching is instant — no re-scan.
  Expansion state and selection survive the swap. See
  [Configuration]../guide/configuration.md.
- **Keyboard navigation.** Arrow keys, `Home`/`End`, `Enter`,
  `Space`, ``/``, plus Shift-modified variants for range
  extension and `Escape` to cancel a drag — see
  [Keyboard navigation]../guide/keyboard-navigation.md.
- **Stale-result handling.** Every scan carries a generation
  counter, so a collapse/re-expand cycle safely discards
  in-flight results from the cancelled round-trip.
- **Error tolerance.** Permission denials, missing paths, and
  symlink cycles are surfaced as per-node errors that the view
  greys out — no panics, no UI freezes.
- **Pluggable icon themes.** Each folder/file/caret/error glyph
  comes from a configurable [`IconTheme`]../guide/icon-themes.md.
  Stock `UnicodeTheme` is always available; `LucideTheme` ships
  behind the `icons` feature with the bundled lucide TTF. Your
  own theme — Material, Heroicons, app-specific labels — plugs
  in through the trait.
- **Cross-platform.** Hidden-file detection follows OS
  conventions: dotfile on Unix, `HIDDEN` attribute plus dotfile
  fallback on Windows, dotfile elsewhere.