shortcuts.ts 1.7 KB

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