import React, {useEffect} from 'react' import {observer} from 'mobx-react-lite' import {Animated, Easing, Platform, StyleSheet, View} from 'react-native' import {ComposePost} from '../com/composer/Composer' import {useComposerState} from 'state/shell/composer' import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' import {usePalette} from 'lib/hooks/usePalette' export const Composer = observer(function ComposerImpl({ winHeight, }: { winHeight: number }) { const state = useComposerState() const pal = usePalette('default') const initInterp = useAnimatedValue(0) useEffect(() => { if (state) { Animated.timing(initInterp, { toValue: 1, duration: 300, easing: Easing.out(Easing.exp), useNativeDriver: true, }).start() } else { initInterp.setValue(0) } }, [initInterp, state]) const wrapperAnimStyle = { transform: [ { translateY: initInterp.interpolate({ inputRange: [0, 1], outputRange: [winHeight, 0], }), }, ], } // rendering // = if (!state) { return } return ( ) }) const styles = StyleSheet.create({ wrapper: { position: 'absolute', top: 0, bottom: 0, width: '100%', ...Platform.select({ ios: { paddingTop: 24, }, }), }, })