Архитектура и границы пакетов
Цель: сохранить Core детерминированным и framework‑agnostic, а Vue‑слой — тонким адаптером.
1) Границы ответственности
| Пакет | Отвечает | Не отвечает |
|---|---|---|
@affino/datagrid-core | модели, runtime‑signals, viewport/virtualization, selection geometry | Vue refs, SFC‑рендер, adapter‑lifecycle |
@affino/datagrid-vue | composables, UI‑адаптер, lifecycle, интеграция | дублирование геометрии/virtualization |
2) Направление зависимостей
datagrid-coreне зависит от Vue.datagrid-vueзависит отdatagrid-core.
3) Канонический runtime‑pipeline
- Input события попадают в адаптер.
- Адаптер нормализует в core‑контракты.
- Core считает viewport/virtualization.
- Core эмитит детерминированную геометрию.
- Vue‑слой только отображает.
4) Инварианты
- Один владелец scroll‑sync.
- Канонический
pin = left | right | none. - Одна система координат (world/viewport/client).