magnetType.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * 磁贴定义
  3. * 1. 磁贴坐标抽象为格子坐标
  4. * 2. 磁贴宽高不允许自定义, 只能根据组件的内容来确定可选的宽高
  5. * 3. 磁贴内容, 确定磁贴中的具体内容
  6. */
  7. /**
  8. * 磁贴大小
  9. */
  10. export enum MagnetSize {
  11. small = 'small',
  12. medium = 'medium',
  13. large = 'large',
  14. xLarge = 'xLarge',
  15. }
  16. /**
  17. * 磁贴类型
  18. */
  19. export interface Magnet {
  20. // 磁贴id, 用于存储再数据库中
  21. id: string,
  22. // 磁贴坐标
  23. x: number,
  24. y: number,
  25. // 磁贴宽高, 用于再更改时碰撞检测
  26. width: number,
  27. height: number,
  28. // 磁贴内容, 确定磁贴中的具体内容
  29. type: string,
  30. // 磁贴大小, 用于确定磁贴的样式
  31. size: MagnetSize,
  32. // 编辑模式, 用于判断是否可以拖动
  33. editMode: boolean,
  34. // 磁贴是否被选中, 用于判断是否可以拖动
  35. selected: boolean,
  36. }
  37. interface size {
  38. width: number,
  39. height: number,
  40. }
  41. /**
  42. * 磁贴大小定义
  43. */
  44. export interface MagnetInfo {
  45. type: string,
  46. event: string,
  47. // 磁贴可以有多个可选尺寸, 不同尺寸, 对应不同宽高
  48. sizes:
  49. { [key in MagnetSize]?: size}
  50. ,
  51. defaultSize: MagnetSize,
  52. // 磁贴内容, 确定磁贴中的具体内容
  53. component: any
  54. }
  55. export interface MagnetEmit<T>{
  56. event: string,
  57. data: T,
  58. }