parent
9631afa93f
commit
1b53de3bac
7 changed files with 134 additions and 48 deletions
@ -1,7 +1,25 @@ |
|||||||
.window { |
.window { |
||||||
display: grid; |
display: grid; |
||||||
grid-template-columns: 200px auto; |
grid-template-columns: 20% auto; |
||||||
height: 100%; |
height: 100%; |
||||||
width: 100%; |
width: 100%; |
||||||
position: absolute; |
position: absolute; |
||||||
|
|
||||||
|
main { |
||||||
|
background: color(mainBackground); |
||||||
|
overflow-y: auto; |
||||||
|
transition: all 0.3s ease-in-out; |
||||||
|
} |
||||||
|
|
||||||
|
&.fullscreen { |
||||||
|
main { |
||||||
|
& > .slide:first-child { |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
width: 100vw; |
||||||
|
height: 100vh; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
@ -0,0 +1,48 @@ |
|||||||
|
import {useContext, useEffect} from "react"; |
||||||
|
|
||||||
|
import SlideContext from "../shared/SlideContext"; |
||||||
|
import Modes from "../models/Modes"; |
||||||
|
|
||||||
|
const KeyboardControl = ({mode, setMode, deck}) => { |
||||||
|
const {slide, setSlide} = useContext(SlideContext); |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
const keyHandler = event => { |
||||||
|
console.log(event.key); |
||||||
|
switch (event.key) { |
||||||
|
case "F5": |
||||||
|
document.documentElement.requestFullscreen(); |
||||||
|
setMode(Modes.PRESENT); |
||||||
|
break; |
||||||
|
case "ArrowLeft": |
||||||
|
if (slide <= 0) |
||||||
|
return; |
||||||
|
setSlide(slide - 1); |
||||||
|
break; |
||||||
|
case "ArrowRight": |
||||||
|
if (slide >= deck.length -1) |
||||||
|
return; |
||||||
|
setSlide(slide + 1); |
||||||
|
break; |
||||||
|
default: |
||||||
|
return; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
const fullscreenHandler = () => { |
||||||
|
if (!document.fullscreenElement) |
||||||
|
setMode(Modes.NORMAL); |
||||||
|
}; |
||||||
|
|
||||||
|
window.addEventListener("keydown", keyHandler); |
||||||
|
window.addEventListener("fullscreenchange", fullscreenHandler); |
||||||
|
|
||||||
|
return () => { |
||||||
|
window.removeEventListener("keydown", keyHandler); |
||||||
|
window.removeEventListener("fullscreenchange", fullscreenHandler); |
||||||
|
} |
||||||
|
|
||||||
|
}, [slide, setSlide, mode, setMode, deck]); |
||||||
|
}; |
||||||
|
|
||||||
|
export default KeyboardControl; |
@ -0,0 +1,8 @@ |
|||||||
|
import {createContext} from "react"; |
||||||
|
|
||||||
|
const SlideContext = createContext({ |
||||||
|
slide : 0, |
||||||
|
setSlide : () => {} |
||||||
|
}); |
||||||
|
|
||||||
|
export default SlideContext; |
Loading…
Reference in new issue