/** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2020-03-31 18:06:27 * @modify date 2020-10-29 17:38:16 * @desc [description] */ import { IHotKeyAction } from '../../layout/layout'; export function defaultHotkeys() { function selectElements(data) { let selected: string[] = data.network.network.getSelectedNodes(); if (selected.length === 0) { const node = data.network.network.getNodeAt(data.layout.currentMousePosition); selected = node ? [node] : []; } if (selected.length === 0) { const node = data.network.network.getEdgeAt(data.layout.currentMousePosition); selected = node ? [node] : []; } return selected; } const hotkeys: IHotKeyAction[] = [ { key: 'ShiftLeft', async onPress(data) { try { while (data.layout.pressedKey === 'ShiftLeft') { await data.network.userAddEdge(); } } catch (error) { data.network.disableEditMode(); } }, async onRelease(data){ data.network.disableEditMode(); } }, { key: 'ControlLeft', async onPress(data) { try { while (data.layout.pressedKey === 'ControlLeft') { await data.network.userAddNode(); } } catch (error) { data.network.disableEditMode(); } }, async onRelease(data){ data.network.disableEditMode(); } }, { key: 'Delete', onPress(data) { let selected: string[] = selectElements(data); data.network.network.deleteSelected(selected); } }, { key: 'space', onPress(data) { let selected: string[] = selectElements(data); for (const id of selected) { if (typeof data.network.network.clusters[id] === 'function') { data.network.network.clusters[id](); } else { // clusterNode(id); data.network.network.unselectAll(); } } } }, { key: 'Esc', onPress(data){ data.network.network.disableEditMode(); } }, { key: 'KeyR', onPress(data){ data.network.network.redraw(); } }, { key: 'KeyE', onPress(data){ data.network.network.enableEditMode(); } }, { key: 'KeyF', onPress(data){ data.network.fit(); } } ] return hotkeys; }