shortcuts.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { t } from "../i18n";
  2. import { isDarwin } from "../keys";
  3. import { getShortcutKey } from "../utils";
  4. export type ShortcutName =
  5. | "cut"
  6. | "copy"
  7. | "paste"
  8. | "copyStyles"
  9. | "pasteStyles"
  10. | "selectAll"
  11. | "delete"
  12. | "duplicateSelection"
  13. | "sendBackward"
  14. | "bringForward"
  15. | "sendToBack"
  16. | "bringToFront"
  17. | "copyAsPng"
  18. | "copyAsSvg"
  19. | "group"
  20. | "ungroup"
  21. | "gridMode"
  22. | "zenMode"
  23. | "stats"
  24. | "addToLibrary";
  25. const shortcutMap: Record<ShortcutName, string[]> = {
  26. cut: [getShortcutKey("CtrlOrCmd+X")],
  27. copy: [getShortcutKey("CtrlOrCmd+C")],
  28. paste: [getShortcutKey("CtrlOrCmd+V")],
  29. copyStyles: [getShortcutKey("CtrlOrCmd+Alt+C")],
  30. pasteStyles: [getShortcutKey("CtrlOrCmd+Alt+V")],
  31. selectAll: [getShortcutKey("CtrlOrCmd+A")],
  32. delete: [getShortcutKey("Del")],
  33. duplicateSelection: [
  34. getShortcutKey("CtrlOrCmd+D"),
  35. getShortcutKey(`Alt+${t("shortcutsDialog.drag")}`),
  36. ],
  37. sendBackward: [getShortcutKey("CtrlOrCmd+[")],
  38. bringForward: [getShortcutKey("CtrlOrCmd+]")],
  39. sendToBack: [
  40. isDarwin
  41. ? getShortcutKey("CtrlOrCmd+Alt+[")
  42. : getShortcutKey("CtrlOrCmd+Shift+["),
  43. ],
  44. bringToFront: [
  45. isDarwin
  46. ? getShortcutKey("CtrlOrCmd+Alt+]")
  47. : getShortcutKey("CtrlOrCmd+Shift+]"),
  48. ],
  49. copyAsPng: [getShortcutKey("Shift+Alt+C")],
  50. copyAsSvg: [],
  51. group: [getShortcutKey("CtrlOrCmd+G")],
  52. ungroup: [getShortcutKey("CtrlOrCmd+Shift+G")],
  53. gridMode: [getShortcutKey("CtrlOrCmd+'")],
  54. zenMode: [getShortcutKey("Alt+Z")],
  55. stats: [],
  56. addToLibrary: [],
  57. };
  58. export const getShortcutFromShortcutName = (name: ShortcutName) => {
  59. const shortcuts = shortcutMap[name];
  60. // if multiple shortcuts availiable, take the first one
  61. return shortcuts && shortcuts.length > 0 ? shortcuts[0] : "";
  62. };