react-svg-image-board
Version:
A react component. can drawing svg element to image board.
128 lines (127 loc) • 3.14 kB
TypeScript
import * as React from 'react';
import './styles/index.scss';
export declare enum BoardMode {
/**
* 显示模式
*/
ReadOnly = 0,
/**
* 编辑模式
*/
Edit = 1
}
export declare enum ShapeTypeEnum {
Rectangle = 0,
Line = 1,
Circle = 2,
Polyline = 3,
polygon = 4
}
export interface Point {
x: number;
y: number;
}
export interface Size {
width: number;
height: number;
}
export interface Rectangle extends Point, Size {
}
export interface Line {
startPoint: Point;
endPoint: Point;
}
export interface Circle {
originalPoint: Point;
r: number;
}
export interface Ellipse {
originalPoint: Point;
rx: number;
ry: number;
}
export interface Multipoint {
points: Point[];
}
export declare type ShapeType = Rectangle | Line | Circle | Ellipse | Multipoint;
export interface Shape<T = ShapeType> {
key?: any;
type: ShapeTypeEnum;
shape: T;
tag?: any;
}
export interface SvgImageBoardProps {
imageUrl: string;
mode: BoardMode;
initShapes?: Array<Shape<ShapeType>>;
onLoad?: (board: SvgImageBoard) => void;
onDeletedShape?: (shape: Shape<ShapeType>) => void;
onCreatedShape?: (shape: Shape<ShapeType>) => void;
onUpdatedShape?: (shape: Shape<ShapeType>) => void;
/**
* 每次缩放的比例
*/
scaleNum?: number;
/**
* 最大缩放比例
*/
maxScale?: number;
/**
* 最小缩放比例
*/
minScale?: number;
shapeClassName?: string;
drawShapeType?: ShapeTypeEnum;
}
interface SvgImageBoardPropsState {
uploading: boolean;
imageUrl: string;
imageSize: Size;
currentEditIndex: number;
shapes: Array<Shape<ShapeType>>;
}
export declare class SvgImageBoard extends React.Component<SvgImageBoardProps, SvgImageBoardPropsState> {
private _isMouseDown;
private _mouseTarget?;
private _mouseDownPostion;
private _lastMousePosition;
private mainBoxRef;
private mapscaleControlRef;
private drawRectRef;
static defaultProps: {
scaleNum: number;
maxScale: number;
minScale: number;
shapeClassName: string;
drawShapeType: ShapeTypeEnum;
};
constructor(props: SvgImageBoardProps);
componentDidMount(): void;
componentWillUnmount(): void;
private resize;
preLoadImage: (imageUrl: string) => void;
private setImageDefaultRatio;
private onkeydown;
private mainMouseDown;
private mainMouseMove;
private mainMouseUp;
private mainMouseWheel;
/**
* 设置缩放比例
* @zoomScale 缩放比例
* @scalePoint 缩放中心点
*/
setZoomScale: (zoomScale: number, scalePoint?: Point) => void;
/**
* 设置原始缩放比例
*/
setOriginalScale: () => void;
private ResetTransform;
private setDrawRect;
/**
* 获取编辑的数据
*/
getData: () => Shape<ShapeType>[];
render(): JSX.Element;
}
export default SvgImageBoard;