From 18da26dc20691344bf75012d4d4f74fa335d8283 Mon Sep 17 00:00:00 2001 From: He4eT Date: Mon, 19 Jul 2021 23:37:22 +0500 Subject: [PATCH] Player: add the singleWindow option --- src/components/Player/Player.jsx | 24 ++++++++++++++++++------ src/components/Player/UrlPlayer.jsx | 7 +++++-- src/index.js | 24 ++++++++++++++++-------- src/views/PlayerView/PlayerView.jsx | 8 ++++++-- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/components/Player/Player.jsx b/src/components/Player/Player.jsx index b209374..790b369 100644 --- a/src/components/Player/Player.jsx +++ b/src/components/Player/Player.jsx @@ -37,7 +37,9 @@ const Handlers = ({ setInputType, setInbox }) => ({ - onInit: _ => setStatus({ stage: 'ready' }), + onInit: _ => { + setStatus({ stage: 'ready' }) + }, /* */ onUpdateWindows: windows => { setWindows(windows) @@ -49,8 +51,12 @@ const Handlers = ({ setCurrentWindowId(id) setInputType(type) }, - onUpdateContent: setInbox, - onDisable: _ => setInputType(null), + onUpdateContent: inbox => { + setInbox(inbox) + }, + onDisable: _ => { + setInputType(null) + }, /* */ onFileNameRequest: (tosave, usage, _, setFileName) => { setFileName({ @@ -66,10 +72,14 @@ const Handlers = ({ localStorage.setItem(`fake-fs/${filename}`, encode(content)) }, /* */ - onExit: _ => setInputType(null) + onExit: _ => { + setInputType(null) + } }) -export default function ({ vmParts: { file, engine } }) { +export default function ({ + vmParts: { file, engine }, singleWindow +}) { const [status, setStatus] = useState(INITIAL_STATUS) const [windows, setWindows] = useState([]) @@ -123,7 +133,9 @@ export default function ({ vmParts: { file, engine } }) {
{ windows .sort(byTop) - // .filter(({id}) => id === currentWindowId) + .filter(singleWindow + ? ({id}) => id === currentWindowId + : _ => true) .map(textWindow(inbox))}
{ }) } -export default function ({ url }) { +export default function ({ url, singleWindow }) { const [status, setStatus] = useState(INITIAL_STATUS) const [vmParts, setParts] = useState(null) @@ -47,6 +47,9 @@ export default function ({ url }) { }, [url]) return vmParts - ? () + ? () : () } diff --git a/src/index.js b/src/index.js index a941a52..66b9d16 100644 --- a/src/index.js +++ b/src/index.js @@ -21,6 +21,12 @@ function App () { const themeEngine = useThemeEngine() const [location] = useHashLocation() + const playerView = (themeEngine, singleWindow) => params => + () + return (
+ - {params => } + { playerView(themeEngine, false) } + + + { playerView(themeEngine, true) } + + + { playerView(themeEngine, true) } - {params => } + { playerView(themeEngine, false) } + diff --git a/src/views/PlayerView/PlayerView.jsx b/src/views/PlayerView/PlayerView.jsx index 145417c..b3564a2 100644 --- a/src/views/PlayerView/PlayerView.jsx +++ b/src/views/PlayerView/PlayerView.jsx @@ -7,7 +7,9 @@ import './PlayerView.css' const decode = encodedUrl => decodeURIComponent(encodedUrl) -export default function ({ setTheme, theme, encodedUrl }) { +export default function ({ + setTheme, theme, encodedUrl, singleWindow +}) { useEffect(() => setTheme(theme), [theme]) const [targetUrl, setTargetUrl] = useState(decode(encodedUrl)) @@ -18,7 +20,9 @@ export default function ({ setTheme, theme, encodedUrl }) { return (
- +
) }