diff options
author | 2021-08-22 14:33:54 +0200 | |
---|---|---|
committer | 2021-08-29 15:35:49 +0200 | |
commit | 9f74c550927671f4ded301d0cf3e9d592716375c (patch) | |
tree | 6075bead5939bfb9c3b6137fc5ef865f088b57cb /helpers/windowActions.js | |
parent | 71cc09db93ec9b079a30593e14ca57c98fdc94ac (diff) | |
download | my_apps-9f74c550927671f4ded301d0cf3e9d592716375c.tar.gz my_apps-9f74c550927671f4ded301d0cf3e9d592716375c.tar.bz2 my_apps-9f74c550927671f4ded301d0cf3e9d592716375c.zip |
settings
Diffstat (limited to 'helpers/windowActions.js')
-rw-r--r-- | helpers/windowActions.js | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/helpers/windowActions.js b/helpers/windowActions.js index 60e697c..8ff361b 100644 --- a/helpers/windowActions.js +++ b/helpers/windowActions.js @@ -1,33 +1,59 @@ -export const toggleMin = (appName, apps, setApps) => setApps([ - ...apps.map(a => a.name === appName ? {...a, min: !a.min} : a ) -]) +export const close = (appName, setApps) => {setApps(apps => apps.filter(a => a.name !== appName))} -export const toggleMax = (appName, apps, setApps) => setApps([ - ...apps.map(a => a.name === appName ? {...a, max: !a.max} : a ) -]) +export const open = ({appName, buttons, height, width}, setApps) => { + setApps(apps => ( + !apps.some(a => a.name === appName) + ? [...apps, {name: appName, min: false, max: false, height, width, pos: [], buttons}] + : apps + )) +} -export const close = (appName, apps, setApps) => { setApps(apps.filter(a => a.name !== appName)) } +export const focus = (appName, setApps) => { + setApps(apps => { + const i = apps.findIndex(a => a.name === appName) + return i !== apps.length - 1 + ? [...apps.filter((_,n) => n !== i), apps[i]] + : apps + }) +} + +export const unfocus = (appName, setApps) => { + setApps(apps => { + const i = apps.findIndex(a => a.name === appName) + return i !== 0 + ? [apps[i], ...apps.filter((_,n) => n !== i)] + : apps + }) +} -export const open = (appName, apps, setApps) => { - apps.some(app => app.name === appName) - ? toggleMin(appName, apps, setApps) - : setApps([...apps, {name: appName, min: false, max: false, pos: []}]) +export const toggleMin = (appName, setApps) => { + setApps(apps => ([ + ...apps.map(a => a.name === appName ? {...a, min: !a.min} : a ) + ])) + unfocus(appName, setApps) } -export const move = (appName, winRef, apps, setApps) => { +export const toggleMax = (appName, setApps) => setApps(apps => ([ + ...apps.map(a => a.name === appName ? {...a, max: !a.max} : a ) +])) + + +export const move = (appName, winRef, setApps) => { winRef.current.onmousedown = (event) => { if (event.target.classList && event.target.classList.contains('window__title')) { const shiftX = event.clientX - winRef.current.getBoundingClientRect().left const shiftY = event.clientY - winRef.current.getBoundingClientRect().top winRef.current.classList.add('moving') + focus(appName, setApps) function moveAt(pageX, pageY) { const x = pageX - shiftX const y = pageY - shiftY - 32 - setApps([...apps.map(a => a.name === appName + + setApps(apps => ([...apps.map(a => a.name === appName ? {...a, pos: [x + 'px', y < 0 ? 0 : y + 'px']} : a - )]) + )])) } const onMouseMove = (event) => { |