@orca-fe/painter
Version:
Konva Painter
63 lines (62 loc) • 2.06 kB
TypeScript
import React from 'react';
import type { ShapeDataType, ShapeType } from './def';
export type PainterRef = {
/**
* 绘制图形
* @param {ShapeType} shapeType - 图形类型
* @param {Record<string, any>} attr - 图形属性
*/
draw: (shapeType: ShapeType, attr?: Record<string, any>) => void;
/**
* 取消绘制
*/
cancelDraw: () => void;
/**
* 是否正在绘制
* @returns {boolean} - 是否正在绘制
*/
isDrawing: () => boolean;
/**
* 获取根元素
* @returns {HTMLElement | null} - 根元素
*/
getRoot: () => HTMLElement | null;
};
export type DrawMode = {
shapeType: ShapeType;
attr?: Record<string, any>;
};
type Action = 'add' | 'change' | 'delete';
export interface PainterProps<T extends ShapeDataType> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultChecked'> {
/** 缩放比例 */
zoom?: number;
/** 默认绘画模式 */
defaultDrawMode?: DrawMode | false;
drawMode?: DrawMode | false;
onDrawModeChange?: (drawMode: DrawMode | false) => void;
/** 默认图形数据 */
defaultData?: T[];
/** 图形数据 */
data?: T[];
/** 图形数据变化回调 */
onDataChange?: (data: T[], action: Action, index: number) => void;
/** 渲染变换框 */
renderTransformingRect?: (shape: T, index: number) => React.ReactNode;
/** 默认选中项 */
defaultChecked?: number;
/** 选中项 */
checked?: number;
/** 选中项变化回调 */
onCheck?: (checked: number) => void;
/** 取消绘图 */
onCancelDraw?: () => void;
/** 自动选择最后创建的元素 */
autoCheck?: boolean;
/** 开始拖拽事件 */
onChangeStart?: (index: number) => void;
/** 整个PDF,所有图型的数据 */
dataList?: T[][];
}
declare const Painter: React.ForwardRefExoticComponent<PainterProps<ShapeDataType> & React.RefAttributes<PainterRef>>;
export declare const usePainterRef: () => React.RefObject<PainterRef>;
export default Painter;