edit.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import { ShapePoolItem } from '@/configs/shapes'
  2. import { LinePoolItem } from '@/configs/lines'
  3. export type ElementOrderCommand = 'up' | 'down' | 'top' | 'bottom'
  4. export enum ElementOrderCommands {
  5. UP = 'up',
  6. DOWN = 'down',
  7. TOP = 'top',
  8. BOTTOM = 'bottom',
  9. }
  10. export type ElementAlignCommand = 'top'| 'bottom' | 'left' | 'right' | 'vertical' | 'horizontal'
  11. export enum ElementAlignCommands {
  12. TOP = 'top',
  13. BOTTOM = 'bottom',
  14. LEFT = 'left',
  15. RIGHT = 'right',
  16. VERTICAL = 'vertical',
  17. HORIZONTAL = 'horizontal',
  18. }
  19. export type OperateBorderLine = 'top' | 'bottom' | 'left' | 'right'
  20. export enum OperateBorderLines {
  21. T = 'top',
  22. B = 'bottom',
  23. L = 'left',
  24. R = 'right',
  25. }
  26. export type OperateResizeHandler = '' | 'left-top' | 'top' | 'right-top' | 'left' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'
  27. export enum OperateResizeHandlers {
  28. LEFT_TOP = 'left-top',
  29. TOP = 'top',
  30. RIGHT_TOP = 'right-top',
  31. LEFT = 'left',
  32. RIGHT = 'right',
  33. LEFT_BOTTOM = 'left-bottom',
  34. BOTTOM = 'bottom',
  35. RIGHT_BOTTOM = 'right-bottom',
  36. }
  37. export type OperateLineHandler = 'start' | 'end'
  38. export enum OperateLineHandlers {
  39. START = 'start',
  40. END = 'end,'
  41. }
  42. export interface AlignmentLineAxis {
  43. x: number;
  44. y: number;
  45. }
  46. export interface AlignmentLineProps {
  47. type: 'vertical' | 'horizontal';
  48. axis: AlignmentLineAxis;
  49. length: number;
  50. }
  51. export interface MultiSelectRange {
  52. minX: number;
  53. maxX: number;
  54. minY: number;
  55. maxY: number;
  56. }
  57. export type ImageClipDataRange = [[number, number], [number, number]]
  58. export interface ImageClipData {
  59. range: ImageClipDataRange;
  60. path: string;
  61. }
  62. export interface ImageClipedEmitData {
  63. range: ImageClipDataRange;
  64. position: {
  65. left: number;
  66. top: number;
  67. width: number;
  68. height: number;
  69. };
  70. }
  71. export interface CreateElementSelectionData {
  72. start: [number, number];
  73. end: [number, number];
  74. }
  75. export interface CreatingTextElement {
  76. type: 'text';
  77. }
  78. export interface CreatingShapeElement {
  79. type: 'shape';
  80. data: ShapePoolItem;
  81. }
  82. export interface CreatingLineElement {
  83. type: 'line';
  84. data: LinePoolItem;
  85. }
  86. export type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement