import React, { useEffect, useRef, useState } from 'react'; import { StyleSheet, ScrollView, View, TextInput, KeyboardAvoidingView, Platform, Keyboard } from 'react-native'; import { Button, Text, useTheme, Appbar, IconButton, Chip, Surface } from 'react-native-paper'; import { ThemedView } from '@/components/ThemedView'; import { ThemedText } from '@/components/ThemedText'; import { useRouter } from 'expo-router'; import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'; import { StatusBar } from 'expo-status-bar'; import Wrapper from '@/components/ui/Wrapper'; import { format } from 'date-fns'; import { useEditor, EditorContent } from 'rn-text-editor'; export default function NewEntryScreen() { const navigation = useRouter(); const theme = useTheme(); const entryDate = format(new Date(), 'LLL d, h:mm aaa'); const [entryText, setEntryText] = useState(''); const [stats, setStats] = useState<{ words: number; characters: number }>({ words: 0, characters: 0, }); useEffect(() => { const words = entryText.trim().split(/\s+/).filter(Boolean).length; const characters = entryText.length; setStats({ words, characters }); } , [entryText]); const inputRef = React.useRef(null) as React.RefObject; const editor = useEditor({ enableCoreExtensions: true, onUpdate(props) { const newText = props.editor.getNativeText(); setEntryText(newText); }, // Add these properties to improve compatibility }); const insets = useSafeAreaInsets(); const [keyboardHeight, setKeyboardHeight] = useState(0); useEffect(() => { const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => { setKeyboardHeight(Keyboard.metrics()?.height || 0); }); const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => { setKeyboardHeight(0); }); return () => { keyboardDidShowListener.remove(); keyboardDidHideListener.remove(); }; }, []); return ( { stats['characters'] === 0 ? { navigation.back(); }} /> : { navigation.back(); }} /> } { }} /> { }} /> {stats.words} words ยท {stats.characters} characters {/* */} < IconButton icon="format-bold" size={24} accessible={false} onPress={() => { console.log('Bold button pressed'); inputRef.current?.focus(); }} /> { console.log('Italic button pressed'); }} /> { console.log('Underline button pressed'); }} /> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', paddingHorizontal: 1, }, editorContainer: { paddingHorizontal: 5, flex: 1 }, box: { width: 60, height: 60, marginVertical: 20, }, });