|
@@ -1,4 +1,4 @@
|
|
|
-import React, { useState } from 'react';
|
|
|
+import React, { useState, useRef } from 'react';
|
|
|
import { CSSTransition } from 'react-transition-group';
|
|
|
import styles from './App.module.css';
|
|
|
import GamePanel from './components/screens/GamePanel';
|
|
@@ -20,49 +20,64 @@ const needsHeaderFooter = {
|
|
|
[ERROR]: true
|
|
|
};
|
|
|
|
|
|
-const Header = ({ show }) => (
|
|
|
- <CSSTransition
|
|
|
- in={show}
|
|
|
- timeout={500}
|
|
|
- mountOnEnter
|
|
|
- unmountOnExit
|
|
|
- classNames="fade"
|
|
|
- >
|
|
|
- <div className={styles.header}>
|
|
|
- <p>TerrAssumptions!</p>
|
|
|
- </div>
|
|
|
- </CSSTransition>
|
|
|
-)
|
|
|
+const Header = ({ show }) => {
|
|
|
+ const transitionRef = useRef(null);
|
|
|
|
|
|
-const Footer = ({ show }) => (
|
|
|
- <CSSTransition
|
|
|
- in={show}
|
|
|
- timeout={500}
|
|
|
- mountOnEnter
|
|
|
- unmountOnExit
|
|
|
- classNames="fade"
|
|
|
- >
|
|
|
- <div className={styles.footer}>
|
|
|
- <ApiInfo />
|
|
|
- </div>
|
|
|
- </CSSTransition>
|
|
|
-)
|
|
|
+ return (
|
|
|
+ <CSSTransition
|
|
|
+ nodeRef={transitionRef}
|
|
|
+ in={show}
|
|
|
+ timeout={500}
|
|
|
+ mountOnEnter
|
|
|
+ unmountOnExit
|
|
|
+ classNames="fade"
|
|
|
+ >
|
|
|
+ <div className={styles.header} ref={transitionRef}>
|
|
|
+ <p>TerrAssumptions!</p>
|
|
|
+ </div>
|
|
|
+ </CSSTransition>
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+const Footer = ({ show }) => {
|
|
|
+ const transitionRef = useRef(null);
|
|
|
+
|
|
|
+ return (
|
|
|
+ <CSSTransition
|
|
|
+ nodeRef={transitionRef}
|
|
|
+ in={show}
|
|
|
+ timeout={500}
|
|
|
+ mountOnEnter
|
|
|
+ unmountOnExit
|
|
|
+ classNames="fade"
|
|
|
+ >
|
|
|
+ <div className={styles.footer} ref={transitionRef}>
|
|
|
+ <ApiInfo />
|
|
|
+ </div>
|
|
|
+ </CSSTransition>
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+const State = ({ show, children, setTransitioning }) => {
|
|
|
+ const transitionRef = useRef(null);
|
|
|
|
|
|
-const State = ({ show, children, setTransitioning }) => (
|
|
|
- <CSSTransition
|
|
|
- in={show}
|
|
|
- timeout={500}
|
|
|
- mountOnEnter
|
|
|
- unmountOnExit
|
|
|
- classNames="fade"
|
|
|
- onEnter={() => setTransitioning(true)}
|
|
|
- onExited={() => setTransitioning(false)}
|
|
|
- >
|
|
|
- <div className={styles.state}>
|
|
|
- {children}
|
|
|
- </div>
|
|
|
- </CSSTransition>
|
|
|
-)
|
|
|
+ return (
|
|
|
+ <CSSTransition
|
|
|
+ nodeRef={transitionRef}
|
|
|
+ in={show}
|
|
|
+ timeout={500}
|
|
|
+ mountOnEnter
|
|
|
+ unmountOnExit
|
|
|
+ classNames="fade"
|
|
|
+ onEnter={() => setTransitioning(true)}
|
|
|
+ onExited={() => setTransitioning(false)}
|
|
|
+ >
|
|
|
+ <div className={styles.state} ref={transitionRef}>
|
|
|
+ {children}
|
|
|
+ </div>
|
|
|
+ </CSSTransition>
|
|
|
+ );
|
|
|
+}
|
|
|
|
|
|
export default () => {
|
|
|
const [transitioning, setTransitioning] = useState(true);
|
|
@@ -71,7 +86,7 @@ export default () => {
|
|
|
const needsHF = needsHeaderFooter[gameState];
|
|
|
|
|
|
return (
|
|
|
- // <React.StrictMode>
|
|
|
+ <React.StrictMode>
|
|
|
<div className={styles.page}>
|
|
|
<Header show={needsHF} />
|
|
|
<State show={gameState === PRE_GAME} setTransitioning={setTransitioning}>
|
|
@@ -92,6 +107,6 @@ export default () => {
|
|
|
</State>
|
|
|
<Footer show={needsHF} />
|
|
|
</div>
|
|
|
- // </React.StrictMode>
|
|
|
+ </React.StrictMode>
|
|
|
);
|
|
|
};
|