# SnapScroller: API

## Пропсы корня

| Проп | Тип | По умолчанию | Обязательный | Описание |
| --- | --- | --- | --- | --- |
| `ref` | `Ref<HTMLDivElement>` | — | Нет | Ref на элемент скроллера. |
| `apiRef` | `Ref<SnapScrollerApiRef>` | — | Нет | Ref на императивный API скроллера. Предоставляет `element` и методы `prev()` и `next()` для программного управления. |
| `defaultIndex` | `number` | — | Нет | Начальный индекс элемента, к которому выполняется привязка при монтировании. |
| `onScrollSnapChange` | `(element: HTMLElement, index: number) => void` | — | Нет | Вызывается, когда операция прокрутки с привязкой полностью завершена и скроллер остановился на новом индексе привязки. Колбэк вызывается после завершения всех анимаций прокрутки и привязки, когда активная позиция привязки считается стабильной. |
| `onScrollSnapChanging` | `(element: HTMLElement, index: number) => void` | — | Нет | Вызывается, пока операция прокрутки с привязкой идёт и активный индекс привязки ещё меняется. Колбэк может вызываться несколько раз за одну прокрутку или свайп, пока скроллер приближается к конечной позиции привязки. Полезен для оптимистичных обновлений интерфейса, превью или синхронизации промежуточного состояния во время прокрутки. |

Также принимает все атрибуты `<div>`.

## Дочерние части

- `SnapScrollerContent`: элемент с привязкой и `index`.

### `SnapScrollerContent`

| Проп | Тип | По умолчанию | Обязательный | Описание |
| --- | --- | --- | --- | --- |
| `index` | `number` | — | Да | Порядковый индекс элемента внутри SnapScroller. Используется для определения страницы привязки через `data-index` элемента. |
| `asChild` | `boolean` | `false` | Нет | Рендерит содержимое как дочерний элемент (через `Slot`) вместо нативного `<div>`. Атрибуты и ref остаются привязанными к переданному дочернему элементу. |
| `ref` | `Ref<HTMLDivElement>` | — | Нет | Внешний ref на корневой элемент элемента. Объединяется с внутренним `itemRef(index)`, чтобы участвовать в логике привязки. |

Также принимает все атрибуты `<div>`.

## Типы

- `SnapScrollerProps`
- `SnapScrollerContentProps`
- `SnapScrollerApiRef`

## Модель состояния

- Корень вычисляет промежуточный и зафиксированный индексы привязки по позиции прокрутки.
- `apiRef` предоставляет `prev()`, `next()`, прокрутку по ключу и измерения.
- Регистрация дочернего содержимого основана на индексах и должна оставаться стабильной между рендерами.
