From 97c71a971b1610cc3bd847ebc74abc6d091cdbc7 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 20 Oct 2021 19:33:36 -0400 Subject: [PATCH] redux fully removed --- client/package.json | 3 - client/src/actions.js | 88 ------- .../CombatEnvironment/CombatUi/CombatUi.js | 6 - .../CombatEnvironment/CombatUi/Portrait.js | 3 +- .../OrientationPicker/OrientationPicker.js | 1 - .../Game/ReflexCheck/ReflexCheck.js | 2 - .../CharacterDetails/CharacterDetails.js | 227 ------------------ .../SelectCharacter/CharacterDetails/index.js | 1 - .../SelectCharacter/SelectCharacter.js | 2 - client/src/index.js | 12 +- client/src/reducers/characterDictionary.js | 31 --- client/src/reducers/gameReducer.js | 71 ------ client/src/reducers/index.js | 6 - client/src/reducers/playerReducer.js | 121 ---------- client/src/store.js | 13 - client/yarn.lock | 30 +-- 16 files changed, 7 insertions(+), 610 deletions(-) delete mode 100644 client/src/actions.js delete mode 100644 client/src/components/SelectCharacter/CharacterDetails/CharacterDetails.js delete mode 100644 client/src/components/SelectCharacter/CharacterDetails/index.js delete mode 100644 client/src/reducers/characterDictionary.js delete mode 100644 client/src/reducers/gameReducer.js delete mode 100644 client/src/reducers/index.js delete mode 100644 client/src/reducers/playerReducer.js delete mode 100644 client/src/store.js diff --git a/client/package.json b/client/package.json index ccca418..7242bf4 100644 --- a/client/package.json +++ b/client/package.json @@ -10,14 +10,11 @@ "dependencies": { "@material-ui/core": "^4.11.4", "@material-ui/icons": "^4.11.2", - "immer": "^8.0.1", "moment": "^2.24.0", "react": "^16.13.1", "react-dom": "^16.13.1", - "react-redux": "^7.2.0", "react-router-dom": "^5.1.2", "react-scripts": "3.4.1", - "redux": "^4.0.5", "styled-components": "^5.1.0", "use-sound": "^2.0.1" }, diff --git a/client/src/actions.js b/client/src/actions.js deleted file mode 100644 index dde7965..0000000 --- a/client/src/actions.js +++ /dev/null @@ -1,88 +0,0 @@ -// State-Control Actions List: - -// Player State Actions: -export const selectCharacterType = (characterType) => ({ - type: 'SELECT_CHARACTER_TYPE', - characterType, -}); - -export const setPlayerCoords = (x, y) => ({ - type: 'SET_PLAYER_COORDS', - x, - y, -}); - -export const setPlayerDamage = (val) => ({ - type: 'SET_PLAYER_DAMAGE', - val, -}); -export const setPlayerEndurance = (val) => ({ - type: 'SET_PLAYER_ENDURANCE', - val, -}); -export const setPlayerAcrobatics = (val) => ({ - type: 'SET_PLAYER_ACROBATICS', - val, -}); -export const setPlayerItemSkill = (val) => ({ - type: 'SET_PLAYER_ITEM_SKILL', - val, -}); - -export const setPlayerStats = (dmg, end, acr, itm) => ({ - type: 'SET_PLAYER_STATS', - dmg, - end, - acr, - itm, -}); - -export const addToPlayerMovesList = (move) => ({ - type: 'ADD_TO_PLAYER_MOVES_LIST', - move, -}); - -export const setFrame = (frame) => ({ - type: 'SET_FRAME', - frame, -}); - -export const setCombatPhase = (combatPhase) => ({ - type: 'SET_COMBAT_PHASE', - combatPhase, -}); - -export const setReflexCheck = (reflexCheckId) => ({ - type: 'SET_REFLEX_CHECK', - reflexCheckId, -}) - -export const startReflexCheck = () => ({ - type: 'START_REFLEX_CHECK', -}); - -export const stopReflexCheck = () => ({ - type: 'STOP_REFLEX_CHECK', -}); - -// Minigame actions: - -export const setMinigameRound = (round, needUpdate) => ({ - type: 'SET_MINIGAME_ROUND', - round, - needUpdate, // boolean: true if it comes from a button, false if it's from the minigame component itself. -}); - -export const setMinigameRoundFromButton = () => ({ - type: 'BUTTON_ADVANCE_MINIGAME', -}); - -export const setKarma = (karmicAdjustment) => ({ - type: 'SET_KARMA', - karmicAdjustment, -}); - -export const setShowmanship = (showmanshipAdjustment) => ({ - type: 'SET_SHOWMANSHIP', - showmanshipAdjustment, -}); diff --git a/client/src/components/Game/CombatEnvironment/CombatUi/CombatUi.js b/client/src/components/Game/CombatEnvironment/CombatUi/CombatUi.js index 349d9cf..757fbba 100644 --- a/client/src/components/Game/CombatEnvironment/CombatUi/CombatUi.js +++ b/client/src/components/Game/CombatEnvironment/CombatUi/CombatUi.js @@ -8,12 +8,10 @@ import { attackRange } from '../../../../Helpers/playerCombatHelpers'; import { determineIfBaddieInRange } from '../../../../Helpers/playerActionPhase'; import data from '../../../../data/mapSeed.json'; import baddieData from '../../../../data/baddie.json'; -import { useDispatch, useSelector } from 'react-redux'; // recoil state management import combatState from '../../../../state'; import globalState from '../../../../state'; import { useRecoilValue, useRecoilState } from 'recoil' -import { setCombatPhase, setReflexCheck } from '../../../../actions'; // Components: import Portrait from './Portrait'; import ReflexCheck from '../../ReflexCheck'; @@ -24,7 +22,6 @@ import AttackQueue from './AttackQueue'; // Data: import playerMoves from '../../../../data/playerMoves.json'; import { baddieCoords } from '../../../../state/combatState'; -import { bindActionCreators } from 'redux'; // Placeholder temp stuff ??? const CombatUi = ({turn, setEnemyAttackRadius}) => { @@ -44,9 +41,6 @@ const CombatUi = ({turn, setEnemyAttackRadius}) => { const level = useRecoilValue(globalState.level) - // Conditionally render reflex check based on this value (and falsilly don't render on a zero!): - const doReflexCheck = useSelector((state) => state.game.doReflexCheck); - const [combatPhase, setCombatPhase] = useRecoilState(combatState.combatPhase); const [reflexCheck, setReflexCheck] = useRecoilState(combatState.reflexCheck); diff --git a/client/src/components/Game/CombatEnvironment/CombatUi/Portrait.js b/client/src/components/Game/CombatEnvironment/CombatUi/Portrait.js index f015006..45d4614 100644 --- a/client/src/components/Game/CombatEnvironment/CombatUi/Portrait.js +++ b/client/src/components/Game/CombatEnvironment/CombatUi/Portrait.js @@ -1,7 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import {useSelector} from 'react-redux'; import {useRecoilState, useRecoilValue} from 'recoil'; import combatState from '../../../../state' @@ -9,7 +8,7 @@ import combatState from '../../../../state' const Portrait = ({playerPortrait, selectedSkill, base}) => { // for this component to work, the naming convention of the baddie json must be, non capitalized. - const combatPhase = useSelector((state) => state.game.combatPhase); + const combatPhase = useRecoilValue(combatState.combatPhase); const [baddieDecision, setBaddieDecision] = useRecoilState(combatState.baddieDecision); const status = useRecoilValue(playerPortrait ? combatState.playerStatus : combatState.baddieStatus); // when baddie is complete this will include baddie as well diff --git a/client/src/components/Game/CombatEnvironment/OrientationPicker/OrientationPicker.js b/client/src/components/Game/CombatEnvironment/OrientationPicker/OrientationPicker.js index 22d6ee4..9f86db3 100644 --- a/client/src/components/Game/CombatEnvironment/OrientationPicker/OrientationPicker.js +++ b/client/src/components/Game/CombatEnvironment/OrientationPicker/OrientationPicker.js @@ -1,6 +1,5 @@ import React from 'react'; import styled from 'styled-components'; -import { useDispatch } from 'react-redux'; import combatState from '../../../../state'; import { useRecoilState } from 'recoil'; import { advanceCombatWithMovement } from '../../../../Helpers/generalCombatHelpers'; diff --git a/client/src/components/Game/ReflexCheck/ReflexCheck.js b/client/src/components/Game/ReflexCheck/ReflexCheck.js index 3f3c36b..4a85275 100644 --- a/client/src/components/Game/ReflexCheck/ReflexCheck.js +++ b/client/src/components/Game/ReflexCheck/ReflexCheck.js @@ -3,7 +3,6 @@ import styled from 'styled-components'; import useSound from 'use-sound'; import ugh from '../../../assets/sounds/ugh-01.mp3'; import { useTime } from '../../../hooks/useTime'; -import { useDispatch } from 'react-redux'; import combatState from '../../../state'; import globalState from '../../../state'; import { useRecoilState, useRecoilValue } from 'recoil'; @@ -12,7 +11,6 @@ import data from '../../../data/mapSeed.json'; // Combo = integer for which of the 3 possible key combos to use for the reflex check: function ReflexCheck({ combo }) { - const dispatch = useDispatch(); // Update time at very short interval to 'sample' for updates at high frequency: let now = useTime(20); const [then, setThen] = React.useState(0); diff --git a/client/src/components/SelectCharacter/CharacterDetails/CharacterDetails.js b/client/src/components/SelectCharacter/CharacterDetails/CharacterDetails.js deleted file mode 100644 index 49ba614..0000000 --- a/client/src/components/SelectCharacter/CharacterDetails/CharacterDetails.js +++ /dev/null @@ -1,227 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import { Link } from 'react-router-dom'; -import { useSelector, useDispatch } from 'react-redux'; -import { setPlayerStats } from '../../../actions'; - -// TO BE DEPRECATED - -// In this preliminary character customization screen, we'll experiment with the idea of having a single currency -// that can either be spent on improving numerical stats, or buying new moves. -function CharacterDetails() { - const dispatch = useDispatch(); - // Redux will be used to control the player's character type, as well as the stats and moves list: - const characterType = useSelector((state) => state.player.characterType); - console.log(characterType); - const { playerDmg, playerEnd, playerAcr, playerItm } = useSelector( - (state) => state.player - ); - // Players are granted 15 skill points to spend on custom initial stats, and these will use local state to limit allocations: - const [pts, setPts] = React.useState({ value: 15 }); - const [damageAllocation, setDamageAllocation] = React.useState({ value: 0 }); - const [enduranceAllocation, setEnduranceAllocation] = React.useState({ - value: 0, - }); - const [acroAllocation, setAcroAllocation] = React.useState({ - value: 0, - }); - const [itemsAllocation, setItemsAllocation] = React.useState({ value: 0 }); - // States for Ability Purchase Options: - const [backBreaker, setBackBreaker] = React.useState(false); - const [chokeSlam, setChokeSlam] = React.useState(false); - const [dropkick, setDropkick] = React.useState(false); - const [pileDriver, setPileDriver] = React.useState(false); - - const handleArchetype = (type) => { - switch (type) { - case 'High-Flier': - return 'High-Fliers do relatively less damage but have the showiest, most acrobatic moves.'; - case 'Tank': - return 'Tanks can take a lot of punishment and do good damage, but lack experience in an AGILE environment.'; - case 'SuperStar': - return 'SuperStars are the most balanced and overall best kinds of fighters...'; - } - }; - // Handler functions destribute points between various stats & abilities as they are spent. - // The handlePoints function is the bank: all transactions are sent to it for approval: - const handlePoints = (ev, skill) => { - // for all transactions, make available only if there are sufficient ALLOCATABLE points, and disallow negative numbers: - const prev = skill.value; - const diff = Number(ev.target.value) - prev; - if ((pts.value > 0 || diff < 0) && ev.target.value >= 0) { - // if transaction is valid, adjust points total, - setPts({ value: pts.value - diff }); - // and return the Difference (signed positive or negative) to be combined with the previous value and then DISPATCHED: - return diff; - } else { - console.log('insufficient points/negative value attempted.'); - // otherwise return zero, since that is the amount of change you're allowed to get: - return 0; - } - }; - // Controlled input handlers for stat adjustments: - const handleDamage = (event) => { - // Set value of damageAllocation state to the value of itself plus the outcome of the handlePoints fucntion (returns -1, 0 or +1): - setDamageAllocation({ - value: damageAllocation.value + handlePoints(event, damageAllocation), - }); - }; - const handleEndurance = (event) => { - setEnduranceAllocation({ - value: - enduranceAllocation.value + handlePoints(event, enduranceAllocation), - }); - }; - const handleAcro = (event) => { - setAcroAllocation({ - value: acroAllocation.value + handlePoints(event, acroAllocation), - }); - }; - const handleItems = (event) => { - setItemsAllocation({ - value: itemsAllocation.value + handlePoints(event, itemsAllocation), - }); - }; - // TODO: Controlled inputs for purchasing moves - - // Submit button handler function: dispatches all allocated point values to the player's Redux state: - const handleSubmit = () => { - dispatch( - setPlayerStats( - damageAllocation.value, - enduranceAllocation.value, - acroAllocation.value, - itemsAllocation.value - ) - ); - }; - - return ( - -

Player Class: {characterType}

-

{handleArchetype(characterType)}

-

- Choose Your Skills: ({pts.value} Points Remaining) -

- -
-

Stats:

-

Points Allocated:

-
- - Damage: {playerDmg + damageAllocation.value} - - - - Endurance: {playerEnd + enduranceAllocation.value} - - - - Acrobatics: {playerAcr + acroAllocation.value} - - - - Item Use: {playerItm + itemsAllocation.value} - - -
- -

Abilities

- Back Breaker - Choke Slam - Drop Kick - Pile Driver -
- - - -
- ); -} - -const Wrapper = styled.div` - border: 2px solid white; - border-radius: 8px; - margin: 8px; - padding: 8px; - display: grid; - grid-template-areas: - 'head head' - 'desc desc' - 'choose choose' - 'stats abilities'; -`; - -const SkillBox = styled.div` - border: 2px solid white; - border-radius: 8px; - margin: 4px; - padding: 4px; - font-size: 20px; -`; - -const Skill = styled.div` - border: 2px solid limegreen; - border-radius: 6px; - margin: 4px; - display: grid; - grid-template-columns: 1fr 1fr; - font-size: 20px; -`; - -const Adjuster = styled.input` - border: 1px solid blue; - border-radius: 6px; - background-color: black; - color: limegreen; - text-align: center; - font-size: 22px; - font-weight: bold; -`; - -const Ability = styled.div` - border: 1px solid magenta; - border-radius: 6px; - height: 14%; - margin: 6px; - &:hover { - box-shadow: 0 0 8px 8px magenta; - } -`; - -const Increase = styled.button` - border: 2px solid whitesmoke; - border-radius: 12px; - background-color: limegreen; -`; -const Decrease = styled.button` - border: 2px solid whitesmoke; - border-radius: 12px; - background-color: red; -`; - -export default CharacterDetails; diff --git a/client/src/components/SelectCharacter/CharacterDetails/index.js b/client/src/components/SelectCharacter/CharacterDetails/index.js deleted file mode 100644 index 0ece84c..0000000 --- a/client/src/components/SelectCharacter/CharacterDetails/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './CharacterDetails'; diff --git a/client/src/components/SelectCharacter/SelectCharacter.js b/client/src/components/SelectCharacter/SelectCharacter.js index 729cf4e..153a452 100644 --- a/client/src/components/SelectCharacter/SelectCharacter.js +++ b/client/src/components/SelectCharacter/SelectCharacter.js @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import styled from 'styled-components'; -import CharacterDetails from './CharacterDetails'; import characterState from '../../state' @@ -63,7 +62,6 @@ function SelectCharacter({setScene, scene}) { } - {isSelected && } ); } diff --git a/client/src/index.js b/client/src/index.js index 1980e13..b736a46 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -1,19 +1,13 @@ import React from 'react'; import ReactDOM from 'react-dom'; import App from './components/App'; -import configureStore from './store'; -import { Provider } from 'react-redux'; import { RecoilRoot } from 'recoil' -const store = configureStore(); - ReactDOM.render( - - - - - + + + , document.getElementById('root') ); diff --git a/client/src/reducers/characterDictionary.js b/client/src/reducers/characterDictionary.js deleted file mode 100644 index bad544d..0000000 --- a/client/src/reducers/characterDictionary.js +++ /dev/null @@ -1,31 +0,0 @@ -// The Character Dictionary will have the default stats associated with each Character Type, to help define players' initial stats: -// These export statements will be read by the player reducer when calculating the player's stats. -// This should allow for easier switching between character types while retaining stats chosen by the player. -// Let's say stats are on a 0-100 range: - -export const HighFlier = { - id: 'highFlier', - damage: 12, - endurance: 10, - acrobatics: 17, - items: 11, - moveList: ['corkscrew'], -}; - -export const Tank = { - id: 'tank', - damage: 15, - endurance: 15, - acrobatics: 10, - items: 10, - moveList: ['chokehold'], -}; - -export const SuperStar = { - id: 'superStar', - damage: 14, - endurance: 14, - acrobatics: 14, - items: 13, - moveList: ['suplex'], -}; diff --git a/client/src/reducers/gameReducer.js b/client/src/reducers/gameReducer.js deleted file mode 100644 index 10bb1b9..0000000 --- a/client/src/reducers/gameReducer.js +++ /dev/null @@ -1,71 +0,0 @@ -// Game Reducer will be used to keep track of which scene/frame you're on in the overall script: - -const initialState = { - // For cutscenes: - scene: 0, - frame: 0, - // Which minigame round is it? - minigameRound: 0, - // This momentarily lights up true when a button is pressed, to tell the minigame component to refresh the button options: - newMinigameRound: false, - // Eight possible combat phases: playerMove, playerAction, baddieMove, baddieAction, specialEvent, noCombat, gameOver and victory: - combatPhase: 'noCombat', - // Reflex check will be either zero, OR the ID number of one of the playerMoves: - reflexCheck: 0, - // Separate the ID of the reflex check from the cue to start it: - doReflexCheck: false, -}; - -export default function (state = initialState, action) { - switch (action.type) { - case 'SET_SCENE': { - return { - ...state, - scene: action.scene, - // when you go to a new scene reset the frame counter also: - frame: 0, - }; - } - case 'SET_FRAME': { - return { - ...state, - frame: action.frame, - }; - } - case 'SET_MINIGAME_ROUND': { - return { - ...state, - minigameRound: action.round, - newMinigameRound: action.needUpdate, - }; - } - case 'SET_COMBAT_PHASE': { - return { - ...state, - combatPhase: action.combatPhase, - }; - } - case 'SET_REFLEX_CHECK': { - return { - ...state, - reflexCheck: action.reflexCheckId, - }; - } - case 'START_REFLEX_CHECK': { - return { - ...state, - doReflexCheck: true, - } - } - case 'STOP_REFLEX_CHECK': { - return { - ...state, - reflexCheck: 0, - doReflexCheck: false, - }; - } - default: { - return state; - } - } -} diff --git a/client/src/reducers/index.js b/client/src/reducers/index.js deleted file mode 100644 index f5aa4c8..0000000 --- a/client/src/reducers/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { combineReducers } from 'redux'; - -import player from './playerReducer'; -import game from './gameReducer'; - -export default combineReducers({ player, game }); diff --git a/client/src/reducers/playerReducer.js b/client/src/reducers/playerReducer.js deleted file mode 100644 index 47a2040..0000000 --- a/client/src/reducers/playerReducer.js +++ /dev/null @@ -1,121 +0,0 @@ -// State for the Player lives here: -import produce from 'immer'; -import { HighFlier, Tank, SuperStar } from './characterDictionary'; - -const characters = { - highFlier: HighFlier, - tank: Tank, - superStar: SuperStar, -}; - -const initialState = { - // You'll select your character type at the game's outset: - characterType: null, - playerDmg: 0, - playerEnd: 0, - playerAcr: 0, - playerItm: 0, - playerMoves: [], - // Player status will change from 'confirmed' to 'unconfirmed' (and then back again) whenever a new set of choices has to be made: - playerStatus: 'unconfirmed', - karma: 0, - showmanship: 0, - karmicAlignmentLocked: false, -}; - -export default function (state = initialState, action) { - switch (action.type) { - case 'SET_PLAYER_COORDS': { - return { - ...state, - xPosition: action.x, - yPosition: action.y, - }; - } - case 'SELECT_CHARACTER_TYPE': { - // Before doing anything else, determine if this is the first character type: - if (state.characterType) { - // if character type has already been selected, remove the stat points associated with it before updating to the new selection: - return produce(state, (draftState) => { - draftState.playerDmg -= characters[state.characterType]['damage']; - draftState.playerEnd -= characters[state.characterType]['endurance']; - draftState.playerAcr -= characters[state.characterType]['acrobatics']; - draftState.playerItm -= characters[state.characterType]['items']; - // And remove any special moves ASSOCIATED WITH the player type: - draftState.playerMoves.filter( - (move) => move != characters[state.characterType]['moveList'][0] - ); - // THEN add the new values: - draftState.playerDmg += characters[action.characterType]['damage']; - draftState.playerEnd += characters[action.characterType]['endurance']; - draftState.playerAcr += - characters[action.characterType]['acrobatics']; - draftState.playerItm += characters[action.characterType]['items']; - // And lastly, add the special move for the newly chosen character type: - draftState.playerMoves.push( - characters[action.characterType]['moveList'][0] - ); - draftState.characterType = action.characterType; - }); - // If this is the first character selection, simply add everything from that character type: - } else { - return { - ...state, - // Set the characterType value to the chosen type: - characterType: action.characterType, - // Then add the pre-set values for that character type: - playerDmg: characters[action.characterType]['damage'], - playerEnd: characters[action.characterType]['endurance'], - playerAcr: characters[action.characterType]['acrobatics'], - playerItm: characters[action.characterType]['items'], - playerMoves: characters[action.characterType]['moveList'], - }; - } - } - case 'SET_PLAYER_DAMAGE': { - return { - ...state, - playerDmg: action.val, - }; - } - case 'SET_PLAYER_ENDURANCE': { - return { - ...state, - playerEnd: action.val, - }; - } - case 'SET_PLAYER_ACROBATICS': { - return { - ...state, - playerAcr: action.val, - }; - } - case 'SET_PLAYER_ITEM_SKILL': { - return { - ...state, - playerItm: action.val, - }; - } - case 'SET_PLAYER_STATS': { - return produce(state, (draftState) => { - draftState.playerDmg += action.dmg; - draftState.playerEnd += action.end; - draftState.playerAcr += action.acr; - draftState.playerItm += action.itm; - }); - } - case 'SET_KARMA': { - return produce(state, (draftState) => { - draftState.karma += action.karmicAdjustment; - }); - } - case 'SET_SHOWMANSHIP': { - return produce(state, (draftState) => { - draftState.showmanship += action.showmanshipAdjustment; - }); - } - default: { - return state; - } - } -} diff --git a/client/src/store.js b/client/src/store.js deleted file mode 100644 index 86cd98d..0000000 --- a/client/src/store.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createStore } from 'redux'; - -import reducer from './reducers'; - -export default function configureStore(initialState) { - const store = createStore( - reducer, - initialState, - window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() - ); - - return store; -} diff --git a/client/yarn.lock b/client/yarn.lock index 93ed67f..43ae548 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -5157,7 +5157,7 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -5379,11 +5379,6 @@ immer@1.10.0: resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== -immer@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -8898,7 +8893,7 @@ react-error-overlay@^6.0.7: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: +react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8908,17 +8903,6 @@ react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-i resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-redux@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" - integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== - dependencies: - "@babel/runtime" "^7.5.5" - hoist-non-react-statics "^3.3.0" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^16.9.0" - react-router-dom@^5.1.2: version "5.2.0" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" @@ -9121,14 +9105,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redux@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -10281,7 +10257,7 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@1.2.0, symbol-observable@^1.2.0: +symbol-observable@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==