From a4bc865c23150cf1e1a6c1b89507e721f42f9c1f Mon Sep 17 00:00:00 2001 From: Lyulyaev Maxim <8152180+LyulyaevMaxim@users.noreply.github.com> Date: Mon, 10 Aug 2020 03:13:45 +0300 Subject: [PATCH] [Feature] Gameboard (part 1) (#2) * [Feature] Add game board. Now we can to start and restart game. I use mock data yet * [Feature][Modules] Add Ant Design for base stylization * [Bugfix][Environment] Hot reload works incorrectly after version 2.24.9 ( https://github.com/gatsbyjs/gatsby/issues/26192 ) * [Bugfix] Stub for 'Error: The result of this StaticQuery could not be fetched' (https://github.com/gatsbyjs/gatsby/issues/24902) --- .gitignore | 1 + configs/linters/.eslintrc.js | 4 + configs/linters/.stylelintrc.js | 5 +- gatsby-browser.ts | 1 + package.json | 2 +- src/components/page-root/GameBoard.tsx | 58 ++ src/components/page-root/GameBoardCell.tsx | 95 ++++ src/components/page-root/GameInfo.tsx | 54 ++ src/components/page-root/index.tsx | 11 + src/helpers/decorators/index.tsx | 57 ++ src/modules/optimizations/index.tsx | 7 +- src/modules/seo/index.tsx | 18 +- src/modules/stylization/css-reset.css | 52 -- src/modules/stylization/package.json | 3 +- src/pages/index.tsx | 28 +- src/store/battleshipGame/@types/index.ts | 74 +++ src/store/battleshipGame/actions.ts | 14 + src/store/battleshipGame/reducer.ts | 93 +++ src/store/battleshipGame/selectors.ts | 40 ++ src/store/index.ts | 17 +- yarn.lock | 622 +++++++++++++++++++-- 21 files changed, 1125 insertions(+), 131 deletions(-) create mode 100644 src/components/page-root/GameBoard.tsx create mode 100644 src/components/page-root/GameBoardCell.tsx create mode 100644 src/components/page-root/GameInfo.tsx create mode 100644 src/components/page-root/index.tsx create mode 100644 src/helpers/decorators/index.tsx create mode 100644 src/store/battleshipGame/@types/index.ts create mode 100644 src/store/battleshipGame/actions.ts create mode 100644 src/store/battleshipGame/reducer.ts create mode 100644 src/store/battleshipGame/selectors.ts diff --git a/.gitignore b/.gitignore index 068d37b..b2865ea 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ !.yarn/plugins !.yarn/sdks !.yarn/versions +yarn-error.log .pnp.* /cypress diff --git a/configs/linters/.eslintrc.js b/configs/linters/.eslintrc.js index 4c52284..cf622f6 100644 --- a/configs/linters/.eslintrc.js +++ b/configs/linters/.eslintrc.js @@ -30,6 +30,7 @@ module.exports = { 'one-var': 0, 'spaced-comment': 0, 'no-param-reassign': 1, + 'default-case': 1, 'no-use-before-define': 0, 'no-unused-vars': 1, 'no-shadow': 1, @@ -46,7 +47,10 @@ module.exports = { 'react/destructuring-assignment': 0, 'react/no-children-prop': 0, 'react/jsx-props-no-spreading': 0, + 'react/jsx-pascal-case': 0, 'react/button-has-type': 0, + 'react/state-in-constructor': 0, + 'react/static-property-placement': 0, 'react/require-default-props': 2, 'react/jsx-max-depth': [1, { max: 5 }], 'react-hooks/exhaustive-deps': 1, diff --git a/configs/linters/.stylelintrc.js b/configs/linters/.stylelintrc.js index df04667..22875c8 100644 --- a/configs/linters/.stylelintrc.js +++ b/configs/linters/.stylelintrc.js @@ -37,10 +37,10 @@ module.exports = { format: 'hsl', }, 'aditayvm/at-rule-no-children': [{ severity: 'warning' }], - 'order/order': ['custom-properties', 'dollar-variables', 'declarations', 'at-rules', 'rules'], + 'order/order': null, //['custom-properties', 'dollar-variables', 'declarations', 'at-rules', 'rules'], // 'order/properties-alphabetical-order': true, 'selector-type-no-unknown': [true, { ignore: ['custom-elements'] }], - 'selector-class-pattern': '^[a-z][a-zA-Z0-9]+$', //lowerCamelCase + // 'selector-class-pattern': '^[a-z][a-zA-Z0-9]+$', //lowerCamelCase 'block-no-empty': null, 'at-rule-no-unknown': null, 'max-nesting-depth': null, @@ -48,6 +48,7 @@ module.exports = { 'no-missing-end-of-source-newline': null, 'comment-empty-line-before': null, 'comment-whitespace-inside': null, + 'value-keyword-case': null, ...(withJS && { 'no-empty-source': null }), }, } diff --git a/gatsby-browser.ts b/gatsby-browser.ts index 358cc1f..ec13590 100644 --- a/gatsby-browser.ts +++ b/gatsby-browser.ts @@ -1,4 +1,5 @@ /* https://www.gatsbyjs.org/docs/browser-apis/ */ +import 'antd/dist/antd.css' import 'modules/stylization/css-reset.css' import { detectBrowser } from 'modules/polyfills' diff --git a/package.json b/package.json index f791678..33004c3 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "babel-loader": "8.1.0", "babel-preset-gatsby": "0.5.5", "cross-env": "7.0.2", - "gatsby": "2.24.36", + "gatsby": "2.24.9", "gatsby-plugin-manifest": "2.4.22", "gatsby-plugin-offline": "3.2.22", "gatsby-plugin-sharp": "2.6.25", diff --git a/src/components/page-root/GameBoard.tsx b/src/components/page-root/GameBoard.tsx new file mode 100644 index 0000000..60334ae --- /dev/null +++ b/src/components/page-root/GameBoard.tsx @@ -0,0 +1,58 @@ +import React from 'react' +import { css } from 'styled-components' +import { useSelector } from 'react-redux' +import { flowRight } from 'lodash-es' +import { withErrorBoundaries } from 'helpers/decorators' +import { battleshipGameSelectors } from 'store/battleshipGame/selectors' +import { GameBoardCell } from './GameBoardCell' + +function GameBoard() { + const gameBoardSize = useSelector(battleshipGameSelectors.getGameBoardSize), + gameBoardMap = useSelector(battleshipGameSelectors.getGameBoardData), + [rowsSize, columnsSize] = [gameBoardSize, gameBoardSize], + Cells = React.useMemo(() => { + const cells = [] + for (let rowIndex = 0; rowIndex < rowsSize; rowIndex += 1) { + for (let columnIndex = 0; columnIndex < columnsSize; columnIndex += 1) { + const cell = gameBoardMap[rowIndex][columnIndex] + cells.push( + + ) + } + } + return cells + }, [gameBoardMap, rowsSize, columnsSize]) + + return ( +
+ {Cells} +
+ ) +} + +const boardStyles = { + wrapper: css<{ rowsSize: number; columnsSize: number }>` + display: grid; + grid-area: game-board; + ${(props) => { + let dynamicStyles = '' + const cellSize = '2rem' + + dynamicStyles += ` + grid-template-columns: repeat(${props.columnsSize}, ${cellSize}); + grid-template-rows: repeat(${props.rowsSize}, ${cellSize}); + ` + + return dynamicStyles + }}; + `, +} + +const withDecorators = flowRight(withErrorBoundaries(), React.memo)(GameBoard) +export { withDecorators as GameBoard } diff --git a/src/components/page-root/GameBoardCell.tsx b/src/components/page-root/GameBoardCell.tsx new file mode 100644 index 0000000..d3b6f3d --- /dev/null +++ b/src/components/page-root/GameBoardCell.tsx @@ -0,0 +1,95 @@ +import React from 'react' +import { css } from 'styled-components' +import { Checkbox } from 'antd' +import { useSelector, useDispatch } from 'react-redux' +import { battleshipGameSelectors } from 'store/battleshipGame/selectors' +import { battleshipGameAPI } from 'store/battleshipGame/actions' +import { NGameBoard } from 'store/battleshipGame/@types' + +interface IGameBoardCell extends NGameBoard.ICell { + rowIndex: NGameBoard.rowIndex + columnIndex: NGameBoard.columnIndex +} + +export const GameBoardCell: React.FC = React.memo((props) => { + const { rowIndex, columnIndex, shipId, isShot } = props + + const dispatch = useDispatch(), + onCellClick = React.useCallback( + (event: any) => { + event.stopPropagation() + dispatch(battleshipGameAPI.shotCell({ payload: { rowIndex, columnIndex } })) + }, + [dispatch, rowIndex, columnIndex] + ) + + const ship = useSelector(battleshipGameSelectors.getShip({ shipId })), + cell = useSelector(battleshipGameSelectors.getShipCell({ shipId, rowIndex, columnIndex })), + cellBorders = cell?.borders ?? Object.prototype, + isShowHints = useSelector(battleshipGameSelectors.isShowHints({ shipId })) + + const styles = React.useMemo( + () => [ + cellStyles.cell, + shipId && + css` + --cellsAlive: ${ship?.cellsAlive}; + `, + isShowHints && cellStyles.cellWithHints, + ], + [shipId, isShowHints] + ), + className = React.useMemo( + () => + [ + shipId && + Object.keys(cellBorders) + .map((borderPosition) => `border-${borderPosition}`) + .join(' '), + ] + .filter(Boolean) + .join(''), + [shipId, cellBorders] + ) + + return ( + + ) +}) + +const cellStyles = { + cell: css` + &.ant-checkbox-wrapper { + margin: 0; + } + .ant-checkbox { + display: flex; + } + .ant-checkbox, + .ant-checkbox-inner { + width: 100%; + height: 100%; + } + + .ant-checkbox-disabled .ant-checkbox-inner { + background-color: hsl(0 70% calc(var(--cellsAlive) * 20%)); + } + + &[class*='border-'] .ant-checkbox-disabled .ant-checkbox-inner { + border: initial !important; + } + + ${['left', 'right', 'top', 'bottom'].reduce((dynamicStyles, currentBorderPosition) => { + dynamicStyles += ` + &.border-${currentBorderPosition} .ant-checkbox-disabled .ant-checkbox-inner { + border-${currentBorderPosition}: 2px solid hsl(0deg 0% 0%) !important; + }` + return dynamicStyles + }, '')} + `, + cellWithHints: css` + .ant-checkbox-inner { + background-color: hsl(271 76% 53% / 0.4); + } + `, +} diff --git a/src/components/page-root/GameInfo.tsx b/src/components/page-root/GameInfo.tsx new file mode 100644 index 0000000..7110657 --- /dev/null +++ b/src/components/page-root/GameInfo.tsx @@ -0,0 +1,54 @@ +import React from 'react' +import { css } from 'styled-components' +import { Modal, Button } from 'antd' +import { useSelector, useDispatch } from 'react-redux' +import { flowRight } from 'lodash-es' +import { withErrorBoundaries } from 'helpers/decorators' +import { battleshipGameSelectors } from 'store/battleshipGame/selectors' +import { battleshipGameAPI } from 'store/battleshipGame/actions' + +function GameInfo() { + const dispatch = useDispatch(), + aliveShips = useSelector(battleshipGameSelectors.getAliveShips), + onShowHints = React.useCallback(() => { + dispatch(battleshipGameAPI.showHints()) + setTimeout(() => dispatch(battleshipGameAPI.showHints()), 1000) + }, [dispatch]) + + const [isModalVisible, setModalVisible] = React.useState(false), + onClickCancel = React.useCallback(() => setModalVisible(false), []), + onClickOk = React.useCallback(() => { + setModalVisible(false) + dispatch(battleshipGameAPI.restartGame()) + }, [dispatch]) + + React.useEffect(() => { + if (!aliveShips) setTimeout(() => setModalVisible(true)) + }, [aliveShips]) + + return ( + + ) +} + +const infoStyles = { + wrapper: css` + grid-area: info; + `, +} + +const withDecorators = flowRight(withErrorBoundaries(), React.memo)(GameInfo) +export { withDecorators as GameInfo } diff --git a/src/components/page-root/index.tsx b/src/components/page-root/index.tsx new file mode 100644 index 0000000..57c717a --- /dev/null +++ b/src/components/page-root/index.tsx @@ -0,0 +1,11 @@ +import { LoadableComponent } from '@loadable/component' +import { getModuleAsync } from 'modules/optimizations' + +export const GameBoard: LoadableComponent<{}> = getModuleAsync({ + moduleName: 'GameBoard', + moduleImport: () => import(/* webpackChunkName: "GameBoard", webpackPrefetch: true */ `./GameBoard`), + }), + GameInfo: LoadableComponent<{}> = getModuleAsync({ + moduleName: 'GameInfo', + moduleImport: () => import(/* webpackChunkName: "GameInfo", webpackPrefetch: true */ `./GameInfo`), + }) diff --git a/src/helpers/decorators/index.tsx b/src/helpers/decorators/index.tsx new file mode 100644 index 0000000..7f40a26 --- /dev/null +++ b/src/helpers/decorators/index.tsx @@ -0,0 +1,57 @@ +import React from 'react' + +interface IWithErrorBoundariesSettings { + isWrapperHandler?: boolean + customError?: null | ((errorInfo: IWrapperState) => React.ReactNode) +} + +interface IWithErrorBoundaries { + stateKey: string + (settings?: IWithErrorBoundariesSettings): (Component: any) => React.ComponentType +} + +interface IWrapperState { + hasError: boolean +} + +/** After error: + * withErrorBoundaries()(SomeComponent) + wrapper will replace children to renderDefaultError + + * withErrorBoundaries({customError: OtherComp})(SomeComponent) + wrapper will replace children to OtherComp + + * withErrorBoundaries({isWrapperHandler: null})(SomeComponent) + wrapper will ignore error, SomeComponent must use props[withErrorBoundaries.stateKey] for custom error handling + */ + +export const withErrorBoundaries: IWithErrorBoundaries = (settings = Object.prototype) => (Component) => + class Wrapper extends React.Component { + static displayName = `withErrorBoundaries(${displayNameCreate(Component)})` + + state = { hasError: false } + + static getDerivedStateFromError(error: any) { + return { hasError: true, error } + } + + renderDefaultError = () =>

Something went wrong

+ + /*componentDidCatch(error, errorInfo) { + showNotification() + sendErrorToLog(error, errorInfo); + }*/ + + render() { + const { isWrapperHandler = true, customError = this.renderDefaultError } = settings, + { hasError } = this.state + + if (isWrapperHandler && hasError) return customError ? customError(this.state) : null + + return + } + } + +withErrorBoundaries.stateKey = 'withErrorBoundaries' + +const displayNameCreate = (Component: any) => Component.displayName || Component.name || 'Component' diff --git a/src/modules/optimizations/index.tsx b/src/modules/optimizations/index.tsx index 848adee..0d26fe3 100644 --- a/src/modules/optimizations/index.tsx +++ b/src/modules/optimizations/index.tsx @@ -1,6 +1,7 @@ import React from 'react' import loadable from '@loadable/component' import { timeout as pTimeout } from 'promise-timeout' +import { Spin } from 'antd' interface IGetAsyncModule { moduleImport: any @@ -30,7 +31,7 @@ export function getModuleAsync({ }) }, { - fallback: , + fallback: , } ) @@ -38,7 +39,3 @@ export function getModuleAsync({ return AsyncComponent } - -export const Loader: React.FC = () => { - return <>Loading... -} diff --git a/src/modules/seo/index.tsx b/src/modules/seo/index.tsx index bcb8168..ced47fa 100644 --- a/src/modules/seo/index.tsx +++ b/src/modules/seo/index.tsx @@ -1,23 +1,9 @@ import React from 'react' import { Helmet } from 'react-helmet' -import { useStaticQuery, graphql } from 'gatsby' +import { siteMetadata } from '../../constants' export function SEO({ locale, pageName }: any) { - const data = useStaticQuery( - graphql` - query { - site { - siteMetadata { - title - description - } - } - } - ` - ) - - const { siteMetadata } = data.site, - { title } = siteMetadata + const { title } = siteMetadata return ( .tl-edges { - display: none; -} - -.unsupported-browser .alertForUnsupportedBrowser { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.alertForUnsupportedBrowser-content > * { - display: none; -} - -.opera-extreme-mode .alertForUnsupportedBrowser .opera-extreme-mode, -.browser-trident .alertForUnsupportedBrowser .ie { - display: block; -} -/*Stubs for unsupported browsers: end*/ diff --git a/src/modules/stylization/package.json b/src/modules/stylization/package.json index 672fe30..5ed967c 100644 --- a/src/modules/stylization/package.json +++ b/src/modules/stylization/package.json @@ -7,7 +7,8 @@ "dependencies": { "gatsby-plugin-transition-link": "1.20.2", "react-spring": "8.0.27", - "styled-components": "5.1.1" + "styled-components": "5.1.1", + "antd": "4.5.2" }, "devDependencies": { "@types/styled-components": "5.1.2", diff --git a/src/pages/index.tsx b/src/pages/index.tsx index e7ac7b8..d9d490a 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,5 +1,31 @@ import React from 'react' +import { css } from 'styled-components' +import { GameBoard, GameInfo } from 'components/page-root' export default function PageRoot() { - return
Hello, world!
+ return ( +
+

+ + +

+ ) +} + +const pageMainStyles = { + wrapper: css` + display: grid; + grid-template-areas: 'title title' 'game-board info'; + column-gap: 2rem; + row-gap: 1rem; + justify-content: center; + align-items: flex-start; + padding: 1.5rem; + `, + title: css` + grid-area: title; + font-size: 2rem; + font-weight: 700; + text-align: center; + `, } diff --git a/src/store/battleshipGame/@types/index.ts b/src/store/battleshipGame/@types/index.ts new file mode 100644 index 0000000..4a4312d --- /dev/null +++ b/src/store/battleshipGame/@types/index.ts @@ -0,0 +1,74 @@ +export namespace NBattleshipGame { + export interface IStore { + showHints: boolean + board: NGameBoard.IBoard + ships: NShips.IShips + } + + export type IActions = IShotCell | IGameRestart | IShowHints + + export enum ActionTypes { + SHOT_CELL = 'SHOT_CELL', + RESTART_GAME = 'RESTART_GAME', + SHOW_HINTS = 'SHOW_HINTS', + } + + export interface IShotCell { + type: ActionTypes.SHOT_CELL + payload: { + rowIndex: NGameBoard.rowIndex + columnIndex: NGameBoard.columnIndex + } + } + + export interface IGameRestart { + type: ActionTypes.RESTART_GAME + } + + export interface IShowHints { + type: ActionTypes.SHOW_HINTS + } +} + +export namespace NGameBoard { + export interface ICell { + isShot: boolean + shipId?: NShips.shipId + } + + export type rowIndex = number + export type columnIndex = number + + export interface IBoard { + size: number + data: Record> + } +} + +namespace NShips { + interface IShipCell { + isShot: boolean + borders: { left?: boolean; right?: boolean; top?: boolean; bottom?: boolean } + } + + interface IShip { + cellsAlive: number + coords: Record> + } + + interface IShipDotShaped extends IShip { + cellsAlive: 1 + } + + interface IShipIShaped extends IShip { + cellsAlive: 3 + } + + interface IShipLShaped extends IShip { + cellsAlive: 4 + } + + export type shipId = string + + export type IShips = Record +} diff --git a/src/store/battleshipGame/actions.ts b/src/store/battleshipGame/actions.ts new file mode 100644 index 0000000..bb9f316 --- /dev/null +++ b/src/store/battleshipGame/actions.ts @@ -0,0 +1,14 @@ +import { Dispatch } from 'redux' +import { NBattleshipGame } from './@types' + +export const battleshipGameAPI = { + shotCell: (params: Omit) => (dispatch: Dispatch) => + dispatch({ + ...params, + type: NBattleshipGame.ActionTypes.SHOT_CELL, + }), + showHints: () => (dispatch: Dispatch) => + dispatch({ type: NBattleshipGame.ActionTypes.SHOW_HINTS }), + restartGame: () => (dispatch: Dispatch) => + dispatch({ type: NBattleshipGame.ActionTypes.RESTART_GAME }), +} diff --git a/src/store/battleshipGame/reducer.ts b/src/store/battleshipGame/reducer.ts new file mode 100644 index 0000000..83d35a7 --- /dev/null +++ b/src/store/battleshipGame/reducer.ts @@ -0,0 +1,93 @@ +import produce from 'immer' +import { NBattleshipGame } from './@types' + +function getInitialState(): NBattleshipGame.IStore { + return { + showHints: false, + board: { + size: 10, + data: { + 0: { + 0: { isShot: false, shipId: 'ship-1' }, + 1: { isShot: false }, + 2: { isShot: false, shipId: 'ship-3' }, + 3: { isShot: false, shipId: 'ship-3' }, + 4: { isShot: false, shipId: 'ship-3' }, + ...[5, 6, 7, 8].reduce((acc, index) => ({ ...acc, [index]: { isShot: false } }), {}), + 9: { isShot: false, shipId: 'ship-2' }, + }, + ...[1, 2, 3, 4, 5, 6, 7, 8, 9].reduce( + (acc, index) => ({ + ...acc, + [index]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].reduce( + (acc, index) => ({ ...acc, [index]: { isShot: false } }), + {} + ), + }), + {} + ), + }, + }, + ships: { + 'ship-1': { + cellsAlive: 1, + coords: { + 0: { + 0: { isShot: false, borders: { left: true, right: true, top: true, bottom: true } }, + }, + }, + }, + 'ship-2': { + cellsAlive: 1, + coords: { + 0: { + 9: { isShot: false, borders: { left: true, right: true, top: true, bottom: true } }, + }, + }, + }, + 'ship-3': { + cellsAlive: 3, + coords: { + 0: { + 2: { isShot: false, borders: { left: true, top: true, bottom: true } }, + 3: { isShot: false, borders: { top: true, bottom: true } }, + 4: { isShot: false, borders: { right: true, top: true, bottom: true } }, + }, + }, + }, + }, + } +} + +export const battleshipGameReducer = produce((draft: NBattleshipGame.IStore, action: NBattleshipGame.IActions) => { + switch (action.type) { + case NBattleshipGame.ActionTypes.SHOT_CELL: { + const { rowIndex, columnIndex } = action.payload, + cell = draft.board.data[rowIndex][columnIndex], + { shipId } = cell + + cell.isShot = true + + if (shipId) { + const ship = draft.ships[shipId] + ship.coords[rowIndex][columnIndex].isShot = true + ship.cellsAlive -= 1 + } + break + } + + case NBattleshipGame.ActionTypes.RESTART_GAME: { + const newState = getInitialState() + ;(Object.keys(newState) as Array).forEach((key) => { + // @ts-ignore + draft[key] = newState[key] + }) + break + } + + case NBattleshipGame.ActionTypes.SHOW_HINTS: { + draft.showHints = !draft.showHints + break + } + } +}, getInitialState()) diff --git a/src/store/battleshipGame/selectors.ts b/src/store/battleshipGame/selectors.ts new file mode 100644 index 0000000..ac58d61 --- /dev/null +++ b/src/store/battleshipGame/selectors.ts @@ -0,0 +1,40 @@ +import { createSelector } from 'reselect' +import { IStore } from 'store' + +export const battleshipGameSelectors = { + get getBattleshipGame() { + return createSelector( + (store: IStore) => store, + (store) => store.battleshipGame + ) + }, + get getGameBoard() { + return createSelector(this.getBattleshipGame, (battleshipGame) => battleshipGame.board) + }, + isShowHints({ shipId }: any) { + return createSelector(this.getBattleshipGame, (battleshipGame) => (shipId ? battleshipGame.showHints : false)) + }, + get getGameBoardSize() { + return createSelector(this.getGameBoard, (board) => board.size) + }, + get getGameBoardData() { + return createSelector(this.getGameBoard, (board) => board.data) + }, + get getShips() { + return createSelector(this.getBattleshipGame, (battleshipGame) => battleshipGame.ships) + }, + getShip({ shipId }: any) { + return createSelector(this.getShips, (ships) => ships?.[shipId] ?? null) + }, + getShipCell({ shipId, rowIndex, columnIndex }: any) { + return createSelector(this.getShip({ shipId }), (ship) => ship?.coords[rowIndex][columnIndex]) + }, + get getAliveShips() { + return createSelector(this.getShips, (ships) => + Object.values(ships).reduce((acc: number, current: any) => { + if (current.cellsAlive) acc += 1 + return acc + }, 0) + ) + }, +} diff --git a/src/store/index.ts b/src/store/index.ts index 6177cb3..5301b7b 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,8 +1,13 @@ import { createStore, applyMiddleware, combineReducers, compose } from 'redux' import thunkMiddleware from 'redux-thunk' -import { get } from 'lodash' +import { get } from 'lodash-es' -export interface IStore {} +import { NBattleshipGame } from 'store/battleshipGame/@types' +import { battleshipGameReducer } from 'store/battleshipGame/reducer' + +export interface IStore { + battleshipGame: NBattleshipGame.IStore +} export function configureStore(preloadedState?: any) { const middlewares = [thunkMiddleware], @@ -11,5 +16,11 @@ export function configureStore(preloadedState?: any) { compose, enhancer = composedEnhancers(applyMiddleware(...middlewares)) - return createStore(combineReducers({}), preloadedState, enhancer) + return createStore( + combineReducers({ + battleshipGame: battleshipGameReducer, + }), + preloadedState, + enhancer + ) } diff --git a/yarn.lock b/yarn.lock index ecb45a1..bab3dad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,46 @@ dependencies: "@analytics/cookie-utils" "^0.2.3" +"@ant-design/colors@^3.1.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" + integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ== + dependencies: + tinycolor2 "^1.4.1" + +"@ant-design/css-animation@^1.7.2": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136" + integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA== + +"@ant-design/icons-svg@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" + integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== + +"@ant-design/icons@^4.2.1": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.2.2.tgz#6533c5a02aec49238ec4748074845ad7d85a4f5e" + integrity sha512-DrVV+wcupnHS7PehJ6KiTcJtAR5c25UMgjGECCc6pUT9rsvw0AuYG+a4HDjfxEQuDqKTHwW+oX/nIvCymyLE8Q== + dependencies: + "@ant-design/colors" "^3.1.0" + "@ant-design/icons-svg" "^4.0.0" + "@babel/runtime" "^7.10.4" + classnames "^2.2.6" + insert-css "^2.0.0" + rc-util "^5.0.1" + +"@ant-design/react-slick@~0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.27.0.tgz#c5d4bfd879885b74024ffbce42cccb5f7bff41e9" + integrity sha512-dq/p/1oKgew99cNrhT6/BA4v7c7nAhPlS6IcVGVTMsp175bYxbHBT1GfY5vxZyz97YaTnzJ8s2Wql4AOnFQ+9g== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.15" + resize-observer-polyfill "^1.5.0" + "@ardatan/aggregate-error@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.1.tgz#1403ac5de10d8ca689fc1f65844c27179ae1d44f" @@ -1062,7 +1102,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.10.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.10.4", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.11.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== @@ -3859,6 +3899,55 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= +antd@4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.5.2.tgz#0551b2999d5c9827d996b860e827974d50d87ed9" + integrity sha512-XDI4ywKpj2LfvvQjHxkdItzLH0zlVvm3wKHyko03BoSzYVinZ9MWap3PXraclb8xBKH8d/14BRJSGmIsvxzkfg== + dependencies: + "@ant-design/css-animation" "^1.7.2" + "@ant-design/icons" "^4.2.1" + "@ant-design/react-slick" "~0.27.0" + "@babel/runtime" "^7.10.4" + array-tree-filter "^2.1.0" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.13" + moment "^2.25.3" + omit.js "^2.0.2" + raf "^3.4.1" + rc-animate "~3.1.0" + rc-cascader "~1.3.0" + rc-checkbox "~2.3.0" + rc-collapse "~2.0.0" + rc-dialog "~8.1.0" + rc-drawer "~4.1.0" + rc-dropdown "~3.1.2" + rc-field-form "~1.8.0" + rc-input-number "~6.0.0" + rc-mentions "~1.4.0" + rc-menu "~8.5.0" + rc-notification "~4.4.0" + rc-pagination "~2.4.1" + rc-picker "~1.15.1" + rc-progress "~3.0.0" + rc-rate "~2.8.2" + rc-resize-observer "^0.2.3" + rc-select "~11.0.10" + rc-slider "~9.3.0" + rc-steps "~4.1.0" + rc-switch "~3.2.0" + rc-table "~7.8.0" + rc-tabs "~11.5.0" + rc-textarea "~0.3.0" + rc-tooltip "~4.2.0" + rc-tree "~3.8.0" + rc-tree-select "~4.1.0" + rc-trigger "~4.3.0" + rc-upload "~3.2.0" + rc-util "^5.0.1" + scroll-into-view-if-needed "^2.2.25" + warning "^4.0.3" + any-base@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" @@ -4109,6 +4198,11 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -4259,6 +4353,11 @@ async-retry-ng@^2.0.1: resolved "https://registry.yarnpkg.com/async-retry-ng/-/async-retry-ng-2.0.1.tgz#f5285ec1c52654a2ba6a505d0c18b1eadfaebd41" integrity sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw== +async-validator@^3.0.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.4.0.tgz#871b3e594124bf4c4eb7bcd1a9e78b44f3b09cae" + integrity sha512-VrFk4eYiJAWKskEz115iiuCf9O0ftnMMPXrOFMqyzGH2KxO7YwncKyn/FgOOP+0MDHMfXL7gLExagCutaZGigA== + async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -4752,7 +4851,7 @@ babel-plugin-remove-export-keywords@^1.6.5: resolved "https://registry.yarnpkg.com/babel-plugin-remove-export-keywords/-/babel-plugin-remove-export-keywords-1.6.16.tgz#e764b42e3c8e4a5ce3e2c996dc43b6348d5d94cf" integrity sha512-JrB9ZASlMAfkRF+5NdgoQxgenhJxzXFEO1vrqsSDJdzLrC38L2wrvXF9mm1YLbrehkZxcrNz9UYDyARP4jaY9g== -babel-plugin-remove-graphql-queries@^2.9.16: +babel-plugin-remove-graphql-queries@^2.9.15, babel-plugin-remove-graphql-queries@^2.9.16: version "2.9.16" resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.16.tgz#7fff54c7fc618c9cc9508b020d99354e3144b435" integrity sha512-7Z+awkeghPRk4axY8N6ywQu9GpxpqHTkXRiZ+VxDaIppbybeZsAQ7uA6B4B63M4nm0BSOrHZzZWuT/kOg2RA8g== @@ -4940,7 +5039,7 @@ babel-preset-gatsby-package@^0.4.4: babel-plugin-dynamic-import-node "^2.3.3" core-js "^2.6.11" -babel-preset-gatsby@0.5.5, babel-preset-gatsby@^0.5.5: +babel-preset-gatsby@0.5.5, babel-preset-gatsby@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.5.5.tgz#f8d05aa407a56514d7786f7b576c1954e0a3f425" integrity sha512-gkBRAEv5OvSerqh15gMHCCtExiUpTuKiKwb6QBImb3nSBAuCcjr0ESHzpgk4m0eZLbxUaeooVd0uPyC6FQsCBQ== @@ -6098,6 +6197,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-deep@^3.0.2, clean-deep@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/clean-deep/-/clean-deep-3.3.0.tgz#00509a2cb431fa83fb202aa759534681f0309172" @@ -6618,6 +6722,11 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" + integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -7422,7 +7531,7 @@ dataloader@^2.0.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== -date-fns@^2.0.1, date-fns@^2.14.0, date-fns@^2.8.1: +date-fns@^2.0.1, date-fns@^2.14.0, date-fns@^2.15.0, date-fns@^2.8.1: version "2.15.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== @@ -7439,6 +7548,11 @@ date-time@^2.1.0: dependencies: time-zone "^1.0.0" +dayjs@^1.8.30: + version "1.8.32" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.32.tgz#66c48b95c397d9f7907e89bd29f78b3d19d40294" + integrity sha512-V91aTRu5btP+uzGHaaOfodckEfBWhmi9foRP7cauAO1PTB8+tZ9o0Jec7q6TIIRY1N4q1IfiKsZunkB/AEWqMQ== + debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -8025,6 +8139,11 @@ dom-accessibility-api@^0.4.6: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.7.tgz#31d01c113af49f323409b3ed09e56967aba485a8" integrity sha512-5+GzhTpCQYHz4NjL8loYTDVBnXIjNLBadWQBKxXk+osFEplLt3EsSYBu2YZcdZ8QqrvCHgW6TSMGMbmgfhrn2g== +dom-align@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" + integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -9088,7 +9207,7 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== @@ -10117,10 +10236,10 @@ fuzzy@^0.1.3: resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" integrity sha1-THbsL/CsGjap3M+aAN+GIweNTtg= -gatsby-cli@^2.12.79: - version "2.12.79" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.79.tgz#a9b162c08d980647c8aab5ccaba306e6b7d3ee0d" - integrity sha512-0BYRDlPWDm40bMjXnRW3bauBuBwUaPcVCMBR894FOZS1ca1xz2mCjecp0AN1b8eiwQZ5TvrOIhr5V8IDwYXJ/A== +gatsby-cli@^2.12.65: + version "2.12.80" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.80.tgz#3ef391ce9a40229b0da3301a8bdf83bc2ce8d82d" + integrity sha512-B8KUYMnepRSGexV4XjWhVAUUXy6TsmvUElQ0E3OgyI9RxpoKsCprJzhG96A+Df7Rgx+cPkV1fGArbOjfxnF4lQ== dependencies: "@babel/code-frame" "^7.10.3" "@hapi/joi" "^15.1.1" @@ -10136,7 +10255,7 @@ gatsby-cli@^2.12.79: fs-exists-cached "^1.0.0" fs-extra "^8.1.0" gatsby-core-utils "^1.3.15" - gatsby-recipes "^0.2.9" + gatsby-recipes "^0.2.10" gatsby-telemetry "^1.3.26" hosted-git-info "^3.0.4" ink "^2.7.1" @@ -10162,7 +10281,7 @@ gatsby-cli@^2.12.79: yargs "^15.3.1" yurnalist "^1.1.2" -gatsby-core-utils@^1.3.15: +gatsby-core-utils@^1.3.13, gatsby-core-utils@^1.3.15: version "1.3.15" resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.3.15.tgz#6fad76a238df514afa70fed0f94427fbb39762ca" integrity sha512-np1tJCGejhCHtgHdFl6+y5EwVAzdrieJZ3hdvpeOrJ22bL9ktl5XVLy4K937ThgxHLp8+ElMDVdziNun5tC8eg== @@ -10181,7 +10300,7 @@ gatsby-design-tokens@^2.0.2: dependencies: hex2rgba "^0.0.1" -gatsby-graphiql-explorer@^0.4.12: +gatsby-graphiql-explorer@^0.4.11: version "0.4.12" resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.4.12.tgz#9c7a3c9c562e7bb8e3e24bf7c8ac4b319d0ce64b" integrity sha512-kHVHzGvebZlUGeGOoAAJVdLWAXftZiYeOk6EitWFkXEZtYxpgXM5Pum9qDMCzUCJ6pzS8r9U5IBJncjMal3ScQ== @@ -10275,7 +10394,7 @@ gatsby-plugin-offline@3.2.22: lodash "^4.17.15" workbox-build "^4.3.1" -gatsby-plugin-page-creator@^2.3.20: +gatsby-plugin-page-creator@^2.3.18: version "2.3.20" resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.20.tgz#7172680f178426cb35ae29175f4cf9a9afbefcd7" integrity sha512-EtoKgXNXvkY5IA4XvBPhlM5TelR6R04e3fpcGWuYO4oqts/9Ih0GGI9CzUBRXNwM5MplNBUcUutyAwMtT9NzVA== @@ -10368,7 +10487,7 @@ gatsby-plugin-typescript-checker@1.1.1: dependencies: fork-ts-checker-webpack-plugin "^1.3.4" -gatsby-plugin-typescript@2.4.17, gatsby-plugin-typescript@^2.4.17: +gatsby-plugin-typescript@2.4.17, gatsby-plugin-typescript@^2.4.16: version "2.4.17" resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.4.17.tgz#0d3c1ebe0915ce34cd1066fd9f8a58521b2e8a71" integrity sha512-Bp0e2Nc3CYYfhYvvIO7DIZOzy6hlYDJFBE/rHPK9mu5RLX8THqNmT53579SJWx4ozSPCNK41EfPbAJdtEgEPaA== @@ -10388,10 +10507,10 @@ gatsby-react-router-scroll@^3.0.12: dependencies: "@babel/runtime" "^7.10.3" -gatsby-recipes@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.2.9.tgz#635e2264b673b67d71b4f209c59f562f42bc86fc" - integrity sha512-gLRjYRAsW4N4gjJjRynpkshiRtM4ExqU/ghDmFZzfH3sCzEYs/BKAradoy8WNuTziwCnV5fh3kKPq7P2TSx6sw== +gatsby-recipes@^0.2.10: + version "0.2.10" + resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.2.10.tgz#ec9e56acd0cd39f544407a8d9dbeaf23e764e4e1" + integrity sha512-4iL9ZaZxIk1qTHCq+bFhT7edFJVuyWLInQKwQLsxxHIzM5DcizB21Lw62lzAOcACLiXzmJTofgVQOw+17c6Yhw== dependencies: "@babel/core" "^7.9.6" "@babel/generator" "^7.9.6" @@ -10414,6 +10533,7 @@ gatsby-recipes@^0.2.9: acorn-jsx "^5.2.0" ansi-html "^0.0.7" babel-plugin-remove-export-keywords "^1.6.5" + better-queue "^3.8.10" chokidar "3.4.0" concurrently "^5.0.0" contentful-management "^5.26.3" @@ -10442,10 +10562,10 @@ gatsby-recipes@^0.2.9: isomorphic-fetch "^2.1.0" jest-diff "^25.5.0" lodash "^4.17.15" + mitt "^1.2.0" mkdirp "^0.5.1" node-fetch "^2.5.0" normalize.css "^8.0.1" - p-queue "^6.4.0" pkg-dir "^4.2.0" prettier "^2.0.5" prop-types "^15.6.1" @@ -10512,7 +10632,7 @@ gatsby-source-graphql@2.7.0: node-fetch "^1.7.3" uuid "^3.4.0" -gatsby-telemetry@^1.3.26: +gatsby-telemetry@^1.3.22, gatsby-telemetry@^1.3.26: version "1.3.26" resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.3.26.tgz#c9b3845787ed47258da0d902d565f7c930534871" integrity sha512-10DqlSw0mvuRcQfoYmYdt+XAZqECqCUY8wYWo1Vpg3BwSpRtaW2rFjDqPa+MZSB5qfBfL92urDw8g1uZZolBNQ== @@ -10554,10 +10674,10 @@ gatsby-transformer-sharp@2.5.12: semver "^5.7.1" sharp "^0.25.1" -gatsby@2.24.36: - version "2.24.36" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.24.36.tgz#0bcfb328f2edc5270995c995f2669b8d2d878bfa" - integrity sha512-hpfNWnbRjQTZSshPvfckZaNDLoc2rcrqzw7O0UMUSfAihnQ7WWGsSnyymvL1Da0Cxqep1utI5HkaYe9QTdKKsQ== +gatsby@2.24.9: + version "2.24.9" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.24.9.tgz#e20dbab2973a191af753b9226e01bd672d1282c7" + integrity sha512-OaDwuoLZL9hYEt/u69+MwlK26CUK70XTWN1oSIIwFgcpJaWud15qriYxZgg+dt1fP/SGgEu+T2uUwAi8b7vClA== dependencies: "@babel/code-frame" "^7.10.3" "@babel/core" "^7.10.3" @@ -10580,8 +10700,8 @@ gatsby@2.24.36: babel-loader "^8.1.0" babel-plugin-add-module-exports "^0.3.3" babel-plugin-dynamic-import-node "^2.3.3" - babel-plugin-remove-graphql-queries "^2.9.16" - babel-preset-gatsby "^0.5.5" + babel-plugin-remove-graphql-queries "^2.9.15" + babel-preset-gatsby "^0.5.3" better-opn "1.0.0" better-queue "^3.8.10" bluebird "^3.7.2" @@ -10617,18 +10737,17 @@ gatsby@2.24.36: express-graphql "^0.9.0" fast-levenshtein "^2.0.6" file-loader "^1.1.11" - find-cache-dir "^3.3.1" fs-exists-cached "1.0.0" fs-extra "^8.1.0" - gatsby-cli "^2.12.79" - gatsby-core-utils "^1.3.15" - gatsby-graphiql-explorer "^0.4.12" + gatsby-cli "^2.12.65" + gatsby-core-utils "^1.3.13" + gatsby-graphiql-explorer "^0.4.11" gatsby-legacy-polyfills "^0.0.2" gatsby-link "^2.4.13" - gatsby-plugin-page-creator "^2.3.20" - gatsby-plugin-typescript "^2.4.17" + gatsby-plugin-page-creator "^2.3.18" + gatsby-plugin-typescript "^2.4.16" gatsby-react-router-scroll "^3.0.12" - gatsby-telemetry "^1.3.26" + gatsby-telemetry "^1.3.22" glob "^7.1.6" got "8.3.2" graphql "^14.6.0" @@ -10654,7 +10773,7 @@ gatsby@2.24.36: mkdirp "^0.5.1" moment "^2.27.0" name-all-modules-plugin "^1.0.1" - normalize-path "^3.0.0" + normalize-path "^2.1.1" null-loader "^3.0.0" opentracing "^0.14.4" optimize-css-assets-webpack-plugin "^5.0.3" @@ -11560,7 +11679,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.3.0, hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, 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== @@ -12235,6 +12354,11 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" +insert-css@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" + integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= + internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -13621,6 +13745,13 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= + dependencies: + string-convert "^0.2.0" + json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -15029,6 +15160,14 @@ mini-css-extract-plugin@^0.8.2: schema-utils "^1.0.0" webpack-sources "^1.1.0" +mini-store@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-3.0.6.tgz#44b86be5b2877271224ce0689b3a35a2dffb1ca9" + integrity sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ== + dependencies: + hoist-non-react-statics "^3.3.2" + shallowequal "^1.0.2" + mini-svg-data-uri@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.2.3.tgz#e16baa92ad55ddaa1c2c135759129f41910bc39f" @@ -15243,7 +15382,7 @@ moize@^5.4.4, moize@^5.4.7: fast-stringify "^1.1.0" micro-memoize "^2.1.1" -moment@^2.27.0: +moment@^2.24.0, moment@^2.25.3, moment@^2.27.0: version "2.27.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== @@ -16128,6 +16267,11 @@ omggif@^1.0.10, omggif@^1.0.9: resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== +omit.js@^2.0.0, omit.js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" + integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -16458,14 +16602,6 @@ p-pipe@^1.1.0: resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= -p-queue@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.0.tgz#263f2b73add4cefca81d8d6b2696ee74b326de2f" - integrity sha512-zPHXPNy9jZsiym0PpJjvnHQysx1fSd/QdaNVwiDRLU2KFChD6h9CkCB6b8i3U8lBwJyA+mHgNZCzcy77glUssQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.1.0" - p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -18002,7 +18138,7 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -raf@^3.4.1: +raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -18073,6 +18209,56 @@ raw-loader@^0.5.1: resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= +rc-align@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.1.tgz#0566de141a82d9a1923b7672c70bdb19dcde6e23" + integrity sha512-RQ5Fhxl0LW+zsxbY8dxAcpXdaHkHH2jzRSSpvBTS7G9LMK3T+WRcn4ovjg/eqAESM6TdTx0hfqWF2S1pO75jxQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + rc-util "^5.0.1" + resize-observer-polyfill "^1.5.1" + +rc-animate@3.x, rc-animate@^3.0.0, rc-animate@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa" + integrity sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "^2.2.6" + raf "^3.4.0" + rc-util "^5.0.1" + +rc-cascader@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.3.0.tgz#67925c7ac4b732fe06cabb3a9c91631c96d04ccf" + integrity sha512-wayuMo/dSZixvdpiRFZB4Q6A3omKRXQcJ3CxN02+PNiTEcRnK2KDqKUzrx7GwgMsyH5tz90lUZ91lLaEPNFv0A== + dependencies: + array-tree-filter "^2.1.0" + rc-trigger "^4.0.0" + rc-util "^5.0.1" + warning "^4.0.1" + +rc-checkbox@~2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.1.tgz#2a61bc43017c783bd2e9f1a67553bf8efe7aa4d3" + integrity sha512-i290/iTqmZ0WtI2UPIryqT9rW6O99+an4KeZIyZDH3r+Jbb6YdddaWNdzq7g5m9zaNhJvgjf//wJtC4fvve2Tg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-collapse@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-2.0.0.tgz#08c5942f82005b4342ced02d983581e4c41cd324" + integrity sha512-R5+Ge1uzwK9G1wZPRPhqQsed4FXTDmU0BKzsqfNBtZdk/wd+yey8ZutmJmSozYc5hQwjPkCvJHV7gOIRZKIlJg== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "2.x" + rc-animate "3.x" + react-is "^16.7.0" + shallowequal "^1.1.0" + rc-config-loader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-3.0.0.tgz#1484ed55d6fb8b21057699c8426370f7529c52a7" @@ -18083,6 +18269,325 @@ rc-config-loader@^3.0.0: json5 "^2.1.1" require-from-string "^2.0.2" +rc-dialog@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.1.0.tgz#393910963bb05ac19d6d136620bd09622f1d677a" + integrity sha512-vMVAtyxpnokh/okFcDQVLO6ymIXfoTKYKtqJ/hMtf+0WcvRn4VgVDBvGyEk5zd94k0RgwEze9o2kGw8SyjivZg== + dependencies: + rc-animate "3.x" + rc-util "^5.0.1" + +rc-drawer@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.1.0.tgz#d7bf0bc030300b62d282bc04e053b9acad6b08b4" + integrity sha512-kjeQFngPjdzAFahNIV0EvEBoIKMOnvUsAxpkSPELoD/1DuR4nLafom5ryma+TIxGwkFJ92W6yjsMi1U9aiOTeQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.0.1" + +rc-dropdown@^3.1.0, rc-dropdown@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.1.2.tgz#5199bd532ac8519813a347d194ab4b0cee702333" + integrity sha512-s2W5jqvjTid5DxotGO5FlTBaQWeB+Bu7McQgjB8Ot3Wbl72AIKwLf11+lgbV4mA2vWC1H8DKyn6SW9TKLTi0xg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-trigger "^4.0.0" + +rc-field-form@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.8.0.tgz#c51312321409727e5a333873311f9c1f5e13e8c2" + integrity sha512-WQyC3yBEKIWehNzkRMTBK/Lzdjronov9GsB9C9bgVcfpDqsIQSSBgGFAJMmWUAGs2IrCbgh9RBY0Ste4foHzvg== + dependencies: + "@babel/runtime" "^7.8.4" + async-validator "^3.0.3" + rc-util "^5.0.0" + +rc-input-number@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.0.0.tgz#0c0af57c8183f3ca6b87f7edf6fed3bd5a3ba16f" + integrity sha512-vbe+g7HvR/joknSnvLkBTi9N9I+LsV4kljfuog8WNiS7OAF3aEN0QcHSOQ4+xk6+Hx9P1tU63z2+TyEx8W/j2Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-mentions@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.4.0.tgz#6b7a2770ec02a5c0265d459a3385a23913efcc61" + integrity sha512-DIcjQZNerCZ50tnDnL6P9mpNmlGc9VFrSjXh55RzkAZOTelf061T7ZbYv0bYeSdohvAwYNr4gt3/Pe79AUsjLw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-menu "^8.0.1" + rc-textarea "^0.3.0" + rc-trigger "^4.3.0" + rc-util "^5.0.1" + +rc-menu@^8.0.1, rc-menu@^8.2.1, rc-menu@~8.5.0: + version "8.5.2" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.5.2.tgz#fa43bccabfcf422b9d3cdfcae5b71da08bab7e54" + integrity sha512-GPtr7qoCynVEkFgco/9cW0z/xU33GV89Q6r8FgEkrdhaQSJzuSC+v8pv+Bll5fVGQlJyJgOVqiKk7l2Knk1jYg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + mini-store "^3.0.1" + omit.js "^2.0.0" + rc-motion "^1.0.1" + rc-trigger "^4.4.0" + rc-util "^5.0.1" + resize-observer-polyfill "^1.5.0" + shallowequal "^1.1.0" + +rc-motion@^1.0.0, rc-motion@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-1.0.1.tgz#9a9106cd8e932a25f49a3324443dada90c9b8006" + integrity sha512-+gk3bk72678cnwqsKmLTaqLNnAdvxe97SEttyGrrGH29UHiDj1tZTRwguDEAHZ9ZW44VMLmKhr2BKZqZOBPm0Q== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + raf "^3.4.1" + rc-util "^5.0.6" + +rc-notification@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.4.0.tgz#192d082cd6e2995705f43c6929162631c71e3db1" + integrity sha512-IDeNAFGVeOsy1tv4zNVqMAXB9tianR80ewQbtObaAQfjwAjWfONdqdyjFkEU6nc6UQhSUYA5OcTGb7kwwbnh0g== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-animate "3.x" + rc-util "^5.0.1" + +rc-pagination@~2.4.1: + version "2.4.6" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-2.4.6.tgz#cc030c9693c730b43592bdb6974fb32c1502a500" + integrity sha512-1ykd3Jti+JuOFdzEFXGfVpkuH+hKxLYz3FKV6BSwnnWXLr9Y8bbm7YiTSwBmdDcOg6tinH8b4IYaKzxBWRC6EA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-picker@~1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-1.15.1.tgz#b0d647f3827468f844bc95c9255436ea787d26ce" + integrity sha512-YW6I91R1rMDTKpWY2yYjUk3mX4ttk7l8dx5fuojGBj86TGPj0R5vh+wFoRNzOeA4qAHcRzGWGPP60HFnoxL1TA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + date-fns "^2.15.0" + dayjs "^1.8.30" + moment "^2.24.0" + rc-trigger "^4.0.0" + rc-util "^5.0.1" + react "^16.0.0" + shallowequal "^1.1.0" + +rc-progress@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.0.0.tgz#cea324ce8fc31421cd815d94a4649a8a29f8f8db" + integrity sha512-dQv1KU3o6Vay604FMYMF4S0x4GNXAgXf1tbQ1QoxeIeQt4d5fUeB7Ri82YPu+G+aRvH/AtxYAlEcnxyVZ1/4Hw== + dependencies: + classnames "^2.2.6" + +rc-rate@~2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.8.2.tgz#d82d237d74fd4aef3e0581d2700b646cdd1cd8a2" + integrity sha512-f9T/D+ZwWQrWHkpidpQbnXpnVMGMC4eSRAkwuu88a8Qv1C/9LNc4AErazoh8tpnZBFqq19F3j0Glv+sDgkfEig== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^0.2.0, rc-resize-observer@^0.2.1, rc-resize-observer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.3.tgz#8268284d1766d163240b1682661ae7b59bc4523d" + integrity sha512-dEPCGX15eRRnu+TNBIGyEghpzE24fTDW8pHdJPJS/kCR3lafFqBLqKzBgZW6pMUuM70/ZDyFQ0Kynx9kWsXRNw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.0" + resize-observer-polyfill "^1.5.1" + +rc-select@^11.1.1: + version "11.1.3" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.1.3.tgz#acb6436e0ec389e1676903d9b514aa0d7565dbeb" + integrity sha512-Mf/EiYFmdWOoOget6RacSz1uAfn0hxf3wOa/YSOf7bw70EH6s80biDHQ4WPk8hNMxVRhzojlkktgmN4YxNQisQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^1.0.1" + rc-trigger "^4.3.0" + rc-util "^5.0.1" + rc-virtual-list "^1.1.2" + warning "^4.0.3" + +rc-select@~11.0.10: + version "11.0.13" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.0.13.tgz#fe5718af819d3e0bc12a55334bc1717257ef2dac" + integrity sha512-4/GDmBkGnDhYre3Dvq5UkIRXQJW8hbGdpdH8SjquSbCktAVitYV+opd/lKI28qMcBxCgjOHgYXwZ18TF+kP2VQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^1.0.1" + rc-trigger "^4.3.0" + rc-util "^5.0.1" + rc-virtual-list "^1.1.2" + warning "^4.0.3" + +rc-slider@~9.3.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.3.1.tgz#444012f3b4847d592b167a9cee6a1a46779a6ef4" + integrity sha512-c52PWPyrfJWh28K6dixAm0906L3/4MUIxqrNQA4TLnC/Z+cBNycWJUZoJerpwSOE1HdM3XDwixCsmtFc/7aWlQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-tooltip "^4.0.0" + rc-util "^5.0.0" + shallowequal "^1.1.0" + +rc-steps@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.2.tgz#370f4c6b40d3888f03b271f1628953c66eb91c04" + integrity sha512-kTPiojPtJi12Y7whRqlydRgJXQ1u9JlvGchI6xDrmOMZVpCTLpfc/18iu+aHCtCZaSnM2ENU/9lfm/naWVFcRw== + dependencies: + "@babel/runtime" "^7.10.2" + classnames "^2.2.3" + rc-util "^5.0.1" + +rc-switch@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.0.tgz#aa36bb417409ff4cc7d542ec4381cb5d87cfedc1" + integrity sha512-WQZnRrWZ+KGh4Cd98FpP1ZgvMmebctoHzKAO2n1Xsry1FQBSGgIw4rQJRxET31VS/dR1LIKb5md/k0UzcXXc0g== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.1" + +rc-table@~7.8.0: + version "7.8.6" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.8.6.tgz#897fb1671c62eb3a46033b53f0690fa0fd65dc61" + integrity sha512-rHRStVTO6FYlxs5Bk9S56Vo/Jn7pX3hOtHTHP+Vu++i9SF7DroOReMIi+OJ7RA9n3jVBxyT/9+NESXgTFvPbYA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + raf "^3.4.1" + rc-resize-observer "^0.2.0" + rc-util "^5.0.0" + shallowequal "^1.1.0" + +rc-tabs@~11.5.0: + version "11.5.6" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.5.6.tgz#bcff03f8c8dcc08b57ca97c0debe5d9fa3373957" + integrity sha512-Q2wqnt66SFksGXxNARLqGNMYIFH3KSm48+hMc4tq6qhgpsW104dedHcM86NUyqsQcvYWWiceUNu3TSnbe+XZnw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + raf "^3.4.1" + rc-dropdown "^3.1.0" + rc-menu "^8.2.1" + rc-resize-observer "^0.2.1" + rc-trigger "^4.2.1" + rc-util "^5.0.0" + +rc-textarea@^0.3.0, rc-textarea@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.0.tgz#9860ef797e00717d8227d1ef4ee7895dd9358ddf" + integrity sha512-vrTPkPT6wrO7EI8ouLFZZLXA1pFVrVRCnkmyyf0yRComFbcH1ogmFEGu85CjVT96rQqAiQFOe0QV3nKopZOJow== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + omit.js "^2.0.0" + rc-resize-observer "^0.2.3" + +rc-tooltip@^4.0.0, rc-tooltip@~4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-4.2.1.tgz#c1a2d5017ee03a771a9301c0dfdb46dfdf8fef94" + integrity sha512-oykuaGsHg7RFvPUaxUpxo7ScEqtH61C66x4JUmjlFlSS8gSx2L8JFtfwM1D68SLBxUqGqJObtxj4TED75gQTiA== + dependencies: + rc-trigger "^4.2.1" + +rc-tree-select@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.1.1.tgz#2d3c61f2449de72839eddf94ab876d3f6567692f" + integrity sha512-pawxt/W1chLpjtAEQe8mXI9C9DYNMGS/BR6eBmOY8cJDK6OWSa6M88S6F0jXc+A10D/CLfHAfF1ZIj7VGse+5Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "^11.1.1" + rc-tree "^3.8.0" + rc-util "^5.0.5" + +rc-tree@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.9.0.tgz#89de29a8ea5692447d01bbbda8931bd6b3e9b2e1" + integrity sha512-TYvIq2SKdVugS2mdOGC++CNWjj1VDBws4JZkFOAJVQfXFWg+BNW4rhuTzAs4ZY3KiE+1xG0u5cOVvIPr7qkxCA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^1.0.0" + rc-util "^5.0.0" + rc-virtual-list "^1.1.0" + +rc-tree@~3.8.0: + version "3.8.5" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.8.5.tgz#1f6d8c14a4f9263d5a426f7a24703a4c7be46ea3" + integrity sha512-audXUWwxyGB/4rLI4v+KuVucbc74y5t10XYQlR5WUe1J0sQuxP19+5GTb6DgrGXPxWOC6mxmkiw/xsKissE0GA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^1.0.0" + rc-util "^5.0.0" + rc-virtual-list "^1.1.0" + +rc-trigger@^4.0.0, rc-trigger@^4.2.1, rc-trigger@^4.3.0, rc-trigger@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.4.0.tgz#52be45c7b40327b297ebacff84d69ce9285606bc" + integrity sha512-09562wc5I1JUbCdWohcFYJeLTpjKjEqH+0lY7plDtyI9yFXRngrvmqsrSJyT6Nat+C35ymD7fhwCCPq3cfUI4g== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^4.0.0" + rc-motion "^1.0.0" + rc-util "^5.0.1" + +rc-trigger@~4.3.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.3.5.tgz#0da18a324a2afd1fa7f91cc3d73edd545c484c80" + integrity sha512-OKIrgGVHnpQ16H/nuOjANrnufHx/tw4cvCuiWSM+XflahUlcqJu6UtlQzNTZ2BoNinC/9Eopx5I38jVD+xLvew== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^4.0.0" + rc-animate "^3.0.0" + rc-util "^5.0.1" + +rc-upload@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.2.0.tgz#251fc3c9105902e808600a414f368f285d63bfba" + integrity sha512-/vyOGVxl5QVM3ZE7s+GqYPbCLC/Q/vJq0sjdwnvJw01KvAR5kVOC4jbHEaU56dMss7PFGDfNzc8zO5bWYLDzVQ== + dependencies: + classnames "^2.2.5" + +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.0.6.tgz#2b828bc87a818a66384b813f76a561ad4609e9b0" + integrity sha512-uLGxF9WjbpJSjd6iDnIjl8ZeMUglpcuh1DwO26aaXh++yAmlB6eIAJMUwwJCuqJvo4quCvsDPg1VkqHILc4U0A== + dependencies: + react-is "^16.12.0" + shallowequal "^1.1.0" + +rc-virtual-list@^1.1.0, rc-virtual-list@^1.1.2: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-1.1.6.tgz#b255baf9aacde149a8893324e6307214094f4c0a" + integrity sha512-u3+izqWL8p8bQy8nYH48qWpiGyxR/ye8D2k0zJlXmfYeL55/xh83YrzHqiDzO78uj0Ewag3nXDA0JTVrYO7ygQ== + dependencies: + classnames "^2.2.6" + raf "^3.4.1" + rc-util "^5.0.0" + rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -18359,7 +18864,7 @@ react-window@1.8.5: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" -react@16.13.1, react@^16.8.0: +react@16.13.1, react@^16.0.0, react@^16.8.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== @@ -19103,7 +19608,7 @@ reserved-words@^0.1.2: resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= -resize-observer-polyfill@^1.5.1: +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== @@ -19434,6 +19939,13 @@ screenfull@^5.0.0: resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" integrity sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ== +scroll-into-view-if-needed@^2.2.25: + version "2.2.25" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.25.tgz#117b7bc7c61bc7a2b7872a0984bc73a19bc6e961" + integrity sha512-C8RKJPq9lK7eubwGpLbUkw3lklcG3Ndjmea2PyauzrA0i4DPlzAmVMGxaZrBFqCrVLfvJmP80IyHnv4jxvg1OQ== + dependencies: + compute-scroll-into-view "^1.0.14" + seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" @@ -19616,7 +20128,7 @@ shallow-compare@^1.2.2: resolved "https://registry.yarnpkg.com/shallow-compare/-/shallow-compare-1.2.2.tgz#fa4794627bf455a47c4f56881d8a6132d581ffdb" integrity sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg== -shallowequal@^1.1.0: +shallowequal@^1.0.2, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -20373,6 +20885,11 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= + string-length@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" @@ -22640,7 +23157,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -warning@^4.0.3: +warning@^4.0.1, warning@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== @@ -23340,11 +23857,16 @@ xss@^1.0.6: commander "^2.20.3" cssfilter "0.0.10" -xstate@^4.11.0, xstate@^4.9.1: +xstate@^4.11.0: version "4.11.0" resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.11.0.tgz#dc0bd31079fe22918c2c27c118d6310bef3dcd9e" integrity sha512-v+S3jF2YrM2tFOit8o7+4N3FuFd9IIGcIKHyfHeeNjMlmNmwuiv/IbY9uw7ECifx7H/A9aGLcxPSr0jdjTGDww== +xstate@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.9.1.tgz#da883ae0993b129ba0b54592c59b069963b0fe0a" + integrity sha512-cfNnRaBebnr1tvs0nHBUTyomfJx36+8MWwXceyNTZfjyELMM8nIoiBDcUzfKmpNlnAvs2ZPREos19cw6Zl4nng== + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"