選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

types.ts 1.6KB

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