- history service 新增 pushCodeBlock/undoCodeBlock/redoCodeBlock /canUndoCodeBlock/canRedoCodeBlock 及数据源对称 API - 按 id 维度各自维护独立 UndoRedo 栈,与页面/节点历史完全解耦 - type 新增 CodeBlockStepValue / DataSourceStepValue 独立类型 - HistoryState 扩展 codeBlockState / dataSourceState 字段 - codeBlockService.setCodeDslByIdSync / deleteCodeDslByIds 自动入历史 - dataSourceService.add / update / remove 自动入历史 - 入栈成功时 emit code-block-history-change / data-source-history-change - 补充单测共 21 例,更新 history/codeBlock/dataSource 相关文档
5.2 KiB
historyService方法
reset
-
详情:
重置全部历史记录(包括页面节点栈、代码块栈、数据源栈),并重置当前页面 id / canRedo / canUndo
resetPage
-
详情:
重置当前页面的历史记录状态(清空当前页面id,重置 canRedo/canUndo)
resetState
-
详情:
重置历史记录全部内部状态(清空 pageId、pageSteps、canRedo、canUndo、codeBlockState、dataSourceState)
changePage
-
参数:
{MPage | MPageFragment} page
::: details 查看 MPage / MPageFragment 类型定义 <<< @/../packages/schema/src/index.ts#MPage{ts}
<<< @/../packages/schema/src/index.ts#MPageFragment{ts} :::
-
详情:
按页面切换历史堆栈
push
-
参数:
{StepValue} state
::: details 查看 StepValue 及关联类型定义 <<< @/../packages/editor/src/type.ts#StepValue{ts}
<<< @/../packages/editor/src/type.ts#HistoryOpType{ts}
<<< @/../packages/schema/src/index.ts#Id{ts}
<<< @/../packages/schema/src/index.ts#MNode{ts} :::
-
返回:
{StepValue | null}
-
详情:
添加一条历史记录
undo
-
返回:
{StepValue | null}
-
详情:
撤销当前操作
redo
-
返回:
{StepValue | null}
-
详情:
恢复到下一步
pushCodeBlock
-
参数:
{Id} codeBlockId代码块 id{Object} payload{CodeBlockContent | null} oldContent变更前的代码块内容;新增时为null{CodeBlockContent | null} newContent变更后的代码块内容;删除时为null
::: details 查看 CodeBlockStepValue 及关联类型定义 <<< @/../packages/editor/src/type.ts#CodeBlockStepValue{ts}
<<< @/../packages/schema/src/index.ts#CodeBlockContent{ts} :::
-
返回:
{CodeBlockStepValue | null}入栈失败(未传 id)时返回null
-
详情:
推入一条代码块变更记录。与页面 / 节点完全无关,按
codeBlockId维度独立一份UndoRedo栈, 栈实例存放在historyService.state.codeBlockState[codeBlockId]。入栈成功后会触发
code-block-history-change事件。::: tip
codeBlockService.setCodeDslByIdSync与codeBlockService.deleteCodeDslByIds内部已经 自动调用本方法,业务代码通常无需手动调用。 :::
undoCodeBlock
-
参数:
{Id} codeBlockId
-
返回:
{CodeBlockStepValue | null}栈不存在或已无可撤销记录时返回null
-
详情:
撤销指定代码块的最近一次变更。成功时会触发
code-block-history-change事件。 拿到 step 后由调用方根据step.oldContent写回codeBlockService(本方法不会自动回放)。
redoCodeBlock
-
参数:
{Id} codeBlockId
-
返回:
{CodeBlockStepValue | null}栈不存在或已无可重做记录时返回null
-
详情:
重做指定代码块的下一次变更。成功时会触发
code-block-history-change事件。
canUndoCodeBlock
-
参数:
{Id} codeBlockId
-
返回:
{boolean}
-
详情:
指定代码块当前是否可撤销。栈不存在时返回
false。
canRedoCodeBlock
-
参数:
{Id} codeBlockId
-
返回:
{boolean}
-
详情:
指定代码块当前是否可重做。栈不存在时返回
false。
pushDataSource
-
参数:
{Id} dataSourceId数据源 id{Object} payload{DataSourceSchema | null} oldSchema变更前的数据源 schema;新增时为null{DataSourceSchema | null} newSchema变更后的数据源 schema;删除时为null
::: details 查看 DataSourceStepValue 及关联类型定义 <<< @/../packages/editor/src/type.ts#DataSourceStepValue{ts} :::
-
返回:
{DataSourceStepValue | null}入栈失败(未传 id)时返回null
-
详情:
推入一条数据源变更记录。与页面 / 节点完全无关,按
dataSourceId维度独立一份UndoRedo栈, 栈实例存放在historyService.state.dataSourceState[dataSourceId]。入栈成功后会触发
data-source-history-change事件。::: tip
dataSourceService.add/update/remove内部已经自动调用本方法,业务代码通常无需手动调用。 :::
undoDataSource
-
参数:
{Id} dataSourceId
-
返回:
{DataSourceStepValue | null}
-
详情:
撤销指定数据源的最近一次变更。成功时会触发
data-source-history-change事件。 拿到 step 后由调用方根据step.oldSchema写回dataSourceService(本方法不会自动回放)。
redoDataSource
-
参数:
{Id} dataSourceId
-
返回:
{DataSourceStepValue | null}
-
详情:
重做指定数据源的下一次变更。成功时会触发
data-source-history-change事件。
canUndoDataSource
-
参数:
{Id} dataSourceId
-
返回:
{boolean}
-
详情:
指定数据源当前是否可撤销。栈不存在时返回
false。
canRedoDataSource
-
参数:
{Id} dataSourceId
-
返回:
{boolean}
-
详情:
指定数据源当前是否可重做。栈不存在时返回
false。
destroy
-
详情:
销毁