mirror of
https://github.com/He4eT/elseifplayer.git
synced 2026-05-05 01:17:22 +00:00
Player: pass functions to the InbutBox
This commit is contained in:
parent
2b344f7cd9
commit
4173349481
5 changed files with 51 additions and 9 deletions
|
|
@ -38,6 +38,8 @@ export default function InputBox ({
|
||||||
windows,
|
windows,
|
||||||
currentWindowId,
|
currentWindowId,
|
||||||
sendMessage,
|
sendMessage,
|
||||||
|
onFullscreenRequest,
|
||||||
|
setMenuOpen,
|
||||||
}) {
|
}) {
|
||||||
const [targetWindow, setTargetWindow] = useState(null)
|
const [targetWindow, setTargetWindow] = useState(null)
|
||||||
const [inputText, setInputText] = useState('')
|
const [inputText, setInputText] = useState('')
|
||||||
|
|
@ -126,9 +128,6 @@ export default function InputBox ({
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const enterFullscreen = () =>
|
|
||||||
document.documentElement.requestFullscreen()
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<input {...inputHandlers[inputType]}
|
<input {...inputHandlers[inputType]}
|
||||||
className='inputBox'
|
className='inputBox'
|
||||||
|
|
@ -136,7 +135,7 @@ export default function InputBox ({
|
||||||
value={inputText}
|
value={inputText}
|
||||||
autofocus
|
autofocus
|
||||||
autocomplete='off'
|
autocomplete='off'
|
||||||
onDblClick={enterFullscreen}
|
onDblClick={onFullscreenRequest}
|
||||||
onInput={({ target: { value } }) => setInputText(value)}
|
onInput={({ target: { value } }) => setInputText(value)}
|
||||||
type='text' />
|
type='text' />
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,26 @@ import ThemeSelector from
|
||||||
|
|
||||||
import './MenuOverlay.css'
|
import './MenuOverlay.css'
|
||||||
|
|
||||||
export default function MenuOverlay ({ themeEngine }) {
|
export default function MenuOverlay ({
|
||||||
|
themeEngine, onFullscreenRequest, menuOpen, setMenuOpen,
|
||||||
|
}) {
|
||||||
const dialog = useRef(null)
|
const dialog = useRef(null)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const dialogOpen = dialog.current.open
|
||||||
|
|
||||||
|
if (menuOpen && !dialogOpen) {
|
||||||
|
dialog.current.showModal()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!menuOpen && dialogOpen) {
|
||||||
|
dialog.current.close()
|
||||||
|
}
|
||||||
|
}, [menuOpen])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const closeHandler = () => {
|
const closeHandler = () => {
|
||||||
console.log('dialog closed')
|
setMenuOpen(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.current.addEventListener('close', closeHandler)
|
dialog.current.addEventListener('close', closeHandler)
|
||||||
|
|
@ -27,8 +41,16 @@ export default function MenuOverlay ({ themeEngine }) {
|
||||||
ElseIfPlayer
|
ElseIfPlayer
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='appearance'>
|
<div className='appearance'>
|
||||||
<button>Request fullscreen</button>
|
<button
|
||||||
|
onClick={() => {
|
||||||
|
dialog.current.close()
|
||||||
|
onFullscreenRequest()
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Request fullscreen
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
onClick={() => themeEngine.setRandomTheme()}
|
onClick={() => themeEngine.setRandomTheme()}
|
||||||
>
|
>
|
||||||
|
|
@ -41,6 +63,7 @@ export default function MenuOverlay ({ themeEngine }) {
|
||||||
}} />
|
}} />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
onClick={() => dialog.current.close()}
|
onClick={() => dialog.current.close()}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,10 @@ const runMachine = ({ engine: Engine, wasmBinary, storyfile, handlers }) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Player ({
|
export default function Player ({
|
||||||
vmParts: { storyfile, engine, wasmBinary }, singleWindow,
|
vmParts: { storyfile, engine, wasmBinary },
|
||||||
|
onFullscreenRequest,
|
||||||
|
setMenuOpen,
|
||||||
|
singleWindow,
|
||||||
}) {
|
}) {
|
||||||
const [status, setStatus] = useState(INITIAL_STATUS)
|
const [status, setStatus] = useState(INITIAL_STATUS)
|
||||||
|
|
||||||
|
|
@ -113,6 +116,8 @@ export default function Player ({
|
||||||
windows,
|
windows,
|
||||||
currentWindowId,
|
currentWindowId,
|
||||||
sendMessage,
|
sendMessage,
|
||||||
|
onFullscreenRequest,
|
||||||
|
setMenuOpen,
|
||||||
}} />
|
}} />
|
||||||
</section>)
|
</section>)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,9 @@ const prepareVM = ({ url, setStatus, setParts }) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function UrlPlayer ({ url, singleWindow }) {
|
export default function UrlPlayer ({
|
||||||
|
url, singleWindow, onFullscreenRequest, setMenuOpen,
|
||||||
|
}) {
|
||||||
const [status, setStatus] = useState(INITIAL_STATUS)
|
const [status, setStatus] = useState(INITIAL_STATUS)
|
||||||
const [vmParts, setParts] = useState(null)
|
const [vmParts, setParts] = useState(null)
|
||||||
|
|
||||||
|
|
@ -73,6 +75,8 @@ export default function UrlPlayer ({ url, singleWindow }) {
|
||||||
return vmParts
|
return vmParts
|
||||||
? (<Player {...{
|
? (<Player {...{
|
||||||
vmParts,
|
vmParts,
|
||||||
|
onFullscreenRequest,
|
||||||
|
setMenuOpen,
|
||||||
singleWindow,
|
singleWindow,
|
||||||
}} />)
|
}} />)
|
||||||
: (<Status {...status} />)
|
: (<Status {...status} />)
|
||||||
|
|
|
||||||
|
|
@ -21,13 +21,24 @@ export default function PlayerView ({
|
||||||
setTargetUrl(decode(encodedUrl))
|
setTargetUrl(decode(encodedUrl))
|
||||||
}, [encodedUrl])
|
}, [encodedUrl])
|
||||||
|
|
||||||
|
const [menuOpen, setMenuOpen] = useState(false)
|
||||||
|
|
||||||
|
const onFullscreenRequest = () => {
|
||||||
|
document.documentElement.requestFullscreen()
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main>
|
<main>
|
||||||
<MenuOverlay {...{
|
<MenuOverlay {...{
|
||||||
themeEngine,
|
themeEngine,
|
||||||
|
onFullscreenRequest,
|
||||||
|
menuOpen,
|
||||||
|
setMenuOpen,
|
||||||
}}/>
|
}}/>
|
||||||
<UrlPlayer {...{
|
<UrlPlayer {...{
|
||||||
url: targetUrl,
|
url: targetUrl,
|
||||||
|
onFullscreenRequest,
|
||||||
|
setMenuOpen,
|
||||||
singleWindow,
|
singleWindow,
|
||||||
}} />
|
}} />
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue