"use client";

import { create } from "zustand";
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";

/**
 * V4 P2-6 修复：将单体 Zustand store（原 303 行）拆分为 3 个独立 slice。
 * V5-2 新增：history-slice 撤销/重做栈（50 步上限）。
 *
 * - editor-slice:   文档结构（planId/title/doc）及所有文档操作方法
 * - selection-slice: 节点选中状态（selectedNodeId / selectNode）
 * - version-slice:  草稿版本与保存状态（isDirty/isSaving/lastSavedAt/saveError/isOnline）
 * - history-slice:  撤销/重做栈（past/future/canUndo/canRedo/undo/redo）
 *
 * 主文件仅负责组合 slice 并导出统一的 EditorState 类型，方便测试与维护。
 * 各 slice 通过 `import type { EditorState }` 引用合并后的类型，TypeScript
 * 编译后该类型导入会被完全移除，运行时无循环依赖。
 */
export type EditorState = EditorSlice & SelectionSlice & VersionSlice & HistorySlice;

export const useLessonPlanEditor = create<EditorState>()((...a) => ({
  ...createEditorSlice(...a),
  ...createSelectionSlice(...a),
  ...createVersionSlice(...a),
  ...createHistorySlice(...a),
}));
