From 0d503265070ff8b6560b8bdc2cf77d33ba6df78f Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 14 Jan 2024 23:40:20 +0900 Subject: [PATCH 01/66] =?UTF-8?q?=E5=B0=8F=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index bb20849..75ac54f 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -266,14 +266,7 @@ export const EachTrainInfo = (props) => { ref={actionSheetRef} drawUnderStatusBar={false} isModal={Platform.OS == "ios"} - containerStyle={ - Platform.OS == "android" - ? { - paddingBottom: insets.bottom, - } - : {} - } - useBottomSafeAreaPadding={Platform.OS == "android"} + //useBottomSafeAreaPadding={Platform.OS == "android"} > Date: Mon, 15 Jan 2024 02:52:52 +0900 Subject: [PATCH 02/66] =?UTF-8?q?=E5=88=97=E8=BB=8A=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AE=E5=88=86=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 624 +++++++++--------- 1 file changed, 299 insertions(+), 325 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 75ac54f..013b455 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -38,7 +38,6 @@ export const EachTrainInfo = (props) => { from, } = props.payload; const [trainData, setTrainData] = useState([]); - const [isTop, setIsTop] = useState(true); const [currentPosition, setCurrentPosition] = useState([]); const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); @@ -66,7 +65,7 @@ export const EachTrainInfo = (props) => { }) .catch((d) => AS.setItem("trainPositionSwitch", "false")); }, []); - const insets = useSafeAreaInsets(); + //bconst insets = useSafeAreaInsets(); const getStationData = (stationName) => { const Stations = stationList.map((a) => a.filter((d) => d.StationName == stationName) @@ -232,7 +231,6 @@ export const EachTrainInfo = (props) => { trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; useEffect(() => { - setIsTop(true); if (!data.trainNum) return; const TD = trainList[data.trainNum]; if (!TD) { @@ -261,7 +259,7 @@ export const EachTrainInfo = (props) => { const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); return ( } ref={actionSheetRef} drawUnderStatusBar={false} @@ -336,72 +334,66 @@ export const EachTrainInfo = (props) => { horizontal pagingEnabled > - + {/* - - - 現在地 {currentPosition.toString()} - - - {currentTrainData?.Pos && currentTrainData?.Pos.match("~") ? ( - <> - - { - currentTrainData?.Pos.replace("(下り)", "") - .replace("(上り)", "") - .split("~")[0] - } - - - ~ - - - { - currentTrainData?.Pos.replace("(下り)", "") - .replace("(上り)", "") - .split("~")[1] - } - - - ) : ( + + + 行先 + - {currentTrainData?.Pos} + 岡山 - )} + + + + + 車両案内 + + + + 宇多津でうずしお号と連結 + + - + { }} > - {isNaN(currentTrainData?.delay) ? "状態" : "遅延時分"} + 編成(使用車両:2700系) - {currentTrainData?.delay} - {isNaN(currentTrainData?.delay) ? "" : "分"} - - - - 列番 - - {currentTrainData?.num} + {"[<自][自>][アン自|指>][アン指|G>]"} - - {/* - - - 行先 - - - 岡山 - - - - - 車両案内 - - - 宇多津でうずしお号と連結 - - - - - - - 編成(使用車両:2700系) - - - - {"[<自][自>][アン自|指>][アン指|G>]"} - - - - */} + */} )} { maxHeight: heightPercentageToDP( from == "AllTrainDiagramView" ? "70%" : "50%" ), - }} - onScroll={(e) => { - if (!Platform.OS !== "android") return; - setIsTop(e.nativeEvent.contentOffset.y < 0); + backgroundColor: "white", }} > - - {/* { /> ほげほげふがふが */} - {trainData.map((i, index) => { - const [station, se, time] = i.split(","); - const Stations = stationList.map((a) => - a.filter((d) => d.StationName == station) - ); - const StationNumbers = - Stations && - Stations.reduce((newArray, e) => { - return newArray.concat(e); - }, []) - .filter((d) => d.StationNumber) - .map((d) => d.StationNumber); + {trainData.map((i, index) => ( + + ))} - const colorIDs = - StationNumbers != null - ? StationNumbers.map((d) => { - return d.split("").filter((s) => "A" < s && s < "Z"); - }).reduce((newArray, e) => { - return newArray.concat(e); - }, []) - : []; - const EachIDs = - StationNumbers != null - ? StationNumbers.map((d) => { - return d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""); - }) - : []; - const date = new Date(); - if (time) { - date.setHours(time.split(":")[0], time.split(":")[1]); - } - if (!isNaN(currentTrainData?.delay)) { - date.setMinutes(date.getMinutes() + currentTrainData?.delay); - } - const timeString = date.toTimeString().split(" ")[0].split(":"); - return ( - openStationACFromEachTrainInfo(station)} - key={station} - > - - - {colorIDs.map((color, index) => ( - - - - {colorIDs[index]} - - - {EachIDs[index]} - - - - ))} - - - {station} - - {points && points.findIndex((d) => d == index) >= 0 ? ( - - 🚊 - - ) : null} - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - {time} - - )} - - {timeString[0]}:{timeString[1]} - - - {se?.replace("発", "出発").replace("着", "到着")} - - - - - ); - })} - - - - - - + + + + @@ -766,3 +519,224 @@ export const EachTrainInfo = (props) => { ); }; + +const StationButton = ({ + i, + index, + stationList, + points, + currentTrainData, + openStationACFromEachTrainInfo, +}) => { + const [station, se, time] = i.split(","); + const Stations = stationList.map((a) => + a.filter((d) => d.StationName == station) + ); + const StationNumbers = + Stations && + Stations.reduce((newArray, e) => { + return newArray.concat(e); + }, []) + .filter((d) => d.StationNumber) + .map((d) => d.StationNumber); + + const colorIDs = + StationNumbers != null + ? StationNumbers.map((d) => { + return d.split("").filter((s) => "A" < s && s < "Z"); + }).reduce((newArray, e) => { + return newArray.concat(e); + }, []) + : []; + const EachIDs = + StationNumbers != null + ? StationNumbers.map((d) => { + return d + .split("") + .filter((s) => "0" <= s && s <= "9") + .join(""); + }) + : []; + const date = new Date(); + if (time) { + date.setHours(time.split(":")[0], time.split(":")[1]); + } + if (!isNaN(currentTrainData?.delay)) { + date.setMinutes(date.getMinutes() + currentTrainData?.delay); + } + + const timeString = date.toTimeString().split(" ")[0].split(":"); + return ( + openStationACFromEachTrainInfo(station)} + key={station} + > + + + {colorIDs.map((color, index) => ( + + + + {colorIDs[index]} + + + {EachIDs[index]} + + + + ))} + + + {station} + + {points && points.findIndex((d) => d == index) >= 0 ? ( + + 🚊 + + ) : null} + {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( + + {time} + + )} + + {timeString[0]}:{timeString[1]} + + + {se?.replace("発", "出発").replace("着", "到着")} + + + + + ); +}; + +const TrainDataView = ({ currentTrainData, currentPosition }) => { + return ( + + + + + + + + ); +}; + +const StateBox = ({ text, title }) => ( + + {title} + + + {text?.match("~") ? ( + <> + {text.split("~")[0]} + + {text.split("~")[1]} + + ) : ( + {text} + )} + + +); +const boxStyle = { + flex: 1, + backgroundColor: "white", + borderRadius: 10, + padding: 10, + margin: 10, +}; +const boxTextStyle = { + fontSize: 28, + color: "#0099CC", + textAlign: "right", +}; From d6a2846f6b1869f1d7c5d91ffa082e4cb33a76f6 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 15 Jan 2024 03:39:47 +0900 Subject: [PATCH 03/66] =?UTF-8?q?dayjs=E3=81=AE=E6=8A=95=E5=85=A5=E3=81=A8?= =?UTF-8?q?=E5=90=84=E7=A8=AE=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 90 ++++++++----------- 1 file changed, 37 insertions(+), 53 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 013b455..711b439 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -27,6 +27,7 @@ import { import lineColorList from "../../assets/originData/lineColorList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; +import dayjs from "dayjs"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -528,44 +529,42 @@ const StationButton = ({ currentTrainData, openStationACFromEachTrainInfo, }) => { - const [station, se, time] = i.split(","); - const Stations = stationList.map((a) => - a.filter((d) => d.StationName == station) - ); + const [station, se, time] = i.split(","); // 阿波池田,発,6:21 + const Stations = stationList + .map((a) => a.filter((d) => d.StationName == station)) + .reduce((newArray, e) => newArray.concat(e), []); + /*Array [ + Object { + "StationName": "佐古", + "StationNumber": "T01", + }, + Object { + "StationName": "佐古", + "StationNumber": "B01", + }, + ] */ const StationNumbers = Stations && - Stations.reduce((newArray, e) => { - return newArray.concat(e); - }, []) - .filter((d) => d.StationNumber) - .map((d) => d.StationNumber); + Stations.filter((d) => d.StationNumber).map((d) => d.StationNumber); + // Array [ "T01", "B01",] + const lineIDs = []; + const EachIDs = []; + StationNumbers.forEach((d) => { + const textArray = d.split(""); + lineIDs.push(textArray.filter((s) => "A" < s && s < "Z").join("")); + EachIDs.push(textArray.filter((s) => "0" <= s && s <= "9").join("")); + }); + // Array [ "T", "B",] + // Array [ "01", "01",] - const colorIDs = - StationNumbers != null - ? StationNumbers.map((d) => { - return d.split("").filter((s) => "A" < s && s < "Z"); - }).reduce((newArray, e) => { - return newArray.concat(e); - }, []) - : []; - const EachIDs = - StationNumbers != null - ? StationNumbers.map((d) => { - return d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""); - }) - : []; - const date = new Date(); - if (time) { - date.setHours(time.split(":")[0], time.split(":")[1]); - } + const dates = dayjs() + .set("hour", parseInt(time.split(":")[0])) + .set("minute", parseInt(time.split(":")[1])); if (!isNaN(currentTrainData?.delay)) { - date.setMinutes(date.getMinutes() + currentTrainData?.delay); + dates.add(currentTrainData?.delay, "minute"); } + const timeString = dates.format("HH:mm").split(":"); - const timeString = date.toTimeString().split(" ")[0].split(":"); return ( openStationACFromEachTrainInfo(station)} @@ -581,13 +580,13 @@ const StationButton = ({ height: "101%", }} > - {colorIDs.map((color, index) => ( + {lineIDs.map((lineID, index) => ( - {colorIDs[index]} - - + {lineIDs[index]} + {"\n"} {EachIDs[index]} @@ -626,14 +617,7 @@ const StationButton = ({ {station} {points && points.findIndex((d) => d == index) >= 0 ? ( - - 🚊 - + 🚊 ) : null} {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( Date: Mon, 15 Jan 2024 04:20:58 +0900 Subject: [PATCH 04/66] =?UTF-8?q?=E9=96=A2=E4=BF=82=E3=81=82=E3=82=8A?= =?UTF-8?q?=E3=81=9D=E3=81=86=E3=81=AA=E5=88=97=E8=BB=8A=E3=82=92=E3=83=94?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E4=BB=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 711b439..78881ca 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -28,6 +28,8 @@ import lineColorList from "../../assets/originData/lineColorList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import dayjs from "dayjs"; +import { getTrainType } from "../../lib/getTrainType"; +import { customTrainDataDetector } from "../custom-train-data"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -46,7 +48,52 @@ export const EachTrainInfo = (props) => { const { currentTrain } = useCurrentTrain(); const [currentTrainData, setCurrentTrainData] = useState([]); + const [nearTrainIDList, setNearTrainIDList] = useState([]); + useEffect(() => { + const returnArray = []; + if (!data.trainNum) return; + if ( + new RegExp(/^4[1-9]\d\d[DM]$/).test(data.trainNum) || + new RegExp(/^5[1-7]\d\d[DM]$/).test(data.trainNum) + ) { + if (trainList[data.trainNum.substring(1)]) { + returnArray.push(data.trainNum.substring(1)); + } + } + if (new RegExp(/^[1-9]\d\d[DM]$/).test(data.trainNum)) { + if (trainList["4" + data.trainNum]) { + returnArray.push("4" + data.trainNum); + } + if (trainList["5" + data.trainNum]) { + returnArray.push("5" + data.trainNum); + } + } + setNearTrainIDList(returnArray); + }, [data]); + const openTrainInfo = (d) => { + const train = customTrainDataDetector(d); + let TrainNumber = ""; + if (train.trainNumDistance != undefined) { + const timeInfo = + parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; + TrainNumber = timeInfo + "号"; + } + const payload = { + data: { + trainNum: d, + limited: `${getTrainType(train.type).data}:${ + train.trainName + }${TrainNumber}`, + }, + navigate, + originalStationList, + from: "AllTrainDiagramView", + }; + SheetManager.show("EachTrainInfo", { + payload, + }); + }; useEffect(() => { setCurrentTrainData( checkDuplicateTrainData( @@ -302,9 +349,17 @@ export const EachTrainInfo = (props) => { : ""} - - {data.trainNum} - + { + nearTrainIDList.length && openTrainInfo(nearTrainIDList[0]); + }} + > + + {data.trainNum} + {nearTrainIDList.length ? "..." : ""} + + + {data.limited != undefined && getType(data.limited.split(":")[0]) && !data.limited.split(":")[1].match("サンポート") && ( From 33c2f00b7381e21b07770717821e9f23eb7181e5 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 15 Jan 2024 20:27:32 +0900 Subject: [PATCH 05/66] =?UTF-8?q?=E7=8F=BE=E5=9C=A8=E5=9C=B0=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=AE=E5=8C=BA=E9=96=93=E8=A1=A8=E7=A4=BA=E3=81=8C?= =?UTF-8?q?=E4=BA=8C=E6=AE=B5=E3=81=A7=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=83=90=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 78881ca..9dfab89 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -754,7 +754,7 @@ const StateBox = ({ text, title }) => ( {title} - + {text?.match("~") ? ( <> {text.split("~")[0]} @@ -764,7 +764,7 @@ const StateBox = ({ text, title }) => ( ) : ( {text} )} - + ); const boxStyle = { From 4009b5eef2bfd08681572c1459ef217a01aa0c5d Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 15 Jan 2024 20:30:56 +0900 Subject: [PATCH 06/66] =?UTF-8?q?=E9=81=85=E5=BB=B6=E6=99=82=E5=88=86?= =?UTF-8?q?=E3=81=AE=E5=8F=8D=E6=98=A0=E3=81=8C=E3=81=A7=E3=81=8D=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E3=83=90=E3=82=B0=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 9dfab89..5afc5d5 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -614,10 +614,8 @@ const StationButton = ({ const dates = dayjs() .set("hour", parseInt(time.split(":")[0])) - .set("minute", parseInt(time.split(":")[1])); - if (!isNaN(currentTrainData?.delay)) { - dates.add(currentTrainData?.delay, "minute"); - } + .set("minute", parseInt(time.split(":")[1])) + .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); const timeString = dates.format("HH:mm").split(":"); return ( From 6300259e709a52d0bb00825a7fd1ecfe32b0a1d1 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Tue, 16 Jan 2024 01:54:51 +0900 Subject: [PATCH 07/66] =?UTF-8?q?=E7=89=B9=E6=80=A5=E5=88=97=E8=BB=8A?= =?UTF-8?q?=E3=81=AE=E5=88=86=E5=89=B2=E4=BD=B5=E5=90=88=E3=81=AB=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E4=B8=AD(=E6=9D=A1=E4=BB=B6=E4=B8=8D=E8=B6=B3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 52 +++- .../ActionSheetComponents/EachTrainInfo.js | 276 +++++++++++------- stateBox/useBusAndTrainData.js | 10 +- 3 files changed, 221 insertions(+), 117 deletions(-) diff --git a/App.js b/App.js index 87592e3..da40942 100644 --- a/App.js +++ b/App.js @@ -3,6 +3,7 @@ import { NavigationContainer } from "@react-navigation/native"; import { createStackNavigator } from "@react-navigation/stack"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { Platform, UIManager } from "react-native"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; import { UpdateAsync } from "./UpdateAsync.js"; import { AS } from "./storageControl"; import TNDView from "./ndView"; @@ -45,26 +46,28 @@ export default function App() { useEffect(() => UpdateAsync(), []); return ( - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + ); } export function AppContainer() { - const { setBusAndTrainData } = useBusAndTrainData(); + const { setBusAndTrainData, setTrainPairData } = useBusAndTrainData(); useEffect(() => { AS.getItem("busAndTrain") .then((d) => { @@ -82,6 +85,23 @@ export function AppContainer() { }); }); }, []); + useEffect(() => { + AS.getItem("trainPairData") + .then((d) => { + const returnData = JSON.parse(d); + setTrainPairData(returnData); + }) + .catch(() => { + fetch( + "https://script.google.com/macros/s/AKfycbyoBH7_rBwzPmhU1ghRBNTAVuvGltIrZtWxE07gDdhGGlDL9Ip2qk3pFM5u2xtRBl8/exec" + ) + .then((d) => d.json()) + .then((d) => { + setTrainPairData(d); + AS.setItem("trainPairData", JSON.stringify(d)); + }); + }); + }, []); const { areaInfo, setAreaInfo } = useAreaInfo(); const getAreaData = () => diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 5afc5d5..de91f14 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -30,6 +30,8 @@ import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import dayjs from "dayjs"; import { getTrainType } from "../../lib/getTrainType"; import { customTrainDataDetector } from "../custom-train-data"; +import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; +import { Swipeable } from "react-native-gesture-handler"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -46,14 +48,26 @@ export const EachTrainInfo = (props) => { const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); + const { trainPairData } = useBusAndTrainData(); const [currentTrainData, setCurrentTrainData] = useState([]); const [nearTrainIDList, setNearTrainIDList] = useState([]); + const [showNearTrain, setShowNearTrain] = useState([]); + const [isConcatNear, setIsConcatNear] = useState(false); + //裏列車探索 useEffect(() => { + const trainPairList = {}; + trainPairData.forEach((d) => { + trainPairList[Object.keys(d)[0]] = d[Object.keys(d)[0]]; + }); const returnArray = []; if (!data.trainNum) return; + if (trainPairList[data.trainNum]) { + returnArray.push(Object.keys(trainPairList[data.trainNum])[0]); + } if ( + // 列番が4xxDまたは5xxDの場合はxxDの列番を検索 new RegExp(/^4[1-9]\d\d[DM]$/).test(data.trainNum) || new RegExp(/^5[1-7]\d\d[DM]$/).test(data.trainNum) ) { @@ -62,15 +76,53 @@ export const EachTrainInfo = (props) => { } } if (new RegExp(/^[1-9]\d\d[DM]$/).test(data.trainNum)) { - if (trainList["4" + data.trainNum]) { - returnArray.push("4" + data.trainNum); - } - if (trainList["5" + data.trainNum]) { - returnArray.push("5" + data.trainNum); - } + // 列番がxxDの場合は4xxDと5xxDの列番を検索 + if (trainList["4" + data.trainNum]) returnArray.push("4" + data.trainNum); + if (trainList["5" + data.trainNum]) returnArray.push("5" + data.trainNum); } setNearTrainIDList(returnArray); + if (!returnArray[0]) return; + const TD = trainList[returnArray[0]]; + if (!TD) return; + const TDArray = TD.split("#").filter((d) => d != ""); + setShowNearTrain(TDArray); }, [data]); + + const openBackTrainInfo = (stationInfo, currentTrainIndex) => { + console.log(trainData); + console.log(showNearTrain); + const stationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationBackTrain = + stationPosition == 0 + ? "head" + : stationPosition == showNearTrain.length - 1 + ? "tail" + : "middle"; + if (relationBackTrain === "head") { + const migrationTrainData = [ + ...trainData.slice(0, currentTrainIndex), + ...showNearTrain, + ]; + setTrainData(migrationTrainData); + } else if (relationBackTrain === "tail") { + const migrationTrainData = [ + ...showNearTrain.slice(0, showNearTrain.length - 1), + ...trainData.slice(currentTrainIndex), + ]; + setTrainData(migrationTrainData); + } else if (relationBackTrain === "middle") { + const migrationTrainData = [ + ...trainData.slice(0, currentTrainIndex), + ...showNearTrain.slice(0, stationPosition), + ...trainData.slice(currentTrainIndex), + ]; + setTrainData(migrationTrainData); + } + setIsConcatNear(true); + }; + const openTrainInfo = (d) => { const train = customTrainDataDetector(d); let TrainNumber = ""; @@ -90,9 +142,7 @@ export const EachTrainInfo = (props) => { originalStationList, from: "AllTrainDiagramView", }; - SheetManager.show("EachTrainInfo", { - payload, - }); + //SheetManager.show("EachTrainInfo", { payload }); }; useEffect(() => { setCurrentTrainData( @@ -349,16 +399,10 @@ export const EachTrainInfo = (props) => { : ""} - { - nearTrainIDList.length && openTrainInfo(nearTrainIDList[0]); - }} - > - - {data.trainNum} - {nearTrainIDList.length ? "..." : ""} - - + + {data.trainNum} + {isConcatNear ? ` + ${nearTrainIDList}` : ""} + {data.limited != undefined && getType(data.limited.split(":")[0]) && @@ -553,6 +597,9 @@ export const EachTrainInfo = (props) => { points={points} currentTrainData={currentTrainData} openStationACFromEachTrainInfo={openStationACFromEachTrainInfo} + headAndTail={showNearTrain.map((d) => d.split(",")[0])} + openBackTrainInfo={openBackTrainInfo} + isConcatNear={isConcatNear} /> ))} @@ -583,6 +630,9 @@ const StationButton = ({ points, currentTrainData, openStationACFromEachTrainInfo, + headAndTail, + openBackTrainInfo, + isConcatNear, }) => { const [station, se, time] = i.split(","); // 阿波池田,発,6:21 const Stations = stationList @@ -618,94 +668,120 @@ const StationButton = ({ .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); const timeString = dates.format("HH:mm").split(":"); + const StationNames = Stations && Stations[0]?.StationName; + const [isConnected, setIsConnected] = useState( + headAndTail.includes(StationNames) + ); + const swipagleRef = useRef(null); return ( - openStationACFromEachTrainInfo(station)} + { + openBackTrainInfo(station, index); + swipagleRef.current.close(); + }} + renderRightActions={ + isConnected && !isConcatNear + ? (progress, dragX) => { + //openBackTrainInfo(station, index); + return ; + } + : null + } > - - - {lineIDs.map((lineID, index) => ( - - - - {lineIDs[index]} - {"\n"} - {EachIDs[index]} - - - - ))} - - - {station} - - {points && points.findIndex((d) => d == index) >= 0 ? ( - 🚊 - ) : null} - {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( - - {time} - - )} - openStationACFromEachTrainInfo(station)} + key={station} + > + + - {timeString[0]}:{timeString[1]} - - - {se?.replace("発", "出発").replace("着", "到着")} - + {lineIDs.map((lineID, index) => ( + + + + {lineIDs[index]} + {"\n"} + {EachIDs[index]} + + + + ))} + + + {station} + + {points && points.findIndex((d) => d == index) >= 0 ? ( + 🚊 + ) : null} + {!isNaN(currentTrainData?.delay) && + currentTrainData?.delay != 0 && ( + + {time} + + )} + + {timeString[0]}:{timeString[1]} + + + {se?.replace("発", "出発").replace("着", "到着")} + + - - + + ); }; diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index a4791b5..e8694bd 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -2,6 +2,8 @@ import React, { createContext, useContext, useState } from "react"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, + trainPairData: [], + setTrainPairData: () => {}, }; const BusAndTrainDataContext = createContext(initialState); @@ -12,10 +14,16 @@ export const useBusAndTrainData = () => { export const BusAndTrainDataProvider = ({ children }) => { const [busAndTrainData, setBusAndTrainData] = useState([]); + const [trainPairData, setTrainPairData] = useState([]); return ( {children} From 4219e12164fa702f2dcbfb542543edf4979be0e4 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Thu, 25 Jan 2024 22:36:11 +0900 Subject: [PATCH 08/66] =?UTF-8?q?initializeTrainPairList=E3=82=92=E7=A7=BB?= =?UTF-8?q?=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 40 ++++++++++++------- stateBox/useBusAndTrainData.js | 10 ++++- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index de91f14..0f2a902 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -48,7 +48,7 @@ export const EachTrainInfo = (props) => { const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); - const { trainPairData } = useBusAndTrainData(); + const { initializeTrainPairList } = useBusAndTrainData(); const [currentTrainData, setCurrentTrainData] = useState([]); const [nearTrainIDList, setNearTrainIDList] = useState([]); @@ -57,10 +57,8 @@ export const EachTrainInfo = (props) => { //裏列車探索 useEffect(() => { - const trainPairList = {}; - trainPairData.forEach((d) => { - trainPairList[Object.keys(d)[0]] = d[Object.keys(d)[0]]; - }); + const trainPairList = initializeTrainPairList(); + const returnArray = []; if (!data.trainNum) return; if (trainPairList[data.trainNum]) { @@ -89,33 +87,45 @@ export const EachTrainInfo = (props) => { }, [data]); const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - console.log(trainData); - console.log(showNearTrain); - const stationPosition = showNearTrain.findIndex( + console.log(trainData); //trainDataは現在の列車の停車駅リスト + console.log(showNearTrain); //showNearTrainは裏列車の停車駅リスト + const mainTrainStationPosition = trainData.findIndex( (d) => d.split(",")[0] == stationInfo ); - const relationBackTrain = - stationPosition == 0 + const relationMain = + mainTrainStationPosition == 0 ? "head" - : stationPosition == showNearTrain.length - 1 + : mainTrainStationPosition == trainData.length - 1 ? "tail" : "middle"; - if (relationBackTrain === "head") { + console.log(relationMain); + + const subTrainStationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationSub = + subTrainStationPosition == 0 + ? "head" + : subTrainStationPosition == showNearTrain.length - 1 + ? "tail" + : "middle"; + console.log(relationSub); + if (relationSub === "head") { const migrationTrainData = [ ...trainData.slice(0, currentTrainIndex), ...showNearTrain, ]; setTrainData(migrationTrainData); - } else if (relationBackTrain === "tail") { + } else if (relationSub === "tail") { const migrationTrainData = [ ...showNearTrain.slice(0, showNearTrain.length - 1), ...trainData.slice(currentTrainIndex), ]; setTrainData(migrationTrainData); - } else if (relationBackTrain === "middle") { + } else if (relationSub === "middle") { const migrationTrainData = [ ...trainData.slice(0, currentTrainIndex), - ...showNearTrain.slice(0, stationPosition), + ...showNearTrain.slice(0, subTrainStationPosition), ...trainData.slice(currentTrainIndex), ]; setTrainData(migrationTrainData); diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index e8694bd..3c8311f 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -4,6 +4,7 @@ const initialState = { setBusAndTrainData: () => {}, trainPairData: [], setTrainPairData: () => {}, + initializeTrainPairList: () => {}, }; const BusAndTrainDataContext = createContext(initialState); @@ -15,7 +16,13 @@ export const useBusAndTrainData = () => { export const BusAndTrainDataProvider = ({ children }) => { const [busAndTrainData, setBusAndTrainData] = useState([]); const [trainPairData, setTrainPairData] = useState([]); - + const initializeTrainPairList = () => { + const trainPairList = {}; + trainPairData.forEach((d) => { + trainPairList[Object.keys(d)[0]] = d[Object.keys(d)[0]]; + }); + return trainPairList; + }; return ( { setBusAndTrainData, trainPairData, setTrainPairData, + initializeTrainPairList, }} > {children} From ab0805689f11635be45c40e5181ecebfd02871be Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Thu, 25 Jan 2024 23:05:31 +0900 Subject: [PATCH 09/66] =?UTF-8?q?=E3=83=80=E3=82=A4=E3=83=A4=E7=B5=90?= =?UTF-8?q?=E5=90=88=E5=87=A6=E7=90=86=E3=82=92=E5=BC=B7=E5=8C=96=E3=80=81?= =?UTF-8?q?=E4=B8=80=E9=83=A8=E3=81=AE=E5=88=97=E8=BB=8A=E3=81=A7=E7=B5=90?= =?UTF-8?q?=E5=90=88=E3=81=8C=E5=B4=A9=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 69 ++++++++++++++----- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 0f2a902..b90b6b2 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -110,25 +110,56 @@ export const EachTrainInfo = (props) => { ? "tail" : "middle"; console.log(relationSub); - if (relationSub === "head") { - const migrationTrainData = [ - ...trainData.slice(0, currentTrainIndex), - ...showNearTrain, - ]; - setTrainData(migrationTrainData); - } else if (relationSub === "tail") { - const migrationTrainData = [ - ...showNearTrain.slice(0, showNearTrain.length - 1), - ...trainData.slice(currentTrainIndex), - ]; - setTrainData(migrationTrainData); - } else if (relationSub === "middle") { - const migrationTrainData = [ - ...trainData.slice(0, currentTrainIndex), - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData.slice(currentTrainIndex), - ]; - setTrainData(migrationTrainData); + switch (relationMain) { + case "head": + if (relationSub == "head") { + break; + } else if (relationSub == "tail") { + const migrationTrainData = [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + setTrainData(migrationTrainData); + } else if (relationSub == "middle") { + const migrationTrainData = [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + setTrainData(migrationTrainData); + } + break; + case "tail": + if (relationSub == "head") { + const migrationTrainData = [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + setTrainData(migrationTrainData); + } else if (relationSub == "tail") { + break; + } else if (relationSub == "middle") { + const migrationTrainData = [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain.slice(subTrainStationPosition), + ]; + setTrainData(migrationTrainData); + } + break; + case "middle": + if (relationSub == "head") { + const migrationTrainData = [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + setTrainData(migrationTrainData); + } else if (relationSub == "tail") { + const migrationTrainData = [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData.slice(mainTrainStationPosition), + ]; + setTrainData(migrationTrainData); + } + break; } setIsConcatNear(true); }; From d4ddaeb17ee7ed292efe0715f4e3c14d0bfde9d2 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 02:32:26 +0900 Subject: [PATCH 10/66] =?UTF-8?q?=E3=82=B9=E3=83=AF=E3=82=A4=E3=83=97?= =?UTF-8?q?=E3=82=92=E3=82=84=E3=82=81=E3=81=A6=E3=83=9C=E3=82=BF=E3=83=B3?= =?UTF-8?q?=E3=82=92=E6=8A=BC=E3=81=97=E3=81=A6=E6=8B=A1=E5=BC=B5=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 247 +++++++++--------- 1 file changed, 130 insertions(+), 117 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 84868d7..aeeb7ed 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -54,6 +54,8 @@ export const EachTrainInfo = (props) => { const [nearTrainIDList, setNearTrainIDList] = useState([]); const [showNearTrain, setShowNearTrain] = useState([]); const [isConcatNear, setIsConcatNear] = useState(false); + const [tailStation, setTailStation] = useState(); + const [headStation, setHeadStation] = useState(); //裏列車探索 useEffect(() => { @@ -85,10 +87,22 @@ export const EachTrainInfo = (props) => { const TDArray = TD.split("#").filter((d) => d != ""); setShowNearTrain(TDArray); }, [data]); + useEffect(() => { + if (trainData.length == 0) return; + showNearTrain.forEach((d) => { + const [station, se, time] = d.split(","); + + console.log(trainData); //trainDataは現在の列車の停車駅リスト + console.log(station); //showNearTrainは裏列車の停車駅リスト + console.log(trainData[0]); + if (station == trainData[0].split(",")[0]) + setHeadStation(trainData[0].split(",")[0]); + if (station == trainData[trainData.length - 1].split(",")[0]) + setTailStation(trainData[trainData.length - 1].split(",")[0]); + }); + }, [trainData, showNearTrain]); const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - console.log(trainData); //trainDataは現在の列車の停車駅リスト - console.log(showNearTrain); //showNearTrainは裏列車の停車駅リスト const mainTrainStationPosition = trainData.findIndex( (d) => d.split(",")[0] == stationInfo ); @@ -98,7 +112,6 @@ export const EachTrainInfo = (props) => { : mainTrainStationPosition == trainData.length - 1 ? "tail" : "middle"; - console.log(relationMain); const subTrainStationPosition = showNearTrain.findIndex( (d) => d.split(",")[0] == stationInfo @@ -109,7 +122,6 @@ export const EachTrainInfo = (props) => { : subTrainStationPosition == showNearTrain.length - 1 ? "tail" : "middle"; - console.log(relationSub); switch (relationMain) { case "head": if (relationSub == "head") { @@ -622,6 +634,13 @@ export const EachTrainInfo = (props) => { backgroundColor: "white", }} > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)}> + + 直通列車を表示 + + + )} {/* { /> ほげほげふがふが */} - {trainData.map((i, index) => (i.split(",")[1] == "提" ? : - d.split(",")[0])} - openBackTrainInfo={openBackTrainInfo} - isConcatNear={isConcatNear} - /> - ))} + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + d.split(",")[0])} + openBackTrainInfo={openBackTrainInfo} + isConcatNear={isConcatNear} + /> + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)}> + + 直通列車を表示 + + + )} { ); }; -const DataFromButton = ({i}) => { +const DataFromButton = ({ i }) => { const [station, se, time] = i.split(","); return ( { {station} - 提供元 + 提供元 + - ); -} +}; const StationButton = ({ i, @@ -744,114 +778,93 @@ const StationButton = ({ ); const swipagleRef = useRef(null); return ( - openStationACFromEachTrainInfo(station)} key={station} - onSwipeableOpen={() => { - openBackTrainInfo(station, index); - swipagleRef.current.close(); - }} - renderRightActions={ - isConnected && !isConcatNear - ? (progress, dragX) => { - //openBackTrainInfo(station, index); - return ; - } - : null - } > - openStationACFromEachTrainInfo(station)} - key={station} - > - - - {lineIDs.map((lineID, index) => ( - + + {lineIDs.map((lineID, index) => ( + + + - - - {lineIDs[index]} - {"\n"} - {EachIDs[index]} - - - - ))} - - - {station} - - {points && points.findIndex((d) => d == index) >= 0 ? ( - 🚊 - ) : null} - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - {time} - - )} + {lineIDs[index]} + {"\n"} + {EachIDs[index]} + + + + ))} + + + {station} + + {points && points.findIndex((d) => d == index) >= 0 ? ( + 🚊 + ) : null} + {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( - {timeString[0]}:{timeString[1]} + {time} - - {se?.replace("発", "出発").replace("着", "到着")} - - + )} + + {timeString[0]}:{timeString[1]} + + + {se?.replace("発", "出発").replace("着", "到着")} + - - + + ); }; From fd2fe310ab68df3fad0c5488fd98310be9005c33 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 02:40:40 +0900 Subject: [PATCH 11/66] =?UTF-8?q?CSS=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index aeeb7ed..fd32383 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -635,9 +635,22 @@ export const EachTrainInfo = (props) => { }} > {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)}> - - 直通列車を表示 + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 )} @@ -667,10 +680,23 @@ export const EachTrainInfo = (props) => { ) )} {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)}> - - 直通列車を表示 - + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + )} From a6d8f9ac3398cd70b204808de4d791a5c2f3f4d6 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 11:44:04 +0900 Subject: [PATCH 12/66] =?UTF-8?q?=E6=96=87=E5=AD=97=E3=81=AE=E4=B8=8A?= =?UTF-8?q?=E3=81=ABView=E3=81=8C=E8=A2=AB=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=83=90=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index fd32383..8b3feb4 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -647,11 +647,11 @@ export const EachTrainInfo = (props) => { alignItems: "center", }} > - - 「本当の始発駅」を表示 - + 「本当の始発駅」を表示 + )} {/* Date: Fri, 2 Feb 2024 12:11:32 +0900 Subject: [PATCH 13/66] =?UTF-8?q?=E8=A3=8F=E5=88=97=E8=BB=8A=E6=8E=A2?= =?UTF-8?q?=E7=B4=A2=E3=82=92=E5=A4=96=E9=83=A8=E3=81=AB=E5=87=BA=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 44 ++----------------- stateBox/useBusAndTrainData.js | 31 +++++++++++++ 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 8b3feb4..4c81861 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -7,7 +7,6 @@ import { Text, TouchableOpacity, TouchableWithoutFeedback, - TouchableHighlight, Platform, } from "react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; @@ -15,9 +14,7 @@ import ActionSheet, { SheetManager, useScrollHandlers, } from "react-native-actions-sheet"; -import { useSafeAreaInsets } from "react-native-safe-area-context"; import { AS } from "../../storageControl"; -import LottieView from "lottie-react-native"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; import { @@ -31,7 +28,6 @@ import dayjs from "dayjs"; import { getTrainType } from "../../lib/getTrainType"; import { customTrainDataDetector } from "../custom-train-data"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; -import { Swipeable } from "react-native-gesture-handler"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -48,7 +44,7 @@ export const EachTrainInfo = (props) => { const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); - const { initializeTrainPairList } = useBusAndTrainData(); + const { getInfluencedTrainData } = useBusAndTrainData(); const [currentTrainData, setCurrentTrainData] = useState([]); const [nearTrainIDList, setNearTrainIDList] = useState([]); @@ -59,36 +55,15 @@ export const EachTrainInfo = (props) => { //裏列車探索 useEffect(() => { - const trainPairList = initializeTrainPairList(); - - const returnArray = []; if (!data.trainNum) return; - if (trainPairList[data.trainNum]) { - returnArray.push(Object.keys(trainPairList[data.trainNum])[0]); - } - if ( - // 列番が4xxDまたは5xxDの場合はxxDの列番を検索 - new RegExp(/^4[1-9]\d\d[DM]$/).test(data.trainNum) || - new RegExp(/^5[1-7]\d\d[DM]$/).test(data.trainNum) - ) { - if (trainList[data.trainNum.substring(1)]) { - returnArray.push(data.trainNum.substring(1)); - } - } - if (new RegExp(/^[1-9]\d\d[DM]$/).test(data.trainNum)) { - // 列番がxxDの場合は4xxDと5xxDの列番を検索 - if (trainList["4" + data.trainNum]) returnArray.push("4" + data.trainNum); - if (trainList["5" + data.trainNum]) returnArray.push("5" + data.trainNum); - } + const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); setNearTrainIDList(returnArray); - if (!returnArray[0]) return; - const TD = trainList[returnArray[0]]; - if (!TD) return; - const TDArray = TD.split("#").filter((d) => d != ""); setShowNearTrain(TDArray); }, [data]); + useEffect(() => { if (trainData.length == 0) return; + if (showNearTrain.length == 0) return; showNearTrain.forEach((d) => { const [station, se, time] = d.split(","); @@ -673,9 +648,6 @@ export const EachTrainInfo = (props) => { points={points} currentTrainData={currentTrainData} openStationACFromEachTrainInfo={openStationACFromEachTrainInfo} - headAndTail={showNearTrain.map((d) => d.split(",")[0])} - openBackTrainInfo={openBackTrainInfo} - isConcatNear={isConcatNear} /> ) )} @@ -760,9 +732,6 @@ const StationButton = ({ points, currentTrainData, openStationACFromEachTrainInfo, - headAndTail, - openBackTrainInfo, - isConcatNear, }) => { const [station, se, time] = i.split(","); // 阿波池田,発,6:21 const Stations = stationList @@ -798,11 +767,6 @@ const StationButton = ({ .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); const timeString = dates.format("HH:mm").split(":"); - const StationNames = Stations && Stations[0]?.StationName; - const [isConnected, setIsConnected] = useState( - headAndTail.includes(StationNames) - ); - const swipagleRef = useRef(null); return ( openStationACFromEachTrainInfo(station)} diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index 3c8311f..cbfaf86 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -1,10 +1,12 @@ import React, { createContext, useContext, useState } from "react"; +import trainList from "../assets/originData/trainList"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, trainPairData: [], setTrainPairData: () => {}, initializeTrainPairList: () => {}, + getInfluencedTrainData: () => {}, }; const BusAndTrainDataContext = createContext(initialState); @@ -23,6 +25,34 @@ export const BusAndTrainDataProvider = ({ children }) => { }); return trainPairList; }; + const getInfluencedTrainData = (trainNum) => { + const trainPairList = initializeTrainPairList(); + + const returnArray = []; + if (!trainNum) return; + if (trainPairList[trainNum]) { + returnArray.push(Object.keys(trainPairList[trainNum])[0]); + } + if ( + // 列番が4xxDまたは5xxDの場合はxxDの列番を検索 + new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum) || + new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum) + ) { + if (trainList[trainNum.substring(1)]) { + returnArray.push(trainNum.substring(1)); + } + } + if (new RegExp(/^[1-9]\d\d[DM]$/).test(trainNum)) { + // 列番がxxDの場合は4xxDと5xxDの列番を検索 + if (trainList["4" + trainNum]) returnArray.push("4" + trainNum); + if (trainList["5" + trainNum]) returnArray.push("5" + trainNum); + } + if (!returnArray[0]) return [[], []]; + const TD = trainList[returnArray[0]]; + if (!TD) return [[], []]; + const TDArray = TD.split("#").filter((d) => d != ""); + return [returnArray, TDArray]; + }; return ( { trainPairData, setTrainPairData, initializeTrainPairList, + getInfluencedTrainData, }} > {children} From e72cb03e08dcbbbff73d609de0d41bac85360e80 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 12:20:33 +0900 Subject: [PATCH 14/66] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 4c81861..becdb0e 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -40,7 +40,6 @@ export const EachTrainInfo = (props) => { } = props.payload; const [trainData, setTrainData] = useState([]); const [currentPosition, setCurrentPosition] = useState([]); - const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); @@ -81,22 +80,22 @@ export const EachTrainInfo = (props) => { const mainTrainStationPosition = trainData.findIndex( (d) => d.split(",")[0] == stationInfo ); - const relationMain = - mainTrainStationPosition == 0 - ? "head" - : mainTrainStationPosition == trainData.length - 1 - ? "tail" - : "middle"; + + const relationMain = (() => { + if (mainTrainStationPosition == 0) return "head"; + if (mainTrainStationPosition == trainData.length - 1) return "tail"; + return "middle"; + })(); const subTrainStationPosition = showNearTrain.findIndex( (d) => d.split(",")[0] == stationInfo ); - const relationSub = - subTrainStationPosition == 0 - ? "head" - : subTrainStationPosition == showNearTrain.length - 1 - ? "tail" - : "middle"; + const relationSub = (() => { + if (subTrainStationPosition == 0) return "head"; + if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; + return "middle"; + })(); + switch (relationMain) { case "head": if (relationSub == "head") { From edaa16cf358ab6f4ca1e20e011ad4cdcd68446cb Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 12:29:42 +0900 Subject: [PATCH 15/66] =?UTF-8?q?=E7=B5=90=E5=90=88=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E9=96=A2=E6=95=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 130 +++++++++--------- 1 file changed, 63 insertions(+), 67 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index becdb0e..84320ca 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -77,76 +77,72 @@ export const EachTrainInfo = (props) => { }, [trainData, showNearTrain]); const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - const mainTrainStationPosition = trainData.findIndex( - (d) => d.split(",")[0] == stationInfo - ); + const migrationArray = (stationInfo) => { + const mainTrainStationPosition = trainData.findIndex( + (d) => d.split(",")[0] == stationInfo + ); - const relationMain = (() => { - if (mainTrainStationPosition == 0) return "head"; - if (mainTrainStationPosition == trainData.length - 1) return "tail"; - return "middle"; - })(); + const relationMain = (() => { + if (mainTrainStationPosition == 0) return "head"; + if (mainTrainStationPosition == trainData.length - 1) return "tail"; + return "middle"; + })(); - const subTrainStationPosition = showNearTrain.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - const relationSub = (() => { - if (subTrainStationPosition == 0) return "head"; - if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; - return "middle"; - })(); + const subTrainStationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationSub = (() => { + if (subTrainStationPosition == 0) return "head"; + if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; + return "middle"; + })(); - switch (relationMain) { - case "head": - if (relationSub == "head") { - break; - } else if (relationSub == "tail") { - const migrationTrainData = [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - setTrainData(migrationTrainData); - } else if (relationSub == "middle") { - const migrationTrainData = [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - setTrainData(migrationTrainData); - } - break; - case "tail": - if (relationSub == "head") { - const migrationTrainData = [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - setTrainData(migrationTrainData); - } else if (relationSub == "tail") { - break; - } else if (relationSub == "middle") { - const migrationTrainData = [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain.slice(subTrainStationPosition), - ]; - setTrainData(migrationTrainData); - } - break; - case "middle": - if (relationSub == "head") { - const migrationTrainData = [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - setTrainData(migrationTrainData); - } else if (relationSub == "tail") { - const migrationTrainData = [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData.slice(mainTrainStationPosition), - ]; - setTrainData(migrationTrainData); - } - break; - } + switch (relationMain) { + case "head": + if (relationSub == "head") { + return; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else if (relationSub == "middle") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else return; + case "tail": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return; + } else if (relationSub == "middle") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain.slice(subTrainStationPosition), + ]; + } else return; + case "middle": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData.slice(mainTrainStationPosition), + ]; + } else return; + } + }; + const array = migrationArray(stationInfo); + if (!array) return; + setTrainData(array); setIsConcatNear(true); }; From e3a65b9127132cb1119063f33179b3ab4d5bdfcd Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sat, 3 Feb 2024 02:30:36 +0900 Subject: [PATCH 16/66] =?UTF-8?q?=E5=A4=9A=E5=B1=A4=E5=BB=BA=E3=81=A6?= =?UTF-8?q?=E5=88=97=E8=BB=8A=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 69 +++++++++++++++---- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 84320ca..999a1ed 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -51,6 +51,7 @@ export const EachTrainInfo = (props) => { const [isConcatNear, setIsConcatNear] = useState(false); const [tailStation, setTailStation] = useState(); const [headStation, setHeadStation] = useState(); + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); //裏列車探索 useEffect(() => { @@ -165,7 +166,12 @@ export const EachTrainInfo = (props) => { originalStationList, from: "AllTrainDiagramView", }; - //SheetManager.show("EachTrainInfo", { payload }); + SheetManager.hide("EachTrainInfo").then(() => { + //0.1秒待機してから開く + setTimeout(() => { + SheetManager.show("EachTrainInfo", { payload }); + }, 1); + }); }; useEffect(() => { setCurrentTrainData( @@ -380,7 +386,7 @@ export const EachTrainInfo = (props) => { const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); return ( } ref={actionSheetRef} drawUnderStatusBar={false} @@ -448,6 +454,9 @@ export const EachTrainInfo = (props) => { {from == "AllTrainDiagramView" || ( setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} style={{ flexDirection: "row", //width: widthPercentageToDP("200%"), @@ -460,6 +469,8 @@ export const EachTrainInfo = (props) => { {/* { +const TrainDataView = ({ + currentTrainData, + currentPosition, + nearTrainIDList, + openTrainInfo, +}) => { return ( { } /> - - + + + + { + if (nearTrainIDList.length == 0) return; + openTrainInfo(nearTrainIDList[0]); + }} + > + {nearTrainIDList.length == 0 ? ( + + ) : ( + + )} + ); }; -const StateBox = ({ text, title }) => ( - - {title} +const StateBox = ({ text, title, style }) => ( + + {title} - + {text?.match("~") ? ( <> {text.split("~")[0]} @@ -917,7 +956,7 @@ const boxStyle = { margin: 10, }; const boxTextStyle = { - fontSize: 28, + fontSize: 25, color: "#0099CC", textAlign: "right", }; From cbcb0dc9c2fec766f563559a7d9303fb8d402e9a Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sat, 3 Feb 2024 02:34:58 +0900 Subject: [PATCH 17/66] =?UTF-8?q?=E3=82=B8=E3=82=A7=E3=82=B9=E3=83=81?= =?UTF-8?q?=E3=83=A3=E3=83=BC=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E3=83=90?= =?UTF-8?q?=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 1 + 1 file changed, 1 insertion(+) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 999a1ed..e88a619 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -386,6 +386,7 @@ export const EachTrainInfo = (props) => { const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); return ( } ref={actionSheetRef} From 4784899a07e87434a0a2d27b671114fc1a63b9a6 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Tue, 6 Feb 2024 15:19:07 +0900 Subject: [PATCH 18/66] =?UTF-8?q?=E7=94=BB=E5=83=8F=E5=85=B1=E6=9C=89?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/JRSTraInfo.js | 210 +++++++++++------- package.json | 2 + yarn.lock | 46 ++++ 3 files changed, 180 insertions(+), 78 deletions(-) diff --git a/components/ActionSheetComponents/JRSTraInfo.js b/components/ActionSheetComponents/JRSTraInfo.js index 05c2123..03bb430 100644 --- a/components/ActionSheetComponents/JRSTraInfo.js +++ b/components/ActionSheetComponents/JRSTraInfo.js @@ -12,6 +12,8 @@ import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; import ActionSheet, { useScrollHandlers } from "react-native-actions-sheet"; import LottieView from "lottie-react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; +import ViewShot from "react-native-view-shot"; +import * as Sharing from "expo-sharing"; import { useTrainDelayData } from "../../stateBox/useTrainDelayData"; export const JRSTraInfo = () => { const { getTime, delayData, loadingDelayData, setLoadingDelayData } = @@ -19,6 +21,20 @@ export const JRSTraInfo = () => { const actionSheetRef = useRef(null); const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); const insets = useSafeAreaInsets(); + const viewShot = useRef(null); + + const onCapture = async () => { + const url = await viewShot.current.capture(); + + const ok = await Sharing.isAvailableAsync(); + if (ok) { + await Sharing.shareAsync( + "file://" + url, + (options = { mimeType: "image/jpeg", dialogTitle: "Share this image" }) + ); + } + }; + return ( { borderWidth: 1, }} > - + - - - - 列車遅延速報EX - - - {/* {doFetch()}}> - 最新の情報へ更新 - */} - - {getTime - ? getTime.toLocaleTimeString("ja-JP").split(":")[0] + - ":" + - getTime.toLocaleTimeString("ja-JP").split(":")[1] - : NaN}{" "} - - { - LayoutAnimation.easeInEaseOut(), setLoadingDelayData(true); - }} - /> - - + style={{ height: 26, width: "100%", backgroundColor: "#0099CC" }} + > + + - {loadingDelayData ? ( - - - - ) : delayData ? ( - delayData.map((d) => { - let data = d.split(" "); - return ( - - - {data[0].replace("\n", "")} - - {data[1]} - {data[3]} - - ); - }) - ) : ( - 現在、5分以上の遅れはありません。 - )} + + 列車遅延速報EX + + + {/* {doFetch()}}> + 最新の情報へ更新 + */} + + {getTime + ? getTime.toLocaleTimeString("ja-JP").split(":")[0] + + ":" + + getTime.toLocaleTimeString("ja-JP").split(":")[1] + : NaN}{" "} + + { + LayoutAnimation.easeInEaseOut(), setLoadingDelayData(true); + }} + /> + + + {loadingDelayData ? ( + + + + ) : delayData ? ( + delayData.map((d) => { + let data = d.split(" "); + return ( + + + {data[0].replace("\n", "")} + + {data[1]} + {data[3]} + + ); + }) + ) : ( + 現在、5分以上の遅れはありません。 + )} + - - - 列車遅延情報EXについて - - - 列車遅延情報をJR四国公式列車運行情報より5分毎に取得します。Twitterにて投稿している内容と同一のものとなります。 - - + + + 列車遅延情報EXについて + + + 列車遅延情報をJR四国公式列車運行情報より5分毎に取得します。Twitterにて投稿している内容と同一のものとなります。 + + + + + { margin: 10, borderRadius: 5, alignItems: "center", + backgroundColor: "#0099CC", + flex: 1, }} onPress={() => Linking.openURL("https://mstdn.y-zu.org/@JRSTraInfoEX") @@ -140,14 +178,30 @@ export const JRSTraInfo = () => { - MastodonBOTはこちら! + MastodonBOT - - → - - + + + + ); diff --git a/package.json b/package.json index 483733c..bb9b5d2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "expo-font": "~11.4.0", "expo-location": "~16.1.0", "expo-notifications": "~0.20.1", + "expo-sharing": "~11.5.0", "expo-updates": "~0.18.17", "expo-web-browser": "~12.3.2", "firebase": "8.2.3", @@ -45,6 +46,7 @@ "react-native-svg": "13.9.0", "react-native-svg-uri": "^1.2.3", "react-native-vector-icons": "^8.1.0", + "react-native-view-shot": "3.7.0", "react-native-webview": "^13.6.3" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 25ac5f9..f14e0f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3439,6 +3439,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-arraybuffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -4202,6 +4207,13 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +css-line-break@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0" + integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w== + dependencies: + utrie "^1.0.2" + css-select@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" @@ -4881,6 +4893,11 @@ expo-notifications@~0.20.1: fs-extra "^9.1.0" uuid "^3.4.0" +expo-sharing@~11.5.0: + version "11.5.0" + resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.5.0.tgz#a8cad65874d882b7f75b12856b4ef55ea9b60a2d" + integrity sha512-uerM5YH1FKDZXfkP9ORebvlMVOPP/AfoYgYBez6a8G9fztNYHnRCA6mgK+3aQmpnb3ltmjnAZC39kH18bTNcVw== + expo-structured-headers@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-3.3.0.tgz#9f0b041a1d243a22a4a23d9eb19f02ace3c5258c" @@ -5653,6 +5670,14 @@ hosted-git-info@^4.0.1, hosted-git-info@^4.0.2: dependencies: lru-cache "^6.0.0" +html2canvas@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" + integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA== + dependencies: + css-line-break "^2.1.0" + text-segmentation "^1.0.3" + http-cache-semantics@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -8858,6 +8883,13 @@ react-native-vector-icons@^8.1.0: prop-types "^15.7.2" yargs "^16.1.1" +react-native-view-shot@3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.7.0.tgz#0c773500e7aac5d115a9dee3b83fa5156c950ed0" + integrity sha512-tQruLNjs7Ee/p6xUgJqF6glnatHaq/UqaIQ6KdYIFG0+XpUZdhqmEM4WMLsYfayfFEhdlF86G1S3eXMOfDNzFg== + dependencies: + html2canvas "^1.4.1" + react-native-webview@^13.6.3: version "13.6.3" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.6.3.tgz#f3d26e942ef5cc5a07547f2e47903aa81a68e25e" @@ -9913,6 +9945,13 @@ terser@^5.15.0: commander "^2.20.0" source-map-support "~0.5.20" +text-segmentation@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" + integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== + dependencies: + utrie "^1.0.2" + text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -10267,6 +10306,13 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +utrie@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" + integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw== + dependencies: + base64-arraybuffer "^1.0.2" + uuid@9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" From b551c7506125fdea407dda4e5fbbf9cc3492aebd Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Tue, 6 Feb 2024 16:02:23 +0900 Subject: [PATCH 19/66] =?UTF-8?q?=E5=81=9C=E8=BB=8A=E9=A7=85=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E7=AD=89=E3=82=92sticky-header=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 107 +++++++++--------- 1 file changed, 53 insertions(+), 54 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index e88a619..0c961c5 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -67,9 +67,6 @@ export const EachTrainInfo = (props) => { showNearTrain.forEach((d) => { const [station, se, time] = d.split(","); - console.log(trainData); //trainDataは現在の列車の停車駅リスト - console.log(station); //showNearTrainは裏列車の停車駅リスト - console.log(trainData[0]); if (station == trainData[0].split(",")[0]) setHeadStation(trainData[0].split(",")[0]); if (station == trainData[trainData.length - 1].split(",")[0]) @@ -556,57 +553,6 @@ export const EachTrainInfo = (props) => { */} )} - - - 停車駅 - - - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - (定刻) - - )} - - 見込 - - - - - { ), backgroundColor: "white", }} + stickyHeaderIndices={[0]} > + + + 停車駅 + + + {!isNaN(currentTrainData?.delay) && + currentTrainData?.delay != 0 && ( + + (定刻) + + )} + + 見込 + + + + + {headStation && !isConcatNear && ( openBackTrainInfo(headStation)} From 32e61a824bfe061a402b2a2f9f142574c08f92cc Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Tue, 6 Feb 2024 16:19:30 +0900 Subject: [PATCH 20/66] =?UTF-8?q?EachTrainInfo=E3=82=92=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 269 +----------------- .../EachTrainInfo/DataFromButton.js | 36 +++ .../EachTrainInfo/EachStopList.js | 137 +++++++++ .../EachTrainInfo/StateBox.js | 32 +++ .../EachTrainInfo/TrainDataView.js | 74 +++++ 5 files changed, 283 insertions(+), 265 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/DataFromButton.js create mode 100644 components/ActionSheetComponents/EachTrainInfo/EachStopList.js create mode 100644 components/ActionSheetComponents/EachTrainInfo/StateBox.js create mode 100644 components/ActionSheetComponents/EachTrainInfo/TrainDataView.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 0c961c5..829d91a 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -21,13 +21,15 @@ import { heightPercentageToDP, widthPercentageToDP, } from "react-native-responsive-screen"; -import lineColorList from "../../assets/originData/lineColorList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import dayjs from "dayjs"; import { getTrainType } from "../../lib/getTrainType"; import { customTrainDataDetector } from "../custom-train-data"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; +import { EachStopList } from "./EachTrainInfo/EachStopList"; +import { DataFromButton } from "./EachTrainInfo/DataFromButton"; +import { TrainDataView } from "./EachTrainInfo/TrainDataView"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -647,7 +649,7 @@ export const EachTrainInfo = (props) => { i.split(",")[1] == "提" ? ( ) : ( - { ); }; - -const DataFromButton = ({ i }) => { - const [station, se, time] = i.split(","); - return ( - Linking.openURL(time)} - key={station} - > - - - {station} - - - 提供元 - - - - - - ); -}; - -const StationButton = ({ - i, - index, - stationList, - points, - currentTrainData, - openStationACFromEachTrainInfo, -}) => { - const [station, se, time] = i.split(","); // 阿波池田,発,6:21 - const Stations = stationList - .map((a) => a.filter((d) => d.StationName == station)) - .reduce((newArray, e) => newArray.concat(e), []); - /*Array [ - Object { - "StationName": "佐古", - "StationNumber": "T01", - }, - Object { - "StationName": "佐古", - "StationNumber": "B01", - }, - ] */ - const StationNumbers = - Stations && - Stations.filter((d) => d.StationNumber).map((d) => d.StationNumber); - // Array [ "T01", "B01",] - const lineIDs = []; - const EachIDs = []; - StationNumbers.forEach((d) => { - const textArray = d.split(""); - lineIDs.push(textArray.filter((s) => "A" < s && s < "Z").join("")); - EachIDs.push(textArray.filter((s) => "0" <= s && s <= "9").join("")); - }); - // Array [ "T", "B",] - // Array [ "01", "01",] - - const dates = dayjs() - .set("hour", parseInt(time.split(":")[0])) - .set("minute", parseInt(time.split(":")[1])) - .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); - const timeString = dates.format("HH:mm").split(":"); - - return ( - openStationACFromEachTrainInfo(station)} - key={station} - > - - - {lineIDs.map((lineID, index) => ( - - - - {lineIDs[index]} - {"\n"} - {EachIDs[index]} - - - - ))} - - - {station} - - {points && points.findIndex((d) => d == index) >= 0 ? ( - 🚊 - ) : null} - {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( - - {time} - - )} - - {timeString[0]}:{timeString[1]} - - - {se?.replace("発", "出発").replace("着", "到着")} - - - - - ); -}; - -const TrainDataView = ({ - currentTrainData, - currentPosition, - nearTrainIDList, - openTrainInfo, -}) => { - return ( - - - - - - - { - if (nearTrainIDList.length == 0) return; - openTrainInfo(nearTrainIDList[0]); - }} - > - {nearTrainIDList.length == 0 ? ( - - ) : ( - - )} - - - - ); -}; - -const StateBox = ({ text, title, style }) => ( - - {title} - - - {text?.match("~") ? ( - <> - {text.split("~")[0]} - - {text.split("~")[1]} - - ) : ( - {text} - )} - - -); -const boxStyle = { - flex: 1, - backgroundColor: "white", - borderRadius: 10, - padding: 10, - margin: 10, -}; -const boxTextStyle = { - fontSize: 25, - color: "#0099CC", - textAlign: "right", -}; diff --git a/components/ActionSheetComponents/EachTrainInfo/DataFromButton.js b/components/ActionSheetComponents/EachTrainInfo/DataFromButton.js new file mode 100644 index 0000000..664a8bf --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/DataFromButton.js @@ -0,0 +1,36 @@ +import React from "react"; +import { View, Text, TouchableWithoutFeedback } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; +import { Linking } from "react-native"; +export const DataFromButton = ({ i }) => { + const [station, se, time] = i.split(","); + return ( + Linking.openURL(time)} + key={station} + > + + + {station} + + + 提供元 + + + + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/EachStopList.js b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js new file mode 100644 index 0000000..218a025 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js @@ -0,0 +1,137 @@ +import React from "react"; +import { View, Text, TouchableWithoutFeedback } from "react-native"; +import dayjs from "dayjs"; +import lineColorList from "../../../assets/originData/lineColorList"; + +export const EachStopList = ({ + i, + index, + stationList, + points, + currentTrainData, + openStationACFromEachTrainInfo, +}) => { + const [station, se, time] = i.split(","); // 阿波池田,発,6:21 + const Stations = stationList + .map((a) => a.filter((d) => d.StationName == station)) + .reduce((newArray, e) => newArray.concat(e), []); + /*Array [ + Object { + "StationName": "佐古", + "StationNumber": "T01", + }, + Object { + "StationName": "佐古", + "StationNumber": "B01", + }, + ] */ + const StationNumbers = + Stations && + Stations.filter((d) => d.StationNumber).map((d) => d.StationNumber); + // Array [ "T01", "B01",] + const lineIDs = []; + const EachIDs = []; + StationNumbers.forEach((d) => { + const textArray = d.split(""); + lineIDs.push(textArray.filter((s) => "A" < s && s < "Z").join("")); + EachIDs.push(textArray.filter((s) => "0" <= s && s <= "9").join("")); + }); + // Array [ "T", "B",] + // Array [ "01", "01",] + + const dates = dayjs() + .set("hour", parseInt(time.split(":")[0])) + .set("minute", parseInt(time.split(":")[1])) + .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); + const timeString = dates.format("HH:mm").split(":"); + + return ( + openStationACFromEachTrainInfo(station)} + key={station} + > + + + {lineIDs.map((lineID, index) => ( + + + + {lineIDs[index]} + {"\n"} + {EachIDs[index]} + + + + ))} + + + {station} + + {points && points.findIndex((d) => d == index) >= 0 ? ( + 🚊 + ) : null} + {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( + + {time} + + )} + + {timeString[0]}:{timeString[1]} + + + {se?.replace("発", "出発").replace("着", "到着")} + + + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/StateBox.js b/components/ActionSheetComponents/EachTrainInfo/StateBox.js new file mode 100644 index 0000000..933b930 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/StateBox.js @@ -0,0 +1,32 @@ +import React from "react"; +import { View, Text } from "react-native"; + +export const StateBox = ({ text, title, style }) => ( + + {title} + + + {text?.match("~") ? ( + <> + {text.split("~")[0]} + + {text.split("~")[1]} + + ) : ( + {text} + )} + + +); +const boxStyle = { + flex: 1, + backgroundColor: "white", + borderRadius: 10, + padding: 10, + margin: 10, +}; +const boxTextStyle = { + fontSize: 25, + color: "#0099CC", + textAlign: "right", +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js new file mode 100644 index 0000000..a98ca15 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -0,0 +1,74 @@ +import React from "react"; +import { View, Text, TouchableOpacity } from "react-native"; +import { StateBox } from "./StateBox"; +import { + heightPercentageToDP, + widthPercentageToDP, +} from "react-native-responsive-screen"; + +export const TrainDataView = ({ + currentTrainData, + currentPosition, + nearTrainIDList, + openTrainInfo, +}) => { + return ( + + + + + + + { + if (nearTrainIDList.length == 0) return; + openTrainInfo(nearTrainIDList[0]); + }} + > + {nearTrainIDList.length == 0 ? ( + + ) : ( + + )} + + + + ); +}; From 576d9ae222fef343fff3110fdaf1eeae40f9449d Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Tue, 6 Feb 2024 16:19:54 +0900 Subject: [PATCH 21/66] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=9Fimports=E9=A7=86=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 829d91a..233478f 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -3,13 +3,11 @@ import { View, LayoutAnimation, ScrollView, - Linking, Text, TouchableOpacity, - TouchableWithoutFeedback, Platform, } from "react-native"; -import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; +import { Ionicons } from "@expo/vector-icons"; import ActionSheet, { SheetManager, useScrollHandlers, @@ -17,13 +15,9 @@ import ActionSheet, { import { AS } from "../../storageControl"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; -import { - heightPercentageToDP, - widthPercentageToDP, -} from "react-native-responsive-screen"; +import { heightPercentageToDP } from "react-native-responsive-screen"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; -import dayjs from "dayjs"; import { getTrainType } from "../../lib/getTrainType"; import { customTrainDataDetector } from "../custom-train-data"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; From 49e9ed14bca4fb21a9765ddc8cca1e9226766636 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 7 Feb 2024 00:12:27 +0900 Subject: [PATCH 22/66] =?UTF-8?q?EachTrainInfo=E3=81=AE=E5=8F=AF=E5=A4=89?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 347 +++++++----------- .../EachTrainInfo/DynamicHeader.js | 274 ++++++++++++++ .../EachTrainInfo/StateBox.js | 35 +- .../EachTrainInfo/TrainDataView.js | 13 +- 4 files changed, 444 insertions(+), 225 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 233478f..97b436b 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -6,6 +6,7 @@ import { Text, TouchableOpacity, Platform, + Animated, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import ActionSheet, { @@ -24,6 +25,7 @@ import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; import { EachStopList } from "./EachTrainInfo/EachStopList"; import { DataFromButton } from "./EachTrainInfo/DataFromButton"; import { TrainDataView } from "./EachTrainInfo/TrainDataView"; +import { DynamicHeader } from "./EachTrainInfo/DynamicHeader"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -377,6 +379,8 @@ export const EachTrainInfo = (props) => { }; const actionSheetRef = useRef(null); const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); + + const scrollOffsetY = useRef(new Animated.Value(0)).current; return ( { /> )} - {from == "AllTrainDiagramView" || ( - setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} - style={{ - flexDirection: "row", - //width: widthPercentageToDP("200%"), - minHeight: 200, - height: heightPercentageToDP("20%"), - }} - horizontal - pagingEnabled - > - + {from == "AllTrainDiagramView" || ( + - {/* - - - 行先 - - - 岡山 - - + )} - - - 車両案内 - - - - 宇多津でうずしお号と連結 - - - - - - - 編成(使用車両:2700系) - - - - {"[<自][自>][アン自|指>][アン指|G>]"} - - - - */} - - )} - - - 停車駅 - - - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - (定刻) - - )} - - 見込 - - + + 停車駅 + + + {!isNaN(currentTrainData?.delay) && + currentTrainData?.delay != 0 && ( + + (定刻) + + )} + + 見込 + + + - - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} > - 「本当の始発駅」を表示 - - - )} - {/* + 「本当の始発駅」を表示 + + + )} + {/* { /> ほげほげふがふが */} - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} > - 「本当の終着駅」を表示 - - - )} + + 「本当の終着駅」を表示 + + + )} - - - - + + + + + - - + + ); diff --git a/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js b/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js new file mode 100644 index 0000000..fc2170f --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js @@ -0,0 +1,274 @@ +import * as React from "react"; +import { Text, View, StyleSheet, Animated, ScrollView } from "react-native"; +import { TrainDataView } from "./TrainDataView"; + +const Max_Header_Height = 200; +const Min_Header_Height = 80; +const Scroll_Distance = Max_Header_Height - Min_Header_Height; +export const DynamicHeader = ({ + animHeaderValue, + currentTrainData, + currentPosition, + nearTrainIDList, + openTrainInfo, +}) => { + const animatedHeaderHeight = animHeaderValue.interpolate({ + inputRange: [0, Scroll_Distance], + outputRange: [Max_Header_Height, 0], + extrapolate: "clamp", + }); + const animatedHeaderHeight2 = animHeaderValue.interpolate({ + inputRange: [0, Scroll_Distance], + outputRange: [0, Min_Header_Height], + extrapolate: "clamp", + }); + const animateHeaderBackgroundColor = animHeaderValue.interpolate({ + inputRange: [0, Max_Header_Height - Min_Header_Height], + outputRange: ["blue", "red"], + extrapolate: "clamp", + }); + return ( + <> + + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + {/* + + + 行先 + + + 岡山 + + + + + + 車両案内 + + + + 宇多津でうずしお号と連結 + + + + + + + 編成(使用車両:2700系) + + + + {"[<自][自>][アン自|指>][アン指|G>]"} + + + + */} + + + + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + flex: 1, + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + {/* + + + 行先 + + + 岡山 + + + + + + 車両案内 + + + + 宇多津でうずしお号と連結 + + + + + + + 編成(使用車両:2700系) + + + + {"[<自][自>][アン自|指>][アン指|G>]"} + + + + */} + + + + ); +}; +const styles = StyleSheet.create({ + header: { + justifyContent: "center", + alignItems: "center", + left: 0, + right: 0, + //paddingTop: 10, + }, + headerText: { + color: "#fff", + fontSize: 25, + fontWeight: "bold", + textAlign: "center", + }, +}); diff --git a/components/ActionSheetComponents/EachTrainInfo/StateBox.js b/components/ActionSheetComponents/EachTrainInfo/StateBox.js index 933b930..c26f41b 100644 --- a/components/ActionSheetComponents/EachTrainInfo/StateBox.js +++ b/components/ActionSheetComponents/EachTrainInfo/StateBox.js @@ -1,19 +1,29 @@ import React from "react"; import { View, Text } from "react-native"; -export const StateBox = ({ text, title, style }) => ( - +export const StateBox = ({ text, title, style, mode }) => ( + {title} - + {text?.match("~") ? ( <> - {text.split("~")[0]} + + {text.split("~")[0]} + - {text.split("~")[1]} + + {text.split("~")[1]} + ) : ( - {text} + {text} )} @@ -25,6 +35,19 @@ const boxStyle = { padding: 10, margin: 10, }; +const boxStyle2 = { + flex: 1, + backgroundColor: "white", + borderRadius: 10, + padding: 5, + margin: 5, +}; +const boxTextStyle2 = { + fontSize: 18, + color: "#0099CC", + textAlign: "right", +}; + const boxTextStyle = { fontSize: 25, color: "#0099CC", diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index a98ca15..cf73398 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -11,17 +11,20 @@ export const TrainDataView = ({ currentPosition, nearTrainIDList, openTrainInfo, + mode = 0, }) => { return ( - + {nearTrainIDList.length == 0 ? ( - + ) : ( Date: Thu, 8 Feb 2024 19:18:28 +0900 Subject: [PATCH 23/66] =?UTF-8?q?=E6=8C=99=E5=8B=95=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 99 +++++++++++-------- .../EachTrainInfo/DynamicHeader.js | 37 +++++-- 2 files changed, 84 insertions(+), 52 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 97b436b..0151b6f 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -460,13 +460,12 @@ export const EachTrainInfo = (props) => { openTrainInfo={openTrainInfo} /> )} - { > + + - 停車駅 - - - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - (定刻) - - )} - - 見込 - - + + 停車駅 + + + {!isNaN(currentTrainData?.delay) && + currentTrainData?.delay != 0 && ( + + (定刻) + + )} + + 見込 + + + + {headStation && !isConcatNear && ( openBackTrainInfo(headStation)} diff --git a/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js b/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js index fc2170f..d02dc7b 100644 --- a/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js +++ b/components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js @@ -1,6 +1,10 @@ import * as React from "react"; import { Text, View, StyleSheet, Animated, ScrollView } from "react-native"; import { TrainDataView } from "./TrainDataView"; +import { + heightPercentageToDP, + widthPercentageToDP, +} from "react-native-responsive-screen"; const Max_Header_Height = 200; const Min_Header_Height = 80; @@ -13,28 +17,36 @@ export const DynamicHeader = ({ openTrainInfo, }) => { const animatedHeaderHeight = animHeaderValue.interpolate({ - inputRange: [0, Scroll_Distance], + inputRange: [Min_Header_Height, Scroll_Distance], outputRange: [Max_Header_Height, 0], extrapolate: "clamp", }); const animatedHeaderHeight2 = animHeaderValue.interpolate({ inputRange: [0, Scroll_Distance], - outputRange: [0, Min_Header_Height], + outputRange: [Max_Header_Height, Min_Header_Height], extrapolate: "clamp", }); - const animateHeaderBackgroundColor = animHeaderValue.interpolate({ - inputRange: [0, Max_Header_Height - Min_Header_Height], - outputRange: ["blue", "red"], + const animatedHeaderVisible = animHeaderValue.interpolate({ + inputRange: [Min_Header_Height, Scroll_Distance], + outputRange: [1, 0], + extrapolate: "clamp", + }); + const animatedHeaderVisible2 = animHeaderValue.interpolate({ + inputRange: [Min_Header_Height, Scroll_Distance], + outputRange: [0, 1], extrapolate: "clamp", }); return ( - <> + @@ -145,8 +157,10 @@ export const DynamicHeader = ({ styles.header, { height: animatedHeaderHeight2, - //backgroundColor: animateHeaderBackgroundColor, + backgroundColor: "#0099CC", margin: 0, + top: 0, + opacity: animatedHeaderVisible2, }, ]} > @@ -254,7 +268,7 @@ export const DynamicHeader = ({ */} - + ); }; const styles = StyleSheet.create({ @@ -264,6 +278,9 @@ const styles = StyleSheet.create({ left: 0, right: 0, //paddingTop: 10, + position: "absolute", + zIndex: 1, + backgroundColor: "f0f0f0", }, headerText: { color: "#fff", From 84c050e928b4f738cb048a20a555ebb524b59c2c Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 11 Feb 2024 20:22:32 +0900 Subject: [PATCH 24/66] =?UTF-8?q?DynamicHeader=E3=82=92=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 345 ++++++++++-------- components/DynamicHeaderScrollView.js | 105 ++++++ 2 files changed, 302 insertions(+), 148 deletions(-) create mode 100644 components/DynamicHeaderScrollView.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 0151b6f..8adaca1 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -7,6 +7,7 @@ import { TouchableOpacity, Platform, Animated, + StyleSheet, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import ActionSheet, { @@ -26,6 +27,7 @@ import { EachStopList } from "./EachTrainInfo/EachStopList"; import { DataFromButton } from "./EachTrainInfo/DataFromButton"; import { TrainDataView } from "./EachTrainInfo/TrainDataView"; import { DynamicHeader } from "./EachTrainInfo/DynamicHeader"; +import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -450,8 +452,66 @@ export const EachTrainInfo = (props) => { /> )} - - {from == "AllTrainDiagramView" || ( + + ) : ( + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + flex: 1, + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + + ) + } + longHeader={ + from == "AllTrainDiagramView" ? ( + <> + ) : ( + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + + ) + } + header={ { nearTrainIDList={nearTrainIDList} openTrainInfo={openTrainInfo} /> - )} - + } + topStickyContent={ - - - - - 停車駅 - - - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - (定刻) - - )} - - 見込 - - - - - - - - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - { flex: 1, }} > - + 停車駅 + + {!isNaN(currentTrainData?.delay) && + currentTrainData?.delay != 0 && ( + + (定刻) + + )} + + 見込 + + + - - + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + ); }; +const styles = StyleSheet.create({ + header: { + justifyContent: "center", + alignItems: "center", + left: 0, + right: 0, + //paddingTop: 10, + position: "absolute", + zIndex: 1, + backgroundColor: "f0f0f0", + }, + headerText: { + color: "#fff", + fontSize: 25, + fontWeight: "bold", + textAlign: "center", + }, +}); diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js new file mode 100644 index 0000000..e804856 --- /dev/null +++ b/components/DynamicHeaderScrollView.js @@ -0,0 +1,105 @@ +import { ScrollView, View, Animated } from "react-native"; +import React, { useRef } from "react"; + +export const DynamicHeaderScrollView = (props) => { + const { + Max_Header_Height = 200, + Min_Header_Height = 80, + children, + scrollViewProps = {}, + containerProps = {}, + shortHeader = <>, + longHeader = <>, + topStickyContent, + styles, + } = props; + const scrollOffsetY = useRef(new Animated.Value(0)).current; + + const Scroll_Distance = Max_Header_Height - Min_Header_Height; + + const animatedHeaderHeight = scrollOffsetY.interpolate({ + inputRange: [Min_Header_Height, Scroll_Distance], + outputRange: [Max_Header_Height, 0], + extrapolate: "clamp", + }); + const animatedHeaderHeight2 = scrollOffsetY.interpolate({ + inputRange: [0, Scroll_Distance], + outputRange: [Max_Header_Height, Min_Header_Height], + extrapolate: "clamp", + }); + const animatedHeaderVisible = scrollOffsetY.interpolate({ + inputRange: [Min_Header_Height, Scroll_Distance], + outputRange: [1, 0], + extrapolate: "clamp", + }); + const animatedHeaderVisible2 = scrollOffsetY.interpolate({ + inputRange: [Min_Header_Height, Scroll_Distance], + outputRange: [0, 1], + extrapolate: "clamp", + }); + return ( + + + + {longHeader} + + + {shortHeader} + + + + + {topStickyContent && ( + + {topStickyContent} + + )} + {children} + + + ); +}; From 62d7936425cabce86686dbd9cd1d323dadc8d1f5 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 11 Feb 2024 20:24:06 +0900 Subject: [PATCH 25/66] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 10 - .../EachTrainInfo/DynamicHeader.js | 291 ------------------ 2 files changed, 301 deletions(-) delete mode 100644 components/ActionSheetComponents/EachTrainInfo/DynamicHeader.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 8adaca1..8e4aea4 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -26,7 +26,6 @@ import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; import { EachStopList } from "./EachTrainInfo/EachStopList"; import { DataFromButton } from "./EachTrainInfo/DataFromButton"; import { TrainDataView } from "./EachTrainInfo/TrainDataView"; -import { DynamicHeader } from "./EachTrainInfo/DynamicHeader"; import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; export const EachTrainInfo = (props) => { @@ -511,15 +510,6 @@ export const EachTrainInfo = (props) => { ) } - header={ - - } topStickyContent={ { - const animatedHeaderHeight = animHeaderValue.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], - outputRange: [Max_Header_Height, 0], - extrapolate: "clamp", - }); - const animatedHeaderHeight2 = animHeaderValue.interpolate({ - inputRange: [0, Scroll_Distance], - outputRange: [Max_Header_Height, Min_Header_Height], - extrapolate: "clamp", - }); - const animatedHeaderVisible = animHeaderValue.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], - outputRange: [1, 0], - extrapolate: "clamp", - }); - const animatedHeaderVisible2 = animHeaderValue.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], - outputRange: [0, 1], - extrapolate: "clamp", - }); - return ( - - - setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} - style={{ - flexDirection: "row", - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), - }} - horizontal - pagingEnabled - > - - {/* - - - 行先 - - - 岡山 - - - - - - 車両案内 - - - - 宇多津でうずしお号と連結 - - - - - - - 編成(使用車両:2700系) - - - - {"[<自][自>][アン自|指>][アン指|G>]"} - - - - */} - - - - setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} - style={{ - flexDirection: "row", - flex: 1, - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), - }} - horizontal - pagingEnabled - > - - {/* - - - 行先 - - - 岡山 - - - - - - 車両案内 - - - - 宇多津でうずしお号と連結 - - - - - - - 編成(使用車両:2700系) - - - - {"[<自][自>][アン自|指>][アン指|G>]"} - - - - */} - - - - ); -}; -const styles = StyleSheet.create({ - header: { - justifyContent: "center", - alignItems: "center", - left: 0, - right: 0, - //paddingTop: 10, - position: "absolute", - zIndex: 1, - backgroundColor: "f0f0f0", - }, - headerText: { - color: "#fff", - fontSize: 25, - fontWeight: "bold", - textAlign: "center", - }, -}); From 1fb471205c30dc71e59506f01afc002ee81bcef4 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 11 Feb 2024 20:38:28 +0900 Subject: [PATCH 26/66] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=86=E3=83=B3?= =?UTF-8?q?=E3=83=84=E5=88=86=E5=89=B2=E3=80=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 120 +++--------------- .../EachTrainInfo/LongHeader.js | 33 +++++ .../EachTrainInfo/ScrollStickyContent.js | 57 +++++++++ .../EachTrainInfo/ShortHeader.js | 35 +++++ components/DynamicHeaderScrollView.js | 30 ++--- 5 files changed, 157 insertions(+), 118 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/LongHeader.js create mode 100644 components/ActionSheetComponents/EachTrainInfo/ScrollStickyContent.js create mode 100644 components/ActionSheetComponents/EachTrainInfo/ShortHeader.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 8e4aea4..c508f9c 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -2,18 +2,13 @@ import React, { useEffect, useState, useRef } from "react"; import { View, LayoutAnimation, - ScrollView, Text, TouchableOpacity, Platform, - Animated, StyleSheet, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; -import ActionSheet, { - SheetManager, - useScrollHandlers, -} from "react-native-actions-sheet"; +import ActionSheet, { SheetManager } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; @@ -25,8 +20,10 @@ import { customTrainDataDetector } from "../custom-train-data"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; import { EachStopList } from "./EachTrainInfo/EachStopList"; import { DataFromButton } from "./EachTrainInfo/DataFromButton"; -import { TrainDataView } from "./EachTrainInfo/TrainDataView"; import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; +import { LongHeader } from "./EachTrainInfo/LongHeader"; +import { ShortHeader } from "./EachTrainInfo/ShortHeader"; +import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -379,9 +376,6 @@ export const EachTrainInfo = (props) => { .replace("ライナーライナー", "ライナー"); }; const actionSheetRef = useRef(null); - const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); - - const scrollOffsetY = useRef(new Animated.Value(0)).current; return ( { from == "AllTrainDiagramView" ? ( <> ) : ( - setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} - style={{ - flexDirection: "row", - flex: 1, - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), - }} - horizontal - pagingEnabled - > - - + ) } longHeader={ from == "AllTrainDiagramView" ? ( <> ) : ( - setActionSheetHorizonalScroll(true)} - //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} - //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} - style={{ - flexDirection: "row", - //width: widthPercentageToDP("200%"), - // minHeight: 200, - //height: heightPercentageToDP("20%"), - }} - horizontal - pagingEnabled - > - - + ) } topStickyContent={ - - - 停車駅 - - - {!isNaN(currentTrainData?.delay) && - currentTrainData?.delay != 0 && ( - - (定刻) - - )} - - 見込 - - - - - + } > {headStation && !isConcatNear && ( diff --git a/components/ActionSheetComponents/EachTrainInfo/LongHeader.js b/components/ActionSheetComponents/EachTrainInfo/LongHeader.js new file mode 100644 index 0000000..95f23f9 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/LongHeader.js @@ -0,0 +1,33 @@ +import React from "react"; +import { ScrollView } from "react-native"; +import { TrainDataView } from "./TrainDataView"; + +export const LongHeader = ({ + currentTrainData, + currentPosition, + nearTrainIDList, + openTrainInfo, +}) => { + return ( + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/ScrollStickyContent.js b/components/ActionSheetComponents/EachTrainInfo/ScrollStickyContent.js new file mode 100644 index 0000000..3881b36 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/ScrollStickyContent.js @@ -0,0 +1,57 @@ +import React from "react"; +import { View, Text } from "react-native"; + +export const ScrollStickyContent = ({ currentTrainData }) => { + return ( + + + 停車駅 + + + {!isNaN(currentTrainData?.delay) && currentTrainData?.delay != 0 && ( + + (定刻) + + )} + + 見込 + + + + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js new file mode 100644 index 0000000..a289e24 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js @@ -0,0 +1,35 @@ +import React from "react"; +import { ScrollView } from "react-native"; +import { TrainDataView } from "./TrainDataView"; + +export const ShortHeader = ({ + currentTrainData, + currentPosition, + nearTrainIDList, + openTrainInfo, +}) => { + return ( + setActionSheetHorizonalScroll(true)} + //onScrollEndDrag={() => setActionSheetHorizonalScroll(false)} + //onScrollBeginDrag={() => console.log("onScrollBeginDrag")} + style={{ + flexDirection: "row", + flex: 1, + //width: widthPercentageToDP("200%"), + // minHeight: 200, + //height: heightPercentageToDP("20%"), + }} + horizontal + pagingEnabled + > + + + ); +}; diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index e804856..8254937 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -18,7 +18,7 @@ export const DynamicHeaderScrollView = (props) => { const Scroll_Distance = Max_Header_Height - Min_Header_Height; const animatedHeaderHeight = scrollOffsetY.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], + inputRange: [Scroll_Distance, Scroll_Distance + 10], outputRange: [Max_Header_Height, 0], extrapolate: "clamp", }); @@ -40,20 +40,6 @@ export const DynamicHeaderScrollView = (props) => { return ( - - {longHeader} - { > {shortHeader} + + {longHeader} + Date: Sun, 11 Feb 2024 21:27:28 +0900 Subject: [PATCH 27/66] =?UTF-8?q?Apps=E3=82=92=E6=A8=AA=E5=90=91=E3=81=8D?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 62 +++++++++++++++++++--- app.json | 2 +- components/trainMenu.js | 115 +++++++++++++++++++++------------------- 3 files changed, 116 insertions(+), 63 deletions(-) diff --git a/Apps.js b/Apps.js index 84c25ff..0325832 100644 --- a/Apps.js +++ b/Apps.js @@ -1,8 +1,25 @@ -import React, { useEffect, useRef, useState } from "react"; -import { View, Platform, Text, TouchableOpacity } from "react-native"; +import React, { + useEffect, + useLayoutEffect, + useRef, + useState, + useCallback, +} from "react"; +import { + View, + Platform, + Text, + TouchableOpacity, + useWindowDimensions, +} from "react-native"; import { WebView } from "react-native-webview"; import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; + +import { + widthPercentageToDP as wp, + heightPercentageToDP as hp, +} from "react-native-responsive-screen"; import { AS } from "./storageControl"; import { news } from "./config/newsUpdate"; import { getStationList, lineList } from "./lib/getStationList"; @@ -11,15 +28,30 @@ import { checkDuplicateTrainData } from "./lib/checkDuplicateTrainData"; import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { useCurrentTrain } from "./stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; +import TrainMenu from "./components/trainMenu"; /* import StatusbarDetect from './StatusbarDetect'; var Status = StatusbarDetect(); */ export default function Apps({ navigation, webview, stationData }) { const { currentTrain } = useCurrentTrain(); + const { height, width } = useWindowDimensions(); const { navigate } = navigation; var urlcache = ""; const { favoriteStation } = useFavoriteStation(); + const [isLandscape, setIsLandscape] = useState(false); //画面が横向きかどうか + const handleLayout = () => {}; + useEffect(() => { + console.log("レイアウト変更"); + console.log(height, width); + console.log(height / width); + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [height, width]); //画面表示関連 const [iconSetting, setIconSetting] = useState(undefined); @@ -271,8 +303,22 @@ export default function Apps({ navigation, webview, stationData }) { style={{ height: "100%", paddingTop: Platform.OS == "ios" ? Constants.statusBarHeight : 0, + flexDirection: isLandscape ? "row" : "column", }} + onLayout={handleLayout} > + {isLandscape ? ( + + ) : null} {/* {Status} */} - navigate("trainMenu", { webview })} - top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} - mapSwitch={mapSwitch == "true" ? "flex" : "none"} - /> + {isLandscape || ( + navigate("trainMenu", { webview })} + top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} + mapSwitch={mapSwitch == "true" ? "flex" : "none"} + /> + )} webview.current.reload()} top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} diff --git a/app.json b/app.json index 1686ab8..19aa076 100644 --- a/app.json +++ b/app.json @@ -8,7 +8,7 @@ "android" ], "version": "4.6", - "orientation": "portrait", + "orientation": "default", "icon": "./assets/icon.png", "splash": { "image": "./assets/splash.png", diff --git a/components/trainMenu.js b/components/trainMenu.js index 3069e1d..3702c6f 100644 --- a/components/trainMenu.js +++ b/components/trainMenu.js @@ -6,10 +6,11 @@ export default function TrainMenu({ navigation: { navigate }, webview, stationData, + style, }) { const mapRef = useRef(); return ( - + ); }) )} - - - navigate("howto", { - info: "https://train.jr-shikoku.co.jp/usage.htm", - }) - } + {navigate && ( + + + navigate("howto", { + info: "https://train.jr-shikoku.co.jp/usage.htm", + }) + } + > + 使い方 + + navigate("favoriteList")} + > + お気に入り + + + Linking.openURL( + "https://nexcloud.haruk.in/apps/forms/ZRHjWFF7znr5Xjr2" + ) + } + > + フィードバック + + + )} + {navigate && ( + navigate("Apps")} > - 使い方 - - navigate("favoriteList")} - > - お気に入り - - - Linking.openURL( - "https://nexcloud.haruk.in/apps/forms/ZRHjWFF7znr5Xjr2" - ) - } - > - この機能のフィードバック - - - navigate("Apps")} - > - - - 閉じる - - - + + + 閉じる + + + + )} ); } @@ -115,14 +120,14 @@ const UsefulBox = (props) => { style={{ flex: flex, backgroundColor: backgroundColor, - padding: 10, + padding: 5, alignItems: "center", margin: 2, }} onPress={onPressButton} > - + {children} From 38052abd30f33766905834cc9fe3b34439a8148f Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 11 Feb 2024 21:32:06 +0900 Subject: [PATCH 28/66] =?UTF-8?q?=E6=A8=AA=E5=B9=85=E3=82=92=E3=81=A8?= =?UTF-8?q?=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=E3=83=90=E3=82=B0?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Apps.js b/Apps.js index 0325832..b30d5f6 100644 --- a/Apps.js +++ b/Apps.js @@ -313,7 +313,7 @@ export default function Apps({ navigation, webview, stationData }) { stationData={stationData} navigation={{ navigate: null }} style={{ - width: wp("40%"), + width: (width / 100) * 40, height: "100%", flexDirection: "column-reverse", }} From 93529f4f7deb24152ad1f7ccc5802f0d5373ce72 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Sun, 11 Feb 2024 23:54:55 +0900 Subject: [PATCH 29/66] =?UTF-8?q?=E5=B9=85=E6=8C=87=E5=AE=9A=E3=82=92useWi?= =?UTF-8?q?ndowDimensions=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 12 +----------- .../EachTrainInfo/TrainDataView.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Apps.js b/Apps.js index b30d5f6..1df2b4a 100644 --- a/Apps.js +++ b/Apps.js @@ -1,10 +1,4 @@ -import React, { - useEffect, - useLayoutEffect, - useRef, - useState, - useCallback, -} from "react"; +import React, { useEffect, useState } from "react"; import { View, Platform, @@ -16,10 +10,6 @@ import { WebView } from "react-native-webview"; import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; -import { - widthPercentageToDP as wp, - heightPercentageToDP as hp, -} from "react-native-responsive-screen"; import { AS } from "./storageControl"; import { news } from "./config/newsUpdate"; import { getStationList, lineList } from "./lib/getStationList"; diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index cf73398..449786c 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -1,5 +1,10 @@ import React from "react"; -import { View, Text, TouchableOpacity } from "react-native"; +import { + View, + Text, + TouchableOpacity, + useWindowDimensions, +} from "react-native"; import { StateBox } from "./StateBox"; import { heightPercentageToDP, @@ -13,13 +18,14 @@ export const TrainDataView = ({ openTrainInfo, mode = 0, }) => { + const { width, height } = useWindowDimensions(); return ( From 72412e87e887a1cbcf3987927c16fc9cb9e36949 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 00:51:47 +0900 Subject: [PATCH 30/66] =?UTF-8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88?= =?UTF-8?q?=E3=81=9A=E3=81=93=E3=82=8C=E3=81=A7=E3=83=93=E3=83=AB=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 3 - .../ActionSheetComponents/EachTrainInfo.js | 324 ++++++++++++------ .../EachTrainInfo/LandscapeTrainInfo.js | 47 +++ .../EachTrainInfo/TrainDataView.js | 14 +- 4 files changed, 282 insertions(+), 106 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/LandscapeTrainInfo.js diff --git a/Apps.js b/Apps.js index 1df2b4a..2e3e09d 100644 --- a/Apps.js +++ b/Apps.js @@ -32,9 +32,6 @@ export default function Apps({ navigation, webview, stationData }) { const [isLandscape, setIsLandscape] = useState(false); //画面が横向きかどうか const handleLayout = () => {}; useEffect(() => { - console.log("レイアウト変更"); - console.log(height, width); - console.log(height / width); if (height / width > 1.5) { setIsLandscape(false); } diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index c508f9c..d3f5368 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -6,9 +6,13 @@ import { TouchableOpacity, Platform, StyleSheet, + useWindowDimensions, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; -import ActionSheet, { SheetManager } from "react-native-actions-sheet"; +import ActionSheet, { + SheetManager, + useScrollHandlers, +} from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; @@ -24,6 +28,7 @@ import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; import { LongHeader } from "./EachTrainInfo/LongHeader"; import { ShortHeader } from "./EachTrainInfo/ShortHeader"; import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; +import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -47,6 +52,16 @@ export const EachTrainInfo = (props) => { const [isConcatNear, setIsConcatNear] = useState(false); const [tailStation, setTailStation] = useState(); const [headStation, setHeadStation] = useState(); + const { height, width } = useWindowDimensions(); + const [isLandscape, setIsLandscape] = useState(false); + useEffect(() => { + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [width, height]); // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); //裏列車探索 @@ -376,6 +391,7 @@ export const EachTrainInfo = (props) => { .replace("ライナーライナー", "ライナー"); }; const actionSheetRef = useRef(null); + const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); return ( { ref={actionSheetRef} drawUnderStatusBar={false} isModal={Platform.OS == "ios"} + //useBottomSafeAreaPadding={Platform.OS == "android"} > { /> )} - - ) : ( - - ) - } - longHeader={ - from == "AllTrainDiagramView" ? ( - <> - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} > - 「本当の始発駅」を表示 - - - )} - {/* + 「本当の始発駅」を表示 + + + )} + {/* { /> ほげほげふがふが */} - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} > - 「本当の終着駅」を表示 - - - )} + + 「本当の終着駅」を表示 + + + )} - - - - + + + + + - - + + ) : ( + + ) : ( + + ) + } + longHeader={ + from == "AllTrainDiagramView" ? ( + <> + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + + )} ); diff --git a/components/ActionSheetComponents/EachTrainInfo/LandscapeTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo/LandscapeTrainInfo.js new file mode 100644 index 0000000..8538b65 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/LandscapeTrainInfo.js @@ -0,0 +1,47 @@ +import React from "react"; +import { View, Text, ScrollView, useWindowDimensions } from "react-native"; + +export const LandscapeTrainInfo = (props) => { + const { leftContent, topStickyContent, children, scrollHandlers } = props; + const { height, width } = useWindowDimensions(); + return ( + + + {width / 2} + {leftContent} + + { + console.log(d.nativeEvent.contentOffset.y); + }} + > + + + {topStickyContent} + + {children} + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 449786c..6ac2eb7 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { View, Text, @@ -18,14 +18,24 @@ export const TrainDataView = ({ openTrainInfo, mode = 0, }) => { + const [isLandscape, setIsLandscape] = useState(false); const { width, height } = useWindowDimensions(); + useEffect(() => { + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [width, height]); + return ( From 319e4b7b684ab4dc14bb3ceebd1edf1deaf87592 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 13:53:31 +0900 Subject: [PATCH 31/66] =?UTF-8?q?5.0=E3=81=AE=E7=92=B0=E5=A2=83=E6=BA=96?= =?UTF-8?q?=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eas.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eas.json b/eas.json index 2c0a80c..fe14a1e 100644 --- a/eas.json +++ b/eas.json @@ -29,6 +29,12 @@ }, "production4.6": { "channel": "costoco" + }, + "beta5.0": { + "channel": "dshopping" + }, + "production5.0": { + "channel": "dmm" } }, "submit": { From 5ce9ba9bea246435c3b7dada458c9bc3526783a4 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 16:10:54 +0900 Subject: [PATCH 32/66] =?UTF-8?q?=E9=80=94=E4=B8=AD=E3=81=BE=E3=81=A7?= =?UTF-8?q?=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 924 ++++++++++-------- 1 file changed, 491 insertions(+), 433 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index d3f5368..9fdceaf 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -52,16 +52,6 @@ export const EachTrainInfo = (props) => { const [isConcatNear, setIsConcatNear] = useState(false); const [tailStation, setTailStation] = useState(); const [headStation, setHeadStation] = useState(); - const { height, width } = useWindowDimensions(); - const [isLandscape, setIsLandscape] = useState(false); - useEffect(() => { - if (height / width > 1.5) { - setIsLandscape(false); - } - if (height / width < 1.5) { - setIsLandscape(true); - } - }, [width, height]); // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); //裏列車探索 @@ -85,102 +75,6 @@ export const EachTrainInfo = (props) => { }); }, [trainData, showNearTrain]); - const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - const migrationArray = (stationInfo) => { - const mainTrainStationPosition = trainData.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - - const relationMain = (() => { - if (mainTrainStationPosition == 0) return "head"; - if (mainTrainStationPosition == trainData.length - 1) return "tail"; - return "middle"; - })(); - - const subTrainStationPosition = showNearTrain.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - const relationSub = (() => { - if (subTrainStationPosition == 0) return "head"; - if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; - return "middle"; - })(); - - switch (relationMain) { - case "head": - if (relationSub == "head") { - return; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else if (relationSub == "middle") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else return; - case "tail": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return; - } else if (relationSub == "middle") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain.slice(subTrainStationPosition), - ]; - } else return; - case "middle": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData.slice(mainTrainStationPosition), - ]; - } else return; - } - }; - const array = migrationArray(stationInfo); - if (!array) return; - setTrainData(array); - setIsConcatNear(true); - }; - - const openTrainInfo = (d) => { - const train = customTrainDataDetector(d); - let TrainNumber = ""; - if (train.trainNumDistance != undefined) { - const timeInfo = - parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; - TrainNumber = timeInfo + "号"; - } - const payload = { - data: { - trainNum: d, - limited: `${getTrainType(train.type).data}:${ - train.trainName - }${TrainNumber}`, - }, - navigate, - originalStationList, - from: "AllTrainDiagramView", - }; - SheetManager.hide("EachTrainInfo").then(() => { - //0.1秒待機してから開く - setTimeout(() => { - SheetManager.show("EachTrainInfo", { payload }); - }, 1); - }); - }; useEffect(() => { setCurrentTrainData( checkDuplicateTrainData( @@ -189,17 +83,6 @@ export const EachTrainInfo = (props) => { ); }, [currentTrain]); - useEffect(() => { - //列車現在地アイコン表示スイッチ - AS.getItem("trainPositionSwitch") - .then((d) => { - if (d) { - setTrainPositionSwitch(d); - } else { - } - }) - .catch((d) => AS.setItem("trainPositionSwitch", "false")); - }, []); //bconst insets = useSafeAreaInsets(); const getStationData = (stationName) => { const Stations = stationList.map((a) => @@ -213,18 +96,6 @@ export const EachTrainInfo = (props) => { if (!Station[0]) return []; return Station.map((d) => d.StationNumber)[0]; }; - useEffect(() => { - //currentTrainData.Pos = "鴨川~端岡"; //test - if (!currentTrainData?.Pos) return; - if (currentTrainData?.Pos.match("~")) { - const pos = currentTrainData?.Pos.replace("(下り)", "") - .replace("(上り)", "") - .split("~"); - setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]); - } else { - setCurrentPosition([getStationData(currentTrainData?.Pos)]); - } - }, [currentTrainData]); const stationList = originalStationList && @@ -361,37 +232,8 @@ export const EachTrainInfo = (props) => { console.log(e); } } - // 使用例 - const points = - trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; - useEffect(() => { - if (!data.trainNum) return; - const TD = trainList[data.trainNum]; - if (!TD) { - setTrainData([]); - return; - } - setTrainData(TD.split("#").filter((d) => d != "")); - }, [data]); - const getType = (string) => { - switch (string) { - case "express": - return "特急"; - case "rapid": - return "快速"; - default: - return ""; - } - }; - - const migrateTrainName = (string) => { - return string - .replace("マリン", "マリンライナー") - .replace("ライナーライナー", "ライナー"); - }; const actionSheetRef = useRef(null); - const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); return ( { //useBottomSafeAreaPadding={Platform.OS == "android"} > - - - - - - - {data.limited - ? getType(data.limited.split(":")[0]) + - migrateTrainName( - data.limited.split(":")[1] || - (trainData.length > 0 - ? trainData[trainData.length - 1].split(",")[0] + "行き" - : " ") - ) - : ""} - - - - {data.trainNum} - {isConcatNear ? ` + ${nearTrainIDList}` : ""} - - - {data.limited != undefined && - getType(data.limited.split(":")[0]) && - !data.limited.split(":")[1].match("サンポート") && ( - { - LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); - navigate("trainbase", { - info: "train.html?tn=" + data.trainNum, - from, - }); - SheetManager.hide("EachTrainInfo"); - }} - /> - )} - - {isLandscape ? ( - - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - - - - - - - - ) : ( - - ) : ( - - ) - } - longHeader={ - from == "AllTrainDiagramView" ? ( - <> - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - - - - - - - - )} - + /> ); }; @@ -700,3 +297,464 @@ const styles = StyleSheet.create({ textAlign: "center", }, }); +const Hoge = ({ + actionSheetRef, + data, + trainData, + isConcatNear, + nearTrainIDList, + navigate, + from, + currentTrainData, + currentPosition, + headStation, + tailStation, + stationList, + openStationACFromEachTrainInfo, + trainPositionSwitch, + findReversalPoints, + setTrainData, + trainList, + showNearTrain, + setIsConcatNear, + customTrainDataDetector, + getTrainType, + originalStationList, + SheetManager, + AS, + setTrainPositionSwitch, + getStationData, + setCurrentPosition, +}) => { + const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); + const migrateTrainName = (string) => { + return string + .replace("マリン", "マリンライナー") + .replace("ライナーライナー", "ライナー"); + }; + const getType = (string) => { + switch (string) { + case "express": + return "特急"; + case "rapid": + return "快速"; + default: + return ""; + } + }; + + // 使用例 + const points = + trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; + const { height, width } = useWindowDimensions(); + const [isLandscape, setIsLandscape] = useState(false); + useEffect(() => { + //currentTrainData.Pos = "鴨川~端岡"; //test + if (!currentTrainData?.Pos) return; + if (currentTrainData?.Pos.match("~")) { + const pos = currentTrainData?.Pos.replace("(下り)", "") + .replace("(上り)", "") + .split("~"); + setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]); + } else { + setCurrentPosition([getStationData(currentTrainData?.Pos)]); + } + }, [currentTrainData]); + useEffect(() => { + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [width, height]); + useEffect(() => { + if (!data.trainNum) return; + const TD = trainList[data.trainNum]; + if (!TD) { + setTrainData([]); + return; + } + setTrainData(TD.split("#").filter((d) => d != "")); + }, [data]); + useEffect(() => { + //列車現在地アイコン表示スイッチ + AS.getItem("trainPositionSwitch") + .then((d) => { + if (d) { + setTrainPositionSwitch(d); + } else { + } + }) + .catch((d) => AS.setItem("trainPositionSwitch", "false")); + }, []); + + const openBackTrainInfo = (stationInfo, currentTrainIndex) => { + const migrationArray = (stationInfo) => { + const mainTrainStationPosition = trainData.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + + const relationMain = (() => { + if (mainTrainStationPosition == 0) return "head"; + if (mainTrainStationPosition == trainData.length - 1) return "tail"; + return "middle"; + })(); + + const subTrainStationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationSub = (() => { + if (subTrainStationPosition == 0) return "head"; + if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; + return "middle"; + })(); + + switch (relationMain) { + case "head": + if (relationSub == "head") { + return; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else if (relationSub == "middle") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else return; + case "tail": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return; + } else if (relationSub == "middle") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain.slice(subTrainStationPosition), + ]; + } else return; + case "middle": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData.slice(mainTrainStationPosition), + ]; + } else return; + } + }; + const array = migrationArray(stationInfo); + if (!array) return; + setTrainData(array); + setIsConcatNear(true); + }; + + const openTrainInfo = (d) => { + const train = customTrainDataDetector(d); + let TrainNumber = ""; + if (train.trainNumDistance != undefined) { + const timeInfo = + parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; + TrainNumber = timeInfo + "号"; + } + const payload = { + data: { + trainNum: d, + limited: `${getTrainType(train.type).data}:${ + train.trainName + }${TrainNumber}`, + }, + navigate, + originalStationList, + from: "AllTrainDiagramView", + }; + SheetManager.hide("EachTrainInfo").then(() => { + //0.1秒待機してから開く + setTimeout(() => { + SheetManager.show("EachTrainInfo", { payload }); + }, 1); + }); + }; + return ( + + + + + + + {data.limited + ? getType(data.limited.split(":")[0]) + + migrateTrainName( + data.limited.split(":")[1] || + (trainData.length > 0 + ? trainData[trainData.length - 1].split(",")[0] + "行き" + : " ") + ) + : ""} + + + + {data.trainNum} + {isConcatNear ? ` + ${nearTrainIDList}` : ""} + + + {data.limited != undefined && + getType(data.limited.split(":")[0]) && + !data.limited.split(":")[1].match("サンポート") && ( + { + LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); + navigate("trainbase", { + info: "train.html?tn=" + data.trainNum, + from, + }); + SheetManager.hide("EachTrainInfo"); + }} + /> + )} + + {isLandscape ? ( + + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + + ) : ( + + ) : ( + + ) + } + longHeader={ + from == "AllTrainDiagramView" ? ( + <> + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + + )} + + ); +}; From 627102601d234fcb1e2c8471ebece1b84e8bf6d7 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 17:07:10 +0900 Subject: [PATCH 33/66] =?UTF-8?q?=E3=81=BB=E3=81=BC=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 224 +++++++----------- 1 file changed, 91 insertions(+), 133 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 9fdceaf..7fff340 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -39,42 +39,12 @@ export const EachTrainInfo = (props) => { openStationACFromEachTrainInfo = () => {}, from, } = props.payload; - const [trainData, setTrainData] = useState([]); - const [currentPosition, setCurrentPosition] = useState([]); - const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); - const { getInfluencedTrainData } = useBusAndTrainData(); - const [currentTrainData, setCurrentTrainData] = useState([]); - const [nearTrainIDList, setNearTrainIDList] = useState([]); - const [showNearTrain, setShowNearTrain] = useState([]); - const [isConcatNear, setIsConcatNear] = useState(false); - const [tailStation, setTailStation] = useState(); - const [headStation, setHeadStation] = useState(); + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - //裏列車探索 - useEffect(() => { - if (!data.trainNum) return; - const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); - setNearTrainIDList(returnArray); - setShowNearTrain(TDArray); - }, [data]); - - useEffect(() => { - if (trainData.length == 0) return; - if (showNearTrain.length == 0) return; - showNearTrain.forEach((d) => { - const [station, se, time] = d.split(","); - - if (station == trainData[0].split(",")[0]) - setHeadStation(trainData[0].split(",")[0]); - if (station == trainData[trainData.length - 1].split(",")[0]) - setTailStation(trainData[trainData.length - 1].split(",")[0]); - }); - }, [trainData, showNearTrain]); - useEffect(() => { setCurrentTrainData( checkDuplicateTrainData( @@ -84,6 +54,78 @@ export const EachTrainInfo = (props) => { }, [currentTrain]); //bconst insets = useSafeAreaInsets(); + + const actionSheetRef = useRef(null); + return ( + } + ref={actionSheetRef} + drawUnderStatusBar={false} + isModal={Platform.OS == "ios"} + + //useBottomSafeAreaPadding={Platform.OS == "android"} + > + + + ); +}; +const styles = StyleSheet.create({ + header: { + justifyContent: "center", + alignItems: "center", + left: 0, + right: 0, + //paddingTop: 10, + position: "absolute", + zIndex: 1, + backgroundColor: "f0f0f0", + }, + headerText: { + color: "#fff", + fontSize: 25, + fontWeight: "bold", + textAlign: "center", + }, +}); +const Hoge = ({ + actionSheetRef, + data, + navigate, + originalStationList, + openStationACFromEachTrainInfo, + from, + currentTrainData, +}) => { + const [headStation, setHeadStation] = useState(); + const [tailStation, setTailStation] = useState(); + const [isConcatNear, setIsConcatNear] = useState(false); + const [showNearTrain, setShowNearTrain] = useState([]); + const [nearTrainIDList, setNearTrainIDList] = useState([]); + const { getInfluencedTrainData } = useBusAndTrainData(); + const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); + const [currentPosition, setCurrentPosition] = useState([]); + const [trainData, setTrainData] = useState([]); + const stationList = + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); + const getStationData = (stationName) => { const Stations = stationList.map((a) => a.filter((d) => d.StationName == stationName) @@ -96,15 +138,6 @@ export const EachTrainInfo = (props) => { if (!Station[0]) return []; return Station.map((d) => d.StationNumber)[0]; }; - - const stationList = - originalStationList && - lineList.map((d) => - originalStationList[d].map((a) => ({ - StationNumber: a.StationNumber, - StationName: a.Station_JP, - })) - ); const stopStationIDList = trainData.map((i, index) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => @@ -232,100 +265,25 @@ export const EachTrainInfo = (props) => { console.log(e); } } + useEffect(() => { + if (trainData.length == 0) return; + if (showNearTrain.length == 0) return; + showNearTrain.forEach((d) => { + const [station, se, time] = d.split(","); - const actionSheetRef = useRef(null); - return ( - } - ref={actionSheetRef} - drawUnderStatusBar={false} - isModal={Platform.OS == "ios"} - - //useBottomSafeAreaPadding={Platform.OS == "android"} - > - - - ); -}; -const styles = StyleSheet.create({ - header: { - justifyContent: "center", - alignItems: "center", - left: 0, - right: 0, - //paddingTop: 10, - position: "absolute", - zIndex: 1, - backgroundColor: "f0f0f0", - }, - headerText: { - color: "#fff", - fontSize: 25, - fontWeight: "bold", - textAlign: "center", - }, -}); -const Hoge = ({ - actionSheetRef, - data, - trainData, - isConcatNear, - nearTrainIDList, - navigate, - from, - currentTrainData, - currentPosition, - headStation, - tailStation, - stationList, - openStationACFromEachTrainInfo, - trainPositionSwitch, - findReversalPoints, - setTrainData, - trainList, - showNearTrain, - setIsConcatNear, - customTrainDataDetector, - getTrainType, - originalStationList, - SheetManager, - AS, - setTrainPositionSwitch, - getStationData, - setCurrentPosition, -}) => { + if (station == trainData[0].split(",")[0]) + setHeadStation(trainData[0].split(",")[0]); + if (station == trainData[trainData.length - 1].split(",")[0]) + setTailStation(trainData[trainData.length - 1].split(",")[0]); + }); + }, [trainData, showNearTrain]); + //裏列車探索 + useEffect(() => { + if (!data.trainNum) return; + const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); + setNearTrainIDList(returnArray); + setShowNearTrain(TDArray); + }, [data]); const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); const migrateTrainName = (string) => { return string From 12cd53640deeb162468904c51fadd3192f69b73d Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 17:36:16 +0900 Subject: [PATCH 34/66] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 57 +++++++------------ 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 7fff340..f369f3d 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -32,28 +32,6 @@ import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; - const { - data, - navigate, - originalStationList, - openStationACFromEachTrainInfo = () => {}, - from, - } = props.payload; - - const { currentTrain } = useCurrentTrain(); - const [currentTrainData, setCurrentTrainData] = useState([]); - - // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - - useEffect(() => { - setCurrentTrainData( - checkDuplicateTrainData( - currentTrain.filter((d) => d.num == data.trainNum) - ) - ); - }, [currentTrain]); - - //bconst insets = useSafeAreaInsets(); const actionSheetRef = useRef(null); return ( @@ -67,17 +45,7 @@ export const EachTrainInfo = (props) => { //useBottomSafeAreaPadding={Platform.OS == "android"} > - + ); }; @@ -99,15 +67,33 @@ const styles = StyleSheet.create({ textAlign: "center", }, }); -const Hoge = ({ +const EachTrainInfoCore = ({ actionSheetRef, data, navigate, originalStationList, openStationACFromEachTrainInfo, from, - currentTrainData, }) => { + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); + + const { currentTrain } = useCurrentTrain(); + const [currentTrainData, setCurrentTrainData] = useState(); + + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); + + useEffect(() => { + console.log(currentTrain.length); + if (!currentTrain.length) return; + setCurrentTrainData( + checkDuplicateTrainData( + currentTrain.filter((d) => d.num == data.trainNum) + ) + ); + }, [currentTrain]); + + //bconst insets = useSafeAreaInsets(); + const [headStation, setHeadStation] = useState(); const [tailStation, setTailStation] = useState(); const [isConcatNear, setIsConcatNear] = useState(false); @@ -308,6 +294,7 @@ const Hoge = ({ const [isLandscape, setIsLandscape] = useState(false); useEffect(() => { //currentTrainData.Pos = "鴨川~端岡"; //test + if (!currentTrainData) return; if (!currentTrainData?.Pos) return; if (currentTrainData?.Pos.match("~")) { const pos = currentTrainData?.Pos.replace("(下り)", "") From f8bd37c4527cdf1134f21de1a0a1dd700c3c3c92 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 17:45:24 +0900 Subject: [PATCH 35/66] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 656 +---------------- .../EachTrainInfoCore.js | 686 ++++++++++++++++++ 2 files changed, 687 insertions(+), 655 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfoCore.js diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index f369f3d..1d4701b 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -29,7 +29,7 @@ import { LongHeader } from "./EachTrainInfo/LongHeader"; import { ShortHeader } from "./EachTrainInfo/ShortHeader"; import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; - +import { EachTrainInfoCore } from "./EachTrainInfoCore"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -49,657 +49,3 @@ export const EachTrainInfo = (props) => { ); }; -const styles = StyleSheet.create({ - header: { - justifyContent: "center", - alignItems: "center", - left: 0, - right: 0, - //paddingTop: 10, - position: "absolute", - zIndex: 1, - backgroundColor: "f0f0f0", - }, - headerText: { - color: "#fff", - fontSize: 25, - fontWeight: "bold", - textAlign: "center", - }, -}); -const EachTrainInfoCore = ({ - actionSheetRef, - data, - navigate, - originalStationList, - openStationACFromEachTrainInfo, - from, -}) => { - // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - - const { currentTrain } = useCurrentTrain(); - const [currentTrainData, setCurrentTrainData] = useState(); - - // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - - useEffect(() => { - console.log(currentTrain.length); - if (!currentTrain.length) return; - setCurrentTrainData( - checkDuplicateTrainData( - currentTrain.filter((d) => d.num == data.trainNum) - ) - ); - }, [currentTrain]); - - //bconst insets = useSafeAreaInsets(); - - const [headStation, setHeadStation] = useState(); - const [tailStation, setTailStation] = useState(); - const [isConcatNear, setIsConcatNear] = useState(false); - const [showNearTrain, setShowNearTrain] = useState([]); - const [nearTrainIDList, setNearTrainIDList] = useState([]); - const { getInfluencedTrainData } = useBusAndTrainData(); - const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); - const [currentPosition, setCurrentPosition] = useState([]); - const [trainData, setTrainData] = useState([]); - const stationList = - originalStationList && - lineList.map((d) => - originalStationList[d].map((a) => ({ - StationNumber: a.StationNumber, - StationName: a.Station_JP, - })) - ); - - const getStationData = (stationName) => { - const Stations = stationList.map((a) => - a.filter((d) => d.StationName == stationName) - ); - const Station = - Stations && - Stations.reduce((newArray, e) => { - return newArray.concat(e); - }, []); - if (!Station[0]) return []; - return Station.map((d) => d.StationNumber)[0]; - }; - const stopStationIDList = trainData.map((i, index) => { - const [station, se, time] = i.split(","); - const Stations = stationList.map((a) => - a.filter((d) => d.StationName == station) - ); - const StationNumbers = - Stations && - Stations.reduce((newArray, e) => { - return newArray.concat(e); - }, []) - .filter((d) => d.StationNumber) - .map((d) => d.StationNumber); - return StationNumbers[0]; - }); - function findReversalPoints(array) { - try { - // arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列) - // stopStationIDListは停車駅の駅IDの配列 - if (!stopStationIDList.length) return []; - // arrayが二次元配列だったら早期リターン - if (!array instanceof Array) return []; - if (!array.length) return []; - if (array[0] instanceof Array) return []; - const arrayNumber = array.map((d) => ({ - line: d - .split("") - .filter((s) => "A" < s && s < "Z") - .join(""), - ID: d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""), - })); - const stopStationIDListNumber = stopStationIDList.map((d) => { - if (!d) return { line: [], ID: [] }; - return { - line: d - .split("") - .filter((s) => "A" < s && s < "Z") - .join(""), - ID: d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""), - }; - }); - // 完全一致 - if (array.length == 1) { - const index = stopStationIDList.indexOf(array[0]); - if (index != -1) return [index]; - // 通過駅の場合 - for (let i = 0; i < stopStationIDListNumber.length - 1; i++) { - if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) { - if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) { - return [i + 1]; - } - } - if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) { - if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) { - return [i + 1]; - } - } - } - } - // 駅間の場合 - if (array.length == 2) { - const index1 = stopStationIDList.indexOf(array[0]); - const index2 = stopStationIDList.indexOf(array[1]); - if (index1 != -1 && index2 != -1) { - // 駅間で通過駅も無い場合 - if (index1 < index2) { - if (index1 + 1 == index2) { - return [index2]; - } else { - const returnArray = []; - for (let i = index1 + 1; i <= index2; i++) { - returnArray.push(i); - } - return returnArray; - } - } - if (index1 > index2) { - if (index2 + 1 == index1) return [index1]; - else { - const returnArray = []; - for (let i = index2 + 1; i <= index1; i++) { - returnArray.push(i); - } - return returnArray; - } - } - } else { - const getNearStationID = (stationID) => { - for (let i = 0; i <= stopStationIDListNumber.length; i++) { - if (stopStationIDListNumber[i].ID < stationID) { - if (stopStationIDListNumber[i + 1].ID > stationID) { - return i + 1; - } - } - if (stopStationIDListNumber[i].ID > stationID) { - if (stopStationIDListNumber[i + 1].ID < stationID) { - return i + 1; - } - } - } - }; - let newIndex1 = index1; - let newIndex2 = index2; - if (index1 == -1) { - newIndex1 = getNearStationID(arrayNumber[0].ID); - } - if (index2 == -1) { - newIndex2 = getNearStationID(arrayNumber[1].ID); - } - if (newIndex1 && newIndex2) { - return [newIndex1, newIndex2]; - } - - // 通過駅の場合 - } - - return []; - } - } catch (e) { - console.log(e); - } - } - useEffect(() => { - if (trainData.length == 0) return; - if (showNearTrain.length == 0) return; - showNearTrain.forEach((d) => { - const [station, se, time] = d.split(","); - - if (station == trainData[0].split(",")[0]) - setHeadStation(trainData[0].split(",")[0]); - if (station == trainData[trainData.length - 1].split(",")[0]) - setTailStation(trainData[trainData.length - 1].split(",")[0]); - }); - }, [trainData, showNearTrain]); - //裏列車探索 - useEffect(() => { - if (!data.trainNum) return; - const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); - setNearTrainIDList(returnArray); - setShowNearTrain(TDArray); - }, [data]); - const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); - const migrateTrainName = (string) => { - return string - .replace("マリン", "マリンライナー") - .replace("ライナーライナー", "ライナー"); - }; - const getType = (string) => { - switch (string) { - case "express": - return "特急"; - case "rapid": - return "快速"; - default: - return ""; - } - }; - - // 使用例 - const points = - trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; - const { height, width } = useWindowDimensions(); - const [isLandscape, setIsLandscape] = useState(false); - useEffect(() => { - //currentTrainData.Pos = "鴨川~端岡"; //test - if (!currentTrainData) return; - if (!currentTrainData?.Pos) return; - if (currentTrainData?.Pos.match("~")) { - const pos = currentTrainData?.Pos.replace("(下り)", "") - .replace("(上り)", "") - .split("~"); - setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]); - } else { - setCurrentPosition([getStationData(currentTrainData?.Pos)]); - } - }, [currentTrainData]); - useEffect(() => { - if (height / width > 1.5) { - setIsLandscape(false); - } - if (height / width < 1.5) { - setIsLandscape(true); - } - }, [width, height]); - useEffect(() => { - if (!data.trainNum) return; - const TD = trainList[data.trainNum]; - if (!TD) { - setTrainData([]); - return; - } - setTrainData(TD.split("#").filter((d) => d != "")); - }, [data]); - useEffect(() => { - //列車現在地アイコン表示スイッチ - AS.getItem("trainPositionSwitch") - .then((d) => { - if (d) { - setTrainPositionSwitch(d); - } else { - } - }) - .catch((d) => AS.setItem("trainPositionSwitch", "false")); - }, []); - - const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - const migrationArray = (stationInfo) => { - const mainTrainStationPosition = trainData.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - - const relationMain = (() => { - if (mainTrainStationPosition == 0) return "head"; - if (mainTrainStationPosition == trainData.length - 1) return "tail"; - return "middle"; - })(); - - const subTrainStationPosition = showNearTrain.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - const relationSub = (() => { - if (subTrainStationPosition == 0) return "head"; - if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; - return "middle"; - })(); - - switch (relationMain) { - case "head": - if (relationSub == "head") { - return; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else if (relationSub == "middle") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else return; - case "tail": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return; - } else if (relationSub == "middle") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain.slice(subTrainStationPosition), - ]; - } else return; - case "middle": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData.slice(mainTrainStationPosition), - ]; - } else return; - } - }; - const array = migrationArray(stationInfo); - if (!array) return; - setTrainData(array); - setIsConcatNear(true); - }; - - const openTrainInfo = (d) => { - const train = customTrainDataDetector(d); - let TrainNumber = ""; - if (train.trainNumDistance != undefined) { - const timeInfo = - parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; - TrainNumber = timeInfo + "号"; - } - const payload = { - data: { - trainNum: d, - limited: `${getTrainType(train.type).data}:${ - train.trainName - }${TrainNumber}`, - }, - navigate, - originalStationList, - from: "AllTrainDiagramView", - }; - SheetManager.hide("EachTrainInfo").then(() => { - //0.1秒待機してから開く - setTimeout(() => { - SheetManager.show("EachTrainInfo", { payload }); - }, 1); - }); - }; - return ( - - - - - - - {data.limited - ? getType(data.limited.split(":")[0]) + - migrateTrainName( - data.limited.split(":")[1] || - (trainData.length > 0 - ? trainData[trainData.length - 1].split(",")[0] + "行き" - : " ") - ) - : ""} - - - - {data.trainNum} - {isConcatNear ? ` + ${nearTrainIDList}` : ""} - - - {data.limited != undefined && - getType(data.limited.split(":")[0]) && - !data.limited.split(":")[1].match("サンポート") && ( - { - LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); - navigate("trainbase", { - info: "train.html?tn=" + data.trainNum, - from, - }); - SheetManager.hide("EachTrainInfo"); - }} - /> - )} - - {isLandscape ? ( - - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - - - - - - - - ) : ( - - ) : ( - - ) - } - longHeader={ - from == "AllTrainDiagramView" ? ( - <> - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - - - - - - - - )} - - ); -}; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js new file mode 100644 index 0000000..4e6dd2b --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -0,0 +1,686 @@ +import React, { useEffect, useState, useRef } from "react"; +import { + View, + LayoutAnimation, + Text, + TouchableOpacity, + Platform, + StyleSheet, + useWindowDimensions, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import ActionSheet, { + SheetManager, + useScrollHandlers, +} from "react-native-actions-sheet"; +import { AS } from "../../storageControl"; +import trainList from "../../assets/originData/trainList"; +import { lineList } from "../../lib/getStationList"; +import { heightPercentageToDP } from "react-native-responsive-screen"; +import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; +import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; +import { getTrainType } from "../../lib/getTrainType"; +import { customTrainDataDetector } from "../custom-train-data"; +import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; +import { EachStopList } from "./EachTrainInfo/EachStopList"; +import { DataFromButton } from "./EachTrainInfo/DataFromButton"; +import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; +import { LongHeader } from "./EachTrainInfo/LongHeader"; +import { ShortHeader } from "./EachTrainInfo/ShortHeader"; +import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; +import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; +export const EachTrainInfoCore = ({ + actionSheetRef, + data, + navigate, + originalStationList, + openStationACFromEachTrainInfo, + from, +}) => { + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); + + const { currentTrain } = useCurrentTrain(); + const [currentTrainData, setCurrentTrainData] = useState(); + + // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); + + useEffect(() => { + console.log(currentTrain.length); + if (!currentTrain.length) return; + setCurrentTrainData( + checkDuplicateTrainData( + currentTrain.filter((d) => d.num == data.trainNum) + ) + ); + }, [currentTrain]); + + //bconst insets = useSafeAreaInsets(); + + const [headStation, setHeadStation] = useState(); + const [tailStation, setTailStation] = useState(); + const [isConcatNear, setIsConcatNear] = useState(false); + const [showNearTrain, setShowNearTrain] = useState([]); + const [nearTrainIDList, setNearTrainIDList] = useState([]); + const { getInfluencedTrainData } = useBusAndTrainData(); + const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); + const [currentPosition, setCurrentPosition] = useState([]); + const [trainData, setTrainData] = useState([]); + const stationList = + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); + + const getStationData = (stationName) => { + const Stations = stationList.map((a) => + a.filter((d) => d.StationName == stationName) + ); + const Station = + Stations && + Stations.reduce((newArray, e) => { + return newArray.concat(e); + }, []); + if (!Station[0]) return []; + return Station.map((d) => d.StationNumber)[0]; + }; + const stopStationIDList = trainData.map((i, index) => { + const [station, se, time] = i.split(","); + const Stations = stationList.map((a) => + a.filter((d) => d.StationName == station) + ); + const StationNumbers = + Stations && + Stations.reduce((newArray, e) => { + return newArray.concat(e); + }, []) + .filter((d) => d.StationNumber) + .map((d) => d.StationNumber); + return StationNumbers[0]; + }); + function findReversalPoints(array) { + try { + // arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列) + // stopStationIDListは停車駅の駅IDの配列 + if (!stopStationIDList.length) return []; + // arrayが二次元配列だったら早期リターン + if (!array instanceof Array) return []; + if (!array.length) return []; + if (array[0] instanceof Array) return []; + const arrayNumber = array.map((d) => ({ + line: d + .split("") + .filter((s) => "A" < s && s < "Z") + .join(""), + ID: d + .split("") + .filter((s) => "0" <= s && s <= "9") + .join(""), + })); + const stopStationIDListNumber = stopStationIDList.map((d) => { + if (!d) return { line: [], ID: [] }; + return { + line: d + .split("") + .filter((s) => "A" < s && s < "Z") + .join(""), + ID: d + .split("") + .filter((s) => "0" <= s && s <= "9") + .join(""), + }; + }); + // 完全一致 + if (array.length == 1) { + const index = stopStationIDList.indexOf(array[0]); + if (index != -1) return [index]; + // 通過駅の場合 + for (let i = 0; i < stopStationIDListNumber.length - 1; i++) { + if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) { + if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) { + return [i + 1]; + } + } + if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) { + if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) { + return [i + 1]; + } + } + } + } + // 駅間の場合 + if (array.length == 2) { + const index1 = stopStationIDList.indexOf(array[0]); + const index2 = stopStationIDList.indexOf(array[1]); + if (index1 != -1 && index2 != -1) { + // 駅間で通過駅も無い場合 + if (index1 < index2) { + if (index1 + 1 == index2) { + return [index2]; + } else { + const returnArray = []; + for (let i = index1 + 1; i <= index2; i++) { + returnArray.push(i); + } + return returnArray; + } + } + if (index1 > index2) { + if (index2 + 1 == index1) return [index1]; + else { + const returnArray = []; + for (let i = index2 + 1; i <= index1; i++) { + returnArray.push(i); + } + return returnArray; + } + } + } else { + const getNearStationID = (stationID) => { + for (let i = 0; i <= stopStationIDListNumber.length; i++) { + if (stopStationIDListNumber[i].ID < stationID) { + if (stopStationIDListNumber[i + 1].ID > stationID) { + return i + 1; + } + } + if (stopStationIDListNumber[i].ID > stationID) { + if (stopStationIDListNumber[i + 1].ID < stationID) { + return i + 1; + } + } + } + }; + let newIndex1 = index1; + let newIndex2 = index2; + if (index1 == -1) { + newIndex1 = getNearStationID(arrayNumber[0].ID); + } + if (index2 == -1) { + newIndex2 = getNearStationID(arrayNumber[1].ID); + } + if (newIndex1 && newIndex2) { + return [newIndex1, newIndex2]; + } + + // 通過駅の場合 + } + + return []; + } + } catch (e) { + console.log(e); + } + } + useEffect(() => { + if (trainData.length == 0) return; + if (showNearTrain.length == 0) return; + showNearTrain.forEach((d) => { + const [station, se, time] = d.split(","); + + if (station == trainData[0].split(",")[0]) + setHeadStation(trainData[0].split(",")[0]); + if (station == trainData[trainData.length - 1].split(",")[0]) + setTailStation(trainData[trainData.length - 1].split(",")[0]); + }); + }, [trainData, showNearTrain]); + //裏列車探索 + useEffect(() => { + if (!data.trainNum) return; + const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); + setNearTrainIDList(returnArray); + setShowNearTrain(TDArray); + }, [data]); + const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); + const migrateTrainName = (string) => { + return string + .replace("マリン", "マリンライナー") + .replace("ライナーライナー", "ライナー"); + }; + const getType = (string) => { + switch (string) { + case "express": + return "特急"; + case "rapid": + return "快速"; + default: + return ""; + } + }; + + // 使用例 + const points = + trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; + const { height, width } = useWindowDimensions(); + const [isLandscape, setIsLandscape] = useState(false); + useEffect(() => { + //currentTrainData.Pos = "鴨川~端岡"; //test + if (!currentTrainData) return; + if (!currentTrainData?.Pos) return; + if (currentTrainData?.Pos.match("~")) { + const pos = currentTrainData?.Pos.replace("(下り)", "") + .replace("(上り)", "") + .split("~"); + setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]); + } else { + setCurrentPosition([getStationData(currentTrainData?.Pos)]); + } + }, [currentTrainData]); + useEffect(() => { + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [width, height]); + useEffect(() => { + if (!data.trainNum) return; + const TD = trainList[data.trainNum]; + if (!TD) { + setTrainData([]); + return; + } + setTrainData(TD.split("#").filter((d) => d != "")); + }, [data]); + useEffect(() => { + //列車現在地アイコン表示スイッチ + AS.getItem("trainPositionSwitch") + .then((d) => { + if (d) { + setTrainPositionSwitch(d); + } else { + } + }) + .catch((d) => AS.setItem("trainPositionSwitch", "false")); + }, []); + + const openBackTrainInfo = (stationInfo, currentTrainIndex) => { + const migrationArray = (stationInfo) => { + const mainTrainStationPosition = trainData.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + + const relationMain = (() => { + if (mainTrainStationPosition == 0) return "head"; + if (mainTrainStationPosition == trainData.length - 1) return "tail"; + return "middle"; + })(); + + const subTrainStationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationSub = (() => { + if (subTrainStationPosition == 0) return "head"; + if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; + return "middle"; + })(); + + switch (relationMain) { + case "head": + if (relationSub == "head") { + return; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else if (relationSub == "middle") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else return; + case "tail": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return; + } else if (relationSub == "middle") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain.slice(subTrainStationPosition), + ]; + } else return; + case "middle": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData.slice(mainTrainStationPosition), + ]; + } else return; + } + }; + const array = migrationArray(stationInfo); + if (!array) return; + setTrainData(array); + setIsConcatNear(true); + }; + + const openTrainInfo = (d) => { + const train = customTrainDataDetector(d); + let TrainNumber = ""; + if (train.trainNumDistance != undefined) { + const timeInfo = + parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; + TrainNumber = timeInfo + "号"; + } + const payload = { + data: { + trainNum: d, + limited: `${getTrainType(train.type).data}:${ + train.trainName + }${TrainNumber}`, + }, + navigate, + originalStationList, + from: "AllTrainDiagramView", + }; + SheetManager.hide("EachTrainInfo").then(() => { + //0.1秒待機してから開く + setTimeout(() => { + SheetManager.show("EachTrainInfo", { payload }); + }, 1); + }); + }; + return ( + + + + + + + {data.limited + ? getType(data.limited.split(":")[0]) + + migrateTrainName( + data.limited.split(":")[1] || + (trainData.length > 0 + ? trainData[trainData.length - 1].split(",")[0] + "行き" + : " ") + ) + : ""} + + + + {data.trainNum} + {isConcatNear ? ` + ${nearTrainIDList}` : ""} + + + {data.limited != undefined && + getType(data.limited.split(":")[0]) && + !data.limited.split(":")[1].match("サンポート") && ( + { + LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); + navigate("trainbase", { + info: "train.html?tn=" + data.trainNum, + from, + }); + SheetManager.hide("EachTrainInfo"); + }} + /> + )} + + {isLandscape ? ( + + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + + ) : ( + + ) : ( + + ) + } + longHeader={ + from == "AllTrainDiagramView" ? ( + <> + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* + ほげほげふがふが */} + + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} + + + + + + + + + )} + + ); +}; + +const styles = StyleSheet.create({ + header: { + justifyContent: "center", + alignItems: "center", + left: 0, + right: 0, + //paddingTop: 10, + position: "absolute", + zIndex: 1, + backgroundColor: "f0f0f0", + }, + headerText: { + color: "#fff", + fontSize: 25, + fontWeight: "bold", + textAlign: "center", + }, +}); From bf2b4d356cacecfc0c5300304da2473d4a2dcaae Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 12 Feb 2024 17:58:25 +0900 Subject: [PATCH 36/66] =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E6=8C=99=E5=8B=95=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 34 ++----------------- .../EachTrainInfoCore.js | 1 + 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 1d4701b..6331cca 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -1,34 +1,6 @@ -import React, { useEffect, useState, useRef } from "react"; -import { - View, - LayoutAnimation, - Text, - TouchableOpacity, - Platform, - StyleSheet, - useWindowDimensions, -} from "react-native"; -import { Ionicons } from "@expo/vector-icons"; -import ActionSheet, { - SheetManager, - useScrollHandlers, -} from "react-native-actions-sheet"; -import { AS } from "../../storageControl"; -import trainList from "../../assets/originData/trainList"; -import { lineList } from "../../lib/getStationList"; -import { heightPercentageToDP } from "react-native-responsive-screen"; -import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; -import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; -import { getTrainType } from "../../lib/getTrainType"; -import { customTrainDataDetector } from "../custom-train-data"; -import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; -import { EachStopList } from "./EachTrainInfo/EachStopList"; -import { DataFromButton } from "./EachTrainInfo/DataFromButton"; -import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; -import { LongHeader } from "./EachTrainInfo/LongHeader"; -import { ShortHeader } from "./EachTrainInfo/ShortHeader"; -import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; -import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; +import React, { useRef } from "react"; +import { Platform } from "react-native"; +import ActionSheet from "react-native-actions-sheet"; import { EachTrainInfoCore } from "./EachTrainInfoCore"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 4e6dd2b..f20b8b6 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -550,6 +550,7 @@ export const EachTrainInfoCore = ({ ) : ( Date: Mon, 12 Feb 2024 21:51:35 +0900 Subject: [PATCH 37/66] =?UTF-8?q?=E6=A8=AA=E6=96=B9=E5=90=91=E3=81=AE?= =?UTF-8?q?=E3=82=A2=E3=83=8B=E3=83=A1=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=84=E8=A6=81=E7=B4=A0=E3=81=AE=E8=A2=AB=E3=82=8A=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 85 ++++++++++++++++++- .../EachTrainInfo/TrainDataView.js | 2 +- .../EachTrainInfoCore.js | 41 +++++---- 3 files changed, 108 insertions(+), 20 deletions(-) diff --git a/Apps.js b/Apps.js index 2e3e09d..a405cb9 100644 --- a/Apps.js +++ b/Apps.js @@ -5,6 +5,7 @@ import { Text, TouchableOpacity, useWindowDimensions, + LayoutAnimation, } from "react-native"; import { WebView } from "react-native-webview"; import Constants from "expo-constants"; @@ -19,6 +20,7 @@ import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { useCurrentTrain } from "./stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; import TrainMenu from "./components/trainMenu"; +import { EachTrainInfoCore } from "./components/ActionSheetComponents/EachTrainInfoCore"; /* import StatusbarDetect from './StatusbarDetect'; var Status = StatusbarDetect(); */ @@ -186,6 +188,7 @@ export default function Apps({ navigation, webview, stationData }) { case "ShowTrainTimeInfo": { const { trainNum, limited } = dataSet; //alert(trainNum, limited); + LayoutAnimation.easeInEaseOut(); setTrainInfo({ trainNum, limited, @@ -193,6 +196,7 @@ export default function Apps({ navigation, webview, stationData }) { currentTrain.filter((a) => a.num == trainNum) ), }); //遅延情報は未実装 + if (isLandscape) return; const payload = { data: { trainNum, @@ -294,7 +298,7 @@ export default function Apps({ navigation, webview, stationData }) { }} onLayout={handleLayout} > - {isLandscape ? ( + {!trainInfo.trainData && isLandscape ? ( + {isLandscape && trainInfo.trainData && ( + + + + )} {isLandscape || ( navigate("trainMenu", { webview })} @@ -350,9 +373,23 @@ export default function Apps({ navigation, webview, stationData }) { mapSwitch={mapSwitch == "true" ? "flex" : "none"} /> )} + {isLandscape && trainInfo.trainData && ( + { + LayoutAnimation.easeInEaseOut(); + setTrainInfo({ + trainNum: undefined, + limited: undefined, + trainData: undefined, + }); + }} + top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} + /> + )} webview.current.reload()} top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} + right={isLandscape && trainInfo.trainData ? (width / 100) * 40 : 0} LoadError={LoadError} /> @@ -395,12 +432,54 @@ const MapsButton = ({ onPress, top, mapSwitch }) => { ); }; -const ReloadButton = ({ onPress, top, mapSwitch, LoadError = false }) => { +const LandscapeBackButton = ({ onPress, top }) => { const styles = { touch: { position: "absolute", top, - right: 10, + left: 10, + width: 50, + height: 50, + backgroundColor: "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + borderRadius: 50, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + display: "flex", + }, + text: { + textAlign: "center", + width: "auto", + height: "auto", + textAlignVertical: "center", + fontWeight: "bold", + color: "white", + }, + }; + return ( + + + + + + ); +}; + +const ReloadButton = ({ + onPress, + top, + mapSwitch, + LoadError = false, + right, +}) => { + const styles = { + touch: { + position: "absolute", + top, + right: 10 + right, width: 50, height: 50, backgroundColor: LoadError ? "red" : "#0099CC", diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 6ac2eb7..e8a229e 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -35,7 +35,7 @@ export const TrainDataView = ({ flexDirection: "row", //minHeight: 200, //height: heightPercentageToDP("20%"), - width: isLandscape ? width / 2 : width, + width: isLandscape ? (width / 100) * 40 : width, flex: 1, }} > diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index f20b8b6..029a48a 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -52,7 +52,7 @@ export const EachTrainInfoCore = ({ currentTrain.filter((d) => d.num == data.trainNum) ) ); - }, [currentTrain]); + }, [currentTrain, data.trainNum]); //bconst insets = useSafeAreaInsets(); @@ -232,7 +232,9 @@ export const EachTrainInfoCore = ({ setNearTrainIDList(returnArray); setShowNearTrain(TDArray); }, [data]); - const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); + const scrollHandlers = actionSheetRef + ? useScrollHandlers("scrollview-1", actionSheetRef) + : null; const migrateTrainName = (string) => { return string .replace("マリン", "マリンライナー") @@ -401,18 +403,20 @@ export const EachTrainInfoCore = ({ borderWidth: 1, }} > - - - + {isLandscape || ( + + + + )} {data.limited @@ -450,7 +454,8 @@ export const EachTrainInfoCore = ({ /> )} - {isLandscape ? ( + {/* {isLandscape */} + {false ? ( Date: Mon, 12 Feb 2024 21:52:50 +0900 Subject: [PATCH 38/66] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=A3=E3=81=BD?= =?UTF-8?q?=E3=81=84=E3=81=AE=E3=81=A7=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 312 ++++++------------ 1 file changed, 103 insertions(+), 209 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 029a48a..06d9fd9 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -454,47 +454,63 @@ export const EachTrainInfoCore = ({ /> )} - {/* {isLandscape */} - {false ? ( - - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* + ) : ( + + ) + } + longHeader={ + from == "AllTrainDiagramView" ? ( + <> + ) : ( + + ) + } + topStickyContent={ + + } + > + {headStation && !isConcatNear && ( + openBackTrainInfo(headStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の始発駅」を表示 + + + )} + {/* ほげほげふがふが */} - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} + {trainData.map((i, index) => + i.split(",")[1] == "提" ? ( + + ) : ( + + ) + )} + {tailStation && !isConcatNear && ( + openBackTrainInfo(tailStation)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 「本当の終着駅」を表示 + + + )} - - - - - + + + + - - ) : ( - - ) : ( - - ) - } - longHeader={ - from == "AllTrainDiagramView" ? ( - <> - ) : ( - - ) - } - topStickyContent={ - - } - > - {headStation && !isConcatNear && ( - openBackTrainInfo(headStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の始発駅」を表示 - - - )} - {/* - ほげほげふがふが */} - - {trainData.map((i, index) => - i.split(",")[1] == "提" ? ( - - ) : ( - - ) - )} - {tailStation && !isConcatNear && ( - openBackTrainInfo(tailStation)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 「本当の終着駅」を表示 - - - )} - - - - - - - - - )} + + ); }; From 91c8bec6b00b220c7807a0f927351c9d215bc278 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 14 Feb 2024 00:14:10 +0900 Subject: [PATCH 39/66] =?UTF-8?q?S=E5=88=97=E8=BB=8A=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 06d9fd9..6971081 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -277,15 +277,38 @@ export const EachTrainInfoCore = ({ setIsLandscape(true); } }, [width, height]); + const [trueTrainID, setTrueTrainID] = useState(); useEffect(() => { if (!data.trainNum) return; const TD = trainList[data.trainNum]; if (!TD) { + searchSpecialTrain(data.trainNum); setTrainData([]); return; } setTrainData(TD.split("#").filter((d) => d != "")); }, [data]); + const searchSpecialTrain = (trainNum) => { + const searchBase = trainNum.replace("S", "").replace("X", ""); + const search = (text) => { + const TD = trainList[searchBase + text]; + if (TD) { + return true; + } + return false; + }; + if (search("D")) setTrueTrainID(searchBase + "D"); + if (search("M")) setTrueTrainID(searchBase + "M"); + }; + const replaceSpecialTrainDetail = (trainNum) => { + let TD = trainList[trainNum]; + + if (TD) { + setTrainData(TD.split("#").filter((d) => d != "")); + return; + } + }; + useEffect(() => { //列車現在地アイコン表示スイッチ AS.getItem("trainPositionSwitch") @@ -517,7 +540,24 @@ export const EachTrainInfoCore = ({ source={require("../../assets/51690-loading-diamonds.json")} /> ほげほげふがふが */} - + {trainData.length == 0 && trueTrainID && ( + replaceSpecialTrainDetail(trueTrainID)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 本来の列車情報を表示 + + + )} {trainData.map((i, index) => i.split(",")[1] == "提" ? ( From 039dff5d8f78cc46d00cc99d569e7e124001240a Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 14 Feb 2024 00:48:34 +0900 Subject: [PATCH 40/66] =?UTF-8?q?=E4=B8=80=E9=83=A8function=E3=81=AE?= =?UTF-8?q?=E5=88=86=E5=B2=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 266 +++--------------- .../findReversalPoints.js | 113 ++++++++ lib/eachTrainInfoCoreLib/getStationData.js | 15 + lib/eachTrainInfoCoreLib/getType.js | 11 + lib/eachTrainInfoCoreLib/migrateTrainName.js | 7 + lib/eachTrainInfoCoreLib/openBackTrainInfo.js | 68 +++++ .../searchSpecialTrain.js | 13 + 7 files changed, 265 insertions(+), 228 deletions(-) create mode 100644 lib/eachTrainInfoCoreLib/findReversalPoints.js create mode 100644 lib/eachTrainInfoCoreLib/getStationData.js create mode 100644 lib/eachTrainInfoCoreLib/getType.js create mode 100644 lib/eachTrainInfoCoreLib/migrateTrainName.js create mode 100644 lib/eachTrainInfoCoreLib/openBackTrainInfo.js create mode 100644 lib/eachTrainInfoCoreLib/searchSpecialTrain.js diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 6971081..13ae3b2 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -29,6 +29,13 @@ import { LongHeader } from "./EachTrainInfo/LongHeader"; import { ShortHeader } from "./EachTrainInfo/ShortHeader"; import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; import { LandscapeTrainInfo } from "./EachTrainInfo/LandscapeTrainInfo"; +import { getStationData } from "../../lib/eachTrainInfoCoreLib/getStationData"; +import { findReversalPoints } from "../../lib/eachTrainInfoCoreLib/findReversalPoints"; +import { migrateTrainName } from "../../lib/eachTrainInfoCoreLib/migrateTrainName"; +import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; +import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; +import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; + export const EachTrainInfoCore = ({ actionSheetRef, data, @@ -74,18 +81,6 @@ export const EachTrainInfoCore = ({ })) ); - const getStationData = (stationName) => { - const Stations = stationList.map((a) => - a.filter((d) => d.StationName == stationName) - ); - const Station = - Stations && - Stations.reduce((newArray, e) => { - return newArray.concat(e); - }, []); - if (!Station[0]) return []; - return Station.map((d) => d.StationNumber)[0]; - }; const stopStationIDList = trainData.map((i, index) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => @@ -100,119 +95,6 @@ export const EachTrainInfoCore = ({ .map((d) => d.StationNumber); return StationNumbers[0]; }); - function findReversalPoints(array) { - try { - // arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列) - // stopStationIDListは停車駅の駅IDの配列 - if (!stopStationIDList.length) return []; - // arrayが二次元配列だったら早期リターン - if (!array instanceof Array) return []; - if (!array.length) return []; - if (array[0] instanceof Array) return []; - const arrayNumber = array.map((d) => ({ - line: d - .split("") - .filter((s) => "A" < s && s < "Z") - .join(""), - ID: d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""), - })); - const stopStationIDListNumber = stopStationIDList.map((d) => { - if (!d) return { line: [], ID: [] }; - return { - line: d - .split("") - .filter((s) => "A" < s && s < "Z") - .join(""), - ID: d - .split("") - .filter((s) => "0" <= s && s <= "9") - .join(""), - }; - }); - // 完全一致 - if (array.length == 1) { - const index = stopStationIDList.indexOf(array[0]); - if (index != -1) return [index]; - // 通過駅の場合 - for (let i = 0; i < stopStationIDListNumber.length - 1; i++) { - if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) { - if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) { - return [i + 1]; - } - } - if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) { - if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) { - return [i + 1]; - } - } - } - } - // 駅間の場合 - if (array.length == 2) { - const index1 = stopStationIDList.indexOf(array[0]); - const index2 = stopStationIDList.indexOf(array[1]); - if (index1 != -1 && index2 != -1) { - // 駅間で通過駅も無い場合 - if (index1 < index2) { - if (index1 + 1 == index2) { - return [index2]; - } else { - const returnArray = []; - for (let i = index1 + 1; i <= index2; i++) { - returnArray.push(i); - } - return returnArray; - } - } - if (index1 > index2) { - if (index2 + 1 == index1) return [index1]; - else { - const returnArray = []; - for (let i = index2 + 1; i <= index1; i++) { - returnArray.push(i); - } - return returnArray; - } - } - } else { - const getNearStationID = (stationID) => { - for (let i = 0; i <= stopStationIDListNumber.length; i++) { - if (stopStationIDListNumber[i].ID < stationID) { - if (stopStationIDListNumber[i + 1].ID > stationID) { - return i + 1; - } - } - if (stopStationIDListNumber[i].ID > stationID) { - if (stopStationIDListNumber[i + 1].ID < stationID) { - return i + 1; - } - } - } - }; - let newIndex1 = index1; - let newIndex2 = index2; - if (index1 == -1) { - newIndex1 = getNearStationID(arrayNumber[0].ID); - } - if (index2 == -1) { - newIndex2 = getNearStationID(arrayNumber[1].ID); - } - if (newIndex1 && newIndex2) { - return [newIndex1, newIndex2]; - } - - // 通過駅の場合 - } - - return []; - } - } catch (e) { - console.log(e); - } - } useEffect(() => { if (trainData.length == 0) return; if (showNearTrain.length == 0) return; @@ -235,25 +117,12 @@ export const EachTrainInfoCore = ({ const scrollHandlers = actionSheetRef ? useScrollHandlers("scrollview-1", actionSheetRef) : null; - const migrateTrainName = (string) => { - return string - .replace("マリン", "マリンライナー") - .replace("ライナーライナー", "ライナー"); - }; - const getType = (string) => { - switch (string) { - case "express": - return "特急"; - case "rapid": - return "快速"; - default: - return ""; - } - }; // 使用例 const points = - trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : []; + trainPositionSwitch == "true" + ? findReversalPoints(currentPosition, stopStationIDList) + : []; const { height, width } = useWindowDimensions(); const [isLandscape, setIsLandscape] = useState(false); useEffect(() => { @@ -264,9 +133,12 @@ export const EachTrainInfoCore = ({ const pos = currentTrainData?.Pos.replace("(下り)", "") .replace("(上り)", "") .split("~"); - setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]); + setCurrentPosition([ + getStationData(pos[0], stationList), + getStationData(pos[1], stationList), + ]); } else { - setCurrentPosition([getStationData(currentTrainData?.Pos)]); + setCurrentPosition([getStationData(currentTrainData?.Pos, stationList)]); } }, [currentTrainData]); useEffect(() => { @@ -282,24 +154,13 @@ export const EachTrainInfoCore = ({ if (!data.trainNum) return; const TD = trainList[data.trainNum]; if (!TD) { - searchSpecialTrain(data.trainNum); + const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList); + if (specialTrainActualID) setTrueTrainID(specialTrainActualID); setTrainData([]); return; } setTrainData(TD.split("#").filter((d) => d != "")); }, [data]); - const searchSpecialTrain = (trainNum) => { - const searchBase = trainNum.replace("S", "").replace("X", ""); - const search = (text) => { - const TD = trainList[searchBase + text]; - if (TD) { - return true; - } - return false; - }; - if (search("D")) setTrueTrainID(searchBase + "D"); - if (search("M")) setTrueTrainID(searchBase + "M"); - }; const replaceSpecialTrainDetail = (trainNum) => { let TD = trainList[trainNum]; @@ -321,76 +182,6 @@ export const EachTrainInfoCore = ({ .catch((d) => AS.setItem("trainPositionSwitch", "false")); }, []); - const openBackTrainInfo = (stationInfo, currentTrainIndex) => { - const migrationArray = (stationInfo) => { - const mainTrainStationPosition = trainData.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - - const relationMain = (() => { - if (mainTrainStationPosition == 0) return "head"; - if (mainTrainStationPosition == trainData.length - 1) return "tail"; - return "middle"; - })(); - - const subTrainStationPosition = showNearTrain.findIndex( - (d) => d.split(",")[0] == stationInfo - ); - const relationSub = (() => { - if (subTrainStationPosition == 0) return "head"; - if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; - return "middle"; - })(); - - switch (relationMain) { - case "head": - if (relationSub == "head") { - return; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else if (relationSub == "middle") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData, - ]; - } else return; - case "tail": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return; - } else if (relationSub == "middle") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain.slice(subTrainStationPosition), - ]; - } else return; - case "middle": - if (relationSub == "head") { - return [ - ...trainData.slice(0, mainTrainStationPosition), - ...showNearTrain, - ]; - } else if (relationSub == "tail") { - return [ - ...showNearTrain.slice(0, subTrainStationPosition), - ...trainData.slice(mainTrainStationPosition), - ]; - } else return; - } - }; - const array = migrationArray(stationInfo); - if (!array) return; - setTrainData(array); - setIsConcatNear(true); - }; - const openTrainInfo = (d) => { const train = customTrainDataDetector(d); let TrainNumber = ""; @@ -517,7 +308,16 @@ export const EachTrainInfoCore = ({ > {headStation && !isConcatNear && ( openBackTrainInfo(headStation)} + onPress={() => { + const array = openBackTrainInfo( + headStation, + trainData, + showNearTrain + ); + if (!array) return; + setTrainData(array); + setIsConcatNear(true); + }} style={{ padding: 10, flexDirection: "row", @@ -574,7 +374,17 @@ export const EachTrainInfoCore = ({ )} {tailStation && !isConcatNear && ( openBackTrainInfo(tailStation)} + onPress={() => { + const array = openBackTrainInfo( + tailStation, + trainData, + showNearTrain + ); + + if (!array) return; + setTrainData(array); + setIsConcatNear(true); + }} style={{ padding: 10, flexDirection: "row", diff --git a/lib/eachTrainInfoCoreLib/findReversalPoints.js b/lib/eachTrainInfoCoreLib/findReversalPoints.js new file mode 100644 index 0000000..7a84fd6 --- /dev/null +++ b/lib/eachTrainInfoCoreLib/findReversalPoints.js @@ -0,0 +1,113 @@ +// arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列) +// stopStationIDListは停車駅の駅IDの配列 [Y01,Y02,Y05,...] +export const findReversalPoints = (array, stopStationIDList) => { + try { + if (!stopStationIDList.length) return []; + // arrayが二次元配列だったら早期リターン + if (!array instanceof Array) return []; + if (!array.length) return []; + if (array[0] instanceof Array) return []; + const arrayNumber = array.map((d) => ({ + line: d + .split("") + .filter((s) => "A" < s && s < "Z") + .join(""), + ID: d + .split("") + .filter((s) => "0" <= s && s <= "9") + .join(""), + })); + const stopStationIDListNumber = stopStationIDList.map((d) => { + if (!d) return { line: [], ID: [] }; + return { + line: d + .split("") + .filter((s) => "A" < s && s < "Z") + .join(""), + ID: d + .split("") + .filter((s) => "0" <= s && s <= "9") + .join(""), + }; + }); + // 完全一致 + if (array.length == 1) { + const index = stopStationIDList.indexOf(array[0]); + if (index != -1) return [index]; + // 通過駅の場合 + for (let i = 0; i < stopStationIDListNumber.length - 1; i++) { + if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) { + if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) { + return [i + 1]; + } + } + if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) { + if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) { + return [i + 1]; + } + } + } + } + // 駅間の場合 + if (array.length == 2) { + const index1 = stopStationIDList.indexOf(array[0]); + const index2 = stopStationIDList.indexOf(array[1]); + if (index1 != -1 && index2 != -1) { + // 駅間で通過駅も無い場合 + if (index1 < index2) { + if (index1 + 1 == index2) { + return [index2]; + } else { + const returnArray = []; + for (let i = index1 + 1; i <= index2; i++) { + returnArray.push(i); + } + return returnArray; + } + } + if (index1 > index2) { + if (index2 + 1 == index1) return [index1]; + else { + const returnArray = []; + for (let i = index2 + 1; i <= index1; i++) { + returnArray.push(i); + } + return returnArray; + } + } + } else { + const getNearStationID = (stationID) => { + for (let i = 0; i <= stopStationIDListNumber.length; i++) { + if (stopStationIDListNumber[i].ID < stationID) { + if (stopStationIDListNumber[i + 1].ID > stationID) { + return i + 1; + } + } + if (stopStationIDListNumber[i].ID > stationID) { + if (stopStationIDListNumber[i + 1].ID < stationID) { + return i + 1; + } + } + } + }; + let newIndex1 = index1; + let newIndex2 = index2; + if (index1 == -1) { + newIndex1 = getNearStationID(arrayNumber[0].ID); + } + if (index2 == -1) { + newIndex2 = getNearStationID(arrayNumber[1].ID); + } + if (newIndex1 && newIndex2) { + return [newIndex1, newIndex2]; + } + + // 通過駅の場合 + } + + return []; + } + } catch (e) { + console.log(e); + } +}; diff --git a/lib/eachTrainInfoCoreLib/getStationData.js b/lib/eachTrainInfoCoreLib/getStationData.js new file mode 100644 index 0000000..20b386a --- /dev/null +++ b/lib/eachTrainInfoCoreLib/getStationData.js @@ -0,0 +1,15 @@ +// 駅名から駅情報を取得する +//stationName: 駅名 +//stationList: 駅情報リスト +export const getStationData = (stationName, stationList) => { + const Stations = stationList.map((a) => + a.filter((d) => d.StationName == stationName) + ); + const Station = + Stations && + Stations.reduce((newArray, e) => { + return newArray.concat(e); + }, []); + if (!Station[0]) return []; + return Station.map((d) => d.StationNumber)[0]; +}; diff --git a/lib/eachTrainInfoCoreLib/getType.js b/lib/eachTrainInfoCoreLib/getType.js new file mode 100644 index 0000000..d989461 --- /dev/null +++ b/lib/eachTrainInfoCoreLib/getType.js @@ -0,0 +1,11 @@ +// 種別判定 +export const getType = (string) => { + switch (string) { + case "express": + return "特急"; + case "rapid": + return "快速"; + default: + return ""; + } +}; diff --git a/lib/eachTrainInfoCoreLib/migrateTrainName.js b/lib/eachTrainInfoCoreLib/migrateTrainName.js new file mode 100644 index 0000000..88e0a26 --- /dev/null +++ b/lib/eachTrainInfoCoreLib/migrateTrainName.js @@ -0,0 +1,7 @@ +// Description: 電車名の変換を行う。 +// マリンライナーやマリン表記をマリンライナーに変換する。 +export const migrateTrainName = (string) => { + return string + .replace("マリン", "マリンライナー") + .replace("ライナーライナー", "ライナー"); +}; diff --git a/lib/eachTrainInfoCoreLib/openBackTrainInfo.js b/lib/eachTrainInfoCoreLib/openBackTrainInfo.js new file mode 100644 index 0000000..8b5944b --- /dev/null +++ b/lib/eachTrainInfoCoreLib/openBackTrainInfo.js @@ -0,0 +1,68 @@ +export const openBackTrainInfo = (stationInfo, trainData, showNearTrain) => { + const migrationArray = (stationInfo) => { + const mainTrainStationPosition = trainData.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + + const relationMain = (() => { + if (mainTrainStationPosition == 0) return "head"; + if (mainTrainStationPosition == trainData.length - 1) return "tail"; + return "middle"; + })(); + + const subTrainStationPosition = showNearTrain.findIndex( + (d) => d.split(",")[0] == stationInfo + ); + const relationSub = (() => { + if (subTrainStationPosition == 0) return "head"; + if (subTrainStationPosition == showNearTrain.length - 1) return "tail"; + return "middle"; + })(); + + switch (relationMain) { + case "head": + if (relationSub == "head") { + return; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else if (relationSub == "middle") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData, + ]; + } else return; + case "tail": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return; + } else if (relationSub == "middle") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain.slice(subTrainStationPosition), + ]; + } else return; + case "middle": + if (relationSub == "head") { + return [ + ...trainData.slice(0, mainTrainStationPosition), + ...showNearTrain, + ]; + } else if (relationSub == "tail") { + return [ + ...showNearTrain.slice(0, subTrainStationPosition), + ...trainData.slice(mainTrainStationPosition), + ]; + } else return; + } + }; + const array = migrationArray(stationInfo); + if (!array) return null; + return array; +}; diff --git a/lib/eachTrainInfoCoreLib/searchSpecialTrain.js b/lib/eachTrainInfoCoreLib/searchSpecialTrain.js new file mode 100644 index 0000000..ec0e53d --- /dev/null +++ b/lib/eachTrainInfoCoreLib/searchSpecialTrain.js @@ -0,0 +1,13 @@ +// S列番の列車からDやMの列車を検索する +export const searchSpecialTrain = (trainNum, trainList) => { + const searchBase = trainNum.replace("S", "").replace("X", ""); + const search = (text) => { + const TD = trainList[searchBase + text]; + if (TD) { + return true; + } + return false; + }; + if (search("D")) return searchBase + "D"; + if (search("M")) return searchBase + "M"; +}; From 6b12dcbcf6af97a12c9143a82c5b89c8241ff436 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 14 Feb 2024 01:09:28 +0900 Subject: [PATCH 41/66] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 79 +++++++++---------- 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 13ae3b2..e30f5a3 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -72,6 +72,10 @@ export const EachTrainInfoCore = ({ const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const [currentPosition, setCurrentPosition] = useState([]); const [trainData, setTrainData] = useState([]); + const scrollHandlers = actionSheetRef + ? useScrollHandlers("scrollview-1", actionSheetRef) + : null; + const stationList = originalStationList && lineList.map((d) => @@ -81,6 +85,11 @@ export const EachTrainInfoCore = ({ })) ); + // 使用例 + const points = + trainPositionSwitch == "true" + ? findReversalPoints(currentPosition, stopStationIDList) + : []; const stopStationIDList = trainData.map((i, index) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => @@ -95,10 +104,31 @@ export const EachTrainInfoCore = ({ .map((d) => d.StationNumber); return StationNumbers[0]; }); + + const { height, width } = useWindowDimensions(); + const [isLandscape, setIsLandscape] = useState(false); + + const [trueTrainID, setTrueTrainID] = useState(); useEffect(() => { + if (!data.trainNum) return; + const TD = trainList[data.trainNum]; + if (!TD) { + const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList); + setTrueTrainID(specialTrainActualID || undefined); + setTrainData([]); + return; + } + setTrainData(TD.split("#").filter((d) => d != "")); + }, [data]); + //裏列車探索 + useEffect(() => { + if (!data.trainNum) return; + const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); + setNearTrainIDList(returnArray); + setShowNearTrain(TDArray); if (trainData.length == 0) return; - if (showNearTrain.length == 0) return; - showNearTrain.forEach((d) => { + if (TDArray.length == 0) return; + TDArray.forEach((d) => { const [station, se, time] = d.split(","); if (station == trainData[0].split(",")[0]) @@ -106,25 +136,8 @@ export const EachTrainInfoCore = ({ if (station == trainData[trainData.length - 1].split(",")[0]) setTailStation(trainData[trainData.length - 1].split(",")[0]); }); - }, [trainData, showNearTrain]); - //裏列車探索 - useEffect(() => { - if (!data.trainNum) return; - const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); - setNearTrainIDList(returnArray); - setShowNearTrain(TDArray); - }, [data]); - const scrollHandlers = actionSheetRef - ? useScrollHandlers("scrollview-1", actionSheetRef) - : null; + }, [trainData, data]); - // 使用例 - const points = - trainPositionSwitch == "true" - ? findReversalPoints(currentPosition, stopStationIDList) - : []; - const { height, width } = useWindowDimensions(); - const [isLandscape, setIsLandscape] = useState(false); useEffect(() => { //currentTrainData.Pos = "鴨川~端岡"; //test if (!currentTrainData) return; @@ -141,6 +154,7 @@ export const EachTrainInfoCore = ({ setCurrentPosition([getStationData(currentTrainData?.Pos, stationList)]); } }, [currentTrainData]); + useEffect(() => { if (height / width > 1.5) { setIsLandscape(false); @@ -149,35 +163,18 @@ export const EachTrainInfoCore = ({ setIsLandscape(true); } }, [width, height]); - const [trueTrainID, setTrueTrainID] = useState(); - useEffect(() => { - if (!data.trainNum) return; - const TD = trainList[data.trainNum]; - if (!TD) { - const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList); - if (specialTrainActualID) setTrueTrainID(specialTrainActualID); - setTrainData([]); - return; - } - setTrainData(TD.split("#").filter((d) => d != "")); - }, [data]); + const replaceSpecialTrainDetail = (trainNum) => { let TD = trainList[trainNum]; - - if (TD) { - setTrainData(TD.split("#").filter((d) => d != "")); - return; - } + if (!TD) return; + setTrainData(TD.split("#").filter((d) => d != "")); }; useEffect(() => { //列車現在地アイコン表示スイッチ AS.getItem("trainPositionSwitch") .then((d) => { - if (d) { - setTrainPositionSwitch(d); - } else { - } + if (d) setTrainPositionSwitch(d); }) .catch((d) => AS.setItem("trainPositionSwitch", "false")); }, []); From fe8df6af2e4c871811953c42e75c8dede4c9de89 Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 14 Feb 2024 01:28:24 +0900 Subject: [PATCH 42/66] =?UTF-8?q?=E6=81=90=E3=82=89=E3=81=8F=E9=96=A2?= =?UTF-8?q?=E9=80=A3=E5=88=97=E8=BB=8A=E3=83=9C=E3=82=BF=E3=83=B3=E3=81=8C?= =?UTF-8?q?=E5=8B=95=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84=E3=83=90=E3=82=B0?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 1 + .../ActionSheetComponents/EachTrainInfoCore.js | 17 +++++++++++------ lib/eachTrainInfoCoreLib/findReversalPoints.js | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Apps.js b/Apps.js index a405cb9..5afa461 100644 --- a/Apps.js +++ b/Apps.js @@ -362,6 +362,7 @@ export default function Apps({ navigation, webview, stationData }) { originalStationList, openStationACFromEachTrainInfo, from: "Train", + setTrainInfo, }} /> diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index e30f5a3..d761b43 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -43,6 +43,7 @@ export const EachTrainInfoCore = ({ originalStationList, openStationACFromEachTrainInfo, from, + setTrainInfo, }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); @@ -198,12 +199,16 @@ export const EachTrainInfoCore = ({ originalStationList, from: "AllTrainDiagramView", }; - SheetManager.hide("EachTrainInfo").then(() => { - //0.1秒待機してから開く - setTimeout(() => { - SheetManager.show("EachTrainInfo", { payload }); - }, 1); - }); + if (setTrainInfo) { + setTrainInfo(payload.data); + } else { + SheetManager.hide("EachTrainInfo").then(() => { + //0.1秒待機してから開く + setTimeout(() => { + SheetManager.show("EachTrainInfo", { payload }); + }, 1); + }); + } }; return ( { try { - if (!stopStationIDList.length) return []; + if (!stopStationIDList) return []; // arrayが二次元配列だったら早期リターン if (!array instanceof Array) return []; - if (!array.length) return []; + if (!array) return []; if (array[0] instanceof Array) return []; const arrayNumber = array.map((d) => ({ line: d From a713ae576d57052402f6b6db4ddafbed10f48dda Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 14 Feb 2024 02:18:32 +0900 Subject: [PATCH 43/66] =?UTF-8?q?ios=E3=81=A7=E8=A1=A8=E7=A4=BA=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=81=AA=E3=81=84=E3=83=90=E3=82=B0=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfoCore.js | 2 +- components/DynamicHeaderScrollView.js | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index d761b43..a7eb209 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -275,7 +275,7 @@ export const EachTrainInfoCore = ({ scrollViewProps={scrollHandlers} containerProps={{ style: { - maxHeight: isLandscape ? height - 94 : heightPercentageToDP("70%"), + maxHeight: isLandscape ? height - 94 : (height / 100) * 70, }, }} Max_Header_Height={from == "AllTrainDiagramView" ? 0 : 200} diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index 8254937..106e95a 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -1,4 +1,4 @@ -import { ScrollView, View, Animated } from "react-native"; +import { ScrollView, View, Animated, Platform } from "react-native"; import React, { useRef } from "react"; export const DynamicHeaderScrollView = (props) => { @@ -18,28 +18,28 @@ export const DynamicHeaderScrollView = (props) => { const Scroll_Distance = Max_Header_Height - Min_Header_Height; const animatedHeaderHeight = scrollOffsetY.interpolate({ - inputRange: [Scroll_Distance, Scroll_Distance + 10], + inputRange: [Scroll_Distance, Scroll_Distance + 30], outputRange: [Max_Header_Height, 0], extrapolate: "clamp", }); const animatedHeaderHeight2 = scrollOffsetY.interpolate({ - inputRange: [0, Scroll_Distance], + inputRange: [Scroll_Distance, Scroll_Distance + 30], outputRange: [Max_Header_Height, Min_Header_Height], extrapolate: "clamp", }); const animatedHeaderVisible = scrollOffsetY.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], + inputRange: [Scroll_Distance - 30, Scroll_Distance], outputRange: [1, 0], extrapolate: "clamp", }); const animatedHeaderVisible2 = scrollOffsetY.interpolate({ - inputRange: [Min_Header_Height, Scroll_Distance], + inputRange: [Scroll_Distance - 30, Scroll_Distance + 30], outputRange: [0, 1], extrapolate: "clamp", }); return ( - + { {...scrollViewProps} style={{ backgroundColor: "white", + zIndex: 0, }} stickyHeaderIndices={[1]} scrollEventThrottle={16} From f3f9ee60c2d89616cdb1c555eb415779fdd3295e Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Wed, 21 Feb 2024 05:51:14 +0900 Subject: [PATCH 44/66] =?UTF-8?q?=E6=A8=AA=E7=94=BB=E9=9D=A2=E3=81=A7?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E6=9B=B4=E6=96=B0=E3=81=8C=E4=B8=8D=E5=AE=8C?= =?UTF-8?q?=E5=85=A8=E3=81=AB=E3=81=AA=E3=82=8B=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 10 +++++----- .../EachTrainInfoCore.js | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Apps.js b/Apps.js index 5afa461..0e9679b 100644 --- a/Apps.js +++ b/Apps.js @@ -298,7 +298,7 @@ export default function Apps({ navigation, webview, stationData }) { }} onLayout={handleLayout} > - {!trainInfo.trainData && isLandscape ? ( + {!trainInfo.trainNum && isLandscape ? ( - {isLandscape && trainInfo.trainData && ( + {isLandscape && trainInfo.trainNum && ( )} - {isLandscape && trainInfo.trainData && ( + {isLandscape && trainInfo.trainNum && ( { LayoutAnimation.easeInEaseOut(); @@ -390,7 +390,7 @@ export default function Apps({ navigation, webview, stationData }) { webview.current.reload()} top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} - right={isLandscape && trainInfo.trainData ? (width / 100) * 40 : 0} + right={isLandscape && trainInfo.trainNum ? (width / 100) * 40 : 0} LoadError={LoadError} /> diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index a7eb209..756c047 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -113,6 +113,9 @@ export const EachTrainInfoCore = ({ useEffect(() => { if (!data.trainNum) return; const TD = trainList[data.trainNum]; + setIsConcatNear(false); + setHeadStation(); + setTailStation(); if (!TD) { const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList); setTrueTrainID(specialTrainActualID || undefined); @@ -129,14 +132,22 @@ export const EachTrainInfoCore = ({ setShowNearTrain(TDArray); if (trainData.length == 0) return; if (TDArray.length == 0) return; + let head; + let tail; TDArray.forEach((d) => { const [station, se, time] = d.split(","); - if (station == trainData[0].split(",")[0]) - setHeadStation(trainData[0].split(",")[0]); - if (station == trainData[trainData.length - 1].split(",")[0]) - setTailStation(trainData[trainData.length - 1].split(",")[0]); + if (station == trainData[0].split(",")[0]) { + head = trainData[0].split(",")[0]; + } + if (station == trainData[trainData.length - 1].split(",")[0]) { + tail = trainData[trainData.length - 1].split(",")[0]; + } }); + if (head) setHeadStation(head); + else setHeadStation(); + if (tail) setTailStation(tail); + else setTailStation(); }, [trainData, data]); useEffect(() => { From d95eea44a42d3b52bd721431dee6d36b11736ef8 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 5 Mar 2024 16:45:31 +0000 Subject: [PATCH 45/66] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E3=81=97=E3=81=A6=E3=81=84=E3=81=9F=E3=83=90=E3=82=B0?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfo/EachStopList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/EachStopList.js b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js index 218a025..3ad5823 100644 --- a/components/ActionSheetComponents/EachTrainInfo/EachStopList.js +++ b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js @@ -47,7 +47,7 @@ export const EachStopList = ({ return ( openStationACFromEachTrainInfo(station)} + onPress={() =>openStationACFromEachTrainInfo && openStationACFromEachTrainInfo(station)} key={station} > From d3b99535f23dada6c8c575cdf174795045f84e1e Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Wed, 6 Mar 2024 03:05:31 +0000 Subject: [PATCH 46/66] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=A6?= =?UTF-8?q?=E3=82=A3=E3=82=B8=E3=82=A7=E3=83=83=E3=83=88=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 29 ++++++++++----- components/AndroidWidget/HelloWidget.jsx | 26 +++++++++++++ .../HelloWidgetPreviewScreen.jsx | 25 +++++++++++++ .../AndroidWidget/widget-task-handler.jsx | 37 +++++++++++++++++++ index.js | 11 ++++++ package.json | 3 +- yarn.lock | 5 +++ 7 files changed, 126 insertions(+), 10 deletions(-) create mode 100644 components/AndroidWidget/HelloWidget.jsx create mode 100644 components/AndroidWidget/HelloWidgetPreviewScreen.jsx create mode 100644 components/AndroidWidget/widget-task-handler.jsx create mode 100644 index.js diff --git a/app.json b/app.json index 19aa076..2f736cb 100644 --- a/app.json +++ b/app.json @@ -3,9 +3,24 @@ "name": "JR四国運行状況", "slug": "jrshikoku", "privacy": "public", - "platforms": [ - "ios", - "android" + "platforms": ["ios", "android"], + "plugins": [ + [ + "react-native-android-widget", + { + "widgets": [ + { + "name": "JR四国運行状況", + "label": "My Hello Widget", + "minWidth": "320dp", + "minHeight": "120dp", + "description": "This is my first widget", + "previewImage": "./assets/icon.png", + "updatePeriodMillis": 1800000 + } + ] + } + ] ], "version": "4.6", "orientation": "default", @@ -19,9 +34,7 @@ "fallbackToCacheTimeout": 0, "url": "https://u.expo.dev/398abf60-57a7-11e9-970c-8f04356d08bf" }, - "assetBundlePatterns": [ - "**/*" - ], + "assetBundlePatterns": ["**/*"], "ios": { "buildNumber": "31", "supportsTablet": true, @@ -33,9 +46,7 @@ "android": { "package": "jrshikokuinfo.xprocess.hrkn", "versionCode": 20, - "permissions": [ - "ACCESS_FINE_LOCATION" - ], + "permissions": ["ACCESS_FINE_LOCATION"], "googleServicesFile": "./google-services.json", "config": { "googleMaps": { diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/HelloWidget.jsx new file mode 100644 index 0000000..af64fe1 --- /dev/null +++ b/components/AndroidWidget/HelloWidget.jsx @@ -0,0 +1,26 @@ +import React from "react"; +import { FlexWidget, TextWidget } from "react-native-android-widget"; + +export function HelloWidget() { + return ( + + + + ); +} diff --git a/components/AndroidWidget/HelloWidgetPreviewScreen.jsx b/components/AndroidWidget/HelloWidgetPreviewScreen.jsx new file mode 100644 index 0000000..c2fa761 --- /dev/null +++ b/components/AndroidWidget/HelloWidgetPreviewScreen.jsx @@ -0,0 +1,25 @@ +import * as React from "react"; +import { StyleSheet, View } from "react-native"; +import { WidgetPreview } from "react-native-android-widget"; + +import { HelloWidget } from "./HelloWidget"; + +export function HelloWidgetPreviewScreen() { + return ( + + } + width={320} + height={200} + /> + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: "center", + justifyContent: "center", + }, +}); diff --git a/components/AndroidWidget/widget-task-handler.jsx b/components/AndroidWidget/widget-task-handler.jsx new file mode 100644 index 0000000..e4c371a --- /dev/null +++ b/components/AndroidWidget/widget-task-handler.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { HelloWidget } from "./HelloWidget"; + +const nameToWidget = { + // Hello will be the **name** with which we will reference our widget. + Hello: HelloWidget, +}; + +export async function widgetTaskHandler(props) { + const widgetInfo = props.widgetInfo; + const Widget = nameToWidget[widgetInfo.widgetName]; + + switch (props.widgetAction) { + case "WIDGET_ADDED": + props.renderWidget(); + break; + + case "WIDGET_UPDATE": + // Not needed for now + break; + + case "WIDGET_RESIZED": + // Not needed for now + break; + + case "WIDGET_DELETED": + // Not needed for now + break; + + case "WIDGET_CLICK": + // Not needed for now + break; + + default: + break; + } +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..9f717eb --- /dev/null +++ b/index.js @@ -0,0 +1,11 @@ +import { registerRootComponent } from "expo"; +import { registerWidgetTaskHandler } from "react-native-android-widget"; + +import App from "./App"; +import { widgetTaskHandler } from "./components/AndroidWidget/widget-task-handler"; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); +registerWidgetTaskHandler(widgetTaskHandler); diff --git a/package.json b/package.json index bb9b5d2..a581036 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "main": "node_modules/expo/AppEntry.js", + "main": "index.js", "scripts": { "start": "expo start", "android": "expo start --android", @@ -31,6 +31,7 @@ "react": "18.2.0", "react-native": "0.72.6", "react-native-actions-sheet": "0.8.21", + "react-native-android-widget": "^0.11.2", "react-native-auto-height-image": "^3.2.4", "react-native-elements": "^3.4.2", "react-native-gesture-handler": "~2.12.0", diff --git a/yarn.lock b/yarn.lock index f14e0f2..a62d5b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8684,6 +8684,11 @@ react-native-actions-sheet@0.8.21: resolved "https://registry.yarnpkg.com/react-native-actions-sheet/-/react-native-actions-sheet-0.8.21.tgz#d9175e7d5d862217f990b2ccc8a216fb4fc35b06" integrity sha512-WUtrGbPSlY8YuVSxKVJ36f3PrVMGMOQ5Cp5dtpurc71Uih4LEGGhEEk8yme/QOquiGsu77be0sZT4CrSUOSXag== +react-native-android-widget@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/react-native-android-widget/-/react-native-android-widget-0.11.2.tgz#541cc4931f6cf362b533d0e079a740ee595cd88e" + integrity sha512-Ro4inoMaXFtcMX/9p+O+e/Cm0ckg6tkbIB/PFdF+xX90+B/2sWjXDL9qgGRAsFN7Auj38hMqTl8bWBlImFCC2A== + react-native-auto-height-image@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/react-native-auto-height-image/-/react-native-auto-height-image-3.2.4.tgz#c7a95d4d9701055c680c8dc02076def1107f9522" From 2bbd9ecad82e5e57091a11e111d24658186b03fa Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Wed, 6 Mar 2024 16:33:30 +0000 Subject: [PATCH 47/66] =?UTF-8?q?=E3=83=AA=E3=82=BD=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.json b/app.json index 2f736cb..30c5f79 100644 --- a/app.json +++ b/app.json @@ -10,7 +10,7 @@ { "widgets": [ { - "name": "JR四国運行状況", + "name": "JR_shikoku_train_info", "label": "My Hello Widget", "minWidth": "320dp", "minHeight": "120dp", From 1f9c3064bf16c57119af415804c7f3bf495927ff Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 7 Mar 2024 12:56:19 +0000 Subject: [PATCH 48/66] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AE=E6=A0=B8=E3=81=A8=E3=81=AA=E3=82=8B?= =?UTF-8?q?=E4=BB=95=E7=B5=84=E3=81=BF=E3=81=8C=E5=AE=8C=E6=88=90=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=81=AE=E3=81=A7=E4=B8=80=E6=97=A6=E3=81=93=E3=82=8C?= =?UTF-8?q?=E3=81=A7=E4=BB=95=E7=B5=84=E3=81=BF=E3=81=A8=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=AF=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/AndroidWidget/HelloWidget.jsx | 76 +++++++++++++++++-- .../AndroidWidget/widget-task-handler.jsx | 38 +++++++--- 2 files changed, 97 insertions(+), 17 deletions(-) diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/HelloWidget.jsx index af64fe1..12741ad 100644 --- a/components/AndroidWidget/HelloWidget.jsx +++ b/components/AndroidWidget/HelloWidget.jsx @@ -1,7 +1,7 @@ import React from "react"; import { FlexWidget, TextWidget } from "react-native-android-widget"; -export function HelloWidget() { +export function HelloWidget({ time, delayString }) { return ( - + > + + + + + + {delayString ? ( + delayString.map((d) => { + let data = d.split(" "); + return ( + + + + + + ); + }) + ) : ( + + 現在、5分以上の遅れはありません。 + + )} + ); } diff --git a/components/AndroidWidget/widget-task-handler.jsx b/components/AndroidWidget/widget-task-handler.jsx index e4c371a..f644228 100644 --- a/components/AndroidWidget/widget-task-handler.jsx +++ b/components/AndroidWidget/widget-task-handler.jsx @@ -1,34 +1,52 @@ import React from "react"; import { HelloWidget } from "./HelloWidget"; +import dayjs from "dayjs"; +import { ToastAndroid } from "react-native"; const nameToWidget = { // Hello will be the **name** with which we will reference our widget. - Hello: HelloWidget, + JR_shikoku_train_info: HelloWidget, }; export async function widgetTaskHandler(props) { const widgetInfo = props.widgetInfo; const Widget = nameToWidget[widgetInfo.widgetName]; - + const time = dayjs().format("HH:mm"); + ToastAndroid.show( + `Widget Action: ${props.widgetAction} ${time}`, + ToastAndroid.SHORT + ); + const delayString = await fetch( + "https://script.google.com/macros/s/AKfycbyKxch7z7l8e07LXulRHqxjVoIiB13kcgvoToLE-rqlxLmLSKdlmqz0FI1F2EuA7Zfg/exec" + ) + .then((response) => response.text()) + .then((data) => { + if (data !== "") { + return data.split("^"); + } + return null; + }); + ToastAndroid.show(`${delayString}`, ToastAndroid.SHORT); switch (props.widgetAction) { case "WIDGET_ADDED": - props.renderWidget(); - break; - case "WIDGET_UPDATE": - // Not needed for now - break; - + // Not needed for now + case "WIDGET_CLICK": + // Not needed for now case "WIDGET_RESIZED": // Not needed for now + props.renderWidget(); + + break; + + break; + break; case "WIDGET_DELETED": // Not needed for now break; - case "WIDGET_CLICK": - // Not needed for now break; default: From 810ae35c7bf8c98ac5a01609dd3d77b55440a7b9 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 03:07:47 +0000 Subject: [PATCH 49/66] =?UTF-8?q?FeliCa=E4=BB=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 12 ++++++++++- components/settings.js | 12 +++++++++-- package.json | 2 ++ yarn.lock | 46 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/app.json b/app.json index 30c5f79..74b578c 100644 --- a/app.json +++ b/app.json @@ -41,12 +41,22 @@ "bundleIdentifier": "jrshikokuinfo.xprocess.hrkn", "config": { "googleMapsApiKey": "AIzaSyAVGDTjBkR_0wkQiNkoo5WDLhqXCjrjk8Y" + }, + "infoPlist": { + "NFCReaderUsageDescription": "To read FeliCa card", + "com.apple.developer.nfc.readersession.felica.systemcodes": [ + "0003", + "FE00" + ] + }, + "entitlements": { + "com.apple.developer.nfc.readersession.formats": ["TAG"] } }, "android": { "package": "jrshikokuinfo.xprocess.hrkn", "versionCode": 20, - "permissions": ["ACCESS_FINE_LOCATION"], + "permissions": ["ACCESS_FINE_LOCATION", "NFC"], "googleServicesFile": "./google-services.json", "config": { "googleMaps": { diff --git a/components/settings.js b/components/settings.js index e9f3c5d..dabad32 100644 --- a/components/settings.js +++ b/components/settings.js @@ -1,5 +1,6 @@ import React, { useState, useEffect } from "react"; import { View, Text, TouchableOpacity, Linking } from "react-native"; +import * as ExpoFelicaReader from "expo-felica-reader"; import * as Updates from "expo-updates"; import StatusbarDetect from "../StatusbarDetect"; import { AS } from "../storageControl"; @@ -16,6 +17,10 @@ export default function Setting(props) { const [usePDFView, setUsePDFView] = useState(false); const [trainMenu, setTrainMenu] = useState(false); const [trainPosition, setTrainPosition] = useState(false); + const testNFC = async () => { + const resulit = await ExpoFelicaReader.scan(); + alert(resulit); + }; useEffect(() => { AS.getItem("iconSwitch").then(setIconSetting); AS.getItem("mapSwitch").then(setMapSwitch); @@ -169,7 +174,10 @@ export default function Setting(props) { - + testNFC()} + > - + diff --git a/package.json b/package.json index a581036..9b530e0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,9 @@ "dayjs": "^1.11.9", "eas-cli": "^5.9.1", "expo": "^49.0.21", + "expo-dev-client": "~2.4.13", "expo-device": "~5.4.0", + "expo-felica-reader": "^0.1.0", "expo-font": "~11.4.0", "expo-location": "~16.1.0", "expo-notifications": "~0.20.1", diff --git a/yarn.lock b/yarn.lock index a62d5b4..2f6f9b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4803,6 +4803,47 @@ expo-constants@~14.4.2: "@expo/config" "~8.1.0" uuid "^3.3.2" +expo-dev-client@~2.4.13: + version "2.4.13" + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.4.13.tgz#cf8c829e2f815b273db44c17e513d5410af5b7fa" + integrity sha512-EBNJlPntw+DZy7mKxYvpdrmE2GU4YjcEpxSLpwNn2GDwy7e2xXAC2k/25E13BGy3yKPLo1iBXNgB01uleIDdVg== + dependencies: + expo-dev-launcher "2.4.15" + expo-dev-menu "3.2.4" + expo-dev-menu-interface "1.3.0" + expo-manifests "~0.7.0" + expo-updates-interface "~0.10.0" + +expo-dev-launcher@2.4.15: + version "2.4.15" + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.4.15.tgz#298ac56b523f77c40523453224f75dcc894198bc" + integrity sha512-6oF4NsxlKwuafnyIZvVtMp4OTxRu4Arsw6qJ9s4jDjZuGJtGwgEj9ux3R0YLkDPs8xhsK9Awp0q17RqbQzs1qg== + dependencies: + expo-dev-menu "3.2.3" + resolve-from "^5.0.0" + semver "^7.5.3" + +expo-dev-menu-interface@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.3.0.tgz#51b6be8c6e0ce73e414ac7a545998dfad0dfdb80" + integrity sha512-WtRP7trQ2lizJJTTFXUSGGn1deIeHaYej0sUynvu/uC69VrSP4EeSnYOxbmEO29kuT/MsQBMGu0P/AkMQOqCOg== + +expo-dev-menu@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.3.tgz#31c102251d94e9a35fac667cefdbaeae7b1e1375" + integrity sha512-DneF3okTC4AAfAZgaOIylQ/UngSO8SnUT6bRV6nHhJU/jQS1OIP1cZoNW23I100+2yj6x6mobL21PxyiI5VA8g== + dependencies: + expo-dev-menu-interface "1.3.0" + semver "^7.5.3" + +expo-dev-menu@3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.4.tgz#25ba1efe70bf74ab2d7804eab54212785cd2a01a" + integrity sha512-jPvEY4xGTsiVL6A8M6xThNG+tgCHKlDaWqmWHT+wy2EXgFf/7zE0daVYoFms0KJ1XtZc+/DmDRgIPTR86qIGTg== + dependencies: + expo-dev-menu-interface "1.3.0" + semver "^7.5.3" + expo-device@~5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.4.0.tgz#4dc4db4b2265d1f5c9d7c2be6548c375882be437" @@ -4815,6 +4856,11 @@ expo-eas-client@~0.6.0: resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.6.0.tgz#b722dde0de1b8b56701b282a5fdf28d3d3e79ec4" integrity sha512-FSPy0ThcJBvzEzOZVhpOrYyHgQ8U1jJ4v7u7tr1x0KOVRqyf25APEQZFxxRPn3zAYW0tQ+uDTCbrwNymFqhQfw== +expo-felica-reader@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/expo-felica-reader/-/expo-felica-reader-0.1.0.tgz#968a9bb93d1f040f8e8dfbc899fba0214327c8b0" + integrity sha512-uDv5/eeaCpMOJ3R3supaE2m7VJZGaDE6C3AdWf3Y1pgVzteI3GUah5+doFpadf6CSjytznix5U1pTLbeSHeuUw== + expo-file-system@~15.4.0: version "15.4.2" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.4.2.tgz#f18e9d84f06a50eb4084b4a34ca7ca9c5a42f92e" From 1ed53abcf2005740b513e2a37365c9f7a70b81f4 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 03:12:27 +0000 Subject: [PATCH 50/66] =?UTF-8?q?=E5=88=97=E8=BB=8A=E7=8F=BE=E5=9C=A8?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo/EachStopList.js | 5 ++++- components/ActionSheetComponents/EachTrainInfoCore.js | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/EachStopList.js b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js index 3ad5823..a2813b3 100644 --- a/components/ActionSheetComponents/EachTrainInfo/EachStopList.js +++ b/components/ActionSheetComponents/EachTrainInfo/EachStopList.js @@ -47,7 +47,10 @@ export const EachStopList = ({ return ( openStationACFromEachTrainInfo && openStationACFromEachTrainInfo(station)} + onPress={() => + openStationACFromEachTrainInfo && + openStationACFromEachTrainInfo(station) + } key={station} > diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 756c047..8df6e43 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -87,10 +87,6 @@ export const EachTrainInfoCore = ({ ); // 使用例 - const points = - trainPositionSwitch == "true" - ? findReversalPoints(currentPosition, stopStationIDList) - : []; const stopStationIDList = trainData.map((i, index) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => @@ -105,6 +101,10 @@ export const EachTrainInfoCore = ({ .map((d) => d.StationNumber); return StationNumbers[0]; }); + const points = + trainPositionSwitch == "true" + ? findReversalPoints(currentPosition, stopStationIDList) + : []; const { height, width } = useWindowDimensions(); const [isLandscape, setIsLandscape] = useState(false); From 52f8b291c6e05763e8cd5fd941174fcaeee114bd Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 03:15:10 +0000 Subject: [PATCH 51/66] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AE=E6=AD=A3=E5=B8=B8=E6=99=82=E3=81=AB?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=8C=E5=87=BA?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/AndroidWidget/HelloWidget.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/HelloWidget.jsx index 12741ad..1e73708 100644 --- a/components/AndroidWidget/HelloWidget.jsx +++ b/components/AndroidWidget/HelloWidget.jsx @@ -78,9 +78,8 @@ export function HelloWidget({ time, delayString }) { style={{ color: "#000000", }} - > - 現在、5分以上の遅れはありません。 - + text="現在、5分以上の遅れはありません。" + /> )} From 9bd9fdc6a6f3ac19bf183a692f2ad3bd2e4c0305 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 07:39:43 +0000 Subject: [PATCH 52/66] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AE=E5=9B=9E=E8=BB=A2=E3=82=92=E8=A8=B1?= =?UTF-8?q?=E5=8F=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app.json b/app.json index 74b578c..bd5c8df 100644 --- a/app.json +++ b/app.json @@ -11,12 +11,13 @@ "widgets": [ { "name": "JR_shikoku_train_info", - "label": "My Hello Widget", + "label": "JR四国列車遅延速報EX", "minWidth": "320dp", "minHeight": "120dp", - "description": "This is my first widget", + "description": "JR四国列車遅延速報EXのウィジェットです。30分ごとに自動更新します。タッチすると強制更新します。", "previewImage": "./assets/icon.png", - "updatePeriodMillis": 1800000 + "updatePeriodMillis": 1800000, + "resizeMode": "horizontal|vertical" } ] } From 1056c3742250659e777cea1366fe55cc4926fe39 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 08:16:13 +0000 Subject: [PATCH 53/66] =?UTF-8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88?= =?UTF-8?q?=E3=81=9A50=E3=81=B8=E3=82=A2=E3=83=83=E3=83=97=E3=82=B0?= =?UTF-8?q?=E3=83=AC=E3=83=BC=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 23 +- package.json | 44 +- yarn.lock | 2321 +++++++++++++++++++++++++++----------------------- 3 files changed, 1298 insertions(+), 1090 deletions(-) diff --git a/app.json b/app.json index bd5c8df..0ff9455 100644 --- a/app.json +++ b/app.json @@ -3,7 +3,10 @@ "name": "JR四国運行状況", "slug": "jrshikoku", "privacy": "public", - "platforms": ["ios", "android"], + "platforms": [ + "ios", + "android" + ], "plugins": [ [ "react-native-android-widget", @@ -21,9 +24,10 @@ } ] } - ] + ], + "expo-font" ], - "version": "4.6", + "version": "5.0", "orientation": "default", "icon": "./assets/icon.png", "splash": { @@ -35,7 +39,9 @@ "fallbackToCacheTimeout": 0, "url": "https://u.expo.dev/398abf60-57a7-11e9-970c-8f04356d08bf" }, - "assetBundlePatterns": ["**/*"], + "assetBundlePatterns": [ + "**/*" + ], "ios": { "buildNumber": "31", "supportsTablet": true, @@ -51,13 +57,18 @@ ] }, "entitlements": { - "com.apple.developer.nfc.readersession.formats": ["TAG"] + "com.apple.developer.nfc.readersession.formats": [ + "TAG" + ] } }, "android": { "package": "jrshikokuinfo.xprocess.hrkn", "versionCode": 20, - "permissions": ["ACCESS_FINE_LOCATION", "NFC"], + "permissions": [ + "ACCESS_FINE_LOCATION", + "NFC" + ], "googleServicesFile": "./google-services.json", "config": { "googleMaps": { diff --git a/package.json b/package.json index 9b530e0..b337ffa 100644 --- a/package.json +++ b/package.json @@ -7,53 +7,53 @@ "eject": "expo eject" }, "dependencies": { - "@expo/vector-icons": "^13.0.0", - "@react-native-async-storage/async-storage": "1.18.2", + "@expo/vector-icons": "^14.0.0", + "@react-native-async-storage/async-storage": "1.21.0", "@react-native-community/masked-view": "0.1.10", "@react-navigation/bottom-tabs": "^5.11.11", "@react-navigation/native": "^5.9.4", "@react-navigation/stack": "^5.14.5", "dayjs": "^1.11.9", "eas-cli": "^5.9.1", - "expo": "^49.0.21", - "expo-dev-client": "~2.4.13", - "expo-device": "~5.4.0", + "expo": "^50.0.11", + "expo-dev-client": "~3.3.9", + "expo-device": "~5.9.3", "expo-felica-reader": "^0.1.0", - "expo-font": "~11.4.0", - "expo-location": "~16.1.0", - "expo-notifications": "~0.20.1", - "expo-sharing": "~11.5.0", - "expo-updates": "~0.18.17", - "expo-web-browser": "~12.3.2", + "expo-font": "~11.10.3", + "expo-location": "~16.5.5", + "expo-notifications": "~0.27.6", + "expo-sharing": "~11.10.0", + "expo-updates": "~0.24.11", + "expo-web-browser": "~12.8.2", "firebase": "8.2.3", - "lottie-react-native": "5.1.6", + "lottie-react-native": "6.5.1", "native-base": "^2.15.2", "npm": "^7.18.1", "pushy-react-native": "^1.0.18", "react": "18.2.0", - "react-native": "0.72.6", + "react-native": "0.73.4", "react-native-actions-sheet": "0.8.21", "react-native-android-widget": "^0.11.2", "react-native-auto-height-image": "^3.2.4", "react-native-elements": "^3.4.2", - "react-native-gesture-handler": "~2.12.0", - "react-native-maps": "1.7.1", - "react-native-reanimated": "^3.6.1", + "react-native-gesture-handler": "~2.14.0", + "react-native-maps": "1.10.0", + "react-native-reanimated": "~3.6.2", "react-native-remote-svg": "^2.0.6", "react-native-responsive-screen": "^1.4.2", "react-native-router-flux": "^4.3.1", - "react-native-safe-area-context": "4.6.3", - "react-native-screens": "~3.22.0", + "react-native-safe-area-context": "4.8.2", + "react-native-screens": "~3.29.0", "react-native-snap-carousel": "^3.9.1", "react-native-storage": "^1.0.1", - "react-native-svg": "13.9.0", + "react-native-svg": "14.1.0", "react-native-svg-uri": "^1.2.3", "react-native-vector-icons": "^8.1.0", - "react-native-view-shot": "3.7.0", - "react-native-webview": "^13.6.3" + "react-native-view-shot": "3.8.0", + "react-native-webview": "13.6.4" }, "devDependencies": { - "babel-preset-expo": "^9.5.0" + "babel-preset-expo": "^10.0.0" }, "private": true } diff --git a/yarn.lock b/yarn.lock index 2f6f9b0..55b07dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,11 +36,24 @@ dependencies: "@babel/highlight" "^7.22.5" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@^7.13.16", "@babel/core@^7.20.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" @@ -72,6 +85,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.20.5": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -105,6 +128,17 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" @@ -119,6 +153,21 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" +"@babel/helper-create-class-features-plugin@^7.22.15": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz#fc7554141bdbfa2d17f7b4b80153b9b090e5d158" + integrity sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" @@ -144,6 +193,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" @@ -172,6 +226,14 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -186,6 +248,13 @@ dependencies: "@babel/types" "^7.21.0" +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -193,6 +262,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" @@ -221,6 +297,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" @@ -231,6 +314,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -262,6 +350,15 @@ "@babel/traverse" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" @@ -276,6 +373,13 @@ dependencies: "@babel/types" "^7.20.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -283,6 +387,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" @@ -293,11 +404,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" @@ -308,6 +429,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" @@ -354,6 +480,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.13.16", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" @@ -364,6 +499,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -474,7 +614,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.13", "@babel/plugin-proposal-object-rest-spread@^7.20.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.20.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -612,6 +752,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -774,6 +921,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" @@ -877,6 +1032,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-object-rest-spread@^7.12.13": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz#7b836ad0088fdded2420ce96d4e1d3ed78b71df1" + integrity sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" @@ -892,6 +1058,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" +"@babel/plugin-transform-parameters@^7.22.15", "@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" @@ -906,6 +1097,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx-self@^7.0.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" @@ -920,7 +1125,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.17": +"@babel/plugin-transform-react-jsx@^7.0.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== @@ -931,6 +1136,25 @@ "@babel/plugin-syntax-jsx" "^7.18.6" "@babel/types" "^7.21.0" +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-regenerator@^7.18.6": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" @@ -1119,6 +1343,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@^7.22.15": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.7": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" @@ -1160,6 +1396,15 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/template@^7.22.15": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/template@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -1194,6 +1439,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@babel/types@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" @@ -1227,7 +1481,7 @@ resolved "https://registry.yarnpkg.com/@expo/apple-utils/-/apple-utils-1.3.2.tgz#c2c80e03bb4c310e183b109ea37bbc88cef59313" integrity sha512-8utf2r+ka9uI1qhazBEbLzjPX0CIBvvpBHy0o4XFoLUiZDvBqGBEctduvJc49hvu/16hxVtNqGXs1U97OVKe4g== -"@expo/bunyan@4.0.0", "@expo/bunyan@^4.0.0": +"@expo/bunyan@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.0.tgz#be0c1de943c7987a9fbd309ea0b1acd605890c7b" integrity sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA== @@ -1237,67 +1491,81 @@ mv "~2" safe-json-stringify "~1" -"@expo/cli@0.10.16": - version "0.10.16" - resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.10.16.tgz#42f9aaf08884f70f3a671b7d6b4f138ad39192d7" - integrity sha512-EwgnRN5AMElg0JJjFLJTPk5hYkVXxnNMLIvZBiTfGoCq+rDw6u7Mg5l2Bbm/geSHOoplaHyPZ/Wr23FAuZWehA== +"@expo/cli@0.17.7": + version "0.17.7" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.17.7.tgz#4133ad97285ed90f31be31e35e55725051f36109" + integrity sha512-sOssVCFCVXSdZr2/KdqPeT2Qwxmty3rZeO9g5RbzZexHz93VUyONuqGwO1VlYKibn7FLYEGUovqU9Xi8zVB6JQ== dependencies: "@babel/runtime" "^7.20.0" "@expo/code-signing-certificates" "0.0.5" - "@expo/config" "~8.1.0" - "@expo/config-plugins" "~7.2.0" - "@expo/dev-server" "0.5.5" + "@expo/config" "~8.5.0" + "@expo/config-plugins" "~7.8.0" "@expo/devcert" "^1.0.0" - "@expo/env" "0.0.5" + "@expo/env" "~0.2.2" + "@expo/image-utils" "^0.4.0" "@expo/json-file" "^8.2.37" - "@expo/metro-config" "~0.10.0" + "@expo/metro-config" "~0.17.0" "@expo/osascript" "^2.0.31" - "@expo/package-manager" "~1.1.0" - "@expo/plist" "^0.0.20" - "@expo/prebuild-config" "6.2.6" + "@expo/package-manager" "^1.1.1" + "@expo/plist" "^0.1.0" + "@expo/prebuild-config" "6.7.4" "@expo/rudder-sdk-node" "1.1.1" "@expo/spawn-async" "1.5.0" - "@expo/xcpretty" "^4.2.1" + "@expo/xcpretty" "^4.3.0" + "@react-native/dev-middleware" "^0.73.6" "@urql/core" "2.3.6" "@urql/exchange-retry" "0.3.0" accepts "^1.3.8" - arg "4.1.0" + arg "5.0.2" better-opn "~3.0.2" bplist-parser "^0.3.1" cacache "^15.3.0" chalk "^4.0.0" ci-info "^3.3.0" + connect "^3.7.0" debug "^4.3.4" env-editor "^0.4.1" + find-yarn-workspace-root "~2.0.0" form-data "^3.0.1" freeport-async "2.0.0" fs-extra "~8.1.0" getenv "^1.0.0" + glob "^7.1.7" graphql "15.8.0" graphql-tag "^2.10.1" https-proxy-agent "^5.0.1" internal-ip "4.3.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" js-yaml "^3.13.1" json-schema-deref-sync "^0.13.0" - md5-file "^3.2.3" + lodash.debounce "^4.0.8" md5hex "^1.0.0" - minipass "3.1.6" + minimatch "^3.0.4" + minipass "3.3.6" node-fetch "^2.6.7" node-forge "^1.3.1" npm-package-arg "^7.0.0" + open "^8.3.0" ora "3.4.0" + picomatch "^3.0.1" pretty-bytes "5.6.0" progress "2.0.3" prompts "^2.3.2" qrcode-terminal "0.11.0" require-from-string "^2.0.2" requireg "^0.2.2" + resolve "^1.22.2" resolve-from "^5.0.0" + resolve.exports "^2.0.2" semver "^7.5.3" send "^0.18.0" slugify "^1.3.4" + source-map-support "~0.5.21" + stacktrace-parser "^0.1.10" structured-headers "^0.4.1" tar "^6.0.5" + temp-dir "^2.0.0" tempy "^0.7.1" terminal-link "^2.1.1" text-table "^0.2.0" @@ -1334,7 +1602,30 @@ xcode "^3.0.1" xml2js "0.6.0" -"@expo/config-plugins@7.2.5", "@expo/config-plugins@~7.2.0": +"@expo/config-plugins@7.8.4", "@expo/config-plugins@~7.8.0", "@expo/config-plugins@~7.8.2": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.8.4.tgz#533b5d536c1dc8b5544d64878b51bda28f2e1a1f" + integrity sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg== + dependencies: + "@expo/config-types" "^50.0.0-alpha.1" + "@expo/fingerprint" "^0.6.0" + "@expo/json-file" "~8.3.0" + "@expo/plist" "^0.1.0" + "@expo/sdk-runtime-versions" "^1.0.0" + "@react-native/normalize-color" "^2.0.0" + chalk "^4.1.2" + debug "^4.3.1" + find-up "~5.0.0" + getenv "^1.0.0" + glob "7.1.6" + resolve-from "^5.0.0" + semver "^7.5.3" + slash "^3.0.0" + slugify "^1.6.6" + xcode "^3.0.1" + xml2js "0.6.0" + +"@expo/config-plugins@~7.2.0": version "7.2.5" resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.2.5.tgz#b15f22878975fdc4ddcfa8cdc971937ddc4c0249" integrity sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ== @@ -1360,6 +1651,11 @@ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-49.0.0.tgz#15ffef715285c06703f6fb7ec0cda853f645cc09" integrity sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA== +"@expo/config-types@^50.0.0", "@expo/config-types@^50.0.0-alpha.1": + version "50.0.0" + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-50.0.0.tgz#b534d3ec997ec60f8af24f6ad56244c8afc71a0b" + integrity sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw== + "@expo/config@8.1.2", "@expo/config@~8.1.0": version "8.1.2" resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.1.2.tgz#7fff28b3acefe39702e9f3ce1c9fd896a52caa80" @@ -1377,26 +1673,22 @@ slugify "^1.3.4" sucrase "^3.20.0" -"@expo/dev-server@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.5.5.tgz#33f9065e0cf5f36ac61944a92d11390cc71b7035" - integrity sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA== +"@expo/config@8.5.4", "@expo/config@~8.5.0": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.5.4.tgz#bb5eb06caa36e4e35dc8c7647fae63e147b830ca" + integrity sha512-ggOLJPHGzJSJHVBC1LzwXwR6qUn8Mw7hkc5zEKRIdhFRuIQ6s2FE4eOvP87LrNfDF7eZGa6tJQYsiHSmZKG+8Q== dependencies: - "@expo/bunyan" "4.0.0" - "@expo/metro-config" "~0.10.0" - "@expo/osascript" "2.0.33" - "@expo/spawn-async" "^1.5.0" - body-parser "^1.20.1" - chalk "^4.0.0" - connect "^3.7.0" - fs-extra "9.0.0" - is-docker "^2.0.0" - is-wsl "^2.1.1" - node-fetch "^2.6.0" - open "^8.3.0" + "@babel/code-frame" "~7.10.4" + "@expo/config-plugins" "~7.8.2" + "@expo/config-types" "^50.0.0" + "@expo/json-file" "^8.2.37" + getenv "^1.0.0" + glob "7.1.6" + require-from-string "^2.0.2" resolve-from "^5.0.0" - serialize-error "6.0.0" - temp-dir "^2.0.0" + semver "7.5.3" + slugify "^1.3.4" + sucrase "3.34.0" "@expo/devcert@^1.0.0": version "1.1.0" @@ -1442,10 +1734,10 @@ terminal-link "2.1.1" tslib "2.4.1" -"@expo/env@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.0.5.tgz#86526ed5c966fc39b2644341f7a10f4b855e59b8" - integrity sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ== +"@expo/env@~0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.2.2.tgz#49f589f32e9bae279a6509d7a02218c0f4e32a60" + integrity sha512-m9nGuaSpzdvMzevQ1H60FWgf4PG5s4J0dfKUzdAGnDu7sMUerY/yUeDaA4+OBo3vBwGVQ+UHcQS9vPSMBNaPcg== dependencies: chalk "^4.0.0" debug "^4.3.4" @@ -1453,6 +1745,19 @@ dotenv-expand "~10.0.0" getenv "^1.0.0" +"@expo/fingerprint@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.6.0.tgz#77366934673d4ecea37284109b4dd67f9e6a7487" + integrity sha512-KfpoVRTMwMNJ/Cf5o+Ou8M/Y0EGSTqK+rbi70M2Y0K2qgWNfMJ1gm6sYO9uc8lcTr7YSYM1Rme3dk7QXhpScNA== + dependencies: + "@expo/spawn-async" "^1.5.0" + chalk "^4.1.2" + debug "^4.3.4" + find-up "^5.0.0" + minimatch "^3.0.4" + p-limit "^3.1.0" + resolve-from "^5.0.0" + "@expo/image-utils@0.3.22": version "0.3.22" resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260" @@ -1470,17 +1775,16 @@ semver "7.3.2" tempy "0.3.0" -"@expo/image-utils@^0.3.18": - version "0.3.23" - resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.23.tgz#f14fd7e1f5ff6f8e4911a41e27dd274470665c3f" - integrity sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw== +"@expo/image-utils@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.4.1.tgz#78c54b8aaa974d0ac37fee5285683b54ff161b2c" + integrity sha512-EZb+VHSmw+a5s2hS9qksTcWylY0FDaIAVufcxoaRS9tHIXLjW5zcKW7Rhj9dSEbZbRVy9yXXdHKa3GQdUQIOFw== dependencies: "@expo/spawn-async" "1.5.0" chalk "^4.0.0" fs-extra "9.0.0" getenv "^1.0.0" jimp-compact "0.16.1" - mime "^2.4.4" node-fetch "^2.6.0" parse-png "^2.1.0" resolve-from "^5.0.0" @@ -1496,6 +1800,15 @@ json5 "^2.2.2" write-file-atomic "^2.3.0" +"@expo/json-file@~8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.3.0.tgz#fc84af77b532a4e9bfb5beafd0e3b7f692b6bd7e" + integrity sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g== + dependencies: + "@babel/code-frame" "~7.10.4" + json5 "^2.2.2" + write-file-atomic "^2.3.0" + "@expo/logger@1.0.30": version "1.0.30" resolved "https://registry.yarnpkg.com/@expo/logger/-/logger-1.0.30.tgz#f964cc7b73cbb0c05de44c874a9451f5cfd2ec2d" @@ -1504,23 +1817,31 @@ "@types/bunyan" "^1.8.8" bunyan "^1.8.15" -"@expo/metro-config@~0.10.0": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.10.7.tgz#d1b91baffcb7feb52fc7e2e122450bfc5d01e7c1" - integrity sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ== +"@expo/metro-config@0.17.6", "@expo/metro-config@~0.17.0": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.6.tgz#f1f4ef056aa357c1dba3841de465f5d319f17216" + integrity sha512-WaC1C+sLX/Wa7irwUigLhng3ckmXIEQefZczB8DfYmleV6uhfWWo2kz/HijFBpV7FKs2cW6u8J/aBQpFkxlcqg== dependencies: - "@expo/config" "~8.1.0" - "@expo/env" "0.0.5" - "@expo/json-file" "~8.2.37" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.5" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + "@expo/config" "~8.5.0" + "@expo/env" "~0.2.2" + "@expo/json-file" "~8.3.0" + "@expo/spawn-async" "^1.7.2" + babel-preset-fbjs "^3.4.0" chalk "^4.1.0" debug "^4.3.2" find-yarn-workspace-root "~2.0.0" + fs-extra "^9.1.0" getenv "^1.0.0" + glob "^7.2.3" jsc-safe-url "^0.2.4" lightningcss "~1.19.0" - postcss "~8.4.21" + postcss "~8.4.32" resolve-from "^5.0.0" - sucrase "^3.20.0" + sucrase "3.34.0" "@expo/multipart-body-parser@1.1.0": version "1.1.0" @@ -1539,7 +1860,7 @@ "@expo/spawn-async" "^1.5.0" exec-async "^2.2.0" -"@expo/package-manager@1.1.2", "@expo/package-manager@~1.1.0": +"@expo/package-manager@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.1.2.tgz#e58c9bed4cbb829ebf2cbb80b8542600a6609bd1" integrity sha512-JI9XzrxB0QVXysyuJ996FPCJGDCYRkbUvgG4QmMTTMFA1T+mv8YzazC3T9C1pHQUAAveVCre1+Pqv0nZXN24Xg== @@ -1556,6 +1877,24 @@ split "^1.0.1" sudo-prompt "9.1.1" +"@expo/package-manager@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.4.2.tgz#8c12a9163c5ff7c7cc89806c4b75cff4974c57fc" + integrity sha512-LKdo/6y4W7llZ6ghsg1kdx2CeH/qR/c6QI/JI8oPUvppsZoeIYjSkdflce978fAMfR8IXoi0wt0jA2w0kWpwbg== + dependencies: + "@expo/json-file" "^8.2.37" + "@expo/spawn-async" "^1.5.0" + ansi-regex "^5.0.0" + chalk "^4.0.0" + find-up "^5.0.0" + find-yarn-workspace-root "~2.0.0" + js-yaml "^3.13.1" + micromatch "^4.0.2" + npm-package-arg "^7.0.0" + ora "^3.4.0" + split "^1.0.1" + sudo-prompt "9.1.1" + "@expo/pkcs12@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@expo/pkcs12/-/pkcs12-0.0.8.tgz#40ddde3007d90d4fd58779670f1aabfa82ce2950" @@ -1572,6 +1911,15 @@ base64-js "^1.2.3" xmlbuilder "^14.0.0" +"@expo/plist@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.1.0.tgz#eabc95f951d14e10c87fd0443ee01d567371f058" + integrity sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g== + dependencies: + "@xmldom/xmldom" "~0.7.7" + base64-js "^1.2.3" + xmlbuilder "^14.0.0" + "@expo/plugin-help@5.1.22": version "5.1.22" resolved "https://registry.yarnpkg.com/@expo/plugin-help/-/plugin-help-5.1.22.tgz#1351b549b752c21cdeaf955cfe69158a0725e4fa" @@ -1609,15 +1957,15 @@ semver "7.5.3" xml2js "0.6.0" -"@expo/prebuild-config@6.2.6": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz#c5b4f8adcba4be00c874d6b24a8267d45c555261" - integrity sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q== +"@expo/prebuild-config@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-6.7.4.tgz#b3e4c8545d7a101bf1fc263c5b7290abc4635e69" + integrity sha512-x8EUdCa8DTMZ/dtEXjHAdlP+ljf6oSeSKNzhycXiHhpMSMG9jEhV28ocCwc6cKsjK5GziweEiHwvrj6+vsBlhA== dependencies: - "@expo/config" "~8.1.0" - "@expo/config-plugins" "~7.2.0" - "@expo/config-types" "^49.0.0-alpha.1" - "@expo/image-utils" "0.3.22" + "@expo/config" "~8.5.0" + "@expo/config-plugins" "~7.8.0" + "@expo/config-types" "^50.0.0-alpha.1" + "@expo/image-utils" "^0.4.0" "@expo/json-file" "^8.2.37" debug "^4.3.1" fs-extra "^9.0.0" @@ -1690,15 +2038,15 @@ resolved "https://registry.yarnpkg.com/@expo/timeago.js/-/timeago.js-1.0.0.tgz#8fb2b17e93e7a8d28387a4d292af12e071040045" integrity sha512-PD45CGlCL8kG0U3YcH1NvYxQThw5XAS7qE9bgP4L7dakm8lsMz+p8BQ1IjBFMmImawVWsV3py6JZINaEebXLnw== -"@expo/vector-icons@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-13.0.0.tgz#e2989b85e95a82bce216f88cf8fb583ab050ec95" - integrity sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA== +"@expo/vector-icons@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-14.0.0.tgz#48ce0aa5c05873b07c0c78bfe16c870388f4de9a" + integrity sha512-5orm59pdnBQlovhU9k4DbjMUZBHNlku7IRgFY56f7pcaaCnXq9yaLJoOQl9sMwNdFzf4gnkTyHmR5uN10mI9rA== -"@expo/xcpretty@^4.2.1": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.2.2.tgz#7890f86b017015be8a20242ae74fe6ed4b80a92c" - integrity sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw== +"@expo/xcpretty@^4.3.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.3.1.tgz#e0a6a92d1e46ab5ac5e90d9a8e66ac1a2a2f5920" + integrity sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw== dependencies: "@babel/code-frame" "7.10.4" chalk "^4.1.0" @@ -1988,46 +2336,44 @@ resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== -"@jest/create-cache-key-function@^29.2.1": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.4.3.tgz#ea37769f69523019d81ee089a25a62550f209eb7" - integrity sha512-AJVFQTTy6jnZAQiAZrdOaTAPzJUrvAE/4IMe+Foav6WPhypFszqg7a4lOTyuzYQEEiT5RSrGYg9IY+/ivxiyXw== - dependencies: - "@jest/types" "^29.4.3" +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== -"@jest/environment@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.3.tgz#9fe2f3169c3b33815dc4bd3960a064a83eba6548" - integrity sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA== +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== dependencies: - "@jest/fake-timers" "^29.4.3" - "@jest/types" "^29.4.3" + "@jest/types" "^29.6.3" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.4.3" + jest-mock "^29.7.0" -"@jest/fake-timers@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.3.tgz#31e982638c60fa657d310d4b9d24e023064027b0" - integrity sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw== +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/types" "^29.4.3" + "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.4.3" - jest-mock "^29.4.3" - jest-util "^29.4.3" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== - dependencies: - "@sinclair/typebox" "^0.25.16" - -"@jest/schemas@^29.6.0": - version "29.6.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" - integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" @@ -2042,35 +2388,12 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" - integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA== - dependencies: - "@jest/schemas" "^29.4.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jest/types@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" - integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== - dependencies: - "@jest/schemas" "^29.6.0" + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -2439,124 +2762,111 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@react-native-async-storage/async-storage@1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.18.2.tgz#ec8fd487a0b6c9500b43ece4b8779d1561f12e91" - integrity sha512-dM8AfdoeIxlh+zqgr0o5+vCTPQ0Ru1mrPzONZMsr7ufp5h+6WgNxQNza7t0r5qQ6b04AJqTlBNixTWZxqP649Q== +"@react-native-async-storage/async-storage@1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz#d7e370028e228ab84637016ceeb495878b7a44c8" + integrity sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag== dependencies: merge-options "^3.0.4" -"@react-native-community/cli-clean@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.3.7.tgz#cb4c2f225f78593412c2d191b55b8570f409a48f" - integrity sha512-twtsv54ohcRyWVzPXL3F9VHGb4Qhn3slqqRs3wEuRzjR7cTmV2TIO2b1VhaqF4HlCgNd+cGuirvLtK2JJyaxMg== +"@react-native-community/cli-clean@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz#d4f1730c3d22d816b4d513d330d5f3896a3f5921" + integrity sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A== dependencies: - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" - prompts "^2.4.0" -"@react-native-community/cli-config@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.7.tgz#4ce95548252ecb094b576369abebf9867c95d277" - integrity sha512-FDBLku9xskS+bx0YFJFLCmUJhEZ4/MMSC9qPYOGBollWYdgE7k/TWI0IeYFmMALAnbCdKQAYP5N29N55Tad8lg== +"@react-native-community/cli-config@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.2.tgz#1a5de302de4d597ff2fc9932a032134b6ec4325f" + integrity sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ== dependencies: - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.7.tgz#2147b73313af8de3c9b396406d5d344b904cf2bb" - integrity sha512-aVmKuPKHZENR8SrflkMurZqeyLwbKieHdOvaZCh1Nn/0UC5CxWcyST2DB2XQboZwsvr3/WXKJkSUO+SZ1J9qTQ== +"@react-native-community/cli-debugger-ui@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz#b2743876b03e560fbf5ef516e95387fcb6d91630" + integrity sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.7.tgz#7d5f5b1aea78134bba713fa97795986345ff1344" - integrity sha512-YEHUqWISOHnsl5+NM14KHelKh68Sr5/HeEZvvNdIcvcKtZic3FU7Xd1WcbNdo3gCq5JvzGFfufx02Tabh5zmrg== +"@react-native-community/cli-doctor@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz#9e82b49f04ee03872b2975f26c8799cecac021ce" + integrity sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg== dependencies: - "@react-native-community/cli-config" "11.3.7" - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-platform-ios" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" command-exists "^1.2.8" - envinfo "^7.7.2" + deepmerge "^4.3.0" + envinfo "^7.10.0" execa "^5.0.0" hermes-profile-transformer "^0.0.6" ip "^1.1.5" node-stream-zip "^1.9.1" ora "^5.4.1" - prompts "^2.4.0" semver "^7.5.2" strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.7.tgz#091e730a1f8bace6c3729e8744bad6141002e0e8" - integrity sha512-chkKd8n/xeZkinRvtH6QcYA8rjNOKU3S3Lw/3Psxgx+hAYV0Gyk95qJHTalx7iu+PwjOOqqvCkJo5jCkYLkoqw== +"@react-native-community/cli-hermes@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz#5f266985fe32a37e9020e881460e9017870be2e5" + integrity sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA== dependencies: - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.7.tgz#7845bc48258b6bb55df208a23b3690647f113995" - integrity sha512-WGtXI/Rm178UQb8bu1TAeFC/RJvYGnbHpULXvE20GkmeJ1HIrMjkagyk6kkY3Ej25JAP2R878gv+TJ/XiRhaEg== +"@react-native-community/cli-platform-android@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz#de54d89712f8ea95046d798ec274fd6caea70c34" + integrity sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg== dependencies: - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" + fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.7.tgz#87478f907634713b7236c77870446a5ca1f35ff1" - integrity sha512-Z/8rseBput49EldX7MogvN6zJlWzZ/4M97s2P+zjS09ZoBU7I0eOKLi0N9wx+95FNBvGQQ/0P62bB9UaFQH2jw== +"@react-native-community/cli-platform-ios@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz#07e298f69761424da85909790a43ec60ebfe6097" + integrity sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg== dependencies: - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.7.tgz#2e8a9deb30b40495c5c1347a1837a824400fa00f" - integrity sha512-0WhgoBVGF1f9jXcuagQmtxpwpfP+2LbLZH4qMyo6OtYLWLG13n2uRep+8tdGzfNzl1bIuUTeE9yZSAdnf9LfYQ== - dependencies: - "@react-native-community/cli-server-api" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - execa "^5.0.0" - metro "0.76.8" - metro-config "0.76.8" - metro-core "0.76.8" - metro-react-native-babel-transformer "0.76.8" - metro-resolver "0.76.8" - metro-runtime "0.76.8" - readline "^1.3.0" +"@react-native-community/cli-plugin-metro@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz#7db7dc8939b821b9aeebdd5ee3293f3a0201a2ea" + integrity sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g== -"@react-native-community/cli-server-api@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.7.tgz#2cce54b3331c9c51b9067129c297ab2e9a142216" - integrity sha512-yoFyGdvR3HxCnU6i9vFqKmmSqFzCbnFSnJ29a+5dppgPRetN+d//O8ard/YHqHzToFnXutAFf2neONn23qcJAg== +"@react-native-community/cli-server-api@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz#11df4e20ed72d59cf22adf77bd30aff3d6e70dc9" + integrity sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q== dependencies: - "@react-native-community/cli-debugger-ui" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2565,10 +2875,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.7.tgz#37aa7efc7b4a1b7077d541f1d7bb11a2ab7b6ff2" - integrity sha512-peyhP4TV6Ps1hk+MBHTFaIR1eI3u+OfGBvr5r0wPwo3FAJvldRinMgcB/TcCcOBXVORu7ba1XYjkubPeYcqAyA== +"@react-native-community/cli-tools@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz#d3362b04fba3f73ec82c5a493696b575acfb420c" + integrity sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2579,35 +2889,37 @@ ora "^5.4.1" semver "^7.5.2" shell-quote "^1.7.3" + sudo-prompt "^9.0.0" -"@react-native-community/cli-types@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.7.tgz#12fe7cff3da08bd27e11116531b2e001939854b9" - integrity sha512-OhSr/TiDQkXjL5YOs8+hvGSB+HltLn5ZI0+A3DCiMsjUgTTsYh+Z63OtyMpNjrdCEFcg0MpfdU2uxstCS6Dc5g== +"@react-native-community/cli-types@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.2.tgz#0551c553c87701faae580097d7786dfff8ec2ef4" + integrity sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog== dependencies: joi "^17.2.1" -"@react-native-community/cli@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.7.tgz#564c0054269d8385fa9d301750b2e56dbb5c0cc9" - integrity sha512-Ou8eDlF+yh2rzXeCTpMPYJ2fuqsusNOhmpYPYNQJQ2h6PvaF30kPomflgRILems+EBBuggRtcT+I+1YH4o/q6w== +"@react-native-community/cli@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.2.tgz#002ae3683b9fe6b0a83a837f41d9db541ea7667f" + integrity sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ== dependencies: - "@react-native-community/cli-clean" "11.3.7" - "@react-native-community/cli-config" "11.3.7" - "@react-native-community/cli-debugger-ui" "11.3.7" - "@react-native-community/cli-doctor" "11.3.7" - "@react-native-community/cli-hermes" "11.3.7" - "@react-native-community/cli-plugin-metro" "11.3.7" - "@react-native-community/cli-server-api" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - "@react-native-community/cli-types" "11.3.7" + "@react-native-community/cli-clean" "12.3.2" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-doctor" "12.3.2" + "@react-native-community/cli-hermes" "12.3.2" + "@react-native-community/cli-plugin-metro" "12.3.2" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-types" "12.3.2" chalk "^4.1.2" commander "^9.4.1" + deepmerge "^4.3.0" execa "^5.0.0" find-up "^4.1.0" fs-extra "^8.1.0" graceful-fs "^4.1.3" - prompts "^2.4.0" + prompts "^2.4.2" semver "^7.5.2" "@react-native-community/datetimepicker@^3.0.2": @@ -2627,50 +2939,168 @@ resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-1.16.8.tgz#2126ca54d4a5a3e9ea5e3f39ad1e6643f8e4b3d4" integrity sha512-pacdQDX6V6EmjF+HoiIh6u++qx4mTK0WnhgUHRc01B+Qt5eoeUwseBqmqfTSXTx/aHDEd6PiIw7UGvKgFoqgFQ== -"@react-native/assets-registry@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d" - integrity sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ== +"@react-native/assets-registry@0.73.1", "@react-native/assets-registry@~0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== -"@react-native/codegen@^0.72.7": - version "0.72.7" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.72.7.tgz#b6832ce631ac63143024ea094a6b5480a780e589" - integrity sha512-O7xNcGeXGbY+VoqBGNlZ3O05gxfATlwE1Q1qQf5E38dK+tXn5BY4u0jaQ9DPjfE8pBba8g/BYI1N44lynidMtg== +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21", "@react-native/babel-preset@^0.73.18": + version "0.73.21" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== dependencies: "@babel/parser" "^7.20.0" flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" jscodeshift "^0.14.0" + mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/gradle-plugin@^0.72.11": - version "0.72.11" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz#c063ef12778706611de7a1e42b74b14d9405fb9f" - integrity sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw== +"@react-native/community-cli-plugin@0.73.16": + version "0.73.16" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz#29dca91aa3e24c8cd534dbf3db5766509da92ea3" + integrity sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" + "@react-native/dev-middleware" "0.73.7" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" -"@react-native/js-polyfills@^0.72.1": - version "0.72.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz#905343ef0c51256f128256330fccbdb35b922291" - integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.7": + version "0.73.7" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz#61d2bf08973d9a537fa3f2a42deeb13530d721ae" + integrity sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + +"@react-native/dev-middleware@^0.73.6": + version "0.73.8" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz#aa55784a8c2b471aa89934db38c090d331baf23b" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" "@react-native/normalize-color@^2.0.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== -"@react-native/normalize-colors@*": - version "0.73.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.0.tgz#23e15cf2a2b73ac7e5e6df8d5b86b173cfb35a3f" - integrity sha512-EmSCmJ0djeMJadeFsms6Pl/R85i9xSJMc+tyJu/GEMkKXBVyYQyqanK4RHFU0v8MO90OWj+SiFXjCkKYiJ6mkg== +"@react-native/normalize-colors@0.73.2", "@react-native/normalize-colors@^0.73.0": + version "0.73.2" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz#cc8e48fbae2bbfff53e12f209369e8d2e4cf34ec" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== -"@react-native/normalize-colors@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz#14294b7ed3c1d92176d2a00df48456e8d7d62212" - integrity sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw== - -"@react-native/virtualized-lists@^0.72.8": - version "0.72.8" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz#a2c6a91ea0f1d40eb5a122fb063daedb92ed1dc3" - integrity sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw== +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz#640e594775806f63685435b5d9c3d05c378ccd8c" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -2766,11 +3196,6 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -2802,10 +3227,10 @@ dependencies: "@types/node" "*" -"@types/geojson@^7946.0.10": - version "7946.0.10" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" - integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== +"@types/geojson@^7946.0.13": + version "7946.0.14" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" + integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== "@types/hammerjs@^2.0.36": version "2.0.41" @@ -2892,13 +3317,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^17.0.8": version "17.0.22" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" @@ -3193,7 +3611,7 @@ arg@4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== -arg@^5.0.2: +arg@5.0.2, arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== @@ -3259,11 +3677,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - async@^3.2.3: version "3.2.5" resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" @@ -3299,17 +3712,6 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-plugin-module-resolver@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.0.tgz#2b7fc176bd55da25f516abf96015617b4f70fc73" - integrity sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q== - dependencies: - find-babel-config "^2.0.0" - glob "^8.0.3" - pkg-up "^3.1.0" - reselect "^4.1.7" - resolve "^1.22.1" - babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" @@ -3360,33 +3762,20 @@ babel-polyfill@6.23.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-preset-expo@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.5.0.tgz#c42f84e75e8a0f715bb5efd7f93455481c20113e" - integrity sha512-c5YPPro5g0rVf6WtednbCdRPFkZ+VT43/DhQQNh8rRubDxvKHT1bq0EUG0cgm5M61hXjTwgLJn9YzxX1TeBm/g== +babel-preset-expo@^10.0.0, babel-preset-expo@~10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-10.0.1.tgz#a0e7ad0119f46e58cb3f0738c3ca0c6e97b69c11" + integrity sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ== dependencies: "@babel/plugin-proposal-decorators" "^7.12.9" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-object-rest-spread" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.17" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/preset-env" "^7.20.0" - babel-plugin-module-resolver "^5.0.0" + "@babel/preset-react" "^7.22.15" + "@react-native/babel-preset" "^0.73.18" babel-plugin-react-native-web "~0.18.10" - metro-react-native-babel-preset "0.76.5" - -babel-preset-expo@~9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz#5ed1756c8434ca972d7a940e4f13570a283641df" - integrity sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ== - dependencies: - "@babel/plugin-proposal-decorators" "^7.12.9" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-object-rest-spread" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.17" - "@babel/preset-env" "^7.20.0" - babel-plugin-module-resolver "^5.0.0" - babel-plugin-react-native-web "~0.18.10" - metro-react-native-babel-preset "0.76.8" + react-refresh "0.14.0" babel-preset-fbjs@^3.4.0: version "3.4.0" @@ -3444,7 +3833,7 @@ base64-arraybuffer@^1.0.2: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== -base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3499,24 +3888,6 @@ blueimp-md5@^2.10.0, blueimp-md5@^2.5.0: resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== -body-parser@^1.20.1: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -3575,6 +3946,16 @@ browserslist@^4.21.3, browserslist@^4.21.5: node-releases "^2.0.8" update-browserslist-db "^1.0.10" +browserslist@^4.22.2: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3605,7 +3986,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: +buffer@^5.4.3, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3633,11 +4014,6 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -3704,6 +4080,11 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz#871e35866b4654a7d25eccca86864f411825540c" integrity sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w== +caniuse-lite@^1.0.30001587: + version "1.0.30001596" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz#da06b79c3d9c3d9958eb307aa832ac68ead79bee" + integrity sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ== + cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -3778,6 +4159,28 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.2.tgz#4e6404e32200095fdce7f6a1e1004f9bd36fa5da" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#0443083074715a13c669530b35df7bfea33b1509" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -4028,11 +4431,6 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -4050,11 +4448,6 @@ compare-urls@^2.0.0: dependencies: normalize-url "^2.0.1" -compare-versions@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - component-type@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.2.1.tgz#8a47901700238e4fc32269771230226f24b415a9" @@ -4100,7 +4493,7 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -content-type@^1.0.4, content-type@~1.0.5: +content-type@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -4270,7 +4663,7 @@ dayjs@^1.8.15: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@2.6.9, debug@^2.2.0: +debug@2.6.9, debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4306,11 +4699,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -dedent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" - integrity sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g== - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4393,14 +4781,14 @@ depd@^1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -deprecated-react-native-prop-types@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz#8ed03a64c21b7fbdd2d000957b6838d4f38d2c66" - integrity sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw== +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== dependencies: - "@react-native/normalize-colors" "*" - invariant "*" - prop-types "*" + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" destroy@1.2.0: version "1.2.0" @@ -4601,6 +4989,11 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz#b60a6676b3a1db332cfc8919118344aa06b9ac99" integrity sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg== +electron-to-chromium@^1.4.668: + version "1.4.698" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.698.tgz#0b3992ad3b572b646ce3f22e0145eab4abc559a7" + integrity sha512-f9iZD1t3CLy1AS6vzM5EKGa6p9pRcOeEFXRFbaG2Ta+Oe7MkfRQ3fsvPYidzHe1h4i0JvIvpcY55C+B6BZNGtQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -4650,11 +5043,16 @@ env-string@1.0.1: resolved "https://registry.yarnpkg.com/env-string/-/env-string-1.0.1.tgz#92ddefeb651c0f2d15bf89dc13be7596733801a4" integrity sha512-/DhCJDf5DSFK32joQiWRpWrT0h7p3hVQfMKxiBb7Nt8C8IF8BYyPtclDnuGGLOoj16d/8udKeiE7JbkotDmorQ== -envinfo@7.8.1, envinfo@^7.7.2: +envinfo@7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +envinfo@^7.10.0: + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + eol@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" @@ -4762,7 +5160,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -4777,233 +5175,210 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expo-application@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.3.0.tgz#0811f2de69a3a7f521762fd7f8a0a4563276dada" - integrity sha512-XLkaELwmiXW6JjFVkwuiFQaGZoNKAxNAcSJkFdz8s4rCljEwehylbzoPk37QHw3cxqb4v0/2EICtg4C4kpEVCA== +expo-application@~5.8.0: + version "5.8.3" + resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.8.3.tgz#43991bd81d05c987b07b2f430c036cda1572bc62" + integrity sha512-IISxzpPX+Xe4ynnwX8yY52T6dm1g9sME1GCj4lvUlrdc5xeTPM6U35x7Wj82V7lLWBaVGe+/Tg9EeKqfylCEwA== -expo-asset@~8.10.1: - version "8.10.1" - resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.10.1.tgz#a7e8cf1c555ab8f844599822cb084fee95a93644" - integrity sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA== +expo-asset@~9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-9.0.2.tgz#e8a6b6da356d5fc97955599d2fa49af78c7f0bfd" + integrity sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow== dependencies: + "@react-native/assets-registry" "~0.73.1" blueimp-md5 "^2.10.0" - expo-constants "~14.4.2" - expo-file-system "~15.4.0" + expo-constants "~15.4.0" + expo-file-system "~16.0.0" invariant "^2.2.4" md5-file "^3.2.3" - path-browserify "^1.0.0" - url-parse "^1.5.9" -expo-constants@~14.4.2: - version "14.4.2" - resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.4.2.tgz#cac5e8b524069545739b8d8595ce96cc5be6578c" - integrity sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w== +expo-constants@~15.4.0: + version "15.4.5" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-15.4.5.tgz#81756a4c4e1c020f840a419cd86a124a6d1fb35b" + integrity sha512-1pVVjwk733hbbIjtQcvUFCme540v4gFemdNlaxM2UXKbfRCOh2hzgKN5joHMOysoXQe736TTUrRj7UaZI5Yyhg== dependencies: - "@expo/config" "~8.1.0" - uuid "^3.3.2" + "@expo/config" "~8.5.0" -expo-dev-client@~2.4.13: - version "2.4.13" - resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.4.13.tgz#cf8c829e2f815b273db44c17e513d5410af5b7fa" - integrity sha512-EBNJlPntw+DZy7mKxYvpdrmE2GU4YjcEpxSLpwNn2GDwy7e2xXAC2k/25E13BGy3yKPLo1iBXNgB01uleIDdVg== +expo-dev-client@~3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-3.3.9.tgz#4d96c96addeb43c385a727c81d3276d83871f834" + integrity sha512-qODvuyXe8FgVJhBbwDEk/snZa5wSTNHx+poNXwA/PS4gGvOxCuG+qpeQF6K4Yf6r2+sV0OtigxPJiAyhu9I4ug== dependencies: - expo-dev-launcher "2.4.15" - expo-dev-menu "3.2.4" - expo-dev-menu-interface "1.3.0" - expo-manifests "~0.7.0" - expo-updates-interface "~0.10.0" + expo-dev-launcher "3.6.7" + expo-dev-menu "4.5.6" + expo-dev-menu-interface "1.7.2" + expo-manifests "~0.13.0" + expo-updates-interface "~0.15.1" -expo-dev-launcher@2.4.15: - version "2.4.15" - resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.4.15.tgz#298ac56b523f77c40523453224f75dcc894198bc" - integrity sha512-6oF4NsxlKwuafnyIZvVtMp4OTxRu4Arsw6qJ9s4jDjZuGJtGwgEj9ux3R0YLkDPs8xhsK9Awp0q17RqbQzs1qg== +expo-dev-launcher@3.6.7: + version "3.6.7" + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-3.6.7.tgz#09e8b1f3fe1d1cb5bcb8e29ec8048d6aefe58d5d" + integrity sha512-xn0cq2LMXv5t3n4jiAPFd9rwP22GM3zsQqAOJuWXH4b7fRzO8bayxOAt1n4RrDgkVsRzgRnxHm7kkO+Eta3Kzg== dependencies: - expo-dev-menu "3.2.3" + ajv "8.11.0" + expo-dev-menu "4.5.6" + expo-manifests "~0.13.0" resolve-from "^5.0.0" semver "^7.5.3" -expo-dev-menu-interface@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.3.0.tgz#51b6be8c6e0ce73e414ac7a545998dfad0dfdb80" - integrity sha512-WtRP7trQ2lizJJTTFXUSGGn1deIeHaYej0sUynvu/uC69VrSP4EeSnYOxbmEO29kuT/MsQBMGu0P/AkMQOqCOg== +expo-dev-menu-interface@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.7.2.tgz#772fb97c6b0a44c27965cdfcfa078f316b0930ca" + integrity sha512-V/geSB9rW0IPTR+d7E5CcvkV0uVUCE7SMHZqE/J0/dH06Wo8AahB16fimXeh5/hTL2Qztq8CQ41xpFUBoA9TEw== -expo-dev-menu@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.3.tgz#31c102251d94e9a35fac667cefdbaeae7b1e1375" - integrity sha512-DneF3okTC4AAfAZgaOIylQ/UngSO8SnUT6bRV6nHhJU/jQS1OIP1cZoNW23I100+2yj6x6mobL21PxyiI5VA8g== +expo-dev-menu@4.5.6: + version "4.5.6" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-4.5.6.tgz#1c19c0eb3f55ee695fbe1281fc1319dc8805a6ee" + integrity sha512-V8gOFrv8JBTy50n9mTWVPKVHMcjvrpI/w5ooZGFzjoerBlPXSauIfRmHsqmgmOr3r5oWptnC2PS3LxuSo4QZ5g== dependencies: - expo-dev-menu-interface "1.3.0" + expo-dev-menu-interface "1.7.2" semver "^7.5.3" -expo-dev-menu@3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.4.tgz#25ba1efe70bf74ab2d7804eab54212785cd2a01a" - integrity sha512-jPvEY4xGTsiVL6A8M6xThNG+tgCHKlDaWqmWHT+wy2EXgFf/7zE0daVYoFms0KJ1XtZc+/DmDRgIPTR86qIGTg== - dependencies: - expo-dev-menu-interface "1.3.0" - semver "^7.5.3" - -expo-device@~5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.4.0.tgz#4dc4db4b2265d1f5c9d7c2be6548c375882be437" - integrity sha512-TQxSVPrC6njCbzZ9Cqpc1lGLIjPmO1zBIbqW7CTqBPD1dOIMrgQvt7lZZhkHh3pWzoZznH283sSYqCvy3XcURw== +expo-device@~5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.9.3.tgz#0ad61da681424aa682fa03001d0344394c01f8a1" + integrity sha512-azH5rz8krDZUJb/arqkcA6oZGaX2T5s4aaXIMFsDDzvq8TW0CttZZy2HFp6itmFdiKGdRpFX3/Gj0n6ZmPoJ/w== dependencies: ua-parser-js "^0.7.33" -expo-eas-client@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.6.0.tgz#b722dde0de1b8b56701b282a5fdf28d3d3e79ec4" - integrity sha512-FSPy0ThcJBvzEzOZVhpOrYyHgQ8U1jJ4v7u7tr1x0KOVRqyf25APEQZFxxRPn3zAYW0tQ+uDTCbrwNymFqhQfw== +expo-eas-client@~0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.11.2.tgz#2e8d6f347dcea38b58c2b6a21db7c632383fb1ba" + integrity sha512-SY7rVFxb4ut/OMTgR7A39Jg+8+hXwQNRpZd+RBpB+B5XV2STj/pWXHnGFhBayEF4umI4SxrOvisY90rlPWVO9Q== expo-felica-reader@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/expo-felica-reader/-/expo-felica-reader-0.1.0.tgz#968a9bb93d1f040f8e8dfbc899fba0214327c8b0" integrity sha512-uDv5/eeaCpMOJ3R3supaE2m7VJZGaDE6C3AdWf3Y1pgVzteI3GUah5+doFpadf6CSjytznix5U1pTLbeSHeuUw== -expo-file-system@~15.4.0: - version "15.4.2" - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.4.2.tgz#f18e9d84f06a50eb4084b4a34ca7ca9c5a42f92e" - integrity sha512-WFaEWuFEuUpETiq85YlhKYJgedccWTjtCMnYGAgyNfCfvnIgfMCVH7dWudGuxhfAcTZqh36OcqtSckbtbhOtyg== - dependencies: - uuid "^3.4.0" +expo-file-system@~16.0.0, expo-file-system@~16.0.8: + version "16.0.8" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.8.tgz#13c79a8e06e42a8e76e9297df6920597a011d989" + integrity sha512-yDbVT0TUKd7ewQjaY5THum2VRFx2n/biskGhkUmLh3ai21xjIVtaeIzHXyv9ir537eVgt4ReqDNWi7jcXjdUcA== -expo-file-system@~15.4.5: - version "15.4.5" - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.4.5.tgz#3ef68583027ff0e2fb9eca7a22b3caff6cfc550d" - integrity sha512-xy61KaTaDgXhT/dllwYDHm3ch026EyO8j4eC6wSVr/yE12MMMxAC09yGwy4f7kkOs6ztGVQF5j7ldRzNLN4l0Q== - dependencies: - uuid "^3.4.0" - -expo-font@~11.4.0: - version "11.4.0" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.4.0.tgz#e2d31c0bb76ba3c37c2d84703a49aeafc3afef28" - integrity sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w== +expo-font@~11.10.3: + version "11.10.3" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.3.tgz#a3115ebda8e09bd7cb8052619a4bbe606f0c17f4" + integrity sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ== dependencies: fontfaceobserver "^2.1.0" -expo-json-utils@~0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.7.1.tgz#efe315c982113204be46419cbc26d4d9a2af145f" - integrity sha512-L0lyH8diXQtV0q5BLbFlcoxTqPF5im79xDHPhybB0j36xYdm65hjwRJ4yMrPIN5lR18hj48FUZeONiDHRyEvIg== +expo-json-utils@~0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.12.3.tgz#cabb704a344d6d75f225cf4032c64479e442a2a9" + integrity sha512-4pypQdinpNc6XY9wsZk56njvzDh+B/9mISr7FPP3CVk1QGB1nSLh883/BCDSgnsephATZkC5HG+cdE60kCAR6A== -expo-keep-awake@~12.3.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz#c42449ae19c993274ddc43aafa618792b6aec408" - integrity sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw== +expo-keep-awake@~12.8.2: + version "12.8.2" + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.8.2.tgz#6cfdf8ad02b5fa130f99d4a1eb98e459d5b4332e" + integrity sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g== -expo-location@~16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-16.1.0.tgz#251a465790d6622f828fd18f0edb2a73b9664b72" - integrity sha512-/jfRyYrXb9vjr8HoYmVHnzEqnw+0jaoRbHsxj6ePPAbevXmvXZqYHFRtfZtQ+q32SB4X6kUAXu28eBcLS+tqaA== +expo-location@~16.5.5: + version "16.5.5" + resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-16.5.5.tgz#3db84f5fecf8cbfdff1e3dbe06fdc823a56bc02c" + integrity sha512-dXEd1HaZgdi6yHVF8R+SMnGlKDYrD+Hkkzd/b9edjMSUBLxF2y824AFSSNUf6BVOM53tJBOFEELneXkU1uj9nA== -expo-manifests@~0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.7.1.tgz#2033e974744699a3cfaf1c1cee7e51dfdf2c8fae" - integrity sha512-9+pTMWkQx3hPEmc7D3MzWM+fCqN4DnPxStfmO7daL562yw+VCiJ4gfmkioOW/optqj4AE9jWoEOVv/iXOZbPWw== +expo-manifests@~0.13.0: + version "0.13.2" + resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.13.2.tgz#02b28bb2fb002ef93a03faf1ede9ecaa43e5d6c0" + integrity sha512-l0Sia1WmLULx8V41K8RzGLsFoTe4qqthPRGpHjItsYn8ZB6lRrdTBM9OYp2McIflgqN1HAimUCQMFIwJyH+UmA== dependencies: - expo-json-utils "~0.7.0" + "@expo/config" "~8.5.0" + expo-json-utils "~0.12.0" -expo-modules-autolinking@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz#363f90c172769ce12bf56c7be9ca0897adfc7a81" - integrity sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg== +expo-modules-autolinking@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.10.3.tgz#19f349884a90f3f27ec9d64e8f2fa6be609558c5" + integrity sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw== dependencies: - "@expo/config" "~8.1.0" + "@expo/config" "~8.5.0" chalk "^4.1.0" commander "^7.2.0" fast-glob "^3.2.5" find-up "^5.0.0" fs-extra "^9.1.0" -expo-modules-core@1.5.12: - version "1.5.12" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.5.12.tgz#07eb4de4bf25a3ec3e1924403e73d13c656613fd" - integrity sha512-mY4wTDU458dhwk7IVxLNkePlYXjs9BTgk4NQHBUXf0LapXsvr+i711qPZaFNO4egf5qq6fQV+Yfd/KUguHstnQ== +expo-modules-core@1.11.10: + version "1.11.10" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.10.tgz#bef4d753e316f97259b34d9eff01e491fcc8ec19" + integrity sha512-L1DSxV3AUnEvR8+G1JHbMPjpwqALv0AF71oREhDJ/ehI2TDX6LkE+up5BUK1/++UjmVu1lviefbUfLut2F5wNQ== dependencies: - compare-versions "^3.4.0" invariant "^2.2.4" -expo-notifications@~0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.20.1.tgz#55479e3bbde31ab5ccf6f6fd3ed288c6c91101d2" - integrity sha512-Y4Y8IWYj/cSWCP/P167z3GRg//5ZlsznfMXi4ABdWOOpF0RGNpd5N17TxioNivtt7tMhZ/o1vmzFxulhy0nBWg== +expo-notifications@~0.27.6: + version "0.27.6" + resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.27.6.tgz#ef7c95504034ac8b5fa360e13f5b037c5bf7e80d" + integrity sha512-F2iu/lzsrvfMyHA5BfnbZfE8fVLV8aQmNLk3NPztZ0g7911QEriZzH7BK/NKOZ5UHhJYI+hhYvcZCq2nFm1NLA== dependencies: - "@expo/image-utils" "^0.3.18" + "@expo/image-utils" "^0.4.0" "@ide/backoff" "^1.0.0" abort-controller "^3.0.0" assert "^2.0.0" badgin "^1.1.5" - expo-application "~5.3.0" - expo-constants "~14.4.2" + expo-application "~5.8.0" + expo-constants "~15.4.0" fs-extra "^9.1.0" - uuid "^3.4.0" -expo-sharing@~11.5.0: - version "11.5.0" - resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.5.0.tgz#a8cad65874d882b7f75b12856b4ef55ea9b60a2d" - integrity sha512-uerM5YH1FKDZXfkP9ORebvlMVOPP/AfoYgYBez6a8G9fztNYHnRCA6mgK+3aQmpnb3ltmjnAZC39kH18bTNcVw== +expo-sharing@~11.10.0: + version "11.10.0" + resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.10.0.tgz#0e85197ee4d2634b00fe201e571fbdc64cf83eef" + integrity sha512-/64RyyKlZ25WfnMXa87HbPXhIIqWwNbIku/RaIYAq4SE0XTRC+KTH3v0XFkfDa+SCG/jKsAr1pJ3vQvsNo1sCQ== -expo-structured-headers@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-3.3.0.tgz#9f0b041a1d243a22a4a23d9eb19f02ace3c5258c" - integrity sha512-t+h5Zqaukd3Tn97LaWPpibVsmiC/TFP8F+8sAUliwCSMzgcb5TATRs2NcAB+JcIr8EP3JJDyYXJrZle1cjs4mQ== +expo-structured-headers@~3.7.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-3.7.2.tgz#2bccba6af090ba2cc82295f7ec695058530b399f" + integrity sha512-/nGOyeWUXSUy4aIYKJTwQOznRNs0yKqKPAyEE6jtwvOl9qvfDWx9xskNtShioggBhFAssFkV6RBbPn+xZMQtvw== -expo-updates-interface@~0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.10.1.tgz#cab075641cd381718ccd9264bf133dc393430a44" - integrity sha512-I6JMR7EgjXwckrydDmrkBEX/iw750dcqpzQVsjznYWfi0HTEOxajLHB90fBFqQkUV5i5s4Fd3hYQ1Cn0oMzUbA== +expo-updates-interface@~0.15.1: + version "0.15.3" + resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.15.3.tgz#cdee536dea0a8692833a4d074005bf9c6bbbdd99" + integrity sha512-uLvsbaCmUsXgJqeen8rYH/jPr874ZUCXEvWpKHxrCv5/XATPlYEaDuecbNSGQ+cu78i6MdtB4BHOwZmoH2d47A== -expo-updates@~0.18.17: - version "0.18.17" - resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.18.17.tgz#11ce03ee95ee19e1a1e253b2a98dd9b3dc019c71" - integrity sha512-oyBDR94nYEtVw+iBod3N9LFqTfpLHofmUjh0lP12YZINUI89hvoAyqRe56eSnlpWkzziG6g1y4NGva0D0ViK6w== +expo-updates@~0.24.11: + version "0.24.11" + resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.24.11.tgz#605692a246103c29d0ca8a4b1134e8957f35b913" + integrity sha512-SWpjZj7VGWBZJtbVj0gbGY7uZYrE7b+sRRoj/K1ma2ckHwXtAAB8gYI95Zp0joBdRNAbEtoMHYXP66Nrj5l8Ng== dependencies: "@expo/code-signing-certificates" "0.0.5" - "@expo/config" "~8.1.0" - "@expo/config-plugins" "~7.2.0" + "@expo/config" "~8.5.0" + "@expo/config-plugins" "~7.8.0" arg "4.1.0" chalk "^4.1.2" - expo-eas-client "~0.6.0" - expo-manifests "~0.7.0" - expo-structured-headers "~3.3.0" - expo-updates-interface "~0.10.0" + expo-eas-client "~0.11.0" + expo-manifests "~0.13.0" + expo-structured-headers "~3.7.0" + expo-updates-interface "~0.15.1" fbemitter "^3.0.0" resolve-from "^5.0.0" -expo-web-browser@~12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-12.3.2.tgz#45ac727a5d8462d7faa403ea2fa1db160ed8e4b5" - integrity sha512-ohBf+vnRnGzlTleY8EQ2XQU0vRdRwqMJtKkzM9MZRPDOK5QyJYPJjpk6ixGhxdeoUG2Ogj0InvhhgX9NUn4jkg== +expo-web-browser@~12.8.2: + version "12.8.2" + resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-12.8.2.tgz#f34fb85c80031e0dddd4f9b9efd03cb60333b089" + integrity sha512-Mw8WoFMSADecNjtC4PZVsVj1/lYdxIAH1jOVV+F8v8SEWYxORWofoShfXg7oUxRLu0iUG8JETfO5y4m8+fOgdg== dependencies: compare-urls "^2.0.0" url "^0.11.0" -expo@^49.0.21: - version "49.0.21" - resolved "https://registry.yarnpkg.com/expo/-/expo-49.0.21.tgz#32a66b32d0a233879ec3afdec35fb63d2cc8a4c3" - integrity sha512-JpHL6V0yt8/fzsmkAdPdtsah+lU6Si4ac7MDklLYvzEil7HAFEsN/pf06wQ21ax4C+BL27hI6JJoD34tzXUCJA== +expo@^50.0.11: + version "50.0.11" + resolved "https://registry.yarnpkg.com/expo/-/expo-50.0.11.tgz#0b0aa11bfca9e5d63acc76fae31e469050b45644" + integrity sha512-XEq8By1l8FQo2SEzhXfQEoKBd0nZ9j6HKsDzj1dUrRVYd02SMH/xUCERxuRaWUL2u1bWdfaFlg/Dmc/2JlVkKQ== dependencies: "@babel/runtime" "^7.20.0" - "@expo/cli" "0.10.16" - "@expo/config" "8.1.2" - "@expo/config-plugins" "7.2.5" - "@expo/vector-icons" "^13.0.0" - babel-preset-expo "~9.5.2" - expo-application "~5.3.0" - expo-asset "~8.10.1" - expo-constants "~14.4.2" - expo-file-system "~15.4.5" - expo-font "~11.4.0" - expo-keep-awake "~12.3.0" - expo-modules-autolinking "1.5.1" - expo-modules-core "1.5.12" + "@expo/cli" "0.17.7" + "@expo/config" "8.5.4" + "@expo/config-plugins" "7.8.4" + "@expo/metro-config" "0.17.6" + "@expo/vector-icons" "^14.0.0" + babel-preset-expo "~10.0.1" + expo-asset "~9.0.2" + expo-file-system "~16.0.8" + expo-font "~11.10.3" + expo-keep-awake "~12.8.2" + expo-modules-autolinking "1.10.3" + expo-modules-core "1.11.10" fbemitter "^3.0.0" - invariant "^2.2.4" - md5-file "^3.2.3" - node-fetch "^2.6.7" - pretty-format "^26.5.2" - uuid "^3.4.0" + whatwg-url-without-unicode "8.0.0-3" extend@~3.0.2: version "3.0.2" @@ -5057,6 +5432,13 @@ fast-xml-parser@^4.0.12: dependencies: strnum "^1.0.5" +fast-xml-parser@^4.2.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz#e2f2a2ae8377e9c3dc321b151e58f420ca7e5ccc" + integrity sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -5172,14 +5554,6 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-babel-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.0.0.tgz#a8216f825415a839d0f23f4d18338a1cc966f701" - integrity sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw== - dependencies: - json5 "^2.1.1" - path-exists "^4.0.0" - find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -5239,10 +5613,10 @@ firebase@8.2.3: "@firebase/storage" "0.4.2" "@firebase/util" "0.3.4" -flow-enums-runtime@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz#95884bfcc82edaf27eef7e1dd09732331cfbafbc" - integrity sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ== +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== flow-parser@0.*: version "0.200.1" @@ -5385,6 +5759,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + gauge@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" @@ -5512,7 +5891,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0, glob@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5524,17 +5903,6 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5666,17 +6034,36 @@ has@^1.0.3: dependencies: traverse ">=0.2.4" -hermes-estree@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8" - integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== - -hermes-parser@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.0.tgz#114dc26697cfb41a6302c215b859b74224383773" - integrity sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw== +hasown@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== dependencies: - hermes-estree "0.12.0" + function-bind "^1.1.2" + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.19.1.tgz#d5924f5fac2bf0532547ae9f506d6db8f3c96392" + integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.15.0.tgz#f611a297c2a2dbbfbce8af8543242254f604c382" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.19.1.tgz#1044348097165b7c93dc198a80b04ed5130d6b1a" + integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== + dependencies: + hermes-estree "0.19.1" hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -5800,7 +6187,7 @@ hyperlinker@^1.0.0: resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.24, iconv-lite@^0.4.17: +iconv-lite@^0.4.17: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5929,7 +6316,7 @@ internal-ip@4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -invariant@*, invariant@2.2.4, invariant@^2.2.2, invariant@^2.2.4: +invariant@2.2.4, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5996,12 +6383,12 @@ is-cidr@^4.0.2: dependencies: cidr-regex "^3.1.1" -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.11.0" @@ -6219,99 +6606,83 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jest-environment-node@^29.2.1: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.3.tgz#579c4132af478befc1889ddc43c2413a9cdbe014" - integrity sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg== +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: - "@jest/environment" "^29.4.3" - "@jest/fake-timers" "^29.4.3" - "@jest/types" "^29.4.3" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.4.3" - jest-util "^29.4.3" + jest-mock "^29.7.0" + jest-util "^29.7.0" -jest-get-type@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" - integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-message-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.3.tgz#65b5280c0fdc9419503b49d4f48d4999d481cb5b" - integrity sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.4.3" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.4.3" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.3.tgz#23d84a20a74cdfff0510fdbeefb841ed57b0fe7e" - integrity sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^29.4.3" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-util "^29.4.3" + jest-util "^29.7.0" jest-react-native@^18.0.0: version "18.0.0" resolved "https://registry.yarnpkg.com/jest-react-native/-/jest-react-native-18.0.0.tgz#77dd909f069324599f227c58c61c2e62168726ba" integrity sha512-BPL0WBX1kx+qo4KB92o82pcq4uFXH6gmYtN7DDj+etMK6pvtWwPFWpvT9JHmaS96wP5Xf9Vq2ilAxXycgHeMog== -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-util@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" - integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q== +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^29.4.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.2.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.1.tgz#765e684af6e2c86dce950aebefbbcd4546d69f7b" - integrity sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA== - dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.4.3" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^29.6.1" + pretty-format "^29.7.0" -jest-worker@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" @@ -6486,7 +6857,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^2.1.1, json5@^2.2.2: +json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -6669,6 +7040,14 @@ libnpmversion@^1.2.1: semver "^7.3.5" stringify-package "^1.0.1" +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz#aef90f9e97cd81db367c7634292ee22079280aaa" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + lightningcss-darwin-arm64@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz#56ab071e932f845dbb7667f44f5b78441175a343" @@ -6873,13 +7252,10 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lottie-react-native@5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-5.1.6.tgz#6ae72829c3c0b95952dddd3d78c043f4dfbcb487" - integrity sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg== - dependencies: - invariant "^2.2.2" - react-native-safe-modules "^1.0.3" +lottie-react-native@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-6.5.1.tgz#7986078648d1ff274a704ae3bd979a4c3aa235c6" + integrity sha512-pjih71P6qX6Ax5ucUBA+YJO7+fnveI581Bd8LmYeARm3spq3AnoGzEkrWaieM8odnK6WI4d5dwEJsxge/QjFPw== lru-cache@^5.1.1: version "5.1.1" @@ -6932,6 +7308,11 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + md5-file@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" @@ -6967,11 +7348,6 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - memoize-one@^5.0.0: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" @@ -6999,62 +7375,60 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -metro-babel-transformer@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz#5efd1027353b36b73706164ef09c290dceac096a" - integrity sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA== +metro-babel-transformer@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.80.6.tgz#49df74af71ecc9871636cf469726debcb5a1c858" + integrity sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA== dependencies: "@babel/core" "^7.20.0" - hermes-parser "0.12.0" + hermes-parser "0.19.1" nullthrows "^1.1.1" -metro-cache-key@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.8.tgz#8a0a5e991c06f56fcc584acadacb313c312bdc16" - integrity sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw== +metro-cache-key@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.80.6.tgz#48fe84477f6408478a33c363a8f5eaceea5cf853" + integrity sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw== -metro-cache@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.8.tgz#296c1c189db2053b89735a8f33dbe82575f53661" - integrity sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ== +metro-cache@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.80.6.tgz#05fdd83482f4132243b27713716c289532bd41c3" + integrity sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA== dependencies: - metro-core "0.76.8" + metro-core "0.80.6" rimraf "^3.0.2" -metro-config@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.8.tgz#20bd5397fcc6096f98d2a813a7cecb38b8af062d" - integrity sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA== +metro-config@0.80.6, metro-config@^0.80.3: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.80.6.tgz#b404e2f24b22c9c683abcf8da3efa8c87e382ad7" + integrity sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" - jest-validate "^29.2.1" - metro "0.76.8" - metro-cache "0.76.8" - metro-core "0.76.8" - metro-runtime "0.76.8" + jest-validate "^29.6.3" + metro "0.80.6" + metro-cache "0.80.6" + metro-core "0.80.6" + metro-runtime "0.80.6" -metro-core@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.8.tgz#917c8157c63406cb223522835abb8e7c6291dcad" - integrity sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA== +metro-core@0.80.6, metro-core@^0.80.3: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.80.6.tgz#b13fa98417e70203d2533c5d0f5c4d541f3d9fbe" + integrity sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw== dependencies: lodash.throttle "^4.1.1" - metro-resolver "0.76.8" + metro-resolver "0.80.6" -metro-file-map@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.8.tgz#a1db1185b6c316904ba6b53d628e5d1323991d79" - integrity sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw== +metro-file-map@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.80.6.tgz#9d96e54bd3bde6747b6860702a098a333599bba2" + integrity sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ== dependencies: anymatch "^3.0.3" debug "^2.2.0" fb-watchman "^2.0.0" graceful-fs "^4.2.4" invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" + jest-worker "^29.6.3" micromatch "^4.0.4" node-abort-controller "^3.1.1" nullthrows "^1.1.1" @@ -7062,175 +7436,55 @@ metro-file-map@0.76.8: optionalDependencies: fsevents "^2.3.2" -metro-inspector-proxy@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz#6b8678a7461b0b42f913a7881cc9319b4d3cddff" - integrity sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - ws "^7.5.1" - yargs "^17.6.2" - -metro-minify-terser@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz#915ab4d1419257fc6a0b9fa15827b83fe69814bf" - integrity sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA== +metro-minify-terser@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.80.6.tgz#27193867ec177c5a9b636725ff1c94c65ce701cc" + integrity sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg== dependencies: terser "^5.15.0" -metro-minify-uglify@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz#74745045ea2dd29f8783db483b2fce58385ba695" - integrity sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ== - dependencies: - uglify-es "^3.1.9" +metro-resolver@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.80.6.tgz#b648b8c661bc4cf091efd11affa010dd11f58bec" + integrity sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA== -metro-react-native-babel-preset@0.76.5: - version "0.76.5" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.5.tgz#5379e163e014dce14066d277628ae018fda79593" - integrity sha512-IlVKeTon5fef77rQ6WreSmrabmbc3dEsLwr/sL80fYjobjsD8FRCnOlbaJdgUf2SMJmSIoawgjh5Yeebv+gJzg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-preset@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz#7476efae14363cbdfeeec403b4f01d7348e6c048" - integrity sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz#c3a98e1f4cd5faf1e21eba8e004b94a90c4db69b" - integrity sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A== - dependencies: - "@babel/core" "^7.20.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.12.0" - metro-react-native-babel-preset "0.76.8" - nullthrows "^1.1.1" - -metro-resolver@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.8.tgz#0862755b9b84e26853978322464fb37c6fdad76d" - integrity sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ== - -metro-runtime@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.8.tgz#74b2d301a2be5f3bbde91b8f1312106f8ffe50c3" - integrity sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg== +metro-runtime@0.80.6, metro-runtime@^0.80.3: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.80.6.tgz#efd566a02e63e6f2bd08b5e2a8fe57333f1a2c4e" + integrity sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw== dependencies: "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" -metro-source-map@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.8.tgz#f085800152a6ba0b41ca26833874d31ec36c5a53" - integrity sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw== +metro-source-map@0.80.6, metro-source-map@^0.80.3: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.80.6.tgz#f129a36bb5b74e3ae0d4cbbcdc62904fa0161fb1" + integrity sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg== dependencies: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" invariant "^2.2.4" - metro-symbolicate "0.76.8" + metro-symbolicate "0.80.6" nullthrows "^1.1.1" - ob1 "0.76.8" + ob1 "0.80.6" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz#f102ac1a306d51597ecc8fdf961c0a88bddbca03" - integrity sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w== +metro-symbolicate@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.80.6.tgz#8690af051f33c98c0e8efcd779aebbfdea9fabef" + integrity sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A== dependencies: invariant "^2.2.4" - metro-source-map "0.76.8" + metro-source-map "0.80.6" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz#d77c28a6547a8e3b72250f740fcfbd7f5408f8ba" - integrity sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA== +metro-transform-plugins@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.80.6.tgz#f9039384692fc8cd51a67d1cd7c35964e7d374e8" + integrity sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" @@ -7238,28 +7492,28 @@ metro-transform-plugins@0.76.8: "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" -metro-transform-worker@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz#b9012a196cee205170d0c899b8b175b9305acdea" - integrity sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ== +metro-transform-worker@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.80.6.tgz#fc09822ce360eaa929b14408e4af97a2fa8feba6" + integrity sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/parser" "^7.20.0" "@babel/types" "^7.20.0" - babel-preset-fbjs "^3.4.0" - metro "0.76.8" - metro-babel-transformer "0.76.8" - metro-cache "0.76.8" - metro-cache-key "0.76.8" - metro-source-map "0.76.8" - metro-transform-plugins "0.76.8" + metro "0.80.6" + metro-babel-transformer "0.80.6" + metro-cache "0.80.6" + metro-cache-key "0.80.6" + metro-minify-terser "0.80.6" + metro-source-map "0.80.6" + metro-transform-plugins "0.80.6" nullthrows "^1.1.1" -metro@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.8.tgz#ba526808b99977ca3f9ac5a7432fd02a340d13a6" - integrity sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg== +metro@0.80.6, metro@^0.80.3: + version "0.80.6" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.80.6.tgz#11cf77700b8be767f6663c1d6f6ed287dd686535" + integrity sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.20.0" @@ -7269,7 +7523,6 @@ metro@0.76.8: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" accepts "^1.3.7" - async "^3.2.2" chalk "^4.0.0" ci-info "^2.0.0" connect "^3.6.5" @@ -7277,28 +7530,24 @@ metro@0.76.8: denodeify "^1.2.1" error-stack-parser "^2.0.6" graceful-fs "^4.2.4" - hermes-parser "0.12.0" + hermes-parser "0.19.1" image-size "^1.0.2" invariant "^2.2.4" - jest-worker "^27.2.0" + jest-worker "^29.6.3" jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.76.8" - metro-cache "0.76.8" - metro-cache-key "0.76.8" - metro-config "0.76.8" - metro-core "0.76.8" - metro-file-map "0.76.8" - metro-inspector-proxy "0.76.8" - metro-minify-terser "0.76.8" - metro-minify-uglify "0.76.8" - metro-react-native-babel-preset "0.76.8" - metro-resolver "0.76.8" - metro-runtime "0.76.8" - metro-source-map "0.76.8" - metro-symbolicate "0.76.8" - metro-transform-plugins "0.76.8" - metro-transform-worker "0.76.8" + metro-babel-transformer "0.80.6" + metro-cache "0.80.6" + metro-cache-key "0.80.6" + metro-config "0.80.6" + metro-core "0.80.6" + metro-file-map "0.80.6" + metro-resolver "0.80.6" + metro-runtime "0.80.6" + metro-source-map "0.80.6" + metro-symbolicate "0.80.6" + metro-transform-plugins "0.80.6" + metro-transform-worker "0.80.6" mime-types "^2.1.27" node-fetch "^2.2.0" nullthrows "^1.1.1" @@ -7323,7 +7572,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -7433,14 +7682,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: +minipass@3.3.6, minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -7539,10 +7781,10 @@ nanoid@3.3.4, nanoid@^3.1.15: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== native-base-shoutem-theme@0.3.1: version "0.3.1" @@ -7687,6 +7929,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" @@ -7956,21 +8203,16 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -ob1@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.8.tgz#ac4c459465b1c0e2c29aaa527e09fc463d3ffec8" - integrity sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g== +ob1@0.80.6: + version "0.80.6" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.6.tgz#61d7881f458333ed2a73b90cea4aa62f8ca9e045" + integrity sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -8036,6 +8278,14 @@ open@^6.2.0: dependencies: is-wsl "^1.1.0" +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.0.4, open@^8.3.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -8075,7 +8325,7 @@ opn@4.0.2: object-assign "^4.0.1" pinkie-promise "^2.0.0" -ora@3.4.0: +ora@3.4.0, ora@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== @@ -8146,7 +8396,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -8256,11 +8506,6 @@ password-prompt@^1.1.2: ansi-escapes "^4.3.2" cross-spawn "^7.0.3" -path-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8323,6 +8568,11 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" + integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -8359,13 +8609,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - plist@^3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" @@ -8384,12 +8627,12 @@ pngjs@^3.3.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== -postcss@~8.4.21: - version "8.4.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" - integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== +postcss@~8.4.32: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== dependencies: - nanoid "^3.3.6" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -8413,21 +8656,12 @@ pretty-format@^26.5.2, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" - integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/schemas" "^29.4.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" - integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== - dependencies: - "@jest/schemas" "^29.6.0" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -8500,7 +8734,7 @@ promise@^8.3.0: dependencies: asap "~2.0.6" -prompts@2.4.2, prompts@^2.3.2, prompts@^2.4.0: +prompts@2.4.2, prompts@^2.3.2, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -8515,7 +8749,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@*, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -8599,13 +8833,6 @@ qrcode-terminal@0.12.0, qrcode-terminal@^0.12.0: resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -8635,11 +8862,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -8664,16 +8886,6 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - rc@~1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -8692,10 +8904,10 @@ react-addons-shallow-compare@15.6.2: fbjs "^0.8.4" object-assign "^4.1.0" -react-devtools-core@^4.27.2: - version "4.28.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.0.tgz#3fa18709b24414adddadac33b6b9cea96db60f2f" - integrity sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg== +react-devtools-core@^4.27.7: + version "4.28.5" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" + integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== dependencies: shell-quote "^1.6.1" ws "^7" @@ -8771,10 +8983,10 @@ react-native-elements@^3.4.2: react-native-ratings "8.0.4" react-native-size-matters "^0.3.1" -react-native-gesture-handler@~2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.12.0.tgz#59ca9d97e4c71f70b9c258f14a1a081f4c689976" - integrity sha512-rr+XwVzXAVpY8co25ukvyI38fKCxTQjz7WajeZktl8qUPdh1twnSExgpT47DqDi4n+m+OiJPAnHfZOkqqAQMOg== +react-native-gesture-handler@~2.14.0: + version "2.14.1" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.14.1.tgz#930640231024b7921435ab476aa501dd4a6b2e01" + integrity sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA== dependencies: "@egjs/hammerjs" "^2.0.17" hoist-non-react-statics "^3.3.0" @@ -8787,12 +8999,12 @@ react-native-iphone-x-helper@^1.0.3, react-native-iphone-x-helper@^1.3.0: resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010" integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg== -react-native-maps@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-1.7.1.tgz#e0b9d68542b4b59b5ca3df375ada7c860fb41f2e" - integrity sha512-CHVLzL+Q2jiUGgbt4/vosxVI1SukWyaLGjD62VLgR/wZpnH4Umi9ql1bmKDPWcfj2C1QZwMU0Yc7rXTbvZUIiw== +react-native-maps@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-1.10.0.tgz#1b78270473f4caadc5ff8e8400285b6db9f14e12" + integrity sha512-Zs6lHZucEijTwkRVFyInMbPVkJ2UudDEI2fJPc8ArdzdnwDFAdL6OagqTjNRZyI1DBPHRihazfIWpy2+X1VwLg== dependencies: - "@types/geojson" "^7946.0.10" + "@types/geojson" "^7946.0.13" react-native-ratings@8.0.4: version "8.0.4" @@ -8801,10 +9013,10 @@ react-native-ratings@8.0.4: dependencies: lodash "^4.17.15" -react-native-reanimated@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.6.1.tgz#5add41efafac6d0befd9786e752e7f26dbe903b7" - integrity sha512-F4vG9Yf9PKmE3GaWtVGUpzj3SM6YY2cx1yRHCwiMd1uY7W0gU017LfcVUorboJnj0y5QZqEriEK1Usq2Y8YZqg== +react-native-reanimated@~3.6.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.6.3.tgz#859cf2320e37c80e3a21e19db24f82c34d6d3ded" + integrity sha512-2KkkPozoIvDbJcHuf8qeyoLROXQxizSi+2CTCkuNVkVZOxxY4B0Omvgq61aOQhSZUh/649x1YHoAaTyGMGDJUw== dependencies: "@babel/plugin-transform-object-assign" "^7.16.7" "@babel/preset-typescript" "^7.16.7" @@ -8838,10 +9050,10 @@ react-native-router-flux@^4.3.1: react-navigation-tabs "^2.10.1" remove "^0.1.5" -react-native-safe-area-context@4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.6.3.tgz#f06cfea05b1c4b018aa9758667a109f619c62b55" - integrity sha512-3CeZM9HFXkuqiU9HqhOQp1yxhXw6q99axPWrT+VJkITd67gnPSU03+U27Xk2/cr9XrLUnakM07kj7H0hdPnFiQ== +react-native-safe-area-context@4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.8.2.tgz#e6b3d8acf3c6afcb4b5db03a97f9c37df7668f65" + integrity sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ== react-native-safe-area-view@^0.14.9: version "0.14.9" @@ -8850,17 +9062,10 @@ react-native-safe-area-view@^0.14.9: dependencies: hoist-non-react-statics "^2.3.1" -react-native-safe-modules@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz#f5f29bb9d09d17581193843d4173ad3054f74890" - integrity sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA== - dependencies: - dedent "^0.6.0" - -react-native-screens@~3.22.0: - version "3.22.1" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.22.1.tgz#b0eb0696dbf1f9a852061cc71c0f8cdb95ed8e53" - integrity sha512-ffzwUdVKf+iLqhWSzN5DXBm0s2w5sN0P+TaHHPAx42LT7+DT0g8PkHT1QDvxpR5vCEPSS1i3EswyVK4HCuhTYg== +react-native-screens@~3.29.0: + version "3.29.0" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.29.0.tgz#1dee0326defbc1d4ef4e68287abb32a8e6b76b29" + integrity sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg== dependencies: react-freeze "^1.0.0" warn-once "^0.1.0" @@ -8893,10 +9098,10 @@ react-native-svg-uri@^1.2.3: dependencies: xmldom "^0.1.22" -react-native-svg@13.9.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.9.0.tgz#8df8a690dd00362601f074dec5d3a86dd0f99c7f" - integrity sha512-Ey18POH0dA0ob/QiwCBVrxIiwflhYuw0P0hBlOHeY4J5cdbs8ngdKHeWC/Kt9+ryP6fNoEQ1PUgPYw2Bs/rp5Q== +react-native-svg@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-14.1.0.tgz#7903bddd3c71bf3a8a503918253c839e6edaa724" + integrity sha512-HeseElmEk+AXGwFZl3h56s0LtYD9HyGdrpg8yd9QM26X+d7kjETrRQ9vCjtxuT5dCZEIQ5uggU1dQhzasnsCWA== dependencies: css-select "^5.1.0" css-tree "^1.1.3" @@ -8934,59 +9139,61 @@ react-native-vector-icons@^8.1.0: prop-types "^15.7.2" yargs "^16.1.1" -react-native-view-shot@3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.7.0.tgz#0c773500e7aac5d115a9dee3b83fa5156c950ed0" - integrity sha512-tQruLNjs7Ee/p6xUgJqF6glnatHaq/UqaIQ6KdYIFG0+XpUZdhqmEM4WMLsYfayfFEhdlF86G1S3eXMOfDNzFg== +react-native-view-shot@3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.8.0.tgz#1aa1905f0e79428ca32bf80c16fd4abc719c600b" + integrity sha512-4cU8SOhMn3YQIrskh+5Q8VvVRxQOu8/s1M9NAL4z5BY1Rm0HXMWkQJ4N0XsZ42+Yca+y86ISF3LC5qdLPvPuiA== dependencies: html2canvas "^1.4.1" -react-native-webview@^13.6.3: - version "13.6.3" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.6.3.tgz#f3d26e942ef5cc5a07547f2e47903aa81a68e25e" - integrity sha512-IApO0JSj0uAWsBGKWagyfgDYoX29piiMYLmkHtRjKeL1rIVjLoR/bMe7KJ/0X47y86b//a6u3cYQtphyay+F2A== +react-native-webview@13.6.4: + version "13.6.4" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.6.4.tgz#6ef66db9dd78b2a2ae1b4fe79e1e3597aa29186e" + integrity sha512-AdgmaMBHPcyERTvng9eSGgHX6AleyUlSusWAxngSOSdiYGgHW81T6C5A8j/ImJAF9oZg0bQDxp43Hu56tzENZQ== dependencies: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native@0.72.6: - version "0.72.6" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.6.tgz#9f8d090694907e2f83af22e115cc0e4a3d5fa626" - integrity sha512-RafPY2gM7mcrFySS8TL8x+TIO3q7oAlHpzEmC7Im6pmXni6n1AuufGaVh0Narbr1daxstw7yW7T9BKW5dpVc2A== +react-native@0.73.4: + version "0.73.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.4.tgz#81e07d4e7b6308c4649d5fa24038c0e87b17f2e1" + integrity sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg== dependencies: - "@jest/create-cache-key-function" "^29.2.1" - "@react-native-community/cli" "11.3.7" - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-platform-ios" "11.3.7" - "@react-native/assets-registry" "^0.72.0" - "@react-native/codegen" "^0.72.7" - "@react-native/gradle-plugin" "^0.72.11" - "@react-native/js-polyfills" "^0.72.1" - "@react-native/normalize-colors" "^0.72.0" - "@react-native/virtualized-lists" "^0.72.8" + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.16" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" abort-controller "^3.0.0" anser "^1.4.9" - base64-js "^1.1.2" - deprecated-react-native-prop-types "4.1.0" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.5" + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - jest-environment-node "^29.2.1" + jest-environment-node "^29.6.3" jsc-android "^250231.0.0" memoize-one "^5.0.0" - metro-runtime "0.76.8" - metro-source-map "0.76.8" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" mkdirp "^0.5.1" nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.3.0" - react-devtools-core "^4.27.2" - react-refresh "^0.4.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" react-shallow-renderer "^16.15.0" regenerator-runtime "^0.13.2" scheduler "0.24.0-canary-efb381bbf-20230505" stacktrace-parser "^0.1.10" - use-sync-external-store "^1.0.0" whatwg-fetch "^3.0.0" ws "^6.2.2" yargs "^17.6.2" @@ -9022,10 +9229,10 @@ react-navigation@^4.x: "@react-navigation/core" "^3.7.9" "@react-navigation/native" "^3.8.4" -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== +react-refresh@0.14.0, react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-shallow-renderer@^16.15.0: version "16.15.0" @@ -9249,16 +9456,6 @@ requireg@^0.2.2: rc "~1.2.7" resolve "~1.7.1" -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -reselect@^4.1.7: - version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== - resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -9269,6 +9466,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== +resolve.exports@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + resolve@^1.14.2: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" @@ -9278,12 +9480,12 @@ resolve@^1.14.2: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== +resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -9426,6 +9628,11 @@ semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" @@ -9467,13 +9674,6 @@ send@0.18.0, send@^0.18.0: chainsaw ">=0.0.7 <0.1" hashish ">=0.0.2 <0.1" -serialize-error@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-6.0.0.tgz#ccfb887a1dd1c48d6d52d7863b92544331fd752b" - integrity sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA== - dependencies: - type-fest "^0.12.0" - serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" @@ -9540,15 +9740,6 @@ shell-quote@^1.6.1, shell-quote@^1.7.3: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -9594,6 +9785,11 @@ slugify@^1.3.4: resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8" integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ== +slugify@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" + integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw== + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -9628,7 +9824,7 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@^0.5.16, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@~0.5.20, source-map-support@~0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9863,6 +10059,19 @@ structured-headers@^0.4.1: resolved "https://registry.yarnpkg.com/structured-headers/-/structured-headers-0.4.1.tgz#77abd9410622c6926261c09b9d16cf10592694d1" integrity sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg== +sucrase@3.34.0: + version "3.34.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + sucrase@^3.20.0: version "3.29.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" @@ -10161,11 +10370,6 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" - integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== - type-fest@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" @@ -10186,14 +10390,6 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -10211,14 +10407,6 @@ ua-parser-js@^0.7.33: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" integrity sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g== -uglify-es@^3.1.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -10285,7 +10473,7 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -10303,6 +10491,14 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -10315,14 +10511,6 @@ url-join@4.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" integrity sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA== -url-parse@^1.5.9: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -10331,11 +10519,6 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -10369,7 +10552,7 @@ uuid@9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -10457,6 +10640,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -10481,6 +10669,15 @@ whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-url-without-unicode@8.0.0-3: + version "8.0.0-3" + resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" + integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== + dependencies: + buffer "^5.4.3" + punycode "^2.1.1" + webidl-conversions "^5.0.0" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From 18a6851966070597ed36338be8abdccc2ed063fc Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 09:09:03 +0000 Subject: [PATCH 54/66] =?UTF-8?q?felica-reader=E3=82=92=E8=87=AA=E5=88=86?= =?UTF-8?q?=E3=81=AEmodules=E3=81=A7=E5=86=8D=E4=BD=9C=E6=88=90=E3=80=81?= =?UTF-8?q?=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82=E3=82=92=E6=9C=80=E9=81=A9?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/settings.js | 2 +- .../expo-felica-reader/android/build.gradle | 92 +++++++++++++++++++ .../android/src/main/AndroidManifest.xml | 2 + .../felicareader/ExpoFelicaReaderModule.kt | 34 +++++++ .../expo-module.config.json | 9 ++ .../ios/ExpoFelicaReader.podspec | 27 ++++++ .../ios/ExpoFelicaReaderModule.swift | 70 ++++++++++++++ .../src/ExpoFelicaReaderModule.ts | 5 + modules/expo-felica-reader/src/index.ts | 5 + package.json | 1 - yarn.lock | 5 - 11 files changed, 245 insertions(+), 7 deletions(-) create mode 100644 modules/expo-felica-reader/android/build.gradle create mode 100644 modules/expo-felica-reader/android/src/main/AndroidManifest.xml create mode 100644 modules/expo-felica-reader/android/src/main/java/expo/modules/felicareader/ExpoFelicaReaderModule.kt create mode 100644 modules/expo-felica-reader/expo-module.config.json create mode 100644 modules/expo-felica-reader/ios/ExpoFelicaReader.podspec create mode 100644 modules/expo-felica-reader/ios/ExpoFelicaReaderModule.swift create mode 100644 modules/expo-felica-reader/src/ExpoFelicaReaderModule.ts create mode 100644 modules/expo-felica-reader/src/index.ts diff --git a/components/settings.js b/components/settings.js index dabad32..9373ec3 100644 --- a/components/settings.js +++ b/components/settings.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from "react"; import { View, Text, TouchableOpacity, Linking } from "react-native"; -import * as ExpoFelicaReader from "expo-felica-reader"; +import * as ExpoFelicaReader from "../modules/expo-felica-reader/src"; import * as Updates from "expo-updates"; import StatusbarDetect from "../StatusbarDetect"; import { AS } from "../storageControl"; diff --git a/modules/expo-felica-reader/android/build.gradle b/modules/expo-felica-reader/android/build.gradle new file mode 100644 index 0000000..888b263 --- /dev/null +++ b/modules/expo-felica-reader/android/build.gradle @@ -0,0 +1,92 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'maven-publish' + +group = 'expo.modules.felicareader' +version = '0.2.0' + +buildscript { + def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle") + if (expoModulesCorePlugin.exists()) { + apply from: expoModulesCorePlugin + applyKotlinExpoModulesCorePlugin() + } + + // Simple helper that allows the root project to override versions declared by this library. + ext.safeExtGet = { prop, fallback -> + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback + } + + // Ensures backward compatibility + ext.getKotlinVersion = { + if (ext.has("kotlinVersion")) { + ext.kotlinVersion() + } else { + ext.safeExtGet("kotlinVersion", "1.8.10") + } + } + + repositories { + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}") + } +} + +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + from components.release + } + } + repositories { + maven { + url = mavenLocal().url + } + } + } +} + +android { + compileSdkVersion safeExtGet("compileSdkVersion", 33) + + def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION + if (agpVersion.tokenize('.')[0].toInteger() < 8) { + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.majorVersion + } + } + + namespace "expo.modules.felicareader" + defaultConfig { + minSdkVersion safeExtGet("minSdkVersion", 21) + targetSdkVersion safeExtGet("targetSdkVersion", 34) + versionCode 2 + versionName "0.2.0" + } + lintOptions { + abortOnError false + } + publishing { + singleVariant("release") { + withSourcesJar() + } + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation project(':expo-modules-core') + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}" +} diff --git a/modules/expo-felica-reader/android/src/main/AndroidManifest.xml b/modules/expo-felica-reader/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..bdae66c --- /dev/null +++ b/modules/expo-felica-reader/android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/modules/expo-felica-reader/android/src/main/java/expo/modules/felicareader/ExpoFelicaReaderModule.kt b/modules/expo-felica-reader/android/src/main/java/expo/modules/felicareader/ExpoFelicaReaderModule.kt new file mode 100644 index 0000000..781ac3e --- /dev/null +++ b/modules/expo-felica-reader/android/src/main/java/expo/modules/felicareader/ExpoFelicaReaderModule.kt @@ -0,0 +1,34 @@ +package expo.modules.felicareader + +import expo.modules.kotlin.modules.Module +import expo.modules.kotlin.modules.ModuleDefinition +import expo.modules.kotlin.Promise +import android.nfc.NfcAdapter +import android.nfc.Tag + +class NfcReaderCallback(private val promise: Promise) : NfcAdapter.ReaderCallback { + override fun onTagDiscovered(tag: Tag?) { + val idmString = tag?.id?.joinToString("") { "%02x".format(it) } + promise.resolve(idmString) + } +} + +class ExpoFelicaReaderModule : Module() { + var nfcAdapter: NfcAdapter? = null + override fun definition() = ModuleDefinition { + Name("ExpoFelicaReader") + + AsyncFunction("scan") { promise: Promise -> + nfcAdapter?.enableReaderMode( + appContext.currentActivity, + NfcReaderCallback(promise), + NfcAdapter.FLAG_READER_NFC_F, + null + ) + } + + OnCreate { + nfcAdapter = NfcAdapter.getDefaultAdapter(appContext.reactContext) + } + } +} \ No newline at end of file diff --git a/modules/expo-felica-reader/expo-module.config.json b/modules/expo-felica-reader/expo-module.config.json new file mode 100644 index 0000000..6952ae1 --- /dev/null +++ b/modules/expo-felica-reader/expo-module.config.json @@ -0,0 +1,9 @@ +{ + "platforms": ["ios", "tvos", "android", "web"], + "ios": { + "modules": ["ExpoFelicaReaderModule"] + }, + "android": { + "modules": ["expo.modules.felicareader.ExpoFelicaReaderModule"] + } +} diff --git a/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec b/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec new file mode 100644 index 0000000..e19654c --- /dev/null +++ b/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec @@ -0,0 +1,27 @@ +require 'json' + +package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json'))) + +Pod::Spec.new do |s| + s.name = 'ExpoFelicaReader' + s.version = package['version'] + s.summary = package['description'] + s.description = package['description'] + s.license = package['license'] + s.author = package['author'] + s.homepage = package['homepage'] + s.platform = :ios, '13.0' + s.swift_version = '5.4' + s.source = { git: 'https://github.com/7nohe/expo-felica-reader' } + s.static_framework = true + + s.dependency 'ExpoModulesCore' + + # Swift/Objective-C compatibility + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'SWIFT_COMPILATION_MODE' => 'wholemodule' + } + + s.source_files = "**/*.{h,m,swift}" +end \ No newline at end of file diff --git a/modules/expo-felica-reader/ios/ExpoFelicaReaderModule.swift b/modules/expo-felica-reader/ios/ExpoFelicaReaderModule.swift new file mode 100644 index 0000000..6207600 --- /dev/null +++ b/modules/expo-felica-reader/ios/ExpoFelicaReaderModule.swift @@ -0,0 +1,70 @@ +import ExpoModulesCore +import CoreNFC + +public class ExpoFelicaReaderModule: Module { + var session: NfcSession? + var semaphore: DispatchSemaphore? + public func definition() -> ModuleDefinition { + Name("ExpoFelicaReader") + + AsyncFunction("scan") { (promise: Promise) in + session?.startSession() + DispatchQueue.global(qos: .background).async { + self.semaphore?.wait() + promise.resolve(self.session?.message) + } + } + + OnCreate { + semaphore = DispatchSemaphore(value: 0) + session = NfcSession(semaphore: semaphore!) + } + } +} + +class NfcSession: NSObject, NFCTagReaderSessionDelegate { + var session: NFCTagReaderSession? + let semaphore: DispatchSemaphore + var message: String? + + init (semaphore: DispatchSemaphore) { + self.semaphore = semaphore + } + + func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) { + print("tagReaderSessionDidBecomeActive") + } + + func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { + print("Error: \(error.localizedDescription)") + self.semaphore.signal() + self.session = nil + } + + func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) { + let tag = tags.first! + session.connect(to: tag) { error in + if nil != error { + session.invalidate(errorMessage: "Error!") + self.semaphore.signal() + return + } + guard case .feliCa(let feliCaTag) = tag else { + session.invalidate(errorMessage: "This is not FeliCa!") + self.semaphore.signal() + return + } + let idm = feliCaTag.currentIDm.map { String(format: "%.2hhx", $0) }.joined() + self.message = idm + session.alertMessage = "Success!" + session.invalidate() + self.semaphore.signal() + } + } + + func startSession() { + self.session = NFCTagReaderSession(pollingOption: [.iso14443, .iso15693, .iso18092], delegate: self, queue: nil) + session?.alertMessage = "Touch your FeliCa!" + session?.begin() + } +} \ No newline at end of file diff --git a/modules/expo-felica-reader/src/ExpoFelicaReaderModule.ts b/modules/expo-felica-reader/src/ExpoFelicaReaderModule.ts new file mode 100644 index 0000000..b74e342 --- /dev/null +++ b/modules/expo-felica-reader/src/ExpoFelicaReaderModule.ts @@ -0,0 +1,5 @@ +import { requireNativeModule } from 'expo-modules-core'; + +// It loads the native module object from the JSI or falls back to +// the bridge module (from NativeModulesProxy) if the remote debugger is on. +export default requireNativeModule('ExpoFelicaReader'); diff --git a/modules/expo-felica-reader/src/index.ts b/modules/expo-felica-reader/src/index.ts new file mode 100644 index 0000000..0b3a437 --- /dev/null +++ b/modules/expo-felica-reader/src/index.ts @@ -0,0 +1,5 @@ +import ExpoFelicaReaderModule from "./ExpoFelicaReaderModule"; + +export async function scan(): Promise { + return await ExpoFelicaReaderModule.scan(); +} diff --git a/package.json b/package.json index b337ffa..862f402 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "expo": "^50.0.11", "expo-dev-client": "~3.3.9", "expo-device": "~5.9.3", - "expo-felica-reader": "^0.1.0", "expo-font": "~11.10.3", "expo-location": "~16.5.5", "expo-notifications": "~0.27.6", diff --git a/yarn.lock b/yarn.lock index 55b07dc..8445880 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5246,11 +5246,6 @@ expo-eas-client@~0.11.0: resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.11.2.tgz#2e8d6f347dcea38b58c2b6a21db7c632383fb1ba" integrity sha512-SY7rVFxb4ut/OMTgR7A39Jg+8+hXwQNRpZd+RBpB+B5XV2STj/pWXHnGFhBayEF4umI4SxrOvisY90rlPWVO9Q== -expo-felica-reader@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/expo-felica-reader/-/expo-felica-reader-0.1.0.tgz#968a9bb93d1f040f8e8dfbc899fba0214327c8b0" - integrity sha512-uDv5/eeaCpMOJ3R3supaE2m7VJZGaDE6C3AdWf3Y1pgVzteI3GUah5+doFpadf6CSjytznix5U1pTLbeSHeuUw== - expo-file-system@~16.0.0, expo-file-system@~16.0.8: version "16.0.8" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.8.tgz#13c79a8e06e42a8e76e9297df6920597a011d989" From b0822ba5fb5b1110291b3d30358ef1d9c2ddde11 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Mar 2024 13:58:07 +0000 Subject: [PATCH 55/66] =?UTF-8?q?=E7=B4=B0=E3=81=8B=E3=81=84=E3=83=90?= =?UTF-8?q?=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 4 +- components/AndroidWidget/HelloWidget.jsx | 21 +- howto.js | 4 +- .../ios/ExpoFelicaReader.podspec | 14 +- package.json | 4 +- tsconfig.json | 4 + yarn.lock | 258 +++++++++++++++++- 7 files changed, 292 insertions(+), 17 deletions(-) create mode 100644 tsconfig.json diff --git a/App.js b/App.js index da40942..d561ab3 100644 --- a/App.js +++ b/App.js @@ -135,7 +135,7 @@ export function AppContainer() { tabBarLabel: "リンク", headerTransparent: true, gestureEnabled: true, - tabBarIcon: initIcon("ios-radio", "Ionicons"), + tabBarIcon: initIcon("radio", "Ionicons"), }} > {(props) => } @@ -146,7 +146,7 @@ export function AppContainer() { tabBarLabel: "運行情報", headerTransparent: true, gestureEnabled: true, - tabBarIcon: initIcon("md-train", "Ionicons"), + tabBarIcon: initIcon("train", "Ionicons"), tabBarBadge: areaInfo ? "!" : undefined, }} > diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/HelloWidget.jsx index 1e73708..19485ad 100644 --- a/components/AndroidWidget/HelloWidget.jsx +++ b/components/AndroidWidget/HelloWidget.jsx @@ -1,5 +1,9 @@ import React from "react"; -import { FlexWidget, TextWidget } from "react-native-android-widget"; +import { + FlexWidget, + TextWidget, + ListWidget, +} from "react-native-android-widget"; export function HelloWidget({ time, delayString }) { return ( @@ -43,8 +47,14 @@ export function HelloWidget({ time, delayString }) { }} /> - {delayString ? ( delayString.map((d) => { @@ -56,6 +66,7 @@ export function HelloWidget({ time, delayString }) { width: "match_parent", backgroundColor: "#ffffff", }} + clickAction="WIDGET_CLICK" key={data[1]} > )} - + ); } diff --git a/howto.js b/howto.js index 228cb64..e36d9a8 100644 --- a/howto.js +++ b/howto.js @@ -5,8 +5,8 @@ import { WebView } from "react-native-webview"; export default ({ navigation: { navigate }, route }) => { const { info, goTo, useShow } = route.params; const onExit = () => { - navigate(goTo); - useShow(); + navigate(goTo || "Apps"); + useShow && useShow(); }; return ( diff --git a/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec b/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec index e19654c..5d0985d 100644 --- a/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec +++ b/modules/expo-felica-reader/ios/ExpoFelicaReader.podspec @@ -1,15 +1,15 @@ require 'json' -package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json'))) +package = JSON.parse(File.read(File.join(__dir__, '../../../', 'package.json'))) Pod::Spec.new do |s| s.name = 'ExpoFelicaReader' - s.version = package['version'] - s.summary = package['description'] - s.description = package['description'] - s.license = package['license'] - s.author = package['author'] - s.homepage = package['homepage'] + s.version = "0.1.0" + s.summary = "A module for reading Felica cards in ExpoKit." + s.description = "Expo FeliCa reader module" + s.license = "MIT" + s.author = "Daiki Urata (https://github.com/7nohe)" + s.homepage = "https://github.com/7nohe/expo-felica-reader#readme" s.platform = :ios, '13.0' s.swift_version = '5.4' s.source = { git: 'https://github.com/7nohe/expo-felica-reader' } diff --git a/package.json b/package.json index 862f402..361f45a 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "eject": "expo eject" }, "dependencies": { + "@expo/ngrok": "^4.1.0", "@expo/vector-icons": "^14.0.0", "@react-native-async-storage/async-storage": "1.21.0", "@react-native-community/masked-view": "0.1.10", @@ -49,7 +50,8 @@ "react-native-svg-uri": "^1.2.3", "react-native-vector-icons": "^8.1.0", "react-native-view-shot": "3.8.0", - "react-native-webview": "13.6.4" + "react-native-webview": "13.6.4", + "typescript": "^5.3.0" }, "devDependencies": { "babel-preset-expo": "^10.0.0" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0e6371f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,4 @@ +{ + "compilerOptions": {}, + "extends": "expo/tsconfig.base" +} diff --git a/yarn.lock b/yarn.lock index 8445880..33bd9f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1852,6 +1852,88 @@ nullthrows "^1.1.1" structured-headers "^0.4.1" +"@expo/ngrok-bin-darwin-arm64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-darwin-arm64/-/ngrok-bin-darwin-arm64-2.3.41.tgz#d6b4a15be00f1166dc1d8dc99d0c773dc5e72048" + integrity sha512-TPf95xp6SkvbRONZjltTOFcCJbmzAH7lrQ36Dv+djrOckWGPVq4HCur48YAeiGDqspmFEmqZ7ykD5c/bDfRFOA== + +"@expo/ngrok-bin-darwin-x64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-darwin-x64/-/ngrok-bin-darwin-x64-2.3.41.tgz#ff006f92c01887070d2302c67455c53d43ccb9f1" + integrity sha512-29QZHfX4Ec0p0pQF5UrqiP2/Qe7t2rI96o+5b8045VCEl9AEAKHceGuyo+jfUDR4FSQBGFLSDb06xy8ghL3ZYA== + +"@expo/ngrok-bin-freebsd-ia32@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-freebsd-ia32/-/ngrok-bin-freebsd-ia32-2.3.41.tgz#c488ce27823c199e2876eb80c5049856a0541b1d" + integrity sha512-YYXgwNZ+p0aIrwgb+1/RxJbsWhGEzBDBhZulKg1VB7tKDAd2C8uGnbK1rOCuZy013iOUsJDXaj9U5QKc13iIXw== + +"@expo/ngrok-bin-freebsd-x64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-freebsd-x64/-/ngrok-bin-freebsd-x64-2.3.41.tgz#9e17cf0b4cd76dd1050db40463dfc9fc9b43938c" + integrity sha512-1Ei6K8BB+3etmmBT0tXYC4dyVkJMigT4ELbRTF5jKfw1pblqeXM9Qpf3p8851PTlH142S3bockCeO39rSkOnkg== + +"@expo/ngrok-bin-linux-arm64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-linux-arm64/-/ngrok-bin-linux-arm64-2.3.41.tgz#dc7c761b7f12d8baae997565c360939b34da78f0" + integrity sha512-eC8GA/xPcmQJy4h+g2FlkuQB3lf5DjITy8Y6GyydmPYMByjUYAGEXe0brOcP893aalAzRqbNOAjSuAw1lcCLSQ== + +"@expo/ngrok-bin-linux-arm@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-linux-arm/-/ngrok-bin-linux-arm-2.3.41.tgz#c914a3e86d166e0595d13b3e501535bf441834ca" + integrity sha512-B6+rW/+tEi7ZrKWQGkRzlwmKo7c1WJhNODFBSgkF/Sj9PmmNhBz67mer91S2+6nNt5pfcwLLd61CjtWfR1LUHQ== + +"@expo/ngrok-bin-linux-ia32@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-linux-ia32/-/ngrok-bin-linux-ia32-2.3.41.tgz#5079fc5aa2f886d6e33a25e913ec240be57eac73" + integrity sha512-w5Cy31wSz4jYnygEHS7eRizR1yt8s9TX6kHlkjzayIiRTFRb2E1qD2l0/4T2w0LJpBjM5ZFPaaKqsNWgCUIEow== + +"@expo/ngrok-bin-linux-x64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-linux-x64/-/ngrok-bin-linux-x64-2.3.41.tgz#34c117c14b3d82f6d51cd25df025d9679d866577" + integrity sha512-LcU3MbYHv7Sn2eFz8Yzo2rXduufOvX1/hILSirwCkH+9G8PYzpwp2TeGqVWuO+EmvtBe6NEYwgdQjJjN6I4L1A== + +"@expo/ngrok-bin-sunos-x64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-sunos-x64/-/ngrok-bin-sunos-x64-2.3.41.tgz#8ab01f96344d5c2aae2944009fbea67aed74c022" + integrity sha512-bcOj45BLhiV2PayNmLmEVZlFMhEiiGpOr36BXC0XSL+cHUZHd6uNaS28AaZdz95lrRzGpeb0hAF8cuJjo6nq4g== + +"@expo/ngrok-bin-win32-ia32@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-win32-ia32/-/ngrok-bin-win32-ia32-2.3.41.tgz#b5fbcd49f2ae38fdb4105f8248159dc75c9ba9e3" + integrity sha512-0+vPbKvUA+a9ERgiAknmZCiWA3AnM5c6beI+51LqmjKEM4iAAlDmfXNJ89aAbvZMUtBNwEPHzJHnaM4s2SeBhA== + +"@expo/ngrok-bin-win32-x64@2.3.41": + version "2.3.41" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin-win32-x64/-/ngrok-bin-win32-x64-2.3.41.tgz#91c56b695c9c8d81424a335795e204d7bd011fcf" + integrity sha512-mncsPRaG462LiYrM8mQT8OYe3/i44m3N/NzUeieYpGi8+pCOo8TIC23kR9P93CVkbM9mmXsy3X6hq91a8FWBdA== + +"@expo/ngrok-bin@2.3.42": + version "2.3.42" + resolved "https://registry.yarnpkg.com/@expo/ngrok-bin/-/ngrok-bin-2.3.42.tgz#bcaa9f77ebb2e0f3b9be3ae99dd66d363242a96b" + integrity sha512-kyhORGwv9XpbPeNIrX6QZ9wDVCDOScyTwxeS+ScNmUqYoZqD9LRmEqF7bpDh5VonTsrXgWrGl7wD2++oSHcaTQ== + optionalDependencies: + "@expo/ngrok-bin-darwin-arm64" "2.3.41" + "@expo/ngrok-bin-darwin-x64" "2.3.41" + "@expo/ngrok-bin-freebsd-ia32" "2.3.41" + "@expo/ngrok-bin-freebsd-x64" "2.3.41" + "@expo/ngrok-bin-linux-arm" "2.3.41" + "@expo/ngrok-bin-linux-arm64" "2.3.41" + "@expo/ngrok-bin-linux-ia32" "2.3.41" + "@expo/ngrok-bin-linux-x64" "2.3.41" + "@expo/ngrok-bin-sunos-x64" "2.3.41" + "@expo/ngrok-bin-win32-ia32" "2.3.41" + "@expo/ngrok-bin-win32-x64" "2.3.41" + +"@expo/ngrok@^4.1.0": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@expo/ngrok/-/ngrok-4.1.3.tgz#a3dc692958f3f48a5221e30f4a8c3648c79e8450" + integrity sha512-AESYaROGIGKWwWmUyQoUXcbvaUZjmpecC5buArXxYou+RID813F8T0Y5jQ2HUY49mZpYfJiy9oh4VSN37GgrXA== + dependencies: + "@expo/ngrok-bin" "2.3.42" + got "^11.5.1" + uuid "^3.3.2" + yaml "^1.10.0" + "@expo/osascript@2.0.33", "@expo/osascript@^2.0.31": version "2.0.33" resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.0.33.tgz#e9dcc8da54466c11939074aa71a006024ea884b1" @@ -3201,6 +3283,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -3215,6 +3302,13 @@ dependencies: "@sinonjs/commons" "^2.0.0" +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -3227,6 +3321,16 @@ dependencies: "@types/node" "*" +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/geojson@^7946.0.13": version "7946.0.14" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" @@ -3237,6 +3341,11 @@ resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa" integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" @@ -3256,6 +3365,13 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/long@^4.0.1": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" @@ -3295,6 +3411,13 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" @@ -4038,6 +4161,24 @@ cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: tar "^6.0.2" unique-filename "^1.1.1" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -4311,6 +4452,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -4699,6 +4847,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4729,6 +4884,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -5839,6 +5999,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -5927,6 +6094,23 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +got@^11.5.1: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.8, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -6106,7 +6290,7 @@ html2canvas@^1.4.1: css-line-break "^2.1.0" text-segmentation "^1.0.3" -http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -6157,6 +6341,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -6803,6 +6995,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -6910,6 +7107,13 @@ keychain@1.3.0: resolved "https://registry.yarnpkg.com/keychain/-/keychain-1.3.0.tgz#ccb8ddc64a62f34d541ac25e612186442a432410" integrity sha512-VHdsIWwXNO1l+fqwNdYZ/dDGnaN60RLuOIgMnwL+2kE3woPvxpOpeusjfaMZbTFaQFwGnTTzFbVHqQrDqf1FnQ== +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -7252,6 +7456,11 @@ lottie-react-native@6.5.1: resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-6.5.1.tgz#7986078648d1ff274a704ae3bd979a4c3aa235c6" integrity sha512-pjih71P6qX6Ax5ucUBA+YJO7+fnveI581Bd8LmYeARm3spq3AnoGzEkrWaieM8odnK6WI4d5dwEJsxge/QjFPw== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7599,6 +7808,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -7977,6 +8196,11 @@ normalize-url@^2.0.1: query-string "^5.0.1" sort-keys "^2.0.0" +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + npm-audit-report@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-2.1.5.tgz#a5b8850abe2e8452fce976c8960dd432981737b5" @@ -8379,6 +8603,11 @@ osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8869,6 +9098,11 @@ queue@6.0.2: dependencies: inherits "~2.0.3" +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + raf@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -9451,6 +9685,11 @@ requireg@^0.2.2: rc "~1.2.7" resolve "~1.7.1" +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -9491,6 +9730,13 @@ resolve@~1.7.1: dependencies: path-parse "^1.0.5" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -10392,6 +10638,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript@^5.3.0: + version "5.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" + integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== + ua-parser-js@^0.7.30: version "0.7.33" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" @@ -10865,6 +11116,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yaml@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" From 7a9d30b128eb9d8ed5b49115074d1e777a652ba5 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 05:49:35 +0000 Subject: [PATCH 56/66] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E7=95=AA=E5=8F=B7=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88?= =?UTF-8?q?=E3=80=81=E8=A1=A8=E7=A4=BA=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=8C=E9=81=85=E3=81=84=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfoCore.js | 2 +- components/settings.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 8df6e43..bd4d321 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -217,7 +217,7 @@ export const EachTrainInfoCore = ({ //0.1秒待機してから開く setTimeout(() => { SheetManager.show("EachTrainInfo", { payload }); - }, 1); + }, 2); }); } }; diff --git a/components/settings.js b/components/settings.js index 9373ec3..aae81ac 100644 --- a/components/settings.js +++ b/components/settings.js @@ -170,7 +170,7 @@ export default function Setting(props) { textAlignVertical: "center", }} > - 内部バージョン: 4.6.4 + 内部バージョン: 5.0 From de37b3698c8fa55edaa704759bb77a74443a5385 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 06:35:15 +0000 Subject: [PATCH 57/66] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AE=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/AndroidWidget/HelloWidget.jsx | 21 ++++++++----------- .../HelloWidgetPreviewScreen.jsx | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/HelloWidget.jsx index 19485ad..472aa0d 100644 --- a/components/AndroidWidget/HelloWidget.jsx +++ b/components/AndroidWidget/HelloWidget.jsx @@ -69,18 +69,9 @@ export function HelloWidget({ time, delayString }) { clickAction="WIDGET_CLICK" key={data[1]} > - - - + + + ); }) @@ -98,3 +89,9 @@ export function HelloWidget({ time, delayString }) { ); } + +const FlexText = ({ flex, text }) => ( + + + +); diff --git a/components/AndroidWidget/HelloWidgetPreviewScreen.jsx b/components/AndroidWidget/HelloWidgetPreviewScreen.jsx index c2fa761..6c2de53 100644 --- a/components/AndroidWidget/HelloWidgetPreviewScreen.jsx +++ b/components/AndroidWidget/HelloWidgetPreviewScreen.jsx @@ -9,7 +9,7 @@ export function HelloWidgetPreviewScreen() { } - width={320} + width={200} height={200} /> From 45b64f28cb31f61423bf6ccf51a71aadffef32fb Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 06:39:23 +0000 Subject: [PATCH 58/66] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=8D=E3=83=B3=E3=83=88=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 22 ++--- .../{HelloWidget.jsx => TraInfoEXWidget.jsx} | 2 +- .../AndroidWidget/widget-task-handler.jsx | 13 +-- components/settings.js | 90 +++++++++---------- 4 files changed, 54 insertions(+), 73 deletions(-) rename components/AndroidWidget/{HelloWidget.jsx => TraInfoEXWidget.jsx} (97%) diff --git a/app.json b/app.json index 0ff9455..8ee7df3 100644 --- a/app.json +++ b/app.json @@ -3,10 +3,7 @@ "name": "JR四国運行状況", "slug": "jrshikoku", "privacy": "public", - "platforms": [ - "ios", - "android" - ], + "platforms": ["ios", "android"], "plugins": [ [ "react-native-android-widget", @@ -15,8 +12,8 @@ { "name": "JR_shikoku_train_info", "label": "JR四国列車遅延速報EX", - "minWidth": "320dp", - "minHeight": "120dp", + "minWidth": "70dp", + "minHeight": "50dp", "description": "JR四国列車遅延速報EXのウィジェットです。30分ごとに自動更新します。タッチすると強制更新します。", "previewImage": "./assets/icon.png", "updatePeriodMillis": 1800000, @@ -39,9 +36,7 @@ "fallbackToCacheTimeout": 0, "url": "https://u.expo.dev/398abf60-57a7-11e9-970c-8f04356d08bf" }, - "assetBundlePatterns": [ - "**/*" - ], + "assetBundlePatterns": ["**/*"], "ios": { "buildNumber": "31", "supportsTablet": true, @@ -57,18 +52,13 @@ ] }, "entitlements": { - "com.apple.developer.nfc.readersession.formats": [ - "TAG" - ] + "com.apple.developer.nfc.readersession.formats": ["TAG"] } }, "android": { "package": "jrshikokuinfo.xprocess.hrkn", "versionCode": 20, - "permissions": [ - "ACCESS_FINE_LOCATION", - "NFC" - ], + "permissions": ["ACCESS_FINE_LOCATION", "NFC"], "googleServicesFile": "./google-services.json", "config": { "googleMaps": { diff --git a/components/AndroidWidget/HelloWidget.jsx b/components/AndroidWidget/TraInfoEXWidget.jsx similarity index 97% rename from components/AndroidWidget/HelloWidget.jsx rename to components/AndroidWidget/TraInfoEXWidget.jsx index 472aa0d..6a8e9e1 100644 --- a/components/AndroidWidget/HelloWidget.jsx +++ b/components/AndroidWidget/TraInfoEXWidget.jsx @@ -5,7 +5,7 @@ import { ListWidget, } from "react-native-android-widget"; -export function HelloWidget({ time, delayString }) { +export function TraInfoEXWidget({ time, delayString }) { return ( ); break; - break; - - break; - case "WIDGET_DELETED": // Not needed for now break; - - break; - default: break; } diff --git a/components/settings.js b/components/settings.js index aae81ac..98d346f 100644 --- a/components/settings.js +++ b/components/settings.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useLayoutEffect } from "react"; import { View, Text, TouchableOpacity, Linking } from "react-native"; import * as ExpoFelicaReader from "../modules/expo-felica-reader/src"; import * as Updates from "expo-updates"; @@ -17,11 +17,7 @@ export default function Setting(props) { const [usePDFView, setUsePDFView] = useState(false); const [trainMenu, setTrainMenu] = useState(false); const [trainPosition, setTrainPosition] = useState(false); - const testNFC = async () => { - const resulit = await ExpoFelicaReader.scan(); - alert(resulit); - }; - useEffect(() => { + useLayoutEffect(() => { AS.getItem("iconSwitch").then(setIconSetting); AS.getItem("mapSwitch").then(setMapSwitch); AS.getItem("stationSwitch").then(setStationMenu); @@ -29,6 +25,22 @@ export default function Setting(props) { AS.getItem("trainSwitch").then(setTrainMenu); AS.getItem("trainPositionSwitch").then(setTrainPosition); }, []); + const testNFC = async () => { + const resulit = await ExpoFelicaReader.scan(); + alert(resulit); + }; + const updateAndReload = () => { + Promise.all([ + AS.setItem("iconSwitch", iconSetting.toString()), + AS.setItem("mapSwitch", mapSwitch.toString()), + AS.setItem("stationSwitch", stationMenu.toString()), + AS.setItem("usePDFView", usePDFView.toString()), + AS.setItem("trainSwitch", trainMenu.toString()), + AS.setItem("trainPositionSwitch", trainPosition.toString()), + ]).then(() => { + Updates.reloadAsync(); + }); + }; return ( @@ -59,10 +71,10 @@ export default function Setting(props) { 列車アイコンを表示する - setIconSetting(value.toString())} + @@ -78,11 +90,7 @@ export default function Setting(props) { マップを表示する(beta) - setMapSwitch(value.toString())} - /> + - setStationMenu(value.toString())} + @@ -116,10 +124,10 @@ export default function Setting(props) { 時刻表PDFをアプリ外で表示 - setUsePDFView(value.toString())} + @@ -135,11 +143,7 @@ export default function Setting(props) { 列車メニュー - setTrainMenu(value.toString())} - /> + - setTrainPosition(value.toString())} + @@ -176,7 +180,7 @@ export default function Setting(props) { testNFC()} + onPress={testNFC} > { - Promise.all([ - AS.setItem("iconSwitch", iconSetting.toString()), - AS.setItem("mapSwitch", mapSwitch.toString()), - AS.setItem("stationSwitch", stationMenu.toString()), - AS.setItem("usePDFView", usePDFView.toString()), - AS.setItem("trainSwitch", trainMenu.toString()), - AS.setItem("trainPositionSwitch", trainPosition.toString()), - ]).then(() => { - Updates.reloadAsync(); - }); - }} + onPress={updateAndReload} > @@ -246,3 +239,10 @@ export default function Setting(props) { ); } +const SimpleSwitch = ({ bool, setBool, color }) => ( + setBool(value.toString())} + /> +); From d4c9bdae75e56a29e0cc34f49b56adec81a1eaf5 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 07:03:59 +0000 Subject: [PATCH 59/66] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E6=95=B4=E7=90=86=E3=81=A8=E6=9C=80=E9=81=A9=E5=8C=96=E3=83=9F?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 63 +------------------- components/AndroidWidget/TraInfoEXWidget.jsx | 2 +- stateBox/useAreaInfo.js | 12 +++- stateBox/useBusAndTrainData.js | 37 +++++++++++- 4 files changed, 50 insertions(+), 64 deletions(-) diff --git a/App.js b/App.js index d561ab3..a7d0236 100644 --- a/App.js +++ b/App.js @@ -1,31 +1,18 @@ import React, { useEffect } from "react"; import { NavigationContainer } from "@react-navigation/native"; -import { createStackNavigator } from "@react-navigation/stack"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { Platform, UIManager } from "react-native"; import { GestureHandlerRootView } from "react-native-gesture-handler"; import { UpdateAsync } from "./UpdateAsync.js"; -import { AS } from "./storageControl"; import TNDView from "./ndView"; import { LogBox } from "react-native"; -import useInterval from "./lib/useInterval"; -import { HeaderConfig } from "./lib/HeaderConfig"; import { initIcon } from "./lib/initIcon"; -import { - useFavoriteStation, - FavoriteStationProvider, -} from "./stateBox/useFavoriteStation"; +import { FavoriteStationProvider } from "./stateBox/useFavoriteStation"; import { Top } from "./Top.js"; import { MenuPage } from "./MenuPage.js"; -import { - useCurrentTrain, - CurrentTrainProvider, -} from "./stateBox/useCurrentTrain.js"; +import { CurrentTrainProvider } from "./stateBox/useCurrentTrain.js"; import { useAreaInfo, AreaInfoProvider } from "./stateBox/useAreaInfo.js"; -import { - useBusAndTrainData, - BusAndTrainDataProvider, -} from "./stateBox/useBusAndTrainData.js"; +import { BusAndTrainDataProvider } from "./stateBox/useBusAndTrainData.js"; import { AllTrainDiagramProvider } from "./stateBox/useAllTrainDiagram.js"; import { SheetProvider } from "react-native-actions-sheet"; import "./components/ActionSheetComponents/sheets.js"; @@ -67,51 +54,7 @@ export default function App() { ); } export function AppContainer() { - const { setBusAndTrainData, setTrainPairData } = useBusAndTrainData(); - useEffect(() => { - AS.getItem("busAndTrain") - .then((d) => { - const returnData = JSON.parse(d); - setBusAndTrainData(returnData); - }) - .catch(() => { - fetch( - "https://script.google.com/macros/s/AKfycbw0UW6ZeCDgUYFRP0zxpc_Oqfy-91dBdbWv-cM8n3narKp14IyCd2wy5HW7taXcW7E/exec" - ) - .then((d) => d.json()) - .then((d) => { - setBusAndTrainData(d); - AS.setItem("busAndTrain", JSON.stringify(d)); - }); - }); - }, []); - useEffect(() => { - AS.getItem("trainPairData") - .then((d) => { - const returnData = JSON.parse(d); - setTrainPairData(returnData); - }) - .catch(() => { - fetch( - "https://script.google.com/macros/s/AKfycbyoBH7_rBwzPmhU1ghRBNTAVuvGltIrZtWxE07gDdhGGlDL9Ip2qk3pFM5u2xtRBl8/exec" - ) - .then((d) => d.json()) - .then((d) => { - setTrainPairData(d); - AS.setItem("trainPairData", JSON.stringify(d)); - }); - }); - }, []); - const { areaInfo, setAreaInfo } = useAreaInfo(); - const getAreaData = () => - fetch( - "https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec" - ) - .then((d) => d.text()) - .then((d) => setAreaInfo(d)); - useEffect(getAreaData, []); - useInterval(getAreaData, 60000); //60秒毎に全在線列車取得 return ( diff --git a/components/AndroidWidget/TraInfoEXWidget.jsx b/components/AndroidWidget/TraInfoEXWidget.jsx index 6a8e9e1..d3c7809 100644 --- a/components/AndroidWidget/TraInfoEXWidget.jsx +++ b/components/AndroidWidget/TraInfoEXWidget.jsx @@ -71,7 +71,7 @@ export function TraInfoEXWidget({ time, delayString }) { > - + ); }) diff --git a/stateBox/useAreaInfo.js b/stateBox/useAreaInfo.js index 5158066..a37df6f 100644 --- a/stateBox/useAreaInfo.js +++ b/stateBox/useAreaInfo.js @@ -1,4 +1,5 @@ -import React, { createContext, useContext, useState } from "react"; +import React, { createContext, useContext, useState, useEffect } from "react"; +import useInterval from "../lib/useInterval"; const initialState = { areaInfo: "", setAreainfo: () => {}, @@ -12,7 +13,14 @@ export const useAreaInfo = () => { export const AreaInfoProvider = ({ children }) => { const [areaInfo, setAreaInfo] = useState(""); - + const getAreaData = () => + fetch( + "https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec" + ) + .then((d) => d.text()) + .then((d) => setAreaInfo(d)); + useEffect(getAreaData, []); + useInterval(getAreaData, 60000); //60秒毎に全在線列車取得 return ( {children} diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index cbfaf86..6c4c596 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -1,5 +1,6 @@ -import React, { createContext, useContext, useState } from "react"; +import React, { createContext, useContext, useState, useEffect } from "react"; import trainList from "../assets/originData/trainList"; +import { AS } from "../storageControl"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, @@ -18,6 +19,40 @@ export const useBusAndTrainData = () => { export const BusAndTrainDataProvider = ({ children }) => { const [busAndTrainData, setBusAndTrainData] = useState([]); const [trainPairData, setTrainPairData] = useState([]); + useEffect(() => { + AS.getItem("busAndTrain") + .then((d) => { + const returnData = JSON.parse(d); + setBusAndTrainData(returnData); + }) + .catch(() => { + fetch( + "https://script.google.com/macros/s/AKfycbw0UW6ZeCDgUYFRP0zxpc_Oqfy-91dBdbWv-cM8n3narKp14IyCd2wy5HW7taXcW7E/exec" + ) + .then((d) => d.json()) + .then((d) => { + setBusAndTrainData(d); + AS.setItem("busAndTrain", JSON.stringify(d)); + }); + }); + }, []); + useEffect(() => { + AS.getItem("trainPairData") + .then((d) => { + const returnData = JSON.parse(d); + setTrainPairData(returnData); + }) + .catch(() => { + fetch( + "https://script.google.com/macros/s/AKfycbyoBH7_rBwzPmhU1ghRBNTAVuvGltIrZtWxE07gDdhGGlDL9Ip2qk3pFM5u2xtRBl8/exec" + ) + .then((d) => d.json()) + .then((d) => { + setTrainPairData(d); + AS.setItem("trainPairData", JSON.stringify(d)); + }); + }); + }, []); const initializeTrainPairList = () => { const trainPairList = {}; trainPairData.forEach((d) => { From e1e35168d6c5b6b17d53f13e84f9eb1fb043507d Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 11:02:52 +0000 Subject: [PATCH 60/66] =?UTF-8?q?=E5=9B=9E=E8=BB=A2=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E7=A7=BB=E5=8B=95=E3=80=81=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=AE=E9=83=A8=E5=88=86=E5=85=B1=E9=80=9A=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 41 +++++---- Apps.js | 87 ++++--------------- .../EachTrainInfo/TrainDataView.js | 24 +---- .../EachTrainInfoCore.js | 34 ++++---- .../ActionSheetComponents/JRSTraInfo.js | 23 ++++- .../StationDeteilView.js | 27 +++++- components/AndroidWidget/TraInfoEXWidget.jsx | 7 +- stateBox/useDeviceOrientationChange.js | 28 ++++++ 8 files changed, 139 insertions(+), 132 deletions(-) create mode 100644 stateBox/useDeviceOrientationChange.js diff --git a/App.js b/App.js index a7d0236..4041b6e 100644 --- a/App.js +++ b/App.js @@ -18,6 +18,7 @@ import { SheetProvider } from "react-native-actions-sheet"; import "./components/ActionSheetComponents/sheets.js"; import { TrainDelayDataProvider } from "./stateBox/useTrainDelayData.js"; import { SafeAreaProvider } from "react-native-safe-area-context"; +import { DeviceOrientationChangeProvider } from "./stateBox/useDeviceOrientationChange.js"; LogBox.ignoreLogs([ "ViewPropTypes will be removed", "ColorPropType will be removed", @@ -32,25 +33,27 @@ if (Platform.OS === "android") { export default function App() { useEffect(() => UpdateAsync(), []); return ( - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + ); } export function AppContainer() { diff --git a/Apps.js b/Apps.js index 0e9679b..74be89e 100644 --- a/Apps.js +++ b/Apps.js @@ -10,6 +10,7 @@ import { import { WebView } from "react-native-webview"; import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; +import * as Updates from "expo-updates"; import { AS } from "./storageControl"; import { news } from "./config/newsUpdate"; @@ -18,6 +19,7 @@ import { injectJavascriptData } from "./lib/webViewInjectjavascript"; import { checkDuplicateTrainData } from "./lib/checkDuplicateTrainData"; import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { useCurrentTrain } from "./stateBox/useCurrentTrain"; +import { useDeviceOrientationChange } from "./stateBox/useDeviceOrientationChange"; import { SheetManager } from "react-native-actions-sheet"; import TrainMenu from "./components/trainMenu"; import { EachTrainInfoCore } from "./components/ActionSheetComponents/EachTrainInfoCore"; @@ -31,16 +33,8 @@ export default function Apps({ navigation, webview, stationData }) { const { navigate } = navigation; var urlcache = ""; const { favoriteStation } = useFavoriteStation(); - const [isLandscape, setIsLandscape] = useState(false); //画面が横向きかどうか + const { isLandscape, setIsLandscape } = useDeviceOrientationChange(); const handleLayout = () => {}; - useEffect(() => { - if (height / width > 1.5) { - setIsLandscape(false); - } - if (height / width < 1.5) { - setIsLandscape(true); - } - }, [height, width]); //画面表示関連 const [iconSetting, setIconSetting] = useState(undefined); @@ -70,6 +64,10 @@ export default function Apps({ navigation, webview, stationData }) { stationMenu, trainMenu ); + const ASCore = ({ k, s, d }) => + AS.getItem(k) + .then((d) => (d ? s(d) : AS.setItem(k, d).then(Updates.reloadAsync))) + .catch(() => AS.setItem(k, d).then(Updates.reloadAsync)); useEffect(() => { //ニュース表示 @@ -82,67 +80,26 @@ export default function Apps({ navigation, webview, stationData }) { useEffect(() => { //列車アイコンスイッチ - AS.getItem("iconSwitch") - .then((d) => { - if (d) { - setIconSetting(d); - } else { - AS.setItem("iconSwitch", "true").then(Updates.reloadAsync); - } - }) - .catch(() => AS.setItem("iconSwitch", "true").then(Updates.reloadAsync)); - }, []); - - useEffect(() => { + ASCore({ k: "iconSwitch", s: setIconSetting, d: "true" }); //地図スイッチ - AS.getItem("mapSwitch") - .then((d) => { - if (d) { - setMapSwitch(d); - } else { - AS.setItem("mapSwitch", "false").then(Updates.reloadAsync); - } - }) - .catch(() => AS.setItem("mapSwitch", "false").then(Updates.reloadAsync)); - }, []); - - useEffect(() => { + ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false" }); //駅メニュースイッチ - AS.getItem("stationSwitch") - .then((d) => { - if (d) { - setStationMenu(d); - } else { - AS.setItem("stationSwitch", "true").then(Updates.reloadAsync); - } - }) - .catch(() => - AS.setItem("stationSwitch", "true").then(Updates.reloadAsync) - ); - }, []); - useEffect(() => { + ASCore({ k: "stationSwitch", s: setStationMenu, d: "true" }); //列車メニュースイッチ - AS.getItem("trainSwitch") - .then((d) => { - if (d) { - setTrainMenu(d); - } else { - AS.setItem("trainSwitch", "true").then(Updates.reloadAsync); - } - }) - .catch(() => AS.setItem("trainSwitch", "true").then(Updates.reloadAsync)); + ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true" }); }, []); const onMessage = (event) => { - if (event.nativeEvent.data.includes("train.html")) { - navigate("trainbase", { info: event.nativeEvent.data, from: "Train" }); + const { data } = event.nativeEvent; + if (data.includes("train.html")) { + navigate("trainbase", { info: data, from: "Train" }); return; } if (!originalStationList) { alert("駅名標データを取得中..."); return; } - const dataSet = JSON.parse(event.nativeEvent.data); + const dataSet = JSON.parse(data); switch (dataSet.type) { case "LoadError": { setLoadError(true); @@ -151,12 +108,10 @@ export default function Apps({ navigation, webview, stationData }) { case "PopUpMenu": { const selectedStationPDFAddress = dataSet.pdf; - const findStationEachLine = (selectLine) => { - let NearStation = selectLine.filter( + const findStationEachLine = (selectLine) => + selectLine.filter( (d) => d.StationTimeTable == selectedStationPDFAddress ); - return NearStation; - }; let returnDataBase = lineList .map((d) => findStationEachLine(originalStationList[d])) .filter((d) => d.length > 0) @@ -175,13 +130,9 @@ export default function Apps({ navigation, webview, stationData }) { SheetManager.show("StationDetailView", { payload, }), - onExit: () => { - SheetManager.hide("StationDetailView"); - }, + onExit: () => SheetManager.hide("StationDetailView"), }; - SheetManager.show("StationDetailView", { - payload, - }); + SheetManager.show("StationDetailView", { payload }); } } return; diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index e8a229e..fdb5426 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -1,15 +1,7 @@ -import React, { useEffect, useState } from "react"; -import { - View, - Text, - TouchableOpacity, - useWindowDimensions, -} from "react-native"; +import React from "react"; +import { View, TouchableOpacity, useWindowDimensions } from "react-native"; import { StateBox } from "./StateBox"; -import { - heightPercentageToDP, - widthPercentageToDP, -} from "react-native-responsive-screen"; +import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientationChange"; export const TrainDataView = ({ currentTrainData, @@ -18,16 +10,8 @@ export const TrainDataView = ({ openTrainInfo, mode = 0, }) => { - const [isLandscape, setIsLandscape] = useState(false); const { width, height } = useWindowDimensions(); - useEffect(() => { - if (height / width > 1.5) { - setIsLandscape(false); - } - if (height / width < 1.5) { - setIsLandscape(true); - } - }, [width, height]); + const { isLandscape } = useDeviceOrientationChange(); return ( { + const backAction = () => { + SheetManager.hide("EachTrainInfo"); + return true; + }; + const backHandler = BackHandler.addEventListener( + "hardwareBackPress", + backAction + ); + return () => backHandler.remove(); + }, []); //bconst insets = useSafeAreaInsets(); const [headStation, setHeadStation] = useState(); @@ -107,7 +114,7 @@ export const EachTrainInfoCore = ({ : []; const { height, width } = useWindowDimensions(); - const [isLandscape, setIsLandscape] = useState(false); + const { isLandscape } = useDeviceOrientationChange(); const [trueTrainID, setTrueTrainID] = useState(); useEffect(() => { @@ -167,15 +174,6 @@ export const EachTrainInfoCore = ({ } }, [currentTrainData]); - useEffect(() => { - if (height / width > 1.5) { - setIsLandscape(false); - } - if (height / width < 1.5) { - setIsLandscape(true); - } - }, [width, height]); - const replaceSpecialTrainDetail = (trainNum) => { let TD = trainList[trainNum]; if (!TD) return; diff --git a/components/ActionSheetComponents/JRSTraInfo.js b/components/ActionSheetComponents/JRSTraInfo.js index 03bb430..64b0bc7 100644 --- a/components/ActionSheetComponents/JRSTraInfo.js +++ b/components/ActionSheetComponents/JRSTraInfo.js @@ -1,4 +1,4 @@ -import React, { useRef } from "react"; +import React, { useEffect, useRef } from "react"; import { View, LayoutAnimation, @@ -7,9 +7,13 @@ import { Text, TouchableOpacity, Platform, + BackHandler, } from "react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; -import ActionSheet, { useScrollHandlers } from "react-native-actions-sheet"; +import ActionSheet, { + SheetManager, + useScrollHandlers, +} from "react-native-actions-sheet"; import LottieView from "lottie-react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import ViewShot from "react-native-view-shot"; @@ -50,6 +54,7 @@ export const JRSTraInfo = () => { } useBottomSafeAreaPadding={Platform.OS == "android"} > + { ); }; +const Handler = () => { + useEffect(() => { + const backAction = () => { + SheetManager.hide("JRSTraInfo"); + return true; + }; + const backHandler = BackHandler.addEventListener( + "hardwareBackPress", + backAction + ); + return () => backHandler.remove(); + }, []); + return <>; +}; diff --git a/components/ActionSheetComponents/StationDeteilView.js b/components/ActionSheetComponents/StationDeteilView.js index 3a8874e..497f2ca 100644 --- a/components/ActionSheetComponents/StationDeteilView.js +++ b/components/ActionSheetComponents/StationDeteilView.js @@ -1,9 +1,16 @@ import React, { useState, useEffect } from "react"; -import { View, Linking, Text, TouchableOpacity, Platform } from "react-native"; +import { + View, + Linking, + Text, + TouchableOpacity, + BackHandler, + Platform, +} from "react-native"; import AutoHeightImage from "react-native-auto-height-image"; import { FontAwesome, Foundation, Ionicons } from "@expo/vector-icons"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import ActionSheet from "react-native-actions-sheet"; +import ActionSheet, { SheetManager } from "react-native-actions-sheet"; import Sign from "../../components/駅名表/Sign"; import { TicketBox } from "../atom/TicketBox"; @@ -25,6 +32,7 @@ export const StationDeteilView = (props) => { } = props.payload; const { busAndTrainData } = useBusAndTrainData(); const [trainBus, setTrainBus] = useState(); + useEffect(() => { if (!currentStation) return () => {}; const data = busAndTrainData.filter((d) => { @@ -60,6 +68,7 @@ export const StationDeteilView = (props) => { } useBottomSafeAreaPadding={Platform.OS == "android"} > + { ); }; +const Handler = () => { + useEffect(() => { + const backAction = () => { + SheetManager.hide("StationDetailView"); + return true; + }; + const backHandler = BackHandler.addEventListener( + "hardwareBackPress", + backAction + ); + return () => backHandler.remove(); + }, []); + return <>; +}; const styleSheet = { 外枠: { width: wp("80%"), diff --git a/components/AndroidWidget/TraInfoEXWidget.jsx b/components/AndroidWidget/TraInfoEXWidget.jsx index d3c7809..46cd4e8 100644 --- a/components/AndroidWidget/TraInfoEXWidget.jsx +++ b/components/AndroidWidget/TraInfoEXWidget.jsx @@ -65,13 +65,14 @@ export function TraInfoEXWidget({ time, delayString }) { flexDirection: "row", width: "match_parent", backgroundColor: "#ffffff", + flex: 1, }} clickAction="WIDGET_CLICK" key={data[1]} > - - - + + + ); }) diff --git a/stateBox/useDeviceOrientationChange.js b/stateBox/useDeviceOrientationChange.js new file mode 100644 index 0000000..e79e5c0 --- /dev/null +++ b/stateBox/useDeviceOrientationChange.js @@ -0,0 +1,28 @@ +import React, { createContext, useContext, useState, useEffect } from "react"; +import { useWindowDimensions } from "react-native"; +const initialState = { isLandscape: false, setIsLandscape: () => {} }; + +const DeviceOrientationChange = createContext(initialState); + +export const useDeviceOrientationChange = () => { + return useContext(DeviceOrientationChange); +}; + +export const DeviceOrientationChangeProvider = ({ children }) => { + const [isLandscape, setIsLandscape] = useState(false); + const { height, width } = useWindowDimensions(); + + useEffect(() => { + if (height / width > 1.5) { + setIsLandscape(false); + } + if (height / width < 1.5) { + setIsLandscape(true); + } + }, [height, width]); + return ( + + {children} + + ); +}; From 48e1ab7b26395e0f22e15cac42476559274052c7 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 13:48:53 +0000 Subject: [PATCH 61/66] =?UTF-8?q?=E7=94=BB=E9=9D=A2=E5=9B=9E=E8=BB=A2?= =?UTF-8?q?=E3=82=92=E5=9B=BA=E5=AE=9A=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E7=B5=84=E3=81=BF=E8=BE=BC=E3=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 12 +++++++++--- package.json | 1 + stateBox/useDeviceOrientationChange.js | 12 +++++++++++- yarn.lock | 5 +++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app.json b/app.json index 8ee7df3..75c0078 100644 --- a/app.json +++ b/app.json @@ -22,7 +22,13 @@ ] } ], - "expo-font" + "expo-font", + [ + "expo-screen-orientation", + { + "initialOrientation": "DEFAULT" + } + ] ], "version": "5.0", "orientation": "default", @@ -38,7 +44,7 @@ }, "assetBundlePatterns": ["**/*"], "ios": { - "buildNumber": "31", + "buildNumber": "32", "supportsTablet": true, "bundleIdentifier": "jrshikokuinfo.xprocess.hrkn", "config": { @@ -57,7 +63,7 @@ }, "android": { "package": "jrshikokuinfo.xprocess.hrkn", - "versionCode": 20, + "versionCode": 21, "permissions": ["ACCESS_FINE_LOCATION", "NFC"], "googleServicesFile": "./google-services.json", "config": { diff --git a/package.json b/package.json index 361f45a..3f7db2d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "expo-font": "~11.10.3", "expo-location": "~16.5.5", "expo-notifications": "~0.27.6", + "expo-screen-orientation": "~6.4.1", "expo-sharing": "~11.10.0", "expo-updates": "~0.24.11", "expo-web-browser": "~12.8.2", diff --git a/stateBox/useDeviceOrientationChange.js b/stateBox/useDeviceOrientationChange.js index e79e5c0..79c305f 100644 --- a/stateBox/useDeviceOrientationChange.js +++ b/stateBox/useDeviceOrientationChange.js @@ -1,5 +1,6 @@ import React, { createContext, useContext, useState, useEffect } from "react"; import { useWindowDimensions } from "react-native"; +import * as ScreenOrientation from "expo-screen-orientation"; const initialState = { isLandscape: false, setIsLandscape: () => {} }; const DeviceOrientationChange = createContext(initialState); @@ -11,13 +12,22 @@ export const useDeviceOrientationChange = () => { export const DeviceOrientationChangeProvider = ({ children }) => { const [isLandscape, setIsLandscape] = useState(false); const { height, width } = useWindowDimensions(); + const data = async () => { + await ScreenOrientation.lockAsync( + ScreenOrientation.OrientationLock.PORTRAIT_UP + ); + }; + useEffect(() => { + data(); + //ScreenOrientation.unlockAsync(); + }, []); useEffect(() => { if (height / width > 1.5) { setIsLandscape(false); } if (height / width < 1.5) { - setIsLandscape(true); + //setIsLandscape(true); } }, [height, width]); return ( diff --git a/yarn.lock b/yarn.lock index 33bd9f0..9f0453d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5474,6 +5474,11 @@ expo-notifications@~0.27.6: expo-constants "~15.4.0" fs-extra "^9.1.0" +expo-screen-orientation@~6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/expo-screen-orientation/-/expo-screen-orientation-6.4.1.tgz#1c4428a058921e48b5caa45367e626b8bec10e24" + integrity sha512-VM0C9ORNL1aT6Dr2OUeryzV519n0FjtXI2m+HlijOMi1QT2bPg4tBkCd7HLgywU4dZ1Esa46ewUudmk+fOqmMQ== + expo-sharing@~11.10.0: version "11.10.0" resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.10.0.tgz#0e85197ee4d2634b00fe201e571fbdc64cf83eef" From d43b0a19429d3ce0a9631767779d40497c5bba3b Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 13:49:05 +0000 Subject: [PATCH 62/66] =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=B5=E3=82=A4=E3=82=BA=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/JRSTraInfo.js | 6 +++--- components/発車時刻表/LED_vidion.js | 10 +++++----- menu.js | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/components/ActionSheetComponents/JRSTraInfo.js b/components/ActionSheetComponents/JRSTraInfo.js index 64b0bc7..0acbd6d 100644 --- a/components/ActionSheetComponents/JRSTraInfo.js +++ b/components/ActionSheetComponents/JRSTraInfo.js @@ -131,11 +131,11 @@ export const JRSTraInfo = () => { let data = d.split(" "); return ( - + {data[0].replace("\n", "")} - {data[1]} - {data[3]} + {data[1]} + {data[3]} ); }) diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index db4faf9..b9d350d 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -390,7 +390,7 @@ const TrainName = ({ 6 ? parseInt("13%") : parseInt("18%"), + fontSize: trainName.length > 6 ? parseInt("12%") : parseInt("16%"), color: color, fontWeight: "bold", }} @@ -406,7 +406,7 @@ const LastStation = ({ lastStation }) => { 4 ? parseInt("13%") : parseInt("18%"), + fontSize: lastStation.length > 4 ? parseInt("12%") : parseInt("16%"), color: "white", fontWeight: "bold", }} @@ -421,7 +421,7 @@ const DependTime = ({ time }) => ( { ( { let data = d.split(" "); return ( - + {data[0].replace("\n", "")} - {data[1]} - {data[3]} + {data[1]} + {data[3]} ); }) From 273459f94bcf241d883606f8e3839da0246ebfff Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 13:56:21 +0000 Subject: [PATCH 63/66] =?UTF-8?q?NFC=E4=B8=80=E6=97=A6=E5=B0=81=E9=8E=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings.js b/components/settings.js index 98d346f..6061d5d 100644 --- a/components/settings.js +++ b/components/settings.js @@ -180,7 +180,7 @@ export default function Setting(props) { Date: Sat, 9 Mar 2024 14:10:39 +0000 Subject: [PATCH 64/66] =?UTF-8?q?Twitter=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- menu.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/menu.js b/menu.js index 66cf595..65a700f 100644 --- a/menu.js +++ b/menu.js @@ -611,6 +611,11 @@ const FixedContentBottom = (props) => { }} > {[ + { + url: "https://twitter.com/jr_shikoku_info", + name: "JR四国列車運行情報", + }, + { url: "https://twitter.com/JRshikoku_eigyo", name: "JR四国営業部【公式】", @@ -623,14 +628,6 @@ const FixedContentBottom = (props) => { url: "https://twitter.com/JRshikoku_osaka", name: "JR四国 大阪営業部【公式】", }, - { - url: "https://twitter.com/jr_shikoku_info", - name: "JR四国列車運行情報【公式】", - }, - { - url: "https://twitter.com/Smile_Eki_Chan", - name: "すまいるえきちゃん♡JR四国【公式】", - }, { url: "https://twitter.com/jrs_matsuyama", name: "JR四国 松山駅 【公式】", @@ -647,18 +644,26 @@ const FixedContentBottom = (props) => { url: "https://twitter.com/jrshikoku_uwjm", name: "JR四国 宇和島駅【公式】", }, + { + url: "https://twitter.com/jrshikoku_wkama", + name: "JR四国 ワープ高松支店【公式】", + }, { url: "https://twitter.com/JRshikoku_wkoch", name: "JR四国 ワープ高知支店【公式】", }, - { - url: "https://twitter.com/jrshikoku_nihaw", - name: "JR四国 ワープ新居浜営業所【公式】", - }, { url: "https://twitter.com/Yoakemonogatari", name: "志国土佐 時代の夜明けのものがたり【公式】", }, + { + url: "https://twitter.com/Smile_Eki_Chan", + name: "すまいるえきちゃん♡JR四国【公式】", + }, + { + url: "https://twitter.com/sper_ponchan", + name: "しこくたぬきのぽんちゃん 【四国家サポーターズクラブ】", + }, ].map((d) => ( Linking.openURL(d.url)}> {d.name} From 15a65ee1a56719c30dbad67b4487c91a5b4849a2 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 15:40:17 +0000 Subject: [PATCH 65/66] =?UTF-8?q?=E3=83=8B=E3=83=A5=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/newsUpdate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/newsUpdate.js b/config/newsUpdate.js index 7397050..2e96f85 100644 --- a/config/newsUpdate.js +++ b/config/newsUpdate.js @@ -1 +1 @@ -export const news = "2023-12-25"; +export const news = "2024-3-10"; From c0cdad36837f27dee7c22930834272052d53d090 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 9 Mar 2024 15:48:23 +0000 Subject: [PATCH 66/66] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=B3=E3=83=BC=E3=83=89=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.json b/app.json index 75c0078..7a27a91 100644 --- a/app.json +++ b/app.json @@ -44,7 +44,7 @@ }, "assetBundlePatterns": ["**/*"], "ios": { - "buildNumber": "32", + "buildNumber": "33", "supportsTablet": true, "bundleIdentifier": "jrshikokuinfo.xprocess.hrkn", "config": { @@ -63,7 +63,7 @@ }, "android": { "package": "jrshikokuinfo.xprocess.hrkn", - "versionCode": 21, + "versionCode": 22, "permissions": ["ACCESS_FINE_LOCATION", "NFC"], "googleServicesFile": "./google-services.json", "config": {