diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 219b0bc0..c4559316 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -25,9 +25,9 @@ import StageCore from '@tmagic/stage'; import { getNodePath, isNumber, isPage, isPop } from '@tmagic/utils'; import codeBlockService from '../services/codeBlock'; -import historyService, { StepValue } from '../services/history'; +import historyService from '../services/history'; import storageService, { Protocol } from '../services/storage'; -import type { AddMNode, EditorNodeInfo, PastePosition, StoreState } from '../type'; +import type { AddMNode, EditorNodeInfo, PastePosition, StepValue, StoreState } from '../type'; import { LayerOffset, Layout } from '../type'; import { change2Fixed, diff --git a/packages/editor/src/services/history.ts b/packages/editor/src/services/history.ts index 20509f7a..901f020c 100644 --- a/packages/editor/src/services/history.ts +++ b/packages/editor/src/services/history.ts @@ -18,25 +18,13 @@ import { reactive } from 'vue'; -import type { Id, MPage } from '@tmagic/schema'; +import type { MPage } from '@tmagic/schema'; +import { HistoryState, StepValue } from '../type'; import { UndoRedo } from '../utils/undo-redo'; import BaseService from './BaseService'; -export interface StepValue { - data: MPage; - modifiedNodeIds: Map; - nodeId: Id; -} - -export interface HistoryState { - pageId?: Id; - pageSteps: Record>; - canRedo: boolean; - canUndo: boolean; -} - class History extends BaseService { public state = reactive({ pageSteps: {}, @@ -76,6 +64,8 @@ class History extends BaseService { } this.setCanUndoRedo(); + + this.emit('page-change', this.state.pageSteps[this.state.pageId]); } public empty(): void { diff --git a/packages/editor/src/type.ts b/packages/editor/src/type.ts index 70bb77f7..f9b0551a 100644 --- a/packages/editor/src/type.ts +++ b/packages/editor/src/type.ts @@ -36,6 +36,7 @@ import type { HistoryService } from './services/history'; import type { PropsService } from './services/props'; import type { StorageService } from './services/storage'; import type { UiService } from './services/ui'; +import type { UndoRedo } from './utils/undo-redo'; export type BeforeAdd = (config: MNode, parent: MContainer) => Promise | MNode; export type GetConfig = (config: FormConfig) => Promise | FormConfig; @@ -395,3 +396,16 @@ export interface CodeParamStatement { /** 参数类型 */ type?: string; } + +export interface StepValue { + data: MPage; + modifiedNodeIds: Map; + nodeId: Id; +} + +export interface HistoryState { + pageId?: Id; + pageSteps: Record>; + canRedo: boolean; + canUndo: boolean; +}