11import React , { useMemo , useState } from 'react' ;
2- import { useAnimatedStyle } from 'react-native-reanimated' ;
2+ import {
3+ useAnimatedStyle ,
4+ useSharedValue ,
5+ withTiming ,
6+ } from 'react-native-reanimated' ;
37
48import ChartContext , { useGenerateValues } from '../../helpers/ChartContext' ;
59
610export default function ChartPathProvider ( { data : providedData , children } ) {
711 const values = useGenerateValues ( ) ;
12+ const proceededData = useSharedValue ( null ) ;
813 const dotStyle = useAnimatedStyle (
914 ( ) => ( {
1015 opacity : values . dotScale . value ,
@@ -16,16 +21,50 @@ export default function ChartPathProvider({ data: providedData, children }) {
1621 } ) ,
1722 [ ]
1823 ) ;
24+
25+ const currentPositionVerticalLineStyle = useAnimatedStyle (
26+ ( ) => ( {
27+ opacity : values . dotScale . value ,
28+ transform : [ { translateX : values . positionX . value } ] ,
29+ } ) ,
30+ [ ]
31+ ) ;
32+
33+ const openingPositionHorizontalLineStyle = useAnimatedStyle ( ( ) => {
34+ return {
35+ opacity : proceededData == null ? 0 : 1 ,
36+ transform : [
37+ {
38+ translateY : withTiming (
39+ proceededData ?. value ?. [ 0 ] . y * values ?. layoutSize ?. value ?. height +
40+ 10 || 0
41+ ) ,
42+ } ,
43+ ] ,
44+ } ;
45+ } , [ proceededData ] ) ;
46+
1947 const [ contextReanimatedValue , setContextValue ] = useState ( { } ) ;
2048 const contextValue = useMemo (
2149 ( ) => ( {
2250 dotStyle,
51+ currentPositionVerticalLineStyle,
52+ openingPositionHorizontalLineStyle,
2353 ...values ,
2454 ...contextReanimatedValue ,
2555 providedData,
56+ proceededData,
2657 setContextValue,
2758 } ) ,
28- [ dotStyle , values , contextReanimatedValue , providedData ]
59+ [
60+ dotStyle ,
61+ currentPositionVerticalLineStyle ,
62+ openingPositionHorizontalLineStyle ,
63+ values ,
64+ contextReanimatedValue ,
65+ providedData ,
66+ proceededData ,
67+ ]
2968 ) ;
3069
3170 return (
0 commit comments