import { ErrorMessage } from './ErrorMessage' ; import { MagnetTextManager } from './MagnetTextManager' ; import { OptionManager } from './OptionManager' ; import { AnimationToolBar } from './AnimationToolBar' ; import { BoardManager } from './boardManager' ; import { GUIActions } from './GUIActions' ; import { BoardNavigation } from './BoardNavigation' ; import { CircularMenu } from './CircularMenu' ; import { Share } from "./share" ; import { MagnetManager } from './magnetManager' ; import { UserManager } from './UserManager' ; import { Layout } from './Layout' ; import { Toolbar } from './Toolbar' ; import { Menu } from './Menu' ; import { S , Script } from './Script' ; const keys = { } ; window [ 'keys' ] = keys ; export class KeyBoardShortCuts { private static available = true ; static onKeyUp ( evt ) { delete keys [ evt . key ] ; } static onKeyDown ( evt ) { S . onkey ( evt . key ) ; keys [ evt . key ] = true ; if ( ( evt . key != "F11" ) && ( evt . key != "F12" ) && ( evt . key != "F5" ) && ! ( evt . ctrlKey && evt . key == "s" ) && ! ( evt . ctrlKey && evt . key == "o" ) && ! ( document . activeElement instanceof HTMLInputElement ) && ! ( document . activeElement instanceof HTMLTextAreaElement ) ) evt . preventDefault ( ) ; if ( evt . key == "Escape" || evt . key == "F1" ) { if ( Layout . isMinimap ) Layout . normal ( ) ; else if ( CircularMenu . isShown ( ) ) CircularMenu . hide ( ) ; else if ( AnimationToolBar . is ( ) && AnimationToolBar . isSelection ( ) ) AnimationToolBar . deselect ( ) ; else Menu . toggle ( ) ; } if ( Menu . isShown ( ) ) return ; if ( evt . ctrlKey && evt . altKey && evt . key == "k" ) { Share . execute ( "boardReset" , [ ] ) ; } else if ( evt . ctrlKey && evt . altKey && evt . key == "h" ) { OptionManager . toggle ( "cursorVisible" ) ; } else if ( ! evt . ctrlKey && ! evt . shiftKey && evt . key == "n" ) { Layout . toggleMinimap ( ) ; } else if ( ! evt . ctrlKey && ! evt . shiftKey && evt . key == "c" ) GUIActions . changeColor ( true ) ; else if ( ! evt . ctrlKey && evt . shiftKey && evt . key == "C" ) GUIActions . previousColor ( true ) ; else if ( ! evt . ctrlKey && ! evt . shiftKey && evt . key == "t" ) { GUIActions . toolmenu . show ( { x : UserManager . me . x , y : UserManager . me . y } ) ; } else if ( evt . key == "+" ) GUIActions . magnetIncreaseSize ( ) ; else if ( evt . key == "-" || evt . key == "=" ) GUIActions . magnetDecreaseSize ( ) ; else if ( evt . key == "b" ) GUIActions . magnetSwitchBackgroundForeground ( ) ; else if ( evt . key == "e" ) GUIActions . switchChalkEraser ( ) ; else if ( evt . key == "f" ) GUIActions . fill ( ) ; else if ( evt . key == "h" ) Toolbar . toggle ( ) ; else if ( evt . key == "a" ) AnimationToolBar . toggle ( ) ; else if ( evt . key == "Enter" && CircularMenu . isShown ( ) ) CircularMenu . hide ( ) ; else if ( evt . key == "ArrowLeft" && CircularMenu . isShown ( ) ) GUIActions . palette . previous ( ) ; else if ( evt . key == "ArrowRight" && CircularMenu . isShown ( ) ) GUIActions . palette . next ( ) ; else if ( evt . shiftKey && evt . key == "ArrowLeft" ) { BoardNavigation . left ( ) ; } else if ( evt . shiftKey && evt . key == "ArrowRight" ) { BoardNavigation . right ( ) ; } else if ( evt . key == "ArrowLeft" ) { BoardNavigation . leftPreviousPage ( ) ; } else if ( evt . key == "ArrowRight" ) { BoardNavigation . rightNextPage ( ) ; } else if ( evt . ctrlKey && evt . key == "r" ) { Script . toggle ( ) ; } else if ( UserManager . me . canWrite ) { KeyBoardShortCuts . onKeyDownThatModifies ( evt ) ; } } param evt static onKeyDownThatModifies ( evt ) { if ( evt . key == "Enter" ) { MagnetTextManager . addMagnetText ( UserManager . me . x , UserManager . me . y ) ; evt . preventDefault ( ) ; } else if ( evt . key == "d" ) Share . execute ( "divideScreen" , [ UserManager . me . userID , Layout . getXMiddle ( ) ] ) ; else if ( ( evt . ctrlKey && evt . shiftKey && evt . key == "Z" ) || ( evt . ctrlKey && evt . key == "y" ) ) { BoardManager . redo ( UserManager . me . userID ) ; evt . preventDefault ( ) ; } else if ( evt . ctrlKey && evt . key == "z" ) { BoardManager . cancel ( UserManager . me . userID ) ; evt . preventDefault ( ) ; } else if ( evt . shiftKey && evt . key == "PageDown" ) { if ( ! Share . isShared ( ) ) BoardManager . fastNextPausedFrame ( ) ; } else if ( evt . key == "PageDown" ) { if ( ! Share . isShared ( ) ) BoardManager . nextPausedFrame ( ) ; } else if ( evt . key == "PageUp" ) { if ( ! Share . isShared ( ) ) BoardManager . previousPausedFrame ( ) ; } else if ( evt . ctrlKey && evt . key . toLowerCase ( ) == 'x' ) { CircularMenu . hide ( ) ; if ( ! UserManager . me . isDelineation ) return ; const deli = UserManager . me . lastDelineation ; if ( deli . containsPolygonToMagnetize ( ) ) Share . execute ( "magnetize" , [ UserManager . me . userID , true , evt . key == "x" ] ) ; } else if ( evt . ctrlKey && evt . key . toLowerCase ( ) == 'c' ) { CircularMenu . hide ( ) ; if ( ! UserManager . me . isDelineation ) return ; const deli = UserManager . me . lastDelineation ; if ( deli . containsPolygonToMagnetize ( ) ) Share . execute ( "magnetize" , [ UserManager . me . userID , false , evt . key == "c" ] ) ; evt . preventDefault ( ) ; } else if ( evt . ctrlKey && evt . key == "v" ) { CircularMenu . hide ( ) ; if ( KeyBoardShortCuts . available ) { KeyBoardShortCuts . available = false ; setTimeout ( ( ) => KeyBoardShortCuts . available = true , 1000 ) ; if ( MagnetManager . getMagnetUnderCursor ( ) ) Share . execute ( "printMagnet" , [ MagnetManager . getCurrentMagnetID ( ) ] ) ; else GUIActions . pasteFromClipBoard ( ) ; } } else if ( evt . key . toLowerCase ( ) == "m" ) { CircularMenu . hide ( ) ; if ( ! UserManager . me . isDelineation ) { Share . execute ( "printMagnet" , [ MagnetManager . getCurrentMagnetID ( ) ] ) ; MagnetManager . removeCurrentMagnet ( ) ; } else { const deli = UserManager . me . lastDelineation ; if ( deli . containsPolygonToMagnetize ( ) ) { Share . execute ( "magnetize" , [ UserManager . me . userID , true , evt . key == "m" ] ) ; } else { Share . execute ( "printMagnet" , [ MagnetManager . getCurrentMagnetID ( ) ] ) ; MagnetManager . removeCurrentMagnet ( ) ; } } } else if ( evt . key == "p" ) { CircularMenu . hide ( ) ; Share . execute ( "printMagnet" , [ MagnetManager . getCurrentMagnetID ( ) ] ) ; } else if ( evt . key == "Delete" || evt . key == "x" || evt . key == "Backspace" ) { CircularMenu . hide ( ) ; MagnetManager . removeCurrentMagnet ( ) ; evt . preventDefault ( ) ; } } }