# Upload module Для встраивания скопируйте один готовый bundle из `dist/`: - IIFE: `FilePicker.initFilePicker(config)`; - ESM: `import { initFilePicker } from './file-picker.esm.js'`. `config` должен содержать `mount` как DOM-элемент или CSS-селектор. Основные параметры: `allowedExt`, `labels`, `layout`, `limits`, `onChange(files)` и `onError(error, file)`. `onError` вызывается для ошибок разбора ZIP; обычные файлы с неподдерживаемым расширением просто пропускаются. Публичный API picker-а: - `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 Старые `uploadViaVM`, VM-буфер, backend sessions и upload API относятся к предыдущей архитектуре и в текущем модуле отсутствуют. Упоминания этих названий в `HISTORY/` являются историческими и не должны использоваться как инструкция. Подробная таблица функций, входов, выходов и побочных эффектов находится в [`../docs/CODE-REFERENCE.md`](../docs/CODE-REFERENCE.md). ## Сборка из исходников Исходники находятся в `frontend/`. В корне проекта: ```bash npm install npm run build ``` Результат сборки: `dist/file-picker.esm.js` и `dist/file-picker.iife.js`.