Adding ReduxS Store and using it for "Selected Kanji" in Playground

master
Arthur VALIN 2 years ago
parent 15d157016b
commit acbd1b2c1b

@ -1,9 +1,12 @@
{
"ExpandedNodes": [
"",
"\\assets",
"\\components",
"\\pages"
"\\model",
"\\redux",
"\\redux\\reducers"
],
"SelectedNode": "\\pages\\Playground.tsx",
"SelectedNode": "\\app.json",
"PreviewInSolutionExplorer": false
}

Binary file not shown.

Binary file not shown.

@ -1,5 +1,8 @@
import React from 'react';
import store from "./redux/store";
import { Provider } from 'react-redux';
import { StatusBar } from 'expo-status-bar';
import { Keyboard, SafeAreaView, StyleSheet, TouchableWithoutFeedback } from 'react-native';
@ -9,13 +12,15 @@ import TabBar from './components/TabBar';
export default function App() {
return (
<TouchableWithoutFeedback onPress={() => { Keyboard.dismiss(); }}>
<SafeAreaView style={styles.container}>
<Header/>
<TabBar/>
<StatusBar style="auto" />
</SafeAreaView>
</TouchableWithoutFeedback >
<Provider store={store}>
<TouchableWithoutFeedback onPress={() => { Keyboard.dismiss(); }}>
<SafeAreaView style={styles.container}>
<Header/>
<TabBar/>
<StatusBar style="auto" />
</SafeAreaView>
</TouchableWithoutFeedback >
</Provider>
);
}

@ -4,10 +4,10 @@
"slug": "expo-init",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"icon": "./src/assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"image": "./src/assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
@ -22,12 +22,12 @@
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"foregroundImage": "./src/assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
}
},
"web": {
"favicon": "./assets/favicon.png"
"favicon": "./src/assets/favicon.png"
}
}
}

@ -1,27 +1,41 @@
import React, {useRef, useState } from 'react';
import React, {useEffect, useRef, useState } from 'react';
import { SketchCanvas, SketchCanvasRef } from 'rn-perfect-sketch-canvas';
import { StyleSheet, Button, View } from 'react-native';
import { StyleSheet, Button, View, Text } from 'react-native';
import { SvgUri } from 'react-native-svg';
import Slider from '@react-native-community/slider'
import { useSelector } from 'react-redux';
import { Kanji, KanjiMapper } from '../model/kanji';
type DrawingCanvaProps = {
backgroundImage: string;
}
}
const DrawingCanva = (props: DrawingCanvaProps) => {
const canvasRef = useRef<SketchCanvasRef>(null);
const [strokeWidth, setStroke] = useState(5);
const [isCanvasReady, setIsCanvasReady] = useState(false);
const selectedKanji = KanjiMapper.SerializedObjectToKanji(useSelector(state => state.kanjiReducer.selectedKanji));
useEffect(() => {
if (canvasRef.current) {
setIsCanvasReady(true);
}
}, [canvasRef.current]);
return (
<View style={styles.container}>
<SvgUri
{selectedKanji && (<SvgUri
width="75%"
height="75%"
uri={props.backgroundImage}
uri={selectedKanji.image}
style={styles.back}
opacity={0.1}
/>
/>)}
<SketchCanvas
ref={canvasRef}
strokeColor={'black'}
@ -35,10 +49,10 @@ const DrawingCanva = (props: DrawingCanvaProps) => {
maximumValue={10}
minimumTrackTintColor={"#FF5C5C"}
/>
<View style={styles.menu}>
{isCanvasReady && (<View style={styles.menu}>
<Button color="#FF5C5C" onPress={canvasRef.current?.reset} title="Reset" />
<Button color="#FF5C5C" onPress={canvasRef.current?.undo} title="Undo" />
</View>
</View>)}
</View>
);
};

@ -2,6 +2,7 @@
import { StyleSheet, Text, View, Button } from 'react-native';
import { SvgUri } from 'react-native-svg';
import KanjiAnswerField from './KanjiAnswerField';
import { Kanji, KanjiMapper } from '../model/kanji';
type KanjiProps = {
kanji: string;

@ -1,13 +1,20 @@
import React from 'react';
import { FlatList, Text, View, StyleSheet, TextInput, TouchableOpacity, ScrollView } from 'react-native';
import { FlatList, StyleSheet, Text, TextInput, TouchableOpacity, View } from 'react-native';
import { useDispatch, useSelector } from 'react-redux';
import { Kanji } from '../model/kanji';
import { setSelectedKanji } from '../redux/actions/setSelectedKanji';
interface kanjiPlaygroundListProps {
data: string[]
data: Kanji[]
}
const KanjiPlaygroundList = (props: kanjiPlaygroundListProps) => {
const selectedKanji = useSelector(state => state.kanjiReducer.selectedKanji);
const dispatch = useDispatch();
return (
<View style={kanjiPlaygroundList.container}>
<TextInput style={kanjiPlaygroundList.input}
@ -17,9 +24,9 @@ const KanjiPlaygroundList = (props: kanjiPlaygroundListProps) => {
data={props.data}
renderItem={
({ item }) => (
<View style={kanjiPlaygroundList.entry} onStartShouldSetResponder={() => true}>
<Text style={kanjiPlaygroundList.entryText}>{item}</Text>
</View>
<TouchableOpacity onPress={() => dispatch(setSelectedKanji(item))} style={kanjiPlaygroundList.entry}>
<Text style={kanjiPlaygroundList.entryText}>{item.character}</Text>
</TouchableOpacity>
)
}
keyExtractor={item => `basicListEntry-${item}`}>

@ -1,12 +0,0 @@
export class Kanji {
private _symbol: string;
private _meaning: string;
private _longitude: number;
constructor(name: string, latitude: string, longitude: number) {
this._symbol = name;
this._meaning = latitude;
this._longitude = longitude;
}
}

@ -0,0 +1,49 @@
export class Kanji {
private _character: string;
private _meaning: string;
private _image: string;
constructor(character: string, meaning: string, image: string) {
this._character = character;
this._meaning = meaning;
this._image = image;
}
get character(): string {
return this._character;
}
get meaning(): string {
return this._meaning;
}
get image(): string {
return this._image;
}
toObject() {
return {
character: this._character,
meaning: this._meaning,
image: this._image
};
}
}
export class KanjiMapper {
static ApiJsonToKanji(json: any): Kanji {
console.log(typeof json)
return new Kanji(json.kanji.character, json.kanji.meaning.english, json.kanji.video.poster);
}
// @ts-ignore
static SerializedObjectToKanji(obj): Kanji | null {
if (!obj) return null;
return new Kanji(obj.character, obj.meaning, obj.image);
}
}

9853
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -13,6 +13,7 @@
"@react-native-community/slider": "4.2.4",
"@react-navigation/bottom-tabs": "^6.5.4",
"@react-navigation/native": "^6.1.3",
"@reduxjs/toolkit": "^1.9.2",
"@shopify/react-native-skia": "0.1.157",
"expo": "~47.0.12",
"expo-2d-context": "^0.0.3",
@ -25,6 +26,8 @@
"react-native-gesture-handler": "^2.8.0",
"react-native-svg": "13.4.0",
"react-native-web": "~0.18.9",
"react-redux": "^8.0.5",
"redux": "^4.2.1",
"rn-perfect-sketch-canvas": "^0.3.0"
},
"devDependencies": {

@ -2,13 +2,18 @@
import { View, StyleSheet } from 'react-native';
import DrawingCanva from '../components/DrawingCanva';
import KanjiPlaygroundList from '../components/KanjiPlaygroundList';
import { Kanji } from '../model/kanji';
const Playground = () => {
// 親 雨 序 余 貴 郷
return (
<View style={playgroundStyle.container}>
<KanjiPlaygroundList data={["親", "雨", "序", "余", "貴", "郷", "a", "b", "c", "d", "e", "f", "g"]}/>
<KanjiPlaygroundList data={[
new Kanji("親", "parent", "https://media.kanjialive.com/kanji_strokes/shita(shii)_16.svg"),
new Kanji("雨", "rain", "https://media.kanjialive.com/kanji_strokes/u-ame_8.svg"),
new Kanji("貴", "noble", "https://media.kanjialive.com/kanji_strokes/ki-touto(i)_12.svg")
]} />
<DrawingCanva backgroundImage="https://media.kanjialive.com/kanji_strokes/otozu(reru)_11.svg"/>
</View>
);

@ -0,0 +1,9 @@
import { Kanji } from '../../model/kanji';
import { FETCH_KANJIS } from '../constants';
export const fetchKanjis = (kanjis: Kanji[]) => {
return {
type: FETCH_KANJIS,
payload: kanjis,
};
}

@ -0,0 +1,9 @@
import { Kanji } from '../../model/kanji';
import { SET_SELECTED_KANJI } from '../constants';
export const setSelectedKanji = (kanji: Kanji) => {
return {
type: SET_SELECTED_KANJI,
payload: kanji.toObject(),
};
}

@ -0,0 +1,2 @@
export const FETCH_KANJIS = 'FETCH_KANJIS';
export const SET_SELECTED_KANJI = 'SET_SELECTED_KANJI';

@ -0,0 +1,21 @@
import * as c from '../constants';
const initialState = {
kanjis: [],
selectedKanji: null
}
// @ts-ignore
export default function kanjiReducer(state = initialState, action) {
switch (action.type) {
case c.FETCH_KANJIS:
// @ts-ignore
return { ...state, kanjis: state.kanjis.push(action.payload) };
case c.SET_SELECTED_KANJI:
// @ts-ignore
return { ...state, selectedKanji: action.payload };
default:
return state;
}
}

@ -0,0 +1,14 @@
import { configureStore } from '@reduxjs/toolkit'
import kanjiReducer from './reducers/kanjiReducer';
// Reference here all your application reducers
const reducer = {
kanjiReducer: kanjiReducer,
}
// @ts-ignore
const store = configureStore({
reducer
},);
export default store;

File diff suppressed because it is too large Load Diff

@ -10,21 +10,21 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6":
"@babel/code-frame@^7.0.0":
"integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz"
"version" "7.18.6"
dependencies:
"@babel/highlight" "^7.18.6"
"@babel/code-frame@~7.10.4":
"integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz"
"version" "7.10.4"
"@babel/code-frame@^7.18.6":
"integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz"
"version" "7.18.6"
dependencies:
"@babel/highlight" "^7.10.4"
"@babel/highlight" "^7.18.6"
"@babel/code-frame@7.10.4":
"@babel/code-frame@~7.10.4", "@babel/code-frame@7.10.4":
"integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz"
"version" "7.10.4"
@ -1021,7 +1021,7 @@
"pirates" "^4.0.5"
"source-map-support" "^0.5.16"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.6", "@babel/runtime@^7.8.4":
"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
"integrity" "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA=="
"resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz"
"version" "7.20.13"
@ -1788,6 +1788,16 @@
dependencies:
"nanoid" "^3.1.23"
"@reduxjs/toolkit@^1.9.2":
"integrity" "sha512-5ZAZ7hwAKWSii5T6NTPmgIBUqyVdlDs+6JjThz6J6dmHLDm6zCzv2OjHIFAi3Vvs1qjmXU0bm6eBojukYXjVMQ=="
"resolved" "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.2.tgz"
"version" "1.9.2"
dependencies:
"immer" "^9.0.16"
"redux" "^4.2.0"
"redux-thunk" "^2.4.2"
"reselect" "^4.1.7"
"@segment/loosely-validate-event@^2.0.0":
"integrity" "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw=="
"resolved" "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz"
@ -1832,6 +1842,14 @@
"resolved" "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz"
"version" "2.0.41"
"@types/hoist-non-react-statics@^3.3.1":
"integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA=="
"resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz"
"version" "3.3.1"
dependencies:
"@types/react" "*"
"hoist-non-react-statics" "^3.3.0"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
"integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
"resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz"
@ -1876,7 +1894,7 @@
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@~18.0.14":
"@types/react@*", "@types/react@^16.8 || ^17.0 || ^18.0", "@types/react@~18.0.14":
"integrity" "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA=="
"resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz"
"version" "18.0.27"
@ -1890,6 +1908,11 @@
"resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz"
"version" "0.16.2"
"@types/use-sync-external-store@^0.0.3":
"integrity" "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
"resolved" "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz"
"version" "0.0.3"
"@types/yargs-parser@*":
"integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
"resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz"
@ -2018,21 +2041,21 @@
"resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
"version" "5.0.1"
"ansi-styles@^3.2.0", "ansi-styles@^3.2.1":
"ansi-styles@^3.2.0":
"integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
"version" "3.2.1"
dependencies:
"color-convert" "^1.9.0"
"ansi-styles@^4.0.0":
"integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
"version" "4.3.0"
"ansi-styles@^3.2.1":
"integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
"version" "3.2.1"
dependencies:
"color-convert" "^2.0.1"
"color-convert" "^1.9.0"
"ansi-styles@^4.1.0":
"ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
"integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
"version" "4.3.0"
@ -2520,7 +2543,7 @@
"resolved" "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.36.1.tgz"
"version" "0.36.1"
"chalk@^2.0.0", "chalk@^2.0.1", "chalk@^2.4.2":
"chalk@^2.0.0":
"integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
"version" "2.4.2"
@ -2529,15 +2552,25 @@
"escape-string-regexp" "^1.0.5"
"supports-color" "^5.3.0"
"chalk@^4.0.0":
"integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
"version" "4.1.2"
"chalk@^2.0.1":
"integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
"version" "2.4.2"
dependencies:
"ansi-styles" "^4.1.0"
"supports-color" "^7.1.0"
"ansi-styles" "^3.2.1"
"escape-string-regexp" "^1.0.5"
"supports-color" "^5.3.0"
"chalk@^4.1.0", "chalk@^4.1.2":
"chalk@^2.4.2":
"integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
"version" "2.4.2"
dependencies:
"ansi-styles" "^3.2.1"
"escape-string-regexp" "^1.0.5"
"supports-color" "^5.3.0"
"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2":
"integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
"version" "4.1.2"
@ -2901,14 +2934,7 @@
"resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz"
"version" "1.11.7"
"debug@^2.2.0":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
dependencies:
"ms" "2.0.0"
"debug@^2.3.3":
"debug@^2.2.0", "debug@^2.3.3", "debug@2.6.9":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
@ -2922,19 +2948,47 @@
dependencies:
"ms" "^2.1.1"
"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4":
"debug@^4.1.0":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
"debug@2.6.9":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
"debug@^4.1.1":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.0.0"
"ms" "2.1.2"
"debug@^4.3.1":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
"debug@^4.3.2":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
"debug@^4.3.4":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
"debug@4":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
"decamelize@^1.2.0":
"integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
@ -3353,7 +3407,15 @@
dependencies:
"is-extendable" "^0.1.0"
"extend-shallow@^3.0.0", "extend-shallow@^3.0.2":
"extend-shallow@^3.0.0":
"integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q=="
"resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz"
"version" "3.0.2"
dependencies:
"assign-symbols" "^1.0.0"
"is-extendable" "^1.0.1"
"extend-shallow@^3.0.2":
"integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q=="
"resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz"
"version" "3.0.2"
@ -3810,7 +3872,7 @@
dependencies:
"source-map" "^0.7.3"
"hoist-non-react-statics@^3.3.0":
"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.2":
"integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
"resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
"version" "3.3.2"
@ -3870,6 +3932,11 @@
"resolved" "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz"
"version" "0.6.3"
"immer@^9.0.16":
"integrity" "sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ=="
"resolved" "https://registry.npmjs.org/immer/-/immer-9.0.19.tgz"
"version" "9.0.19"
"import-fresh@^2.0.0":
"integrity" "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg=="
"resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz"
@ -4032,11 +4099,6 @@
"resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
"version" "0.1.1"
"is-extendable@^0.1.1":
"integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
"resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
"version" "0.1.1"
"is-extendable@^1.0.1":
"integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA=="
"resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz"
@ -4376,7 +4438,14 @@
optionalDependencies:
"graceful-fs" "^4.1.6"
"kind-of@^3.0.2", "kind-of@^3.0.3":
"kind-of@^3.0.2":
"integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="
"resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
"version" "3.2.2"
dependencies:
"is-buffer" "^1.1.5"
"kind-of@^3.0.3":
"integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="
"resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
"version" "3.2.2"
@ -5316,14 +5385,7 @@
"resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz"
"version" "1.0.0"
"p-limit@^2.0.0":
"integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
"resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
"version" "2.3.0"
dependencies:
"p-try" "^2.0.0"
"p-limit@^2.2.0":
"p-limit@^2.0.0", "p-limit@^2.2.0":
"integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
"resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
"version" "2.3.0"
@ -5644,7 +5706,7 @@
"shell-quote" "^1.6.1"
"ws" "^7"
"react-dom@^17.0.2 || ^18.0.0", "react-dom@18.1.0":
"react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^17.0.2 || ^18.0.0", "react-dom@18.1.0":
"integrity" "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w=="
"resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz"
"version" "18.1.0"
@ -5657,25 +5719,25 @@
"resolved" "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz"
"version" "1.0.3"
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^17.0.1":
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0":
"integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
"version" "17.0.2"
"react-is@^16.13.0":
"react-is@^16.13.0", "react-is@^16.13.1", "react-is@^16.7.0":
"integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
"version" "16.13.1"
"react-is@^16.13.1":
"integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
"version" "16.13.1"
"react-is@^17.0.1":
"integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
"version" "17.0.2"
"react-is@^16.7.0":
"integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
"version" "16.13.1"
"react-is@^18.0.0":
"integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
"version" "18.2.0"
"react-native-canvas@^0.1.38":
"integrity" "sha512-DjtN921PKoa2liYF8hKq1263xg2o47Bj/1E/+l75GPicT2RV/x/Y1HBrLvFVCR3OO+UslXEC5BtRjfxDoh/Bug=="
@ -5757,7 +5819,7 @@
"escape-string-regexp" "2.0.0"
"invariant" "2.2.4"
"react-native@*", "react-native@>=0.46", "react-native@>=0.64", "react-native@0.70.5":
"react-native@*", "react-native@>=0.46", "react-native@>=0.59", "react-native@>=0.64", "react-native@0.70.5":
"integrity" "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw=="
"resolved" "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz"
"version" "0.70.5"
@ -5803,6 +5865,18 @@
"loose-envify" "^1.1.0"
"scheduler" "^0.21.0"
"react-redux@^7.2.1 || ^8.0.2", "react-redux@^8.0.5":
"integrity" "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw=="
"resolved" "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz"
"version" "8.0.5"
dependencies:
"@babel/runtime" "^7.12.1"
"@types/hoist-non-react-statics" "^3.3.1"
"@types/use-sync-external-store" "^0.0.3"
"hoist-non-react-statics" "^3.3.2"
"react-is" "^18.0.0"
"use-sync-external-store" "^1.0.0"
"react-refresh@^0.4.0":
"integrity" "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA=="
"resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz"
@ -5816,7 +5890,7 @@
"object-assign" "^4.1.1"
"react-is" "^16.12.0 || ^17.0.0 || ^18.0.0"
"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0", "react@^18.0.0", "react@^18.1.0", "react@>=16.8", "react@>=17.0.0", "react@>=18.0", "react@18.1.0":
"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.2 || ^18.0.0", "react@^18.0.0", "react@^18.1.0", "react@>=16.8", "react@>=17.0.0", "react@>=18.0", "react@18.1.0":
"integrity" "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ=="
"resolved" "https://registry.npmjs.org/react/-/react-18.1.0.tgz"
"version" "18.1.0"
@ -5860,6 +5934,18 @@
"source-map" "~0.6.1"
"tslib" "^2.0.1"
"redux-thunk@^2.4.2":
"integrity" "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q=="
"resolved" "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz"
"version" "2.4.2"
"redux@^4", "redux@^4.2.0", "redux@^4.2.1":
"integrity" "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w=="
"resolved" "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz"
"version" "4.2.1"
dependencies:
"@babel/runtime" "^7.9.2"
"regenerate-unicode-properties@^10.1.0":
"integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ=="
"resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz"
@ -5960,7 +6046,7 @@
"resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
"version" "1.0.0"
"reselect@^4.0.0":
"reselect@^4.0.0", "reselect@^4.1.7":
"integrity" "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A=="
"resolved" "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz"
"version" "4.1.7"
@ -6022,7 +6108,14 @@
"resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
"version" "1.0.4"
"rimraf@^2.5.4", "rimraf@^2.6.2":
"rimraf@^2.5.4":
"integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
"resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
"version" "2.7.1"
dependencies:
"glob" "^7.1.3"
"rimraf@^2.6.2":
"integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
"resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
"version" "2.7.1"
@ -6453,21 +6546,21 @@
"is-fullwidth-code-point" "^3.0.0"
"strip-ansi" "^6.0.1"
"strip-ansi@^5.0.0", "strip-ansi@^5.2.0":
"strip-ansi@^5.0.0":
"integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
"version" "5.2.0"
dependencies:
"ansi-regex" "^4.1.0"
"strip-ansi@^6.0.0":
"integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
"version" "6.0.1"
"strip-ansi@^5.2.0":
"integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
"version" "5.2.0"
dependencies:
"ansi-regex" "^5.0.1"
"ansi-regex" "^4.1.0"
"strip-ansi@^6.0.1":
"strip-ansi@^6.0.0", "strip-ansi@^6.0.1":
"integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
"version" "6.0.1"
@ -6528,14 +6621,7 @@
dependencies:
"has-flag" "^3.0.0"
"supports-color@^7.0.0":
"integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
"resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
"version" "7.2.0"
dependencies:
"has-flag" "^4.0.0"
"supports-color@^7.1.0":
"supports-color@^7.0.0", "supports-color@^7.1.0":
"integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
"resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
"version" "7.2.0"
@ -7082,12 +7168,7 @@
dependencies:
"async-limiter" "~1.0.0"
"ws@^7.5.1":
"integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
"resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
"version" "7.5.9"
"ws@^7":
"ws@^7", "ws@^7.5.1":
"integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
"resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
"version" "7.5.9"

Loading…
Cancel
Save