1.8 KiB
1.8 KiB
Ответ GPT SOL по архитектуре
1. Архитектура
Архитектура верна. Лишнее сейчас: layout.theme как система тем и Custom Element. Достаточно CSS-переменных/класса темы.
2. Более простой вариант
initFilePicker({ mount, ... }) плюс один ESM-бандл и CSS. IIFE добавлять только для интеграций без ES-модулей.
3. Custom Element
Сначала фабрика и бандл. Custom Element нужен только при подтверждённом declarative-use кейсе; иначе это второй API для сопровождения.
4. Риски
destroy()обязан снимать listeners и очищать DOM/state.onChangeдолжен возвращать копию массива, а не внутренний state.- Нужно сохранять исходные
File; ZIP-элементы ими не являются, поэтому нужен явный тип результата. - Лимиты ZIP: размер, число файлов, суммарный распакованный размер, compression ratio, recursion depth.
fflateвнутри бандла исключает глобальную зависимость.- CSS изолировать префиксом классов; Shadow DOM пока не нужен.
- Не полагаться на абсолютные URL; ассеты должны быть в бандле или URL задаётся интегратором.
- Проверить старые браузеры: ES target,
webkitdirectory, Custom Element. - Для managed Flask достаточно статической раздачи ESM/CSS с корректными MIME и cache/versioning.