import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/functional/ru/Animation Utils'/>

# Утилиты анимации

Набор функций для работы с анимациями и кадрами отрисовки.

## `frame`

Циклически вызывает requestAnimationFrame до выполнения условия остановки. Используется для создания плавных анимаций.

**Параметры:**
- `callback: () => void` — функция, вызываемая на каждом кадре анимации
- `next?: () => boolean` — функция условия продолжения (опционально)
- `end?: () => void` — функция, выполняемая при завершении анимации (опционально)

```javascript
import { frame } from '@dxtmisha/functional'

// Простая анимация
let count = 0
frame(
  () => console.log(`Кадр ${count++}`), // выполняется каждый кадр
  () => count < 10, // условие продолжения
  () => console.log('Анимация завершена') // выполняется при остановке
)

// Анимация движения элемента
let position = 0
frame(
  () => element.style.left = `${position++}px`,
  () => position < 200
)
```
