aboutsummaryrefslogtreecommitdiffstats
path: root/helpers/windowActions.js
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/windowActions.js')
-rw-r--r--helpers/windowActions.js54
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) => {