edit.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import type { ShapePoolItem } from '@/configs/shapes'
  2. import type { LinePoolItem } from '@/configs/lines'
  3. import type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, Gradient } from './slides'
  4. export enum ElementOrderCommands {
  5. UP = 'up',
  6. DOWN = 'down',
  7. TOP = 'top',
  8. BOTTOM = 'bottom',
  9. }
  10. export enum ElementAlignCommands {
  11. TOP = 'top',
  12. BOTTOM = 'bottom',
  13. LEFT = 'left',
  14. RIGHT = 'right',
  15. VERTICAL = 'vertical',
  16. HORIZONTAL = 'horizontal',
  17. CENTER = 'center',
  18. }
  19. export const enum OperateBorderLines {
  20. T = 'top',
  21. B = 'bottom',
  22. L = 'left',
  23. R = 'right',
  24. }
  25. export const enum OperateResizeHandlers {
  26. LEFT_TOP = 'left-top',
  27. TOP = 'top',
  28. RIGHT_TOP = 'right-top',
  29. LEFT = 'left',
  30. RIGHT = 'right',
  31. LEFT_BOTTOM = 'left-bottom',
  32. BOTTOM = 'bottom',
  33. RIGHT_BOTTOM = 'right-bottom',
  34. }
  35. export const enum OperateLineHandlers {
  36. START = 'start',
  37. END = 'end',
  38. C = 'ctrl',
  39. C1 = 'ctrl1',
  40. C2 = 'ctrl2',
  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 interface ImageClipedEmitData {
  58. range: ImageClipDataRange
  59. position: {
  60. left: number
  61. top: number
  62. width: number
  63. height: number
  64. }
  65. }
  66. export interface CreateElementSelectionData {
  67. start: [number, number]
  68. end: [number, number]
  69. }
  70. export interface CreateCustomShapeData {
  71. start: [number, number]
  72. end: [number, number]
  73. path: string
  74. viewBox: [number, number]
  75. fill?: string
  76. outline?: PPTElementOutline
  77. }
  78. export interface CreatingTextElement {
  79. type: 'text'
  80. vertical?: boolean
  81. }
  82. export interface CreatingShapeElement {
  83. type: 'shape'
  84. data: ShapePoolItem
  85. }
  86. export interface CreatingLineElement {
  87. type: 'line'
  88. data: LinePoolItem
  89. }
  90. export type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement
  91. export type TextFormatPainterKeys = 'bold' | 'em' | 'underline' | 'strikethrough' | 'color' | 'backcolor' | 'fontsize' | 'fontname' | 'align'
  92. export interface TextFormatPainter {
  93. keep: boolean
  94. bold?: boolean
  95. em?: boolean
  96. underline?: boolean
  97. strikethrough?: boolean
  98. color?: string
  99. backcolor?: string
  100. fontsize?: string
  101. fontname?: string
  102. align?: 'left' | 'right' | 'center'
  103. }
  104. export interface ShapeFormatPainter {
  105. keep: boolean
  106. fill?: string
  107. gradient?: Gradient
  108. outline?: PPTElementOutline
  109. opacity?: number
  110. shadow?: PPTElementShadow
  111. }