type DriverElement =
| (DriverElementCommon & {
type: "frame";
position: [number, number];
width: number;
height: number;
rotation: number;
meta: Record<string, any>;
})
| (DriverElementCommon & {
type: "freedraw";
points: number[];
width: number;
height: number;
meta: Record<string, any>;
})
| (DriverElementCommon & {
type: "shape";
componentType?: "rect" | "circle" | "diamond";
x: number;
y: number;
width: number;
height: number;
strokeColor: string;
fillColor: string;
strokeWidth?: number;
strokeDash?: StrokeDash;
cornerRadius?: number;
roughness?: number;
text?: string;
fontSize?: number;
textAlign?: TextAlign;
textVerticalAlign?: "top" | "middle" | "bottom";
})
| (DriverElementCommon & {
type: "line";
from: [number, number];
to: [number, number];
bend?: [number, number] | [number, number][];
color: string;
strokeWidth?: number;
strokeDash?: StrokeDash;
})
| (DriverElementCommon & {
type: "arrow";
from: [number, number];
to: [number, number];
bend?: [number, number];
color: string;
strokeWidth?: number;
strokeDash?: StrokeDash;
})
| (DriverElementCommon & {
type: "image";
url: string;
x: number;
y: number;
width: number;
height: number;
})
| (DriverElementCommon & {
type: "text";
x: number;
y: number;
width?: number;
height?: number;
text: string;
fontSize: number;
color: string;
textAlign?: TextAlign;
});