import React, {useEffect, useRef, useState } from 'react'; import { SketchCanvas, SketchCanvasRef } from 'rn-perfect-sketch-canvas'; import { StyleSheet, Button, View, Text, useColorScheme, Touchable, TouchableOpacity } from 'react-native'; import { SvgXml } from 'react-native-svg'; import Slider from '@react-native-community/slider' import { useSelector } from 'react-redux'; import { Kanji } from '../model/kanji'; import { KanjiMapper } from '../model/kanjiMapper'; import { Eye, EyeOff } from "react-native-feather"; type DrawingCanvaProps = { backgroundImage: string; } const DrawingCanva = (props: DrawingCanvaProps) => { const style = useColorScheme() == 'light' ? style_light : style_dark; const canvasRef = useRef(null); const [strokeWidth, setStroke] = useState(5); const [isCanvasReady, setIsCanvasReady] = useState(false); const [imgXml, setImgXml] = useState(''); const [drawnStrokes, setDrawnStrokes] = useState(0); const selectedKanji = KanjiMapper.SerializedObjectToKanji(useSelector(state => state.kanjiReducer.selectedKanji)); const [isVisible, setIsVisible] = useState(true); useEffect(() => { fetchXml(); if (canvasRef.current) { setIsCanvasReady(true); } }, [canvasRef.current, selectedKanji]); const getCanvasStrokeCount = () => { return canvasRef.current?.toPoints().length; } const fetchXml = async () => { if (selectedKanji instanceof Kanji) { const xml = await (await fetch(selectedKanji.image)).text(); setImgXml(xml); } } return ( setIsVisible(!isVisible)}> {isVisible ? () : ()} {selectedKanji && isVisible && ( )} setStroke(val)} minimumValue={5} maximumValue={15} minimumTrackTintColor={"#FF5C5C"} /> {isCanvasReady && (