feat: make file picker embeddable

This commit is contained in:
“Naeel”
2026-09-05 14:42:50 +03:00
parent aec8ad4fbe
commit 3d227f1daa
18 changed files with 3005 additions and 88 deletions
+9 -9
View File
@@ -1,23 +1,25 @@
# Upload module
Скопируйте каталог `upload/` в проект и подключите picker:
Скопируйте `upload/frontend/` и подключите собранный picker:
- `initUploadTable(config)` из `frontend/table/init_upload_table.js`;
- локальный `fflate` до загрузки picker-модуля.
- IIFE: `FilePicker.initFilePicker(config)`;
- ESM: `import { initFilePicker } from './file-picker.esm.js'`.
`config` должен содержать `allowedExt`, а также ссылки на DOM-элементы
`fileInputEl`, `folderInputEl`, `tableBodyEl` и `countEl`.
`config` должен содержать `mount` как DOM-элемент или CSS-селектор. Основные
параметры: `allowedExt`, `labels`, `layout`, `limits` и `onChange`.
Публичный API таблицы:
- `pickFiles()` и `pickFolder()` — открыть системный выбор;
- `getFiles()` — получить leaf-файлы с `path`, `name`, `size` и `file`;
- `addFiles(files)` — добавить файлы программно;
- `remove(id)` и `clear()` — удалить узел или очистить дерево.
- `remove(id)` и `clear()` — удалить узел или очистить дерево;
- `render()` и `destroy()` — перерисовать или удалить экземпляр.
Picker поддерживает разрешённые документы, папки и вложенные ZIP, хранит
исходные browser `File` objects и выполняет дедупликацию по пути и размеру.
Загрузка на VM, backend sessions и upload API не используются.
Загрузка на VM, backend sessions и upload API не используются. ZIP обрабатывается
локально через встроенный в bundle `fflate`; отдельный vendor script не требуется.
## Legacy
@@ -25,7 +27,5 @@ Picker поддерживает разрешённые документы, па
предыдущей архитектуре и сохранены как legacy-остатки. Для текущей picker-only
интеграции они не нужны.
Для ZIP перед ES-модулями загрузите локальный `fflate` из `site/static/vendor/`.
Подробная таблица функций, входов, выходов и побочных эффектов находится в
[`../docs/CODE-REFERENCE.md`](../docs/CODE-REFERENCE.md).