diff --git a/App.tsx b/App.tsx index 99a4052..2cb14a7 100644 --- a/App.tsx +++ b/App.tsx @@ -1,19 +1,42 @@ import { StatusBar } from 'expo-status-bar'; import { StyleSheet, Text, View, Button } from 'react-native'; import React, { useState } from "react"; + import Navigation from './navigation/Navigation'; +import StackNavigation from './navigation/StackNavigation'; + +import { createStackNavigator } from '@react-navigation/stack'; + +// Import your application store +//import store from "./redux/store"; + import { SafeAreaView, SafeAreaProvider, } from 'react-native-safe-area-context'; -export default function App() { - //safearea - //mettre le navigateur ayant le princ - return ( - - - - ); -} +import { Provider } from 'react-redux'; + + export default function App() { + //safearea + //mettre le navigateur ayant le princ + return ( + + + + ); + } + +// export default function App() { +// return ( +// <> +// {/* Bind your application store to the Provider store */} +// {/* */} +// +// +// +// {/* */} +// +// ); +// } diff --git a/components/mainComponent.tsx b/components/mainComponent.tsx index 99deaa0..c7e5640 100644 --- a/components/mainComponent.tsx +++ b/components/mainComponent.tsx @@ -2,6 +2,7 @@ import { StatusBar } from 'expo-status-bar'; import { StyleSheet, Text, View, Button } from 'react-native'; import React, { useState } from "react"; +// @ts-ignore export default function Main(props : mainProps){ const [count, setCount] = useState(0); return ( diff --git a/data/ApiDataManager.tsx b/data/ApiDataManager.tsx new file mode 100644 index 0000000..a08be79 --- /dev/null +++ b/data/ApiDataManager.tsx @@ -0,0 +1,14 @@ + +// export class ApiDataManager{ + + +// public async getCards() : Promise { + + +// const CardPromise = await fetch('https://omgvamp-hearthstone-v1.p.rapidapi.com/cards') + +// const CardListJson = await CardPromise.json(); +// const CardList: String[] = Array.of(CardListJson); +// return CardList; +// } +// } diff --git a/data/stub.ts b/data/stub.ts index c2c79dd..af96cf8 100644 --- a/data/stub.ts +++ b/data/stub.ts @@ -1,188 +1,14 @@ -export class City { - private _name: string; - private _latitude: number; - private _longitude: number; - - constructor(name: string, latitude: number, longitude: number) { - this._name = name; - this._latitude = latitude; - this._longitude = longitude; - } - - get name(): string { - return this._name; - } - - set name(value: string) { - this._name = value; - } - - get latitude(): number { - return this._latitude; - } - - set latitude(value: number) { - this._latitude = value; - } - - get longitude(): number { - return this._longitude; - } - - set longitude(value: number) { - this._longitude = value; - } +import { Card } from "../models/Card" + +export class StubLib { + + public getCards(): Card[] { + const NOUNOURS_LIST : Card[] = [ + new Card("c1","Chewie"), + new Card("r2","Rupert"), + new Card("a3","Ronflex"), + ] + return NOUNOURS_LIST + } } -export class Weather { - private _at: string; - private _visibility: number; - private _weatherType: string; - private _weatherDescription: string; - private _temperature: number; - private _temperatureFeelsLike: number; - private _humidity: number; - private _windSpeed: number; - private _pressure: number; - private _city: City; - - constructor(at: string, visibility: number, weatherType: string, weatherDescription: string, temperature: number, temperatureFeelsLike: number, humidity: number, windSpeed: number, pressure: number, city: City) { - this._at = at; - this._visibility = visibility; - this._weatherType = weatherType; - this._weatherDescription = weatherDescription; - this._temperature = temperature; - this._temperatureFeelsLike = temperatureFeelsLike; - this._humidity = humidity; - this._windSpeed = windSpeed; - this._pressure = pressure; - this._city = city; - } - - get at(): string { - return this._at; - } - - set at(value: string) { - this._at = value; - } - - get visibility(): number { - return this._visibility; - } - - set visibility(value: number) { - this._visibility = value; - } - - get weatherType(): string { - return this._weatherType; - } - - set weatherType(value: string) { - this._weatherType = value; - } - - get weatherDescription(): string { - return this._weatherDescription; - } - - set weatherDescription(value: string) { - this._weatherDescription = value; - } - - get temperature(): number { - return this._temperature; - } - - set temperature(value: number) { - this._temperature = value; - } - - get temperatureFeelsLike(): number { - return this._temperatureFeelsLike; - } - - set temperatureFeelsLike(value: number) { - this._temperatureFeelsLike = value; - } - - get humidity(): number { - return this._humidity; - } - - set humidity(value: number) { - this._humidity = value; - } - - get windSpeed(): number { - return this._windSpeed; - } - - set windSpeed(value: number) { - this._windSpeed = value; - } - - get pressure(): number { - return this._pressure; - } - - set pressure(value: number) { - this._pressure = value; - } - - get city(): City { - return this._city; - } - - set city(value: City) { - this._city = value; - } -} - -export const CITIES_DATA: City[] = [ - new City("Paris", 48.866667, 2.333333), - new City("Clermont-Ferrand", 45.777222, 3.087025), - new City("Lyon", 45.764043, 4.835659), - new City("Marseille", 43.296482, 5.36978), - new City("Bruxelles", 50.85034, 4.35171), -]; - -export const FAVORITE_CITY_DATA = - new City("Clermont-Ferrand", 45.777222, 3.087025); - -export const DEFAULT_SELECTED_CITY_DATA: City = - new City("Paris", 48.866667, 2.333333); - -export const WEATHER_DATA: Weather[] = [ - new Weather("2023-01-22 09:55:59", 10000, "Nuageux", - "couvert", 0.52, -4.34, - 82, 5.14, 1032, - new City("Paris", 48.866667, 2.333333) - ), - new Weather("2023-01-22 09:55:59", 10000, "Nuageux", - "couvert", 0.52, -4.34, - 82, 5.14, 1032, - new City("Clermont-Ferrand", 45.777222, 3.087025) - ), - new Weather("2023-01-22 09:55:59", 10000, "Nuageux", - "couvert", 0.52, -4.34, - 82, 5.14, 1032, - new City("Lyon", 45.764043, 4.835659) - ), - new Weather("2023-01-22 09:55:59", 10000, "Nuageux", - "couvert", 0.52, -4.34, - 82, 5.14, 1032, - new City("Marseille", 43.296482, 5.36978) - ), - new Weather("2023-01-22 09:55:59", 10000, "Nuageux", - "couvert", 0.52, -4.34, - 82, 5.14, 1032, - new City("Bruxelles", 50.85034, 4.35171) - ), -]; - -export const getCurrentWeather = (cityName: string) => { - if (cityName === undefined) return {}; - return WEATHER_DATA.filter(elt => elt.city.name === cityName)[0]; -} diff --git a/models/Card.tsx b/models/Card.tsx new file mode 100644 index 0000000..ea3c82e --- /dev/null +++ b/models/Card.tsx @@ -0,0 +1,165 @@ +import {isValidNumber} from "react-native-gesture-handler/lib/typescript/web_hammer/utils"; + +export class Card { + + constructor(id: string,name :string,set : string,type : string,faction : string,rarity : string,cost : number,attack : number, health : number, desc : string,flavor : string,artist : string,collectible : boolean,elite : boolean,race : string, img : string, imgGold : string) { + this._id=id + this._name=name + this._set=set + this._type=type + this._faction=faction + this._rarity=rarity + this._cost=cost + this._attack = attack + this._health = health + this._desc = desc + this._flavor = flavor + this._artist = artist + this._collectible = collectible + this._elite = elite + this._race = race + this._img = img + this._imgGold = imgGold + + } + + // ID // + + private _id : string; + get id(): string { + return this._id + } + + // NAME // + private _name : string; + get name(): string { + return this._name; + } + set name(value: string) { + this._name = value; + } + + + private _set : string; + get set(): string{ + return this._set + } + + set set(value : string){ + this._set = value + } + + private _type : string; + get type():string{ + return this._type + } + set type(value : string){ + this._type=value + } + + private _faction : string; + + get faction():string{ + return this._faction + } + set faction(value : string){ + this._faction=value + } + private _rarity : string + + get rarity(): string { + return this._rarity; + } + + set rarity(value: string) { + this._rarity = value ; + } + private _cost : number + + get cost(): number { + return this._cost; + } + set cost(value: number) { + this._cost = value ; + } + + private _attack : number + get attack(): number { + return this._attack; + } + set attack(value: number) { + this._attack = value ; + } + private _health : number + get health(): number { + return this._health; + } + set health(value: number) { + this._health = value ; + } + private _desc : string + get desc(): string { + return this._desc; + } + set desc(value: string) { + this._desc = value ; + } + + private _flavor : string + + get flavor(): string { + return this._flavor; + } + set flavor(value: string) { + this._flavor = value ; + } + + private _artist : string + get artist(): string { + return this._artist; + } + set artist(value: string) { + this._artist = value ; + } + private _collectible : boolean + get collectible(): boolean { + return this._collectible; + } + set collectible(value: boolean ){ + this._collectible = value; + } + private _elite : boolean + get elite(): boolean { + return this._elite; + } + set elite(value: boolean) { + this._elite = value ; + } + + private _race : string + get race(): string { + return this._race; + } + set race(value: string) { + this._race = value ; + } + + + private _img : string + + get img(): string { + return this._img; + } + set img(value: string) { + this._img = value ; + } + private _imgGold : string + + get imgGold(): string { + return this._imgGold; + } + set imgGold(value: string) { + this._imgGold = value ; + } + +} \ No newline at end of file diff --git a/navigation/Navigation.tsx b/navigation/Navigation.tsx index dae5f3a..d2d0ce9 100644 --- a/navigation/Navigation.tsx +++ b/navigation/Navigation.tsx @@ -10,6 +10,7 @@ import ListScreen from '../screens/ListScreen'; import ListFav from '../screens/ListFav'; import TabBarIcon from '../components/TabBarIcon'; +import StackNavigation from './StackNavigation'; @@ -24,14 +25,16 @@ export default function Navigation() { title: 'List', tabBarIcon: ({color}) => , }}/> - , - }}/> + headerShown: false + }} + /> , }}/> diff --git a/navigation/StackNavigation.tsx b/navigation/StackNavigation.tsx index 21744cb..3c63f32 100644 --- a/navigation/StackNavigation.tsx +++ b/navigation/StackNavigation.tsx @@ -8,16 +8,15 @@ import HomeScreen from '../screens/HomeScreen'; import ListScreen from '../screens/ListScreen'; import ListFav from '../screens/ListFav'; - export default function StackNavigation() { const Stack = createStackNavigator(); return ( - + // - + // ) } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cea0fde..bfee8e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,15 @@ "name": "expo-init", "version": "1.0.0", "dependencies": { + "@react-navigation/bottom-tabs": "^6.5.5", + "@react-navigation/native-stack": "^6.9.10", + "@react-navigation/stack": "^6.3.14", "expo": "~47.0.12", "expo-status-bar": "~1.4.2", "react": "18.1.0", "react-dom": "18.1.0", "react-native": "0.70.5", + "react-native-safe-area-context": "^4.5.0", "react-native-web": "~0.18.9" }, "devDependencies": { @@ -1782,6 +1786,18 @@ "node": ">=6.9.0" } }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "peer": true, + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@expo/bunyan": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", @@ -4509,6 +4525,140 @@ "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==" }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.5.tgz", + "integrity": "sha512-NKnbniyw7eEx1ubXHQ1Rx2rwj33cYQ4ffX0ZN8/UCncCY2Y1ruCjh3x3eEWVeZY8rPicLUaX3h0742CAh5mjEw==", + "dependencies": { + "@react-navigation/elements": "^1.3.15", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.6.tgz", + "integrity": "sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==", + "peer": true, + "dependencies": { + "@react-navigation/routers": "^6.1.6", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.1.5" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/core/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-navigation/core/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, + "node_modules/@react-navigation/elements": { + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.15.tgz", + "integrity": "sha512-CR4CEYJVY0OLyeLQi9N3Z2o4K47gXctvFxfZizDuW1xFtCJbA0eGvpjSLXEWHoY0hFjrlC6KinpdepGHVxhYIg==", + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.4.tgz", + "integrity": "sha512-8IGpMFvD21XINpSf9gyU19yv4O+NyF9FQAxEzwbJSef19W5XEJKXPN/0RINc43Tt+YnQyFGQ2+qJM1uoB9pKcA==", + "peer": true, + "dependencies": { + "@react-navigation/core": "^6.4.6", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.10.tgz", + "integrity": "sha512-dSazcWNxHg4qkid/AxFRvbhRtNXy/RqE00h/Qp+d7aBN0TwrOJn8mH/Inkkf4pHAntMbj0+mVAlKfxKmyLEGlA==", + "dependencies": { + "@react-navigation/elements": "^1.3.15", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-navigation/routers": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz", + "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==", + "peer": true, + "dependencies": { + "nanoid": "^3.1.23" + } + }, + "node_modules/@react-navigation/stack": { + "version": "6.3.14", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.14.tgz", + "integrity": "sha512-a1ivkESWsZYimUQHr3TA2Nu2g3FALEyJqQ8bJxXkEcBp+5cglOakhfKbbCuNV2knC/9zjUmP9N0Q3Jh3fK9nfw==", + "dependencies": { + "@react-navigation/elements": "^1.3.15", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, "node_modules/@segment/loosely-validate-event": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", @@ -4541,6 +4691,12 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==" }, + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "peer": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -5688,6 +5844,18 @@ "node": ">=0.10.0" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -5701,6 +5869,31 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", @@ -6738,6 +6931,12 @@ "node": ">=0.10.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "peer": true + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -6817,6 +7016,15 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -7290,6 +7498,21 @@ "node": ">=8" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, "node_modules/hosted-git-info": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", @@ -9317,6 +9540,18 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -10134,6 +10369,23 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -10165,6 +10417,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "peer": true, + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -10277,6 +10547,18 @@ "react": "^18.1.0" } }, + "node_modules/react-freeze": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz", + "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==", + "peer": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -10341,11 +10623,51 @@ "nullthrows": "^1.1.1" } }, + "node_modules/react-native-gesture-handler": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.9.0.tgz", + "integrity": "sha512-a0BcH3Qb1tgVqUutc6d3VuWQkI1AM3+fJx8dkxzZs9t06qA27QgURYFoklpabuWpsUTzuKRpxleykp25E8m7tg==", + "peer": true, + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-gradle-plugin": { "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" }, + "node_modules/react-native-safe-area-context": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz", + "integrity": "sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.20.0.tgz", + "integrity": "sha512-joWUKWAVHxymP3mL9gYApFHAsbd9L6ZcmpoZa6Sl3W/82bvvNVMqcfP7MeNqVCg73qZ8yL4fW+J/syusHleUgg==", + "peer": true, + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-web": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz", @@ -10942,6 +11264,19 @@ "node": ">= 5.10.0" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -11211,6 +11546,15 @@ "node": "*" } }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -11366,6 +11710,15 @@ "node": ">= 0.10.0" } }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -12114,6 +12467,12 @@ "node": ">=0.10.0" } }, + "node_modules/use-latest-callback": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz", + "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==", + "peer": true + }, "node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -12178,6 +12537,11 @@ "makeerror": "1.0.12" } }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==" + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -13652,6 +14016,15 @@ "to-fast-properties": "^2.0.0" } }, + "@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "peer": true, + "requires": { + "@types/hammerjs": "^2.0.36" + } + }, "@expo/bunyan": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", @@ -15755,6 +16128,98 @@ "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==" }, + "@react-navigation/bottom-tabs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.5.tgz", + "integrity": "sha512-NKnbniyw7eEx1ubXHQ1Rx2rwj33cYQ4ffX0ZN8/UCncCY2Y1ruCjh3x3eEWVeZY8rPicLUaX3h0742CAh5mjEw==", + "requires": { + "@react-navigation/elements": "^1.3.15", + "color": "^4.2.3", + "warn-once": "^0.1.0" + } + }, + "@react-navigation/core": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.6.tgz", + "integrity": "sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==", + "peer": true, + "requires": { + "@react-navigation/routers": "^6.1.6", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.1.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + } + } + }, + "@react-navigation/elements": { + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.15.tgz", + "integrity": "sha512-CR4CEYJVY0OLyeLQi9N3Z2o4K47gXctvFxfZizDuW1xFtCJbA0eGvpjSLXEWHoY0hFjrlC6KinpdepGHVxhYIg==", + "requires": {} + }, + "@react-navigation/native": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.4.tgz", + "integrity": "sha512-8IGpMFvD21XINpSf9gyU19yv4O+NyF9FQAxEzwbJSef19W5XEJKXPN/0RINc43Tt+YnQyFGQ2+qJM1uoB9pKcA==", + "peer": true, + "requires": { + "@react-navigation/core": "^6.4.6", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true + } + } + }, + "@react-navigation/native-stack": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.10.tgz", + "integrity": "sha512-dSazcWNxHg4qkid/AxFRvbhRtNXy/RqE00h/Qp+d7aBN0TwrOJn8mH/Inkkf4pHAntMbj0+mVAlKfxKmyLEGlA==", + "requires": { + "@react-navigation/elements": "^1.3.15", + "warn-once": "^0.1.0" + } + }, + "@react-navigation/routers": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz", + "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==", + "peer": true, + "requires": { + "nanoid": "^3.1.23" + } + }, + "@react-navigation/stack": { + "version": "6.3.14", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.14.tgz", + "integrity": "sha512-a1ivkESWsZYimUQHr3TA2Nu2g3FALEyJqQ8bJxXkEcBp+5cglOakhfKbbCuNV2knC/9zjUmP9N0Q3Jh3fK9nfw==", + "requires": { + "@react-navigation/elements": "^1.3.15", + "color": "^4.2.3", + "warn-once": "^0.1.0" + } + }, "@segment/loosely-validate-event": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", @@ -15787,6 +16252,12 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==" }, + "@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "peer": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -16668,6 +17139,30 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -16681,6 +17176,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", @@ -17489,6 +17993,12 @@ } } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "peer": true + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -17562,6 +18072,12 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "peer": true + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -17912,6 +18428,23 @@ "source-map": "^0.7.3" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "peer": true, + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + } + } + }, "hosted-git-info": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", @@ -19499,6 +20032,12 @@ "thenify-all": "^1.0.0" } }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "peer": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -20096,6 +20635,25 @@ "sisteransi": "^1.0.5" } }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -20118,6 +20676,18 @@ "side-channel": "^1.0.4" } }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "peer": true, + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -20189,6 +20759,13 @@ "scheduler": "^0.22.0" } }, + "react-freeze": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz", + "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==", + "peer": true, + "requires": {} + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20259,11 +20836,40 @@ "nullthrows": "^1.1.1" } }, + "react-native-gesture-handler": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.9.0.tgz", + "integrity": "sha512-a0BcH3Qb1tgVqUutc6d3VuWQkI1AM3+fJx8dkxzZs9t06qA27QgURYFoklpabuWpsUTzuKRpxleykp25E8m7tg==", + "peer": true, + "requires": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + } + }, "react-native-gradle-plugin": { "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" }, + "react-native-safe-area-context": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz", + "integrity": "sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ==", + "requires": {} + }, + "react-native-screens": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.20.0.tgz", + "integrity": "sha512-joWUKWAVHxymP3mL9gYApFHAsbd9L6ZcmpoZa6Sl3W/82bvvNVMqcfP7MeNqVCg73qZ8yL4fW+J/syusHleUgg==", + "peer": true, + "requires": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + } + }, "react-native-web": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz", @@ -20727,6 +21333,21 @@ } } }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -20943,6 +21564,12 @@ "through": "2" } }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "peer": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -21064,6 +21691,12 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==" }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "peer": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -21607,6 +22240,12 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-latest-callback": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz", + "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==", + "peer": true + }, "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -21659,6 +22298,11 @@ "makeerror": "1.0.12" } }, + "warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==" + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/package.json b/package.json index e85bbfc..6978a11 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,21 @@ "web": "expo start --web" }, "dependencies": { + "@react-navigation/bottom-tabs": "^6.5.5", + "@react-navigation/native": "^6.1.4", + "@react-navigation/native-stack": "^6.9.10", + "@react-navigation/stack": "^6.3.14", + "@reduxjs/toolkit": "^1.9.3", "expo": "~47.0.12", "expo-status-bar": "~1.4.2", "react": "18.1.0", "react-dom": "18.1.0", "react-native": "0.70.5", - "react-native-web": "~0.18.9" + "react-native-gesture-handler": "~2.8.0", + "react-native-safe-area-context": "4.4.1", + "react-native-web": "~0.18.9", + "react-redux": "^8.0.5", + "redux": "^4.2.1" }, "devDependencies": { "@babel/core": "^7.12.9", diff --git a/screens/HomeScreen.tsx b/screens/HomeScreen.tsx index 21f05fa..a0e2deb 100644 --- a/screens/HomeScreen.tsx +++ b/screens/HomeScreen.tsx @@ -1,27 +1,39 @@ -import { StyleSheet, Text, View, Button, TouchableNativeFeedback } from 'react-native'; +import { StyleSheet, Text, View, TouchableNativeFeedback } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import { NavigationContainer } from '@react-navigation/native'; import StackNavigation from '../navigation/StackNavigation' import { Colors } from 'react-native/Libraries/NewAppScreen'; -export default function HomeScreen() { +//import Button from 'react-bootstrap/Button'; + +// @ts-ignore //(ta gueule pour l'erreur sur navigation) +export default function HomeScreen({navigation}) { return ( - // - // navigation.navigate("ListScreen")}> - //Click me ! - // - - - Mes super Nounours ! - - Mon super texte ... - {/* */} - - Nous sommes actuellement dans l'écran d'accueil ! - + + + Mes super Nounours ! + + Mon super texte ... + {/* */} + + Nous sommes actuellement dans l'écran d'accueil ! + + + + Vous cherchez une entités ? + navigation.navigate("ListScreen")}> + Consulter la liste global ! + + + + + Vous avez des entités favorites ? + navigation.navigate("ListFav")}> + Aller sur la page de favoris ! + - // + ) }; @@ -35,7 +47,8 @@ export default function HomeScreen() { alignItems: "center" }, title: { - fontSize: 20 + fontSize: 20, + fontWeight: 'bold', }, MidArea: { justifyContent: "center", @@ -43,9 +56,22 @@ export default function HomeScreen() { paddingTop: 50, paddingBottom: 50, margin: 40, + borderRadius: 15, }, textStyle: { textAlign: "center", fontSize: 20, + }, + ButtonStyle :{ + backgroundColor: "#2E8AE6", + borderRadius: 15, + padding: 20, + color: "white", + fontSize : 20, + fontWeight: 'bold', + }, + t3 :{ + fontSize : 20, + fontWeight: 'bold', } }); diff --git a/screens/ListScreen.tsx b/screens/ListScreen.tsx index bc68ccb..e16d635 100644 --- a/screens/ListScreen.tsx +++ b/screens/ListScreen.tsx @@ -2,19 +2,34 @@ import { StyleSheet, Text, View, Button } from 'react-native'; import { StatusBar } from 'expo-status-bar'; import React, { useState } from "react"; +import { FlatList } from 'react-native-gesture-handler'; +import { StubLib } from '../data/stub'; +import { Card } from '../models/Card'; +//@ts-ignore +const Item = ({title}) => ( + + {title} + +); -export default function Main(){ +export default function Main() { const [count, setCount] = useState(0); + const {getCards} = new StubLib(); + const list: Card[] = getCards(); + const req = fetch('https://omgvamp-hearthstone-v1.p.rapidapi.com/cards') + + return ( - - Maman, prend la caméra ! ! - - {count} -