feat: Figma 式外壳与编辑器内核

布局改成 顶部工具栏 / 左图层 / 中画布 / 右属性 / 底部悬浮胶囊。

新内核:
- 图层模型:fabric 对象是唯一真源,LayerInfo 是只读投影;
  id/名字/锁定挂在 customProperties 上,随 toJSON 持久化
- 视口:zoom/pan 走 viewportTransform,只影响显示;
  导出改为按视口裁剪(artboardExportOptions),旧的「multiplier 恒为 1」
  在画布铺满工作区之后不再成立
- 历史:快照式撤销重做,30 步上限,带重入保护
- 命令表:快捷键 / 右键菜单 / 工具栏三个入口共用一份注册表
  键位取自 Penpot 快捷键表
- 画板用 backgroundImage 画(跟随视口且不进 getObjects)

两个 fabric 陷阱已在注释里记下:
- Rect 默认原点是中心,left:0/top:0 不写 originX/originY 会画错位置
- canvas.clipPath 不吃 viewportTransform,不能用来裁画板
This commit is contained in:
Jz0ojiang
2026-09-05 02:18:20 +08:00
parent 4833de7b68
commit 8934f374bb
21 changed files with 1493 additions and 98 deletions
+10
View File
@@ -9,7 +9,17 @@
--fg-dim: #9a9aa2;
--line: #33333a;
--accent: #6ea8fe;
--danger: #f0736a;
--radius: 6px;
/* Figma 式布局的三条固定边(2026-09-05 改造)。画布区是剩下的那块。 */
--topbar-h: 48px;
--layers-w: 240px;
--inspector-w: 264px;
/* 画布区的底色,比面板更深一档,让画布本身浮出来。 */
--stage-bg: #0f0f11;
/* 旧的单侧栏宽度,等 T10 把旧面板迁完就删。 */
--sidebar-w: 320px;
color-scheme: dark;