Files
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

141 lines
2.6 KiB
TypeScript

import type { ShapePoolItem } from '@/configs/shapes';
import type { LinePoolItem } from '@/configs/lines';
import type {
ImageClipDataRange,
PPTElementOutline,
PPTElementShadow,
Gradient,
} from '@openmaic/dsl';
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;
}