From a36e5f25c4cb35657101035ad430c0106c3728b2 Mon Sep 17 00:00:00 2001 From: "mario.gk" Date: Mon, 22 Jun 2020 19:25:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AE=80=E5=8C=96=20onPageReady=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/builtin-simulator/host.ts | 17 +++-------------- .../designer/src/builtin-simulator/renderer.ts | 1 - .../designer/src/document/document-model.ts | 9 ++++----- packages/designer/src/simulator.ts | 2 -- packages/editor-preset-vision/src/editor.ts | 9 +++------ .../react-simulator-renderer/src/renderer.ts | 12 +----------- 6 files changed, 11 insertions(+), 39 deletions(-) diff --git a/packages/designer/src/builtin-simulator/host.ts b/packages/designer/src/builtin-simulator/host.ts index 5fb7cd392..a29ae0156 100644 --- a/packages/designer/src/builtin-simulator/host.ts +++ b/packages/designer/src/builtin-simulator/host.ts @@ -1,5 +1,4 @@ import { obx, autorun, computed, getPublicPath, hotkey, focusTracker, globalContext, Editor } from '@ali/lowcode-editor-core'; -import { EventEmitter } from 'events'; import { ISimulatorHost, Component, NodeInstance, ComponentInstance } from '../simulator'; import Viewport from './viewport'; import { createSimulator } from './create-simulator'; @@ -73,12 +72,10 @@ const defaultEnvironment = [ export class BuiltinSimulatorHost implements ISimulatorHost { readonly isSimulator = true; - readonly designer = this.document.designer; - private emitter: EventEmitter; - constructor(readonly document: DocumentModel) { - this.emitter = new EventEmitter(); - } + constructor(readonly document: DocumentModel) {} + + readonly designer = this.document.designer; @computed get device(): string { return this.get('device') || 'default'; @@ -129,7 +126,6 @@ export class BuiltinSimulatorHost implements ISimulatorHost void; firstRun: boolean }) => void) { this._renderer = renderer; - this.emitter.emit('lowcode_engine_renderer_connect', renderer); return autorun(fn as any, true); } @@ -1134,13 +1130,6 @@ export class BuiltinSimulatorHost implements ISimulatorHost void): () => void { - this.emitter.on('lowcode_engine_renderer_connect', fn); - return () => { - this.emitter.removeListener('lowcode_engine_renderer_connect', fn); - }; - } } function isHTMLTag(name: string) { diff --git a/packages/designer/src/builtin-simulator/renderer.ts b/packages/designer/src/builtin-simulator/renderer.ts index 7e46679e4..3994d67c4 100644 --- a/packages/designer/src/builtin-simulator/renderer.ts +++ b/packages/designer/src/builtin-simulator/renderer.ts @@ -14,7 +14,6 @@ export interface BuiltinSimulatorRenderer { setCopyState(state: boolean): void; clearState(): void; run(): void; - onRendered(fn: () => void): () => void; } export function isSimulatorRenderer(obj: any): obj is BuiltinSimulatorRenderer { diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 3387df978..2a091d293 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -345,11 +345,6 @@ export class DocumentModel { // TODO: 多设备 simulator 支持 this._simulator = simulator; // TODO: emit simulator mounted - this._simulator?.onRendererConnect((renderer) => { - this.emitter.emit('lowcode_engine_renderer_ready', { - renderer, - }); - }) } // FIXME: does needed? @@ -514,6 +509,10 @@ export class DocumentModel { this.emitter.removeListener('lowcode_engine_renderer_ready', fn); }; } + + setRendererReady(renderer) { + this.emitter.emit('lowcode_engine_renderer_ready', renderer); + } } export function isDocumentModel(obj: any): obj is DocumentModel { diff --git a/packages/designer/src/simulator.ts b/packages/designer/src/simulator.ts index 9f7e1bb6f..e383517e3 100644 --- a/packages/designer/src/simulator.ts +++ b/packages/designer/src/simulator.ts @@ -142,8 +142,6 @@ export interface ISimulatorHost

extends ISensor { computeComponentInstanceRect(instance: ComponentInstance, selector?: string): DOMRect | null; findDOMNodes(instance: ComponentInstance, selector?: string): Array | null; - - onRendererConnect(fn: (renderer: any) => void): () => void; /** * 销毁 diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index e8997e919..7633db77d 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -26,12 +26,9 @@ editor.set(Designer, designer); editor.set('designer', designer); designer.project.onCurrentDocumentChange((doc) => { - doc.onRendererReady((args) => { - const { renderer } = args; - renderer.onRendered(() => { - bus.emit(VE_EVENTS.VE_PAGE_PAGE_READY); - }); - }) + doc.onRendererReady(() => { + bus.emit(VE_EVENTS.VE_PAGE_PAGE_READY); + }); }); // 节点 props 初始化 diff --git a/packages/react-simulator-renderer/src/renderer.ts b/packages/react-simulator-renderer/src/renderer.ts index 620077a71..df316b5ce 100644 --- a/packages/react-simulator-renderer/src/renderer.ts +++ b/packages/react-simulator-renderer/src/renderer.ts @@ -1,6 +1,5 @@ import React, { createElement, ReactInstance, ComponentType, ReactElement } from 'react'; import { render as reactRender } from 'react-dom'; -import { EventEmitter } from 'events'; import { host } from './host'; import SimulatorRendererView from './renderer-view'; import { computed, obx } from '@recore/obx'; @@ -18,14 +17,12 @@ import Leaf from './builtin-components/leaf'; export class SimulatorRenderer implements BuiltinSimulatorRenderer { readonly isSimulatorRenderer = true; private dispose?: () => void; - private emitter: EventEmitter; constructor() { if (!host) { return; } - this.emitter = new EventEmitter(); this.dispose = host.connect(this, () => { // sync layout config @@ -291,14 +288,7 @@ export class SimulatorRenderer implements BuiltinSimulatorRenderer { document.body.classList.add('engine-document'); // important! Stylesheet.invoke depends reactRender(createElement(SimulatorRendererView, { renderer: this }), container); - this.emitter.emit('lowcode_engine_render_run'); - } - - onRendered(fn: () => void): () => void { - this.emitter.on('lowcode_engine_render_run', fn); - return () => { - this.emitter.removeListener('lowcode_engine_render_run', fn); - }; + host.document.setRendererReady(this); } }