add changes from v0.3

This commit is contained in:
JJ Kasper
2018-11-24 00:23:32 -06:00
parent 73f05ce4a3
commit 111cf2ed35
133 changed files with 10768 additions and 7443 deletions

View File

@@ -0,0 +1,72 @@
import { useEffect } from 'react'
import Router from 'next/router'
import logout from '../util/logout'
import addBase from '../../util/addBase'
/* - keyboard shortcuts
g then h -> navigate home
g then n -> navigate to new doc
g then s -> navigate to settings
g then l -> logout
e (when on doc page) -> edit doc
/ (when on home page) -> focus search
ctrl/cmd + enter -> submit new doc (handled in CodeMirror component)
*/
const keyToUrl = {
72: '/',
78: '/new',
83: '/settings',
}
const keyToEl = {
69: { sel: '#edit', func: 'click' },
191: { sel: '.search', func: 'focus' },
}
const getKey = e => e.which || e.keyCode
let prevKey
const handleKeyDown = e => {
const tag = e.target.tagName
if (tag === 'INPUT' || tag === 'TEXTAREA') return
const key = getKey(e)
if (prevKey === 71) {
// prev key was g
switch (key) {
case 72:
case 78:
case 83: {
const url = keyToUrl[key]
Router.push(url, addBase(url))
break
}
case 76: {
// logout
setTimeout(logout, 1)
break
}
default:
break
}
}
switch (key) {
case 69:
case 191: {
const { sel, func } = keyToEl[key]
const el = document.querySelector(sel)
if (el) setTimeout(() => el[func](), 1)
break
}
default:
break
}
prevKey = key
}
export default function Shortcuts(props) {
useEffect(() => {
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
}, [])
return null
}