OpenMAIC-React / src /lib /types /edit.ts
muthuk1's picture
Convert OpenMAIC from Next.js to React (Vite)
f56a29b verified
import type { ShapePoolItem } from '@/configs/shapes';
import type { LinePoolItem } from '@/configs/lines';
import type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, Gradient } from './slides';
export enum ElementOrderCommands {
UP = 'up',
DOWN = 'down',
TOP = 'top',
BOTTOM = 'bottom',
}
export enum ElementAlignCommands {
TOP = 'top',
BOTTOM = 'bottom',
LEFT = 'left',
RIGHT = 'right',
VERTICAL = 'vertical',
HORIZONTAL = 'horizontal',
CENTER = 'center',
}
export const enum OperateBorderLines {
T = 'top',
B = 'bottom',
L = 'left',
R = 'right',
}
export const enum OperateResizeHandlers {
LEFT_TOP = 'left-top',
TOP = 'top',
RIGHT_TOP = 'right-top',
LEFT = 'left',
RIGHT = 'right',
LEFT_BOTTOM = 'left-bottom',
BOTTOM = 'bottom',
RIGHT_BOTTOM = 'right-bottom',
}
export const enum OperateLineHandlers {
START = 'start',
END = 'end',
C = 'ctrl',
C1 = 'ctrl1',
C2 = 'ctrl2',
}
export interface AlignmentLineAxis {
x: number;
y: number;
}
export interface AlignmentLineProps {
type: 'vertical' | 'horizontal';
axis: AlignmentLineAxis;
length: number;
}
export interface MultiSelectRange {
minX: number;
maxX: number;
minY: number;
maxY: number;
}
export interface ImageClipedEmitData {
range: ImageClipDataRange;
position: {
left: number;
top: number;
width: number;
height: number;
};
}
export interface CreateElementSelectionData {
start: [number, number];
end: [number, number];
}
export interface CreateCustomShapeData {
start: [number, number];
end: [number, number];
path: string;
viewBox: [number, number];
fill?: string;
outline?: PPTElementOutline;
}
export interface CreatingTextElement {
type: 'text';
vertical?: boolean;
}
export interface CreatingShapeElement {
type: 'shape';
data: ShapePoolItem;
}
export interface CreatingLineElement {
type: 'line';
data: LinePoolItem;
}
export type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement;
export type TextFormatPainterKeys =
| 'bold'
| 'em'
| 'underline'
| 'strikethrough'
| 'color'
| 'backcolor'
| 'fontsize'
| 'fontname'
| 'align';
export interface TextFormatPainter {
keep: boolean;
bold?: boolean;
em?: boolean;
underline?: boolean;
strikethrough?: boolean;
color?: string;
backcolor?: string;
fontsize?: string;
fontname?: string;
align?: 'left' | 'right' | 'center';
}
export interface ShapeFormatPainter {
keep: boolean;
fill?: string;
gradient?: Gradient;
outline?: PPTElementOutline;
opacity?: number;
shadow?: PPTElementShadow;
}