import React, { useEffect, useRef } from "react"; import { View, Text, TouchableOpacity, Platform, BackHandler, } from "react-native"; import ActionSheet, { SheetManager } from "react-native-actions-sheet"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import lineColorList from "../../assets/originData/lineColorList"; import { stationIDPair } from "../../lib/getStationList2"; import { lineListPair } from "../../lib/getStationList"; export const TrainMenuLineSelector = () => { const { selectedLine, setSelectedLine, mapsStationData: stationData, } = useTrainMenu(); const { webview } = useCurrentTrain(); const actionSheetRef = useRef(null); const insets = useSafeAreaInsets(); const platformIs = Platform.OS == "android"; return ( } ref={actionSheetRef} isModal={Platform.OS == "ios"} containerStyle={platformIs ? { paddingBottom: insets.bottom } : {}} useBottomSafeAreaPadding={platformIs} > {Object.keys(stationData).map((d) => ( { SheetManager.hide("TrainMenuLineSelector"); const s = selectedLine == d ? undefined : d; if(!s) return; setSelectedLine(s); Object.keys(stationData).forEach((data, indexBase) => { stationData[data].forEach((D, index) => { if (!D.StationMap) return null; if (s && s != data) return; const latlng = D.StationMap.replace( "https://www.google.co.jp/maps/place/", "" ).split(","); if (latlng.length == 0) return null; if (index == 0 ) { webview.current ?.injectJavaScript(`MoveDisplayStation('${data}_${D.MyStation}_${D.Station_JP}'); document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");`); } }); }); }} > {stationIDPair[d]} {lineListPair[stationIDPair[d]]} ))} ); }; const Handler = () => { useEffect(() => { const backAction = () => { SheetManager.hide("TrainMenuLineSelector"); return true; }; const backHandler = BackHandler.addEventListener( "hardwareBackPress", backAction ); return () => backHandler.remove(); }, []); return <>; };