From eca95b288fe2290fe61d78580ee91ede897b9942 Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Thu, 30 Dec 2021 14:16:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20common=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/src/plugin/plugin-context.ts | 10 ++++--- .../designer/src/plugin/plugin-manager.ts | 2 +- packages/designer/src/plugin/plugin-types.ts | 20 +++++++------ packages/engine/src/engine-core.ts | 28 ++++++------------- 4 files changed, 26 insertions(+), 34 deletions(-) diff --git a/packages/designer/src/plugin/plugin-context.ts b/packages/designer/src/plugin/plugin-context.ts index 1b585d810..45fa348f2 100644 --- a/packages/designer/src/plugin/plugin-context.ts +++ b/packages/designer/src/plugin/plugin-context.ts @@ -1,5 +1,5 @@ import { Editor, EngineConfig, engineConfig } from '@ali/lowcode-editor-core'; -import { Designer } from '@ali/lowcode-designer'; +import { Designer, ILowCodePluginManager } from '@ali/lowcode-designer'; import { Skeleton as InnerSkeleton } from '@ali/lowcode-editor-skeleton'; import { Hotkey, @@ -27,9 +27,10 @@ export default class PluginContext implements ILowCodePluginContext { public material: Material; public config: EngineConfig; public event: Event; + public plugins: ILowCodePluginManager; - constructor(editor: Editor, options: PluginContextOptions) { - this[editorSymbol] = editor; + constructor(plugins: ILowCodePluginManager, options: PluginContextOptions) { + const editor = this[editorSymbol] = plugins.editor; const designer = this[designerSymbol] = editor.get('designer')!; const skeleton = this[skeletonSymbol] = editor.get('skeleton')!; @@ -41,7 +42,8 @@ export default class PluginContext implements ILowCodePluginContext { this.setters = new Setters(); this.material = new Material(editor); this.config = engineConfig; - this.event = new Event(editor, { prefix: `plugin:${pluginName}` }); + this.plugins = plugins; + this.event = new Event(editor, { prefix: 'common' }); this.logger = getLogger({ level: 'warn', bizName: `designer:plugin:${pluginName}` }); } } diff --git a/packages/designer/src/plugin/plugin-manager.ts b/packages/designer/src/plugin/plugin-manager.ts index 7d70ed670..74e1a103e 100644 --- a/packages/designer/src/plugin/plugin-manager.ts +++ b/packages/designer/src/plugin/plugin-manager.ts @@ -27,7 +27,7 @@ export class LowCodePluginManager implements ILowCodePluginManager { } private _getLowCodePluginContext(options: PluginContextOptions) { - return new LowCodePluginContext(this.editor, options); + return new LowCodePluginContext(this, options); } async register( diff --git a/packages/designer/src/plugin/plugin-types.ts b/packages/designer/src/plugin/plugin-types.ts index aac8528ae..d7801f03c 100644 --- a/packages/designer/src/plugin/plugin-types.ts +++ b/packages/designer/src/plugin/plugin-types.ts @@ -1,12 +1,16 @@ import { CompositeObject, ComponentAction } from '@ali/lowcode-types'; import Logger from 'zen-logger'; -import { Skeleton } from '@ali/lowcode-editor-skeleton'; -import { Editor, Hotkey, EngineConfig } from '@ali/lowcode-editor-core'; +import { + Hotkey, + Skeleton, + Project, + Event, Material, +} from '@ali/lowcode-shell'; +import { Editor, EngineConfig } from '@ali/lowcode-editor-core'; import { MetadataTransducer, Designer, } from '@ali/lowcode-designer'; -import { Event, Material } from '@ali/lowcode-shell'; import { Setters, Utils } from '../types'; export interface ILowCodePluginConfig { @@ -47,17 +51,15 @@ export interface IDesignerCabin { export interface ILowCodePluginContext { skeleton: Skeleton; - // designer: Designer; - // editor: Editor; hotkey: Hotkey; logger: Logger; - // plugins: ILowCodePluginManager; - // designerCabin: IDesignerCabin; + plugins: ILowCodePluginManager; setters: Setters; - // utils: Utils; - engineConfig: EngineConfig; + config: EngineConfig; material: Material; event: Event; + project: Project; + // utils: Utils; } interface ILowCodePluginManagerPluginAccessor { diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index d30af7d84..ac90ba345 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -50,11 +50,6 @@ editor.set('plugins' as any, plugins); const { project: innerProject, currentSelection: selection } = designer; const { Workbench } = skeletonCabin; -// const setters: Setters = { -// getSetter, -// registerSetter, -// getSettersMap, -// }; const hotkey = new Hotkey(); const project = new Project(innerProject); @@ -64,9 +59,16 @@ const material = new Material(editor); const config = engineConfig; const event = new Event(editor, { prefix: 'common' }); const logger = getLogger({ level: 'warn', bizName: 'common' }); +const common = { + utils, + editorCabin, + designerCabin, + skeletonCabin, +}; export { // editor, + common, editorCabin, // skeleton, skeletonCabin, @@ -85,7 +87,6 @@ export { */ // store, hotkey, - utils, config, event, logger, @@ -106,30 +107,17 @@ const getSelection = () => designer.currentDocument?.selection; editorCabin, skeletonCabin, designerCabin, + common, plugins, skeleton, project, setters, material, - // get selection() { - // return getSelection(); - // }, - /** - * 注册一些全局的切面 - */ - // hooks, - /** - * 全局的一些数据存储 - */ - // store, - // hotkey, init, - utils, config, event, logger, hotkey, - // engineConfig, }; // 处理 editor.set('assets'),将组件元数据创建好 From 7d7615cdce0ae69e94bc3d254ef324e3b51d86a9 Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Thu, 30 Dec 2021 15:54:19 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=20onChangeDocumen?= =?UTF-8?q?t=20=E7=9A=84=E8=A1=A5=E5=81=BF=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/document/history.ts | 7 ++++++- packages/engine/src/modules/editor-cabin.ts | 1 + packages/shell/src/document-model.ts | 2 +- packages/shell/src/event.ts | 4 ++++ packages/shell/src/history.ts | 8 +++----- packages/shell/src/project.ts | 5 ++++- xima.config.js | 4 ---- 7 files changed, 19 insertions(+), 12 deletions(-) delete mode 100644 xima.config.js diff --git a/packages/designer/src/document/history.ts b/packages/designer/src/document/history.ts index a27e180b9..2bd127aac 100644 --- a/packages/designer/src/document/history.ts +++ b/packages/designer/src/document/history.ts @@ -1,6 +1,7 @@ import { EventEmitter } from 'events'; import { autorun, reaction, mobx, untracked, globalContext, Editor } from '@ali/lowcode-editor-core'; import { NodeSchema } from '@ali/lowcode-types'; +import { History as ShellHistory } from '@ali/lowcode-shell'; // TODO: cache to localStorage @@ -100,7 +101,7 @@ export class History { this.redoer(currentSerialization.unserialize(hotData)); this.emitter.emit('cursor', hotData); } catch (e) { - // + console.error(e); } this.wakeup(); @@ -194,6 +195,10 @@ export class History { isModified() { return this.isSavePoint(); } + + internalToShellHistory() { + return new ShellHistory(this); + } } class Session { diff --git a/packages/engine/src/modules/editor-cabin.ts b/packages/engine/src/modules/editor-cabin.ts index ac88f832e..8aa3059f5 100644 --- a/packages/engine/src/modules/editor-cabin.ts +++ b/packages/engine/src/modules/editor-cabin.ts @@ -1,5 +1,6 @@ export { Title, + Tip, shallowIntl, createIntl, createSetterContent, diff --git a/packages/shell/src/document-model.ts b/packages/shell/src/document-model.ts index fba2f3e81..ce2487103 100644 --- a/packages/shell/src/document-model.ts +++ b/packages/shell/src/document-model.ts @@ -42,7 +42,7 @@ export default class DocumentModel { this[editorSymbol] = document.designer.editor as Editor; this.selection = new Selection(document); this.detecting = new Detecting(document); - this.history = new History(document); + this.history = new History(document.getHistory()); this.canvas = new Canvas(document.designer); } diff --git a/packages/shell/src/event.ts b/packages/shell/src/event.ts index 1956b5768..65bc58a88 100644 --- a/packages/shell/src/event.ts +++ b/packages/shell/src/event.ts @@ -26,6 +26,10 @@ export default class Event { } on(event: string, listener: (...args: unknown[]) => void) { + if (event.startsWith('designer')) { + logger.warn('designer events are disabled'); + return; + } this[editorSymbol].on(event, listener); } diff --git a/packages/shell/src/history.ts b/packages/shell/src/history.ts index cbf51d419..65b5ba25c 100644 --- a/packages/shell/src/history.ts +++ b/packages/shell/src/history.ts @@ -1,13 +1,11 @@ import { History as InnerHistory, DocumentModel as InnerDocumentModel } from '@ali/lowcode-designer'; -import { documentSymbol, historySymbol } from './symbols'; +import { historySymbol } from './symbols'; export default class History { - private readonly [documentSymbol]: InnerDocumentModel; private readonly [historySymbol]: InnerHistory; - constructor(document: InnerDocumentModel) { - this[documentSymbol] = document; - this[historySymbol] = this[documentSymbol].getHistory(); + constructor(history: InnerHistory) { + this[historySymbol] = history; } go(cursor: number) { diff --git a/packages/shell/src/project.ts b/packages/shell/src/project.ts index dd72bfb6d..97b740b87 100644 --- a/packages/shell/src/project.ts +++ b/packages/shell/src/project.ts @@ -117,7 +117,10 @@ export default class Project { * 当前 project 内的 document 变更事件 */ onChangeDocument(fn: (doc: DocumentModel) => void) { - // TODO: 思考一下是否要实现补偿触发能力 + if (this[projectSymbol].currentDocument) { + fn(DocumentModel.create(this[projectSymbol].currentDocument)!); + return () => {}; + } return this[projectSymbol].onCurrentDocumentChange((originalDoc) => { fn(DocumentModel.create(originalDoc)!); }); diff --git a/xima.config.js b/xima.config.js deleted file mode 100644 index 17adca113..000000000 --- a/xima.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - eslintType: 'typescript/react', - enableStylelint: false, -}; From d412d1767257cf92f317e877bfed20aada767133 Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Fri, 31 Dec 2021 10:21:45 +0800 Subject: [PATCH 3/4] =?UTF-8?q?chore:=20=E9=85=8D=E7=BD=AE=20package.json,?= =?UTF-8?q?=20=E4=B8=8D=E5=8F=91=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=20npm?= =?UTF-8?q?=20=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lerna.json | 4 +++- package.json | 1 + packages/designer/package.json | 1 + packages/editor-core/package.json | 1 + packages/editor-skeleton/package.json | 1 + packages/engine/src/modules/designer-types.ts | 1 + packages/plugin-designer/package.json | 1 + packages/plugin-outline-pane/package.json | 1 + packages/shell/package.json | 1 + packages/utils/package.json | 1 + scripts/watchdog.js | 5 ++++- 11 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lerna.json b/lerna.json index 8b4af1576..bdc74fa47 100644 --- a/lerna.json +++ b/lerna.json @@ -5,7 +5,9 @@ "registry": "http://registry.antfin-inc.com", "useWorkspaces": true, "packages": [ - "packages/*" + "packages/*", + "!packages/code-generator", + "!packages/material-parser" ], "command": { "bootstrap": { diff --git a/package.json b/package.json index 380a057ce..a3fa53259 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "lint": "eslint --ext .ts,.tsx,.js,.jsx ./ --quiet", "lint:fix": "eslint --ext .ts,.tsx,.js,.jsx ./ --quiet --fix", "pub": "tnpm run watchdog:build && lerna publish patch --force-publish --exact --no-changelog", + "pub:premajor": "tnpm run watchdog:build && lerna publish premajor --force-publish --exact --dist-tag beta --preid beta --no-changelog", "pub:prepatch": "tnpm run watchdog:build && lerna publish prepatch --force-publish --exact --dist-tag beta --preid beta --no-changelog", "pub:prerelease": "tnpm run watchdog:build && lerna publish prerelease --force-publish --exact --dist-tag beta --preid beta --no-changelog", "setup": "./scripts/setup.sh", diff --git a/packages/designer/package.json b/packages/designer/package.json index d3e73d3a0..206364060 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -8,6 +8,7 @@ "lib", "es" ], + "private": true, "scripts": { "build": "build-scripts build --skip-demo", "test": "build-scripts test --config build.test.json", diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 4433644c1..602f26396 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -9,6 +9,7 @@ "lib", "es" ], + "private": true, "scripts": { "build": "build-scripts build --skip-demo" }, diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 23b930eda..11f112c55 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -9,6 +9,7 @@ "lib", "es" ], + "private": true, "scripts": { "build": "build-scripts build --skip-demo" }, diff --git a/packages/engine/src/modules/designer-types.ts b/packages/engine/src/modules/designer-types.ts index 0660fd2d5..5bdefc751 100644 --- a/packages/engine/src/modules/designer-types.ts +++ b/packages/engine/src/modules/designer-types.ts @@ -18,3 +18,4 @@ export type RootNode = designerCabin.RootNode; export type EditingTarget = designerCabin.EditingTarget; export type SaveHandler = designerCabin.SaveHandler; export type ComponentMeta = designerCabin.ComponentMeta; +export type SettingField = designerCabin.SettingField; diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json index 24855b8cf..92253c1c9 100644 --- a/packages/plugin-designer/package.json +++ b/packages/plugin-designer/package.json @@ -6,6 +6,7 @@ "es", "lib" ], + "private": true, "main": "lib/index.js", "module": "es/index.js", "stylePath": "style.js", diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json index 687764ac0..da92070eb 100644 --- a/packages/plugin-outline-pane/package.json +++ b/packages/plugin-outline-pane/package.json @@ -11,6 +11,7 @@ "scripts": { "build": "build-scripts build --skip-demo" }, + "private": true, "dependencies": { "@ali/lowcode-designer": "1.0.74", "@ali/lowcode-editor-core": "1.0.74", diff --git a/packages/shell/package.json b/packages/shell/package.json index 5b11f345f..5ba6c63dd 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -8,6 +8,7 @@ "lib", "es" ], + "private": true, "scripts": { "build": "build-scripts build --skip-demo", "test": "build-scripts test --config build.test.json", diff --git a/packages/utils/package.json b/packages/utils/package.json index dbe55a10d..efd42951e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -6,6 +6,7 @@ "es", "lib" ], + "private": true, "main": "lib/index.js", "module": "es/index.js", "scripts": { diff --git a/scripts/watchdog.js b/scripts/watchdog.js index c52d42945..f393ca88d 100755 --- a/scripts/watchdog.js +++ b/scripts/watchdog.js @@ -3,10 +3,13 @@ const fs = require('fs'); const { join } = require('path'); const packagesDir = join(__dirname, '../packages'); +const blacklistPkgNames = ['code-generator', 'material-parser']; const dirs = fs.readdirSync(packagesDir); dirs - .filter(dir => !dir.startsWith('.')) + .filter(dir => { + return !dir.startsWith('.') && !blacklistPkgNames.includes(dir); + }) .forEach(dir => { const pkgDir = join(packagesDir, dir); const pkg = JSON.parse(fs.readFileSync(join(pkgDir, 'package.json'), 'utf-8')); From 7b8e1d862dc944b6c2239d0a19549012afe8bf3d Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Fri, 31 Dec 2021 11:04:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?chore:=20=E5=85=BC=E5=AE=B9=20editor,=20?= =?UTF-8?q?=E5=AE=9E=E9=99=85=E6=8F=90=E4=BE=9B=E7=9A=84=E6=98=AF=20event?= =?UTF-8?q?=20=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/settings/settings-primary-pane.tsx | 6 +++--- packages/editor-skeleton/src/widget/dock.ts | 3 ++- packages/editor-skeleton/src/widget/panel.ts | 3 ++- packages/editor-skeleton/src/widget/widget.ts | 3 ++- packages/engine/src/engine-core.ts | 2 ++ packages/plugin-designer/src/index.tsx | 8 ++++---- packages/plugin-outline-pane/src/views/backup-pane.tsx | 3 ++- packages/plugin-outline-pane/src/views/pane.tsx | 4 ++-- packages/shell/src/event.ts | 7 ++++++- packages/shell/src/index.ts | 3 ++- 10 files changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx index a42bb4848..bd5c71404 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -13,7 +13,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any state = { shouldIgnoreRoot: false, }; - private main = new SettingsMain(this.props.editor); + private main = new SettingsMain(globalContext.get('editor')); @obx.ref private _activeKey?: any; @@ -25,7 +25,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any componentDidMount() { this.setShouldIgnoreRoot(); - this.props.editor.on('designer.selection.change', () => { + globalContext.get('editor').on('designer.selection.change', () => { if (!engineConfig.get('stayOnTheSameSettingTab', false)) { this._activeKey = null; } @@ -33,7 +33,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any } async setShouldIgnoreRoot() { - const designMode = await this.props.editor.get('designMode'); + const designMode = await globalContext.get('editor').get('designMode'); this.setState({ shouldIgnoreRoot: designMode === 'live', }); diff --git a/packages/editor-skeleton/src/widget/dock.ts b/packages/editor-skeleton/src/widget/dock.ts index 4369b07c4..bf287f9cf 100644 --- a/packages/editor-skeleton/src/widget/dock.ts +++ b/packages/editor-skeleton/src/widget/dock.ts @@ -1,6 +1,7 @@ import { ReactNode, createElement } from 'react'; import { makeObservable, obx } from '@ali/lowcode-editor-core'; import { uniqueId, createContent } from '@ali/lowcode-utils'; +import { getEvent } from '@ali/lowcode-shell'; import { DockConfig } from '../types'; import { Skeleton } from '../skeleton'; import { DockView, WidgetView } from '../components/widget-views'; @@ -48,7 +49,7 @@ export default class Dock implements IWidget { this._body = createContent(content, { ...contentProps, config: this.config, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), }); } else { this._body = createElement(DockView, props); diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index c0d6ebff0..181e149c3 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -4,6 +4,7 @@ import { obx, computed, makeObservable } from '@ali/lowcode-editor-core'; import { uniqueId, createContent } from '@ali/lowcode-utils'; import { TitleContent } from '@ali/lowcode-types'; import WidgetContainer from './widget-container'; +import { getEvent } from '@ali/lowcode-shell'; import { PanelConfig, HelpTipConfig } from '../types'; import { TitledPanelView, TabsPanelView, PanelView } from '../components/widget-views'; import { Skeleton } from '../skeleton'; @@ -51,7 +52,7 @@ export default class Panel implements IWidget { const { content, contentProps } = this.config; return createContent(content, { ...contentProps, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), config: this.config, panel: this, pane: this, diff --git a/packages/editor-skeleton/src/widget/widget.ts b/packages/editor-skeleton/src/widget/widget.ts index 9dae8ff1c..ffc32bd41 100644 --- a/packages/editor-skeleton/src/widget/widget.ts +++ b/packages/editor-skeleton/src/widget/widget.ts @@ -1,6 +1,7 @@ import { ReactNode, createElement } from 'react'; import { makeObservable, obx } from '@ali/lowcode-editor-core'; import { createContent, uniqueId } from '@ali/lowcode-utils'; +import { getEvent } from '@ali/lowcode-shell'; import { WidgetConfig, IWidgetBaseConfig } from '../types'; import { Skeleton } from '../skeleton'; import { WidgetView } from '../components/widget-views'; @@ -56,7 +57,7 @@ export default class Widget implements IWidget { this._body = createContent(content, { ...contentProps, config: this.config, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), }); return this._body; } diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index ac90ba345..435ff8a26 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -40,10 +40,12 @@ globalContext.register(editor, 'editor'); const innerSkeleton = new InnerSkeleton(editor); editor.set(Skeleton, innerSkeleton); editor.set('skeleton' as any, innerSkeleton); +engineConfig.set('skeleton' as any, innerSkeleton); const designer = new Designer({ editor }); editor.set(Designer, designer); editor.set('designer' as any, designer); +engineConfig.set('designer' as any, designer); const plugins = new LowCodePluginManager(editor).toProxy(); editor.set('plugins' as any, plugins); diff --git a/packages/plugin-designer/src/index.tsx b/packages/plugin-designer/src/index.tsx index 15fdd5ac4..86fba3917 100644 --- a/packages/plugin-designer/src/index.tsx +++ b/packages/plugin-designer/src/index.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import { Editor, engineConfig } from '@ali/lowcode-editor-core'; +import { Editor, engineConfig, globalContext } from '@ali/lowcode-editor-core'; import { DesignerView, Designer } from '@ali/lowcode-designer'; import { Asset } from '@ali/lowcode-utils'; import './index.scss'; @@ -46,7 +46,7 @@ export default class DesignerPlugin extends PureComponent { - const { editor } = this.props; + const editor = globalContext.get('editor'); editor.set('designer', designer); editor.emit('designer.ready', designer); editor.onGot('schema', (schema) => { @@ -94,7 +94,7 @@ export default class DesignerPlugin extends PureComponent { render() { return ( { - private main = new OutlineMain(this.props.editor, this.props.config.name || this.props.config.pluginKey); + private main = new OutlineMain(globalContext.get('editor'), this.props.config.name || this.props.config.pluginKey); componentWillUnmount() { this.main.purge(); diff --git a/packages/shell/src/event.ts b/packages/shell/src/event.ts index 65bc58a88..0856c8313 100644 --- a/packages/shell/src/event.ts +++ b/packages/shell/src/event.ts @@ -1,4 +1,4 @@ -import { Editor as InnerEditor } from '@ali/lowcode-editor-core'; +import { Editor as InnerEditor, globalContext } from '@ali/lowcode-editor-core'; import { getLogger } from '@ali/lowcode-utils'; import { editorSymbol } from './symbols'; @@ -12,6 +12,7 @@ export default class Event { private readonly [editorSymbol]: InnerEditor; private readonly options: EventOptions; + // TODO: /** * 内核触发的事件名 */ @@ -41,3 +42,7 @@ export default class Event { this[editorSymbol].emit(`${this.options.prefix}:${event}`, ...args); } } + +export function getEvent(editor: InnerEditor, options: any = { prefix: 'common' }) { + return new Event(editor, options); +} diff --git a/packages/shell/src/index.ts b/packages/shell/src/index.ts index 3b1338e51..5e55b0c29 100644 --- a/packages/shell/src/index.ts +++ b/packages/shell/src/index.ts @@ -1,7 +1,7 @@ import Detecting from './detecting'; // import Dragon from './dragon'; import DocumentModel from './document-model'; -import Event from './event'; +import Event, { getEvent } from './event'; import History from './history'; import Material from './material'; import Node from './node'; @@ -35,4 +35,5 @@ export { Hotkey, Skeleton, SettingPropEntry, + getEvent, }; \ No newline at end of file