Дифф правки прямо в ленте агента. Сначала удаляемые строки перечёркиваются линией слева направо, затем новые строки блоками проявляются из размытия. Неизменённые участки вне контекста свёрнуты в строку «N строк без изменений», которая раскрывается касанием. В шапке — имя файла и счётчики добавленных и удалённых строк.
Когда правка проявилась, в шапке появляются кнопки «Отклонить» и «Принять»: принятие убирает удалённые строки, отклонение — добавленные, а нумерация переключается на итоговую версию. Анимации идут на Reanimated; размытие работает в вебе и на Android, на iOS строки проявляются прозрачностью. При «Уменьшении движения» дифф показывается сразу. Есть тёмная и светлая тема (theme).
Поставьте зависимости:
npm install react-native-reanimated react-native-svgpnpm add react-native-reanimated react-native-svgyarn add react-native-reanimated react-native-svgbun add react-native-reanimated react-native-svgСкопируйте эти файлы в src/shared/components/organisms/inline-diff/:
Код доступен по подпискеPro
Исходник «Встроенный дифф» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Встроенный дифф» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
beforeТип string
afterТип string
fileName?Тип string
context?Тип number
autoPlay?Тип boolean
speed?Тип number
startDelay?Тип number
decision?Тип TInlineDiffDecision
showActions?Тип boolean
onComplete?Тип () => void
onAccept?Тип () => void
onReject?Тип () => void
acceptLabel?Тип string
rejectLabel?Тип string
theme?Тип TInlineDiffTheme
style?Тип StyleProp<ViewStyle>