import React, { useRef, useState } from 'react'; import { createRoot } from 'react-dom/client'; import { CanvasNode } from '@/components/canvas/canvas-node'; import { useCanvasSelectionController } from '@/pages/canvas/use-canvas-selection-controller'; import { CanvasNodeType, type CanvasNodeData } from '@/types/canvas'; const noop = () => {}; // 仅挂载内存中的测试节点,不登录、不读写用户画布或调用模型。 export function mountNodeDragHarness(host: HTMLElement, options: { locked?: boolean; readOnly?: boolean } = {}) { function Harness() { const [nodes, setNodes] = useState([{ id: 'drag-test', type: CanvasNodeType.Html, title: '分镜表测试', position: { x: 100, y: 100 }, width: 800, height: 500, metadata: { content: '

分镜表

切画面
f1测试画面
' } }]); const nodesRef = useRef(nodes); nodesRef.current = nodes; const containerRef = useRef(null); const viewportRef = useRef({ x: 0, y: 0, k: 1 }); const [selected, setSelected] = useState(new Set()); const selectedNodeIdsRef = useRef(selected); selectedNodeIdsRef.current = selected; const historyPausedRef = useRef(false); const ctrl = useCanvasSelectionController({ containerRef, nodesRef, viewportRef, selectedNodeIdsRef, historyPausedRef, screenToCanvas: (x, y) => ({ x, y }), setNodes, setSelectedNodeIds: setSelected, setSelectedConnectionId: noop, cancelPendingConnectionCreate: noop, onCanvasSelectionStart: noop, onNodeInteractionStart: noop, onNodeClick: noop, onDeselect: noop }); return
{JSON.stringify(nodes[0].position)}
; } const root = createRoot(host); root.render(); return () => root.unmount(); }