Карточка генерации под пузырём с промптом. Сначала в ней медленно вращается сияющая аврора из голубого, розового, фиолетового и бирюзового, а подпись «Генерирую изображение» мерцает. Затем сияние гаснет, и картинка проявляется сверху вниз: из сильного размытия в резкость, а по фронту проявления бежит радужное кольцо.
Размытие и маска проявления считаются шейдером Skia на GPU, время ведёт Reanimated. Когда изображение готово, появляются кнопки «Скачать» и «Сгенерировать заново» — повтор проигрывает всю последовательность с начала. При «Уменьшении движения» изображение проявляется простым переходом. Работает на iOS, Android и в вебе.
Поставьте зависимости:
npm install @react-native-masked-view/masked-view @shopify/react-native-skia expo-linear-gradient react-native-reanimated react-native-svgpnpm add @react-native-masked-view/masked-view @shopify/react-native-skia expo-linear-gradient react-native-reanimated react-native-svgyarn add @react-native-masked-view/masked-view @shopify/react-native-skia expo-linear-gradient react-native-reanimated react-native-svgbun add @react-native-masked-view/masked-view @shopify/react-native-skia expo-linear-gradient react-native-reanimated react-native-svgСкопируйте эти файлы в src/shared/components/organisms/image-generation/:
Код доступен по подпискеPro
Исходник «Генерация изображения» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Генерация изображения» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
src?Тип TImageGenerationSource
prompt?Тип string
alt?Тип string
duration?Тип number
aspectRatio?Тип string
autoPlay?Тип boolean
downloadName?Тип string
onComplete?Тип () => void
onRegenerate?Тип () => void
dreamDuration?Тип number
glow?Тип boolean
generatingLabel?Тип string
doneLabel?Тип string
width?Тип number
style?Тип StyleProp<ViewStyle>