shapes.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import {
  2. ArrowIcon,
  3. DiamondIcon,
  4. EllipseIcon,
  5. EraserIcon,
  6. FreedrawIcon,
  7. ImageIcon,
  8. LineIcon,
  9. RectangleIcon,
  10. SelectionIcon,
  11. TextIcon,
  12. } from "./components/icons";
  13. import { KEYS } from "./keys";
  14. export const SHAPES = [
  15. {
  16. icon: SelectionIcon,
  17. value: "selection",
  18. key: KEYS.V,
  19. numericKey: KEYS["1"],
  20. fillable: true,
  21. },
  22. {
  23. icon: RectangleIcon,
  24. value: "rectangle",
  25. key: KEYS.R,
  26. numericKey: KEYS["2"],
  27. fillable: true,
  28. },
  29. {
  30. icon: DiamondIcon,
  31. value: "diamond",
  32. key: KEYS.D,
  33. numericKey: KEYS["3"],
  34. fillable: true,
  35. },
  36. {
  37. icon: EllipseIcon,
  38. value: "ellipse",
  39. key: KEYS.O,
  40. numericKey: KEYS["4"],
  41. fillable: true,
  42. },
  43. {
  44. icon: ArrowIcon,
  45. value: "arrow",
  46. key: KEYS.A,
  47. numericKey: KEYS["5"],
  48. fillable: true,
  49. },
  50. {
  51. icon: LineIcon,
  52. value: "line",
  53. key: KEYS.L,
  54. numericKey: KEYS["6"],
  55. fillable: true,
  56. },
  57. {
  58. icon: FreedrawIcon,
  59. value: "freedraw",
  60. key: [KEYS.P, KEYS.X],
  61. numericKey: KEYS["7"],
  62. fillable: false,
  63. },
  64. {
  65. icon: TextIcon,
  66. value: "text",
  67. key: KEYS.T,
  68. numericKey: KEYS["8"],
  69. fillable: false,
  70. },
  71. {
  72. icon: ImageIcon,
  73. value: "image",
  74. key: null,
  75. numericKey: KEYS["9"],
  76. fillable: false,
  77. },
  78. {
  79. icon: EraserIcon,
  80. value: "eraser",
  81. key: KEYS.E,
  82. numericKey: KEYS["0"],
  83. fillable: false,
  84. },
  85. ] as const;
  86. export const findShapeByKey = (key: string) => {
  87. const shape = SHAPES.find((shape, index) => {
  88. return (
  89. (shape.numericKey != null && key === shape.numericKey.toString()) ||
  90. (shape.key &&
  91. (typeof shape.key === "string"
  92. ? shape.key === key
  93. : (shape.key as readonly string[]).includes(key)))
  94. );
  95. });
  96. return shape?.value || null;
  97. };