# Upload module Скопируйте `upload/frontend/` и подключите собранный picker: - IIFE: `FilePicker.initFilePicker(config)`; - ESM: `import { initFilePicker } from './file-picker.esm.js'`. `config` должен содержать `mount` как DOM-элемент или CSS-селектор. Основные параметры: `allowedExt`, `labels`, `layout`, `limits` и `onChange`. Публичный API таблицы: - `pickFiles()` и `pickFolder()` — открыть системный выбор; - `getFiles()` — получить leaf-файлы с `path`, `name`, `size` и `file`; - `addFiles(files)` — добавить файлы программно; - `remove(id)` и `clear()` — удалить узел или очистить дерево; - `render()` и `destroy()` — перерисовать или удалить экземпляр. Picker поддерживает разрешённые документы, папки и вложенные ZIP, хранит исходные browser `File` objects и выполняет дедупликацию по пути и размеру. Загрузка на VM, backend sessions и upload API не используются. ZIP обрабатывается локально через встроенный в bundle `fflate`; отдельный vendor script не требуется. ## Legacy Каталоги `backend/` и старые ссылки на `uploadViaVM`/VM-буфер относятся к предыдущей архитектуре и сохранены как legacy-остатки. Для текущей picker-only интеграции они не нужны. Подробная таблица функций, входов, выходов и побочных эффектов находится в [`../docs/CODE-REFERENCE.md`](../docs/CODE-REFERENCE.md).