55 lines
3.0 KiB
TypeScript
55 lines
3.0 KiB
TypeScript
|
import React from 'react'
|
||
|
import { useKeyPressEvent } from 'react-use'
|
||
|
import { useRecoilState } from 'recoil'
|
||
|
import { shortcutsState } from '../../store/Atoms'
|
||
|
import Button from '../shared/Button'
|
||
|
|
||
|
const Shortcuts = () => {
|
||
|
const [shortcutVisibility, setShortcutState] = useRecoilState(shortcutsState)
|
||
|
|
||
|
const shortcutStateHandler = () => {
|
||
|
setShortcutState(prevShortcutState => {
|
||
|
return !prevShortcutState
|
||
|
})
|
||
|
}
|
||
|
|
||
|
useKeyPressEvent('h', () => {
|
||
|
shortcutStateHandler()
|
||
|
})
|
||
|
|
||
|
return (
|
||
|
<div className="shortcuts">
|
||
|
<Button
|
||
|
onClick={shortcutStateHandler}
|
||
|
disabled={shortcutVisibility}
|
||
|
icon={
|
||
|
<svg
|
||
|
xmlns="http://www.w3.org/2000/svg"
|
||
|
aria-hidden="true"
|
||
|
role="img"
|
||
|
width="28"
|
||
|
height="28"
|
||
|
preserveAspectRatio="xMidYMid meet"
|
||
|
viewBox="0 0 16 16"
|
||
|
>
|
||
|
<rect
|
||
|
x="0"
|
||
|
y="0"
|
||
|
width="16"
|
||
|
height="16"
|
||
|
fill="none"
|
||
|
stroke="none"
|
||
|
/>
|
||
|
<g fill="currentColor">
|
||
|
<path d="M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h12zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2z" />
|
||
|
<path d="M13 10.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm0-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5 0A.25.25 0 0 1 8.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 8 8.75v-.5zm2 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5a.25.25 0 0 1-.25-.25v-.5zm1 2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-5-2A.25.25 0 0 1 6.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 6 8.75v-.5zm-2 0A.25.25 0 0 1 4.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 4 8.75v-.5zm-2 0A.25.25 0 0 1 2.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 8.75v-.5zm11-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm-2 0A.25.25 0 0 1 9.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 9 6.75v-.5zm-2 0A.25.25 0 0 1 7.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 7 6.75v-.5zm-2 0A.25.25 0 0 1 5.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 5 6.75v-.5zm-3 0A.25.25 0 0 1 2.25 6h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5A.25.25 0 0 1 2 6.75v-.5zm0 4a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5zm2 0a.25.25 0 0 1 .25-.25h5.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-5.5a.25.25 0 0 1-.25-.25v-.5z" />
|
||
|
</g>
|
||
|
</svg>
|
||
|
}
|
||
|
/>
|
||
|
</div>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export default Shortcuts
|