Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

types.ts 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. export interface Data {
  2. camera: {
  3. point: number[]
  4. zoom: number
  5. }
  6. brush?: Bounds
  7. currentPageId: string
  8. selectedIds: string[]
  9. pointedId?: string
  10. document: {
  11. pages: Record<string, Page>
  12. }
  13. }
  14. export interface Page {
  15. id: string
  16. type: "page"
  17. childIndex: number
  18. name: string
  19. shapes: Record<string, Shape>
  20. }
  21. export enum ShapeType {
  22. Circle = "circle",
  23. Ellipse = "ellipse",
  24. Square = "square",
  25. Rectangle = "rectangle",
  26. Line = "line",
  27. LineSegment = "lineSegment",
  28. Dot = "dot",
  29. Ray = "ray",
  30. Glob = "glob",
  31. Spline = "spline",
  32. Cubic = "cubic",
  33. Conic = "conic",
  34. }
  35. export interface BaseShape {
  36. id: string
  37. type: ShapeType
  38. parentId: string
  39. childIndex: number
  40. name: string
  41. rotation: 0
  42. }
  43. export interface DotShape extends BaseShape {
  44. type: ShapeType.Dot
  45. point: number[]
  46. }
  47. export interface CircleShape extends BaseShape {
  48. type: ShapeType.Circle
  49. point: number[]
  50. radius: number
  51. }
  52. export interface EllipseShape extends BaseShape {
  53. type: ShapeType.Ellipse
  54. point: number[]
  55. radiusX: number
  56. radiusY: number
  57. }
  58. export interface LineShape extends BaseShape {
  59. type: ShapeType.Line
  60. point: number[]
  61. vector: number[]
  62. }
  63. export interface RayShape extends BaseShape {
  64. type: ShapeType.Ray
  65. point: number[]
  66. vector: number[]
  67. }
  68. export interface LineSegmentShape extends BaseShape {
  69. type: ShapeType.LineSegment
  70. start: number[]
  71. end: number[]
  72. }
  73. export interface RectangleShape extends BaseShape {
  74. type: ShapeType.Rectangle
  75. point: number[]
  76. size: number[]
  77. }
  78. export type Shape =
  79. | CircleShape
  80. | EllipseShape
  81. | DotShape
  82. | LineShape
  83. | RayShape
  84. | LineSegmentShape
  85. | RectangleShape
  86. export interface Bounds {
  87. minX: number
  88. minY: number
  89. maxX: number
  90. maxY: number
  91. width: number
  92. height: number
  93. }