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 -8
View File
@@ -9,7 +9,7 @@ backend.
| Слой | Ответственность |
|---|---|
| Конфиг | `allowedExt` |
| Конфиг | `allowedExt`, `labels`, `layout`, `limits` |
| Picker | таблица, дедупликация, ZIP, рекурсивный обход папки |
| Интегрирующее приложение | получает leaf-файлы через `getFiles()` |
@@ -50,16 +50,17 @@ python site/app.py
## Как интегрировать picker в другой проект
1. Скопировать папку `upload/` в свой проект.
2. Задать конфиг по образцу `upload/config.example.json`.
3. Подключить локальный `fflate` до picker-модуля.
4. Вызвать `initUploadTable({ ...cfg, fileInputEl, folderInputEl, tableBodyEl, countEl })`.
5. Получить выбранные leaf-файлы через `table.getFiles()`; каждый элемент содержит
1. Скопировать `upload/frontend/` и один из собранных файлов `dist/` в свой проект.
2. Подключить `file-picker.iife.js` через `<script>` и вызвать `FilePicker.initFilePicker`, либо импортировать ESM-бандл.
3. Передать `mount`, `allowedExt`, а при необходимости `labels`, `layout`, `limits` и `onChange`.
4. Получить выбранные leaf-файлы через `picker.getFiles()`; каждый элемент содержит
`path`, `name`, `size` и исходный `file`.
5. После удаления компонента вызвать `picker.destroy()`.
Разрешённые расширения по умолчанию: `.pdf`, `.doc`, `.docx`, `.txt`, `.md`.
Разрешённые расширения демо: `.pdf`, `.doc`, `.docx`, `.txt`, `.md`.
ZIP-файлы используются как контейнеры и раскрываются в браузере; сам ZIP не
возвращается как leaf-файл. Ограничения размера и количества файлов не заданы.
возвращается как leaf-файл. По умолчанию действуют ограничения: 1000 entries,
100 MiB суммарно, 50 MiB на entry и глубина 20.
## Legacy