import React, { FC, useState, useEffect } from "react"; import { Text, TextStyle, View, TouchableOpacity } from "react-native"; import { useInterval } from "../../../lib/useInterval"; const descriptionStyle: TextStyle = { fontSize: parseInt("16%"), fontWeight: "bold", }; type Props = { areaInfo: string; numberOfLines?: number; onClick?: () => void; onLongClick?: () => void; }; export const AreaDescription:FC = ({ areaInfo, numberOfLines = 0, onClick, onLongClick }) => { const [areaString, setAreaString] = useState(""); const [areaStringLength, setAreaStringLength] = useState(0); const [move, setMove] = useState(0); useInterval( () => { if (areaInfo != "") { setMove(areaStringLength < move ? 0 : move + 1); } }, 350, true ); useEffect(() => { if (!areaInfo) { setAreaString(""); return () => {}; } setAreaString( areaInfo.substring(move, areaInfo.length) + areaInfo.substring(0, move) ); }, [move]); useEffect(() => { if (!areaInfo) { setAreaStringLength(0); return () => {}; } setAreaStringLength(areaInfo.length); }, [areaInfo]); return( {numberOfLines == 1 ? ( 運行情報 >{" "} ) : ( > )} {areaString.replaceAll("\n", "").replaceAll("\r", "")} ); };