diff --git a/packages/core/src/App.ts b/packages/core/src/App.ts index 639e2487..67de2928 100644 --- a/packages/core/src/App.ts +++ b/packages/core/src/App.ts @@ -18,7 +18,7 @@ import { EventEmitter } from 'events'; -import type { CodeBlockDSL, EventItemConfig, Id, MApp } from '@tmagic/schema'; +import type { CodeBlockDSL, EventItemConfig, Id, MApp, MPage } from '@tmagic/schema'; import Env from './Env'; import { bindCommonEventListener, isCommonMethod, triggerCommonMethod } from './events'; @@ -144,18 +144,22 @@ class App extends EventEmitter { this.codeDsl = config.codeBlocks; this.pages = new Map(); config.items?.forEach((page) => { - this.pages.set( - page.id, - new Page({ - config: page, - app: this, - }), - ); + this.addPage(page); }); this.setPage(curPage || this.page?.data?.id); } + public addPage(config: MPage) { + this.pages.set( + config.id, + new Page({ + config, + app: this, + }), + ); + } + public setPage(id?: Id) { let page; @@ -174,6 +178,17 @@ class App extends EventEmitter { } } + public deletePage(id: Id) { + this.pages.delete(id); + if (!this.pages.size) { + this.page = undefined; + } + } + + public getPage(id: Id) { + return this.pages.get(id); + } + public registerComponent(type: string, Component: any) { this.components.set(type, Component); } diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 9dfed1e4..6964042f 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -65,6 +65,11 @@ class Node extends EventEmitter { }); } + public setData(data: MComponent | MContainer | MPage) { + this.data = data; + this.emit('updata-data'); + } + private listenLifeSafe() { this.once('created', async (instance: any) => { this.instance = instance;