parent
9631afa93f
commit
1b53de3bac
7 changed files with 134 additions and 48 deletions
@ -1,7 +1,25 @@ |
||||
.window { |
||||
display: grid; |
||||
grid-template-columns: 200px auto; |
||||
grid-template-columns: 20% auto; |
||||
height: 100%; |
||||
width: 100%; |
||||
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