@ -418,6 +418,28 @@ type AppState = {
@@ -418,6 +418,28 @@ type AppState = {
viewBackgroundColor : string ;
} ;
const KEYS = {
ARROW_LEFT : "ArrowLeft" ,
ARROW_RIGHT : "ArrowRight" ,
ARROW_DOWN : "ArrowDown" ,
ARROW_UP : "ArrowUp" ,
ESCAPE : "Escape" ,
DELETE : "Delete" ,
BACKSPACE : "Backspace"
} ;
function isArrowKey ( keyCode : string ) {
return (
keyCode === KEYS . ARROW_LEFT ||
keyCode === KEYS . ARROW_RIGHT ||
keyCode === KEYS . ARROW_DOWN ||
keyCode === KEYS . ARROW_UP
) ;
}
const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5 ;
const ELEMENT_TRANSLATE_AMOUNT = 1 ;
class App extends React . Component < { } , AppState > {
public componentDidMount() {
document . addEventListener ( "keydown" , this . onKeyDown , false ) ;
@ -443,27 +465,24 @@ class App extends React.Component<{}, AppState> {
@@ -443,27 +465,24 @@ class App extends React.Component<{}, AppState> {
return ;
}
if ( event . key === "Escape" ) {
if ( event . key === KEYS . ESCAPE ) {
clearSelection ( ) ;
this . forceUpdate ( ) ;
event . preventDefault ( ) ;
} else if ( event . key === "Backspace" ) {
} else if ( event . key === KEYS . BACKSPACE || event . key === KEYS . DELETE ) {
deleteSelectedElements ( ) ;
this . forceUpdate ( ) ;
event . preventDefault ( ) ;
} else if (
event . key === "ArrowLeft" ||
event . key === "ArrowRight" ||
event . key === "ArrowUp" ||
event . key === "ArrowDown"
) {
const step = event . shiftKey ? 5 : 1 ;
} else if ( isArrowKey ( event . key ) ) {
const step = event . shiftKey
? ELEMENT_SHIFT_TRANSLATE_AMOUNT
: ELEMENT_TRANSLATE_AMOUNT ;
elements . forEach ( element = > {
if ( element . isSelected ) {
if ( event . key === "ArrowLeft" ) element . x -= step ;
else if ( event . key === "ArrowRight" ) element . x += step ;
else if ( event . key === "ArrowUp" ) element . y -= step ;
else if ( event . key === "ArrowDown" ) element . y += step ;
if ( event . key === KEYS . ARROW_LEFT ) element . x -= step ;
else if ( event . key === KEYS . ARROW_RIGHT ) element . x += step ;
else if ( event . key === KEYS . ARROW_UP ) element . y -= step ;
else if ( event . key === KEYS . ARROW_DOWN ) element . y += step ;
}
} ) ;
this . forceUpdate ( ) ;