types.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { ExcalidrawElement, PointerType } from "./element/types";
  2. import { SHAPES } from "./shapes";
  3. export type FlooredNumber = number & { _brand: "FlooredNumber" };
  4. export type AppState = {
  5. draggingElement: ExcalidrawElement | null;
  6. resizingElement: ExcalidrawElement | null;
  7. multiElement: ExcalidrawElement | null;
  8. selectionElement: ExcalidrawElement | null;
  9. // element being edited, but not necessarily added to elements array yet
  10. // (e.g. text element when typing into the input)
  11. editingElement: ExcalidrawElement | null;
  12. elementType: typeof SHAPES[number]["value"];
  13. elementLocked: boolean;
  14. exportBackground: boolean;
  15. currentItemStrokeColor: string;
  16. currentItemBackgroundColor: string;
  17. currentItemFillStyle: string;
  18. currentItemStrokeWidth: number;
  19. currentItemRoughness: number;
  20. currentItemOpacity: number;
  21. currentItemFont: string;
  22. viewBackgroundColor: string;
  23. scrollX: FlooredNumber;
  24. scrollY: FlooredNumber;
  25. cursorX: number;
  26. cursorY: number;
  27. scrolledOutside: boolean;
  28. name: string;
  29. selectedId?: string;
  30. isResizing: boolean;
  31. zoom: number;
  32. openMenu: "canvas" | "shape" | null;
  33. lastPointerDownWith: PointerType;
  34. selectedElementIds: { [id: string]: boolean };
  35. };
  36. export type Pointer = Readonly<{
  37. id: number;
  38. x: number;
  39. y: number;
  40. }>;
  41. export type Gesture = {
  42. pointers: Array<Pointer>;
  43. lastCenter: { x: number; y: number } | null;
  44. initialDistance: number | null;
  45. initialScale: number | null;
  46. };
  47. export declare class GestureEvent extends UIEvent {
  48. readonly rotation: number;
  49. readonly scale: number;
  50. }