Files
FiDA_Front/src/components/Canvas/DepthCanvas/manager/ToolManager.ts

53 lines
1.0 KiB
TypeScript
Raw Normal View History

2026-03-06 15:50:05 +08:00
export const TOOLS = {
SELECT: "SELECT",
MOVE: "MOVE",
BRUSH: "BRUSH",
ERASER: "ERASER",
IMAGE: "IMAGE",
SELECTBOX: "SELECTBOX",
RECTANGLE: "RECTANGLE",
TEXT: "TEXT",
UNDO: "UNDO",
REDO: "REDO",
}
export const tools = [
/** 选择工具 */
{
name: TOOLS.SELECT,
nodesDraggable: true,
panOnDrag: false,
},
/** 移动工具 */
{
name: TOOLS.MOVE,
nodesDraggable: false,
panOnDrag: true,
},
/** 文本工具 */
{
name: TOOLS.TEXT,
cursor: "text",
nodesDraggable: false,
panOnDrag: false,
},
]
export class ToolManager {
stateManager: any
vueFlow: any
constructor(options) {
this.stateManager = options.stateManager;
this.vueFlow = options.vueFlow
this.setTool(TOOLS.SELECT)
}
setTool(value: string) {
const tool = tools.find((t) => t.name === value)
if (!tool) return console.warn(`工具${tool}不存在`)
this.stateManager.tool.value = tool.name
this.stateManager.setNodesDraggable(!!tool.nodesDraggable)
this.stateManager.setPanOnDrag(!!tool.panOnDrag)
this.stateManager.setCursor(tool.cursor || "")
}
}