shortcuts.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. | "deleteSelectedElements"
  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. | "viewMode"
  26. | "flipHorizontal"
  27. | "flipVertical";
  28. const shortcutMap: Record<ShortcutName, string[]> = {
  29. cut: [getShortcutKey("CtrlOrCmd+X")],
  30. copy: [getShortcutKey("CtrlOrCmd+C")],
  31. paste: [getShortcutKey("CtrlOrCmd+V")],
  32. copyStyles: [getShortcutKey("CtrlOrCmd+Alt+C")],
  33. pasteStyles: [getShortcutKey("CtrlOrCmd+Alt+V")],
  34. selectAll: [getShortcutKey("CtrlOrCmd+A")],
  35. deleteSelectedElements: [getShortcutKey("Del")],
  36. duplicateSelection: [
  37. getShortcutKey("CtrlOrCmd+D"),
  38. getShortcutKey(`Alt+${t("helpDialog.drag")}`),
  39. ],
  40. sendBackward: [getShortcutKey("CtrlOrCmd+[")],
  41. bringForward: [getShortcutKey("CtrlOrCmd+]")],
  42. sendToBack: [
  43. isDarwin
  44. ? getShortcutKey("CtrlOrCmd+Alt+[")
  45. : getShortcutKey("CtrlOrCmd+Shift+["),
  46. ],
  47. bringToFront: [
  48. isDarwin
  49. ? getShortcutKey("CtrlOrCmd+Alt+]")
  50. : getShortcutKey("CtrlOrCmd+Shift+]"),
  51. ],
  52. copyAsPng: [getShortcutKey("Shift+Alt+C")],
  53. copyAsSvg: [],
  54. group: [getShortcutKey("CtrlOrCmd+G")],
  55. ungroup: [getShortcutKey("CtrlOrCmd+Shift+G")],
  56. gridMode: [getShortcutKey("CtrlOrCmd+'")],
  57. zenMode: [getShortcutKey("Alt+Z")],
  58. stats: [],
  59. addToLibrary: [],
  60. flipHorizontal: [getShortcutKey("Shift+H")],
  61. flipVertical: [getShortcutKey("Shift+V")],
  62. viewMode: [getShortcutKey("Alt+R")],
  63. };
  64. export const getShortcutFromShortcutName = (name: ShortcutName) => {
  65. const shortcuts = shortcutMap[name];
  66. // if multiple shortcuts availiable, take the first one
  67. return shortcuts && shortcuts.length > 0 ? shortcuts[0] : "";
  68. };