mark-tool-js
Version:
38 lines (37 loc) • 1.15 kB
TypeScript
import { Circle, Polygon, Rect, Svg } from '@svgdotjs/svg.js';
export type TSVGChlid = Rect | Circle | Polygon;
export type TCustomDragDetail = {
event: MouseEvent | TouchEvent;
__startOffset: {
offsetX: number;
offsetY: number;
};
offsetX: number;
offsetY: number;
$svgContainer: Svg;
};
export type TDrawType = 'rect' | 'circle' | 'polygon';
export type TDrawReturn = [Svg, TSVGChlid, TDrawType, TSvgData?];
export type TDrawValue = Partial<{
onMouseDown: (svgData: TSvgData, $svgContainer: Svg, ...args: any[]) => TDrawReturn;
onDrag: (event: TCustomDragDetail, drawSvg: TDrawReturn, ...args: any[]) => void;
onMouseUp: (event: TCustomDragDetail, drawSvg: TDrawReturn, ...args: any[]) => void;
onCreate: (svgData: TSvgData, $svgContainer: Svg) => TDrawReturn;
}>;
export type TSvgData = {
props: Record<string, any> & {
label: string;
};
svgId?: string;
x: number;
y: number;
child: {
type: TDrawType;
svgId?: string;
x: number;
y: number;
width: number;
height: number;
transform?: string;
};
};