Path: blob/master/src/packages/frontend/editors/slate/slate-react/utils/hotkeys.ts
1698 views
import { isKeyHotkey } from "is-hotkey";1import { IS_APPLE } from "./environment";23/**4* Hotkey mappings for each platform.5*/67const HOTKEYS = {8bold: "mod+b",9compose: ["down", "left", "right", "up", "backspace", "enter"],10moveBackward: "left",11moveForward: "right",12moveWordBackward: "ctrl+left",13moveWordForward: "ctrl+right",14deleteBackward: "shift?+backspace",15deleteForward: "shift?+delete",16extendBackward: "shift+left",17extendForward: "shift+right",18italic: "mod+i",19splitBlock: "shift?+enter",20undo: "mod+z",21};2223const APPLE_HOTKEYS = {24moveLineBackward: "opt+up",25moveLineForward: "opt+down",26moveWordBackward: "opt+left",27moveWordForward: "opt+right",28deleteBackward: ["ctrl+backspace", "ctrl+h"],29deleteForward: ["ctrl+delete", "ctrl+d"],30deleteLineBackward: "cmd+shift?+backspace",31deleteLineForward: ["cmd+shift?+delete", "ctrl+k"],32deleteWordBackward: "opt+shift?+backspace",33deleteWordForward: "opt+shift?+delete",34extendLineBackward: "opt+shift+up",35extendLineForward: "opt+shift+down",36redo: "cmd+shift+z",37transposeCharacter: "ctrl+t",38};3940const WINDOWS_HOTKEYS = {41deleteWordBackward: "ctrl+shift?+backspace",42deleteWordForward: "ctrl+shift?+delete",43redo: ["ctrl+y", "ctrl+shift+z"],44};4546/**47* Create a platform-aware hotkey checker.48*/4950const create = (key: string) => {51const generic = HOTKEYS[key];52const apple = APPLE_HOTKEYS[key];53const windows = WINDOWS_HOTKEYS[key];54const isGeneric = generic && isKeyHotkey(generic);55const isApple = apple && isKeyHotkey(apple);56const isWindows = windows && isKeyHotkey(windows);5758return (event: KeyboardEvent) => {59if (isGeneric && isGeneric(event)) return true;60if (IS_APPLE && isApple && isApple(event)) return true;61if (!IS_APPLE && isWindows && isWindows(event)) return true;62return false;63};64};6566/**67* Hotkeys.68*/6970export default {71isBold: create("bold"),72isCompose: create("compose"),73isMoveBackward: create("moveBackward"),74isMoveForward: create("moveForward"),75isDeleteBackward: create("deleteBackward"),76isDeleteForward: create("deleteForward"),77isDeleteLineBackward: create("deleteLineBackward"),78isDeleteLineForward: create("deleteLineForward"),79isDeleteWordBackward: create("deleteWordBackward"),80isDeleteWordForward: create("deleteWordForward"),81isExtendBackward: create("extendBackward"),82isExtendForward: create("extendForward"),83isExtendLineBackward: create("extendLineBackward"),84isExtendLineForward: create("extendLineForward"),85isItalic: create("italic"),86isMoveLineBackward: create("moveLineBackward"),87isMoveLineForward: create("moveLineForward"),88isMoveWordBackward: create("moveWordBackward"),89isMoveWordForward: create("moveWordForward"),90isRedo: create("redo"),91isSplitBlock: create("splitBlock"),92isTransposeCharacter: create("transposeCharacter"),93isUndo: create("undo"),94};959697