feat(lesson-preparation): 组合 ExpandedSlice 到 EditorState

This commit is contained in:
SpecialX
2026-07-04 11:15:01 +08:00
parent 7b550d3b69
commit a856ab005d

View File

@@ -5,25 +5,33 @@ import { createEditorSlice, type EditorSlice } from "./editor-slice";
import { createSelectionSlice, type SelectionSlice } from "./selection-slice";
import { createVersionSlice, type VersionSlice } from "./version-slice";
import { createHistorySlice, type HistorySlice } from "./history-slice";
import { createExpandedSlice, type ExpandedSlice } from "./expanded-slice";
/**
* V4 P2-6 修复:将单体 Zustand store原 303 行)拆分为 3 个独立 slice。
* V5-2 新增history-slice 撤销/重做栈50 步上限)。
* V4 纸感重构:新增 expanded-slice节点展开到正文流的状态
*
* - editor-slice: 文档结构planId/title/doc及所有文档操作方法
* - selection-slice: 节点选中状态selectedNodeId / selectNode
* - selection-slice: 节点选中状态selectedNodeId / selectNode / anchorNodeForSelection
* - version-slice: 草稿版本与保存状态isDirty/isSaving/lastSavedAt/saveError/isOnline
* - history-slice: 撤销/重做栈past/future/canUndo/canRedo/undo/redo
* - expanded-slice: V4 节点展开到正文流的状态expandedNodeIds / toggleExpand / setExpanded
*
* 主文件仅负责组合 slice 并导出统一的 EditorState 类型,方便测试与维护。
* 各 slice 通过 `import type { EditorState }` 引用合并后的类型TypeScript
* 编译后该类型导入会被完全移除,运行时无循环依赖。
*/
export type EditorState = EditorSlice & SelectionSlice & VersionSlice & HistorySlice;
export type EditorState = EditorSlice &
SelectionSlice &
VersionSlice &
HistorySlice &
ExpandedSlice;
export const useLessonPlanEditor = create<EditorState>()((...a) => ({
...createEditorSlice(...a),
...createSelectionSlice(...a),
...createVersionSlice(...a),
...createHistorySlice(...a),
...createExpandedSlice(...a),
}));