拆分图片画布舞台视图

抽出画布工作区视觉树为 ImageCanvasStageView

保留拖拽缩放历史上传生成等状态机在主视图

更新图片画布拆分计划和 TRACKING 回归记录
This commit is contained in:
2026-06-17 02:44:51 +08:00
parent f789499c36
commit a15930c57a
4 changed files with 1270 additions and 880 deletions

View File

@@ -41,11 +41,17 @@
- 继续通过 props 调用主视图状态机,不接管上传、登录弹窗、持久化、拖到画布的坐标换算和图层历史记录。
- 保持“素材”和“图层”同一侧栏切换的 Lovart 式布局,不恢复右侧独立图层栏或左侧竖向工具栏。
第二阶段以后主视图仍是画布编排入口。继续拆分前应优先选择能形成稳定边界的深模块避免把上传链路、DataTransfer、画布坐标和历史快照拆成互相回调的小碎片。
## 第三阶段模块
- `ImageCanvasStageView.tsx`
- 承载中央画布工作区的视觉树viewport / world DOM、图层渲染、生成占位框、选中图片浮动工具栏、空白和图片右键菜单、左下 dock、缩放菜单、背景设置面板、小地图和底部 AI 工具栏。
- 继续通过 props 调用主视图状态机,不接管拖拽 / 平移 / 缩放、画布坐标换算、历史 undo / redo、上传、登录、生成提交、素材持久化和右键命令实现。
- 保持 `canvasViewportRef` 由主视图传入,确保 pointer capture、drop 坐标、滚轮缩放和小地图拖拽仍使用同一套坐标源。
第三阶段以后主视图仍是画布编排入口。继续拆分前应优先选择能形成稳定边界的深模块避免把上传链路、DataTransfer、画布坐标和历史快照拆成互相回调的小碎片。
## 后续阶段
- `ImageCanvasStageView`:画布 viewport、图层渲染、右键菜单和生成占位框等交互回归覆盖更强后再拆。
- `ImageCanvasGenerationDock`:底部 AI 工具栏和生成面板族,等生成对象状态机进一步收口后再拆。
## 验证计划