From f0e60bb9f865656918b9859c9ac27b67968700ad Mon Sep 17 00:00:00 2001 From: JackLian Date: Tue, 13 Dec 2022 18:29:01 +0800 Subject: [PATCH] feat: support workspace --- .../test/fixtures/ts-component2/package.json | 2 +- .../bem-tools/border-resizing.tsx | 3 +- .../bem-tools/border-selecting.tsx | 3 +- .../src/builtin-simulator/create-simulator.ts | 1 + .../src/builtin-simulator/host-view.tsx | 13 +- .../designer/src/builtin-simulator/host.ts | 9 +- .../live-editing/live-editing.ts | 3 +- .../builtin-simulator/node-selector/index.tsx | 3 +- .../designer/src/designer/builtin-hotkey.ts | 354 --------------- packages/designer/src/designer/clipboard.ts | 2 +- .../designer/src/designer/designer-view.tsx | 4 +- packages/designer/src/designer/designer.ts | 28 +- packages/designer/src/designer/dragon.ts | 5 + packages/designer/src/designer/index.ts | 5 +- .../designer/setting/setting-prop-entry.ts | 5 +- .../src/designer/setting/setting-top-entry.ts | 3 + .../designer/src/designer/setting/utils.ts | 3 +- packages/designer/src/document/history.ts | 6 +- .../src/document/node/node-children.ts | 16 +- packages/designer/src/document/node/node.ts | 2 +- .../designer/src/plugin/plugin-context.ts | 1 - .../designer/src/plugin/plugin-manager.ts | 9 +- packages/designer/src/plugin/plugin-types.ts | 2 + .../designer/src/project/project-view.tsx | 3 +- packages/designer/src/project/project.less | 4 + packages/designer/src/project/project.ts | 24 +- packages/editor-core/src/di/setter.ts | 86 +++- packages/editor-core/src/editor.ts | 46 +- packages/editor-core/src/hotkey.ts | 22 +- .../src/components/settings/settings-pane.tsx | 15 +- .../settings/settings-primary-pane.tsx | 16 +- .../src/components/widget-views/index.tsx | 12 +- .../src/layouts/left-float-pane.tsx | 1 - .../src/layouts/workbench.less | 30 +- packages/editor-skeleton/src/skeleton.ts | 12 +- packages/engine/src/engine-core.ts | 176 ++++---- .../src/inner-plugins/builtin-hotkey.ts | 407 ++++++++++++++++++ .../inner-plugins/component-meta-parser.ts | 20 + .../inner-plugins/default-panel-registry.tsx | 93 ++++ .../src/inner-plugins/setter-registry.ts | 17 + packages/plugin-designer/src/index.tsx | 11 +- .../src/views/backup-pane.tsx | 5 +- .../plugin-outline-pane/src/views/pane.tsx | 10 +- .../src/views/tree-title.tsx | 3 +- .../plugin-outline-pane/src/views/tree.tsx | 3 +- .../rax-simulator-renderer/src/renderer.ts | 1 - .../src/renderer-view.tsx | 1 + packages/shell/src/common.tsx | 17 +- packages/shell/src/component-meta.ts | 1 + packages/shell/src/document-model.ts | 2 +- packages/shell/src/dragon.ts | 22 +- packages/shell/src/event.ts | 21 +- packages/shell/src/hotkey.ts | 30 +- packages/shell/src/index.ts | 2 + packages/shell/src/material.ts | 34 +- packages/shell/src/node-children.ts | 6 +- packages/shell/src/node.ts | 4 + packages/shell/src/plugins.ts | 60 +++ packages/shell/src/project.ts | 22 +- packages/shell/src/selection.ts | 4 +- packages/shell/src/setters.ts | 45 +- packages/shell/src/skeleton.ts | 20 +- packages/shell/src/symbols.ts | 4 +- packages/types/src/engine-config.ts | 5 + packages/types/src/npm.ts | 1 + packages/types/src/setting-target.ts | 2 + packages/types/src/shell/api/index.ts | 3 +- packages/types/src/shell/api/plugins.ts | 7 + .../types/src/shell/model/document-model.ts | 6 + packages/types/src/shell/model/node.ts | 8 +- packages/types/src/shell/model/selection.ts | 2 +- packages/utils/src/asset.ts | 3 +- packages/workspace/build.json | 5 + packages/workspace/build.test.json | 6 + packages/workspace/jest.config.js | 9 + packages/workspace/package.json | 62 +++ packages/workspace/src/base-context.ts | 133 ++++++ packages/workspace/src/context.ts | 4 + packages/workspace/src/editor-view/context.ts | 36 ++ packages/workspace/src/editor-view/view.tsx | 39 ++ packages/workspace/src/editor-window.ts | 16 + .../workspace/src/editor-window/context.ts | 103 +++++ packages/workspace/src/editor-window/view.tsx | 45 ++ packages/workspace/src/index.ts | 77 ++++ .../workspace/src/layouts/bottom-area.tsx | 35 ++ packages/workspace/src/layouts/left-area.tsx | 47 ++ .../workspace/src/layouts/left-fixed-pane.tsx | 44 ++ .../workspace/src/layouts/left-float-pane.tsx | 131 ++++++ packages/workspace/src/layouts/main-area.tsx | 18 + packages/workspace/src/layouts/theme.less | 62 +++ packages/workspace/src/layouts/top-area.tsx | 62 +++ packages/workspace/src/layouts/workbench.less | 398 +++++++++++++++++ packages/workspace/src/layouts/workbench.tsx | 56 +++ packages/workspace/src/less-variables.less | 215 +++++++++ packages/workspace/src/resource.ts | 37 ++ packages/workspace/src/shell-model-factory.ts | 18 + packages/workspace/src/skeleton.ts | 406 +++++++++++++++++ packages/workspace/tsconfig.json | 9 + 98 files changed, 3278 insertions(+), 626 deletions(-) delete mode 100644 packages/designer/src/designer/builtin-hotkey.ts create mode 100644 packages/engine/src/inner-plugins/builtin-hotkey.ts create mode 100644 packages/engine/src/inner-plugins/component-meta-parser.ts create mode 100644 packages/engine/src/inner-plugins/default-panel-registry.tsx create mode 100644 packages/engine/src/inner-plugins/setter-registry.ts create mode 100644 packages/shell/src/plugins.ts create mode 100644 packages/types/src/shell/api/plugins.ts create mode 100644 packages/workspace/build.json create mode 100644 packages/workspace/build.test.json create mode 100644 packages/workspace/jest.config.js create mode 100644 packages/workspace/package.json create mode 100644 packages/workspace/src/base-context.ts create mode 100644 packages/workspace/src/context.ts create mode 100644 packages/workspace/src/editor-view/context.ts create mode 100644 packages/workspace/src/editor-view/view.tsx create mode 100644 packages/workspace/src/editor-window.ts create mode 100644 packages/workspace/src/editor-window/context.ts create mode 100644 packages/workspace/src/editor-window/view.tsx create mode 100644 packages/workspace/src/index.ts create mode 100644 packages/workspace/src/layouts/bottom-area.tsx create mode 100644 packages/workspace/src/layouts/left-area.tsx create mode 100644 packages/workspace/src/layouts/left-fixed-pane.tsx create mode 100644 packages/workspace/src/layouts/left-float-pane.tsx create mode 100644 packages/workspace/src/layouts/main-area.tsx create mode 100644 packages/workspace/src/layouts/theme.less create mode 100644 packages/workspace/src/layouts/top-area.tsx create mode 100644 packages/workspace/src/layouts/workbench.less create mode 100644 packages/workspace/src/layouts/workbench.tsx create mode 100644 packages/workspace/src/less-variables.less create mode 100644 packages/workspace/src/resource.ts create mode 100644 packages/workspace/src/shell-model-factory.ts create mode 100644 packages/workspace/src/skeleton.ts create mode 100644 packages/workspace/tsconfig.json diff --git a/modules/material-parser/test/fixtures/ts-component2/package.json b/modules/material-parser/test/fixtures/ts-component2/package.json index 95bb4bd8d..e3fde3e59 100644 --- a/modules/material-parser/test/fixtures/ts-component2/package.json +++ b/modules/material-parser/test/fixtures/ts-component2/package.json @@ -34,7 +34,7 @@ "@alife/build-plugin-lowcode": "^1.0.7", "@alib/build-scripts": "^0.1.3", "@alifd/adaptor-generate": "^0.1.3", - "build-plugin-component": "^0.2.0", + "build-plugin-component": "^1.0.0", "build-plugin-fusion": "^0.1.0", "build-plugin-fusion-cool": "^0.1.0", "build-plugin-moment-locales": "^0.1.0", diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx index 08a44b25d..58ecf505d 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx @@ -172,7 +172,8 @@ export class BoxResizingInstance extends Component<{ metadata.configure.advanced.callbacks.onResizeEnd(e, cbNode); } - const editor = globalContext.get(Editor); + const workSpace = globalContext.get('workSpace'); + const editor = workSpace.isActive ? workSpace.window.editor : globalContext.get('editor'); const npm = node?.componentMeta?.npm; const selected = [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx index e5c8ad98a..bb5f288de 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx @@ -131,7 +131,8 @@ function createAction(content: ReactNode | ComponentType | ActionContentObj className="lc-borders-action" onClick={() => { action && action(node); - const editor = globalContext.get('editor'); + const workSpace = globalContext.get('workSpace'); + const editor = workSpace.isActive ? workSpace.window.editor : globalContext.get('editor'); const npm = node?.componentMeta?.npm; const selected = [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || diff --git a/packages/designer/src/builtin-simulator/create-simulator.ts b/packages/designer/src/builtin-simulator/create-simulator.ts index 007286e9c..e46582180 100644 --- a/packages/designer/src/builtin-simulator/create-simulator.ts +++ b/packages/designer/src/builtin-simulator/create-simulator.ts @@ -22,6 +22,7 @@ export function createSimulator( const doc = iframe.contentDocument!; win.LCSimulatorHost = host; + win._ = window._; const styles: any = {}; const scripts: any = {}; diff --git a/packages/designer/src/builtin-simulator/host-view.tsx b/packages/designer/src/builtin-simulator/host-view.tsx index ff40362d1..ec2616c64 100644 --- a/packages/designer/src/builtin-simulator/host-view.tsx +++ b/packages/designer/src/builtin-simulator/host-view.tsx @@ -23,8 +23,8 @@ export class BuiltinSimulatorHostView extends Component { constructor(props: any) { super(props); - const { project, onMount } = this.props; - this.host = (project.simulator as BuiltinSimulatorHost) || new BuiltinSimulatorHost(project); + const { project, onMount, designer } = this.props; + this.host = (project.simulator as BuiltinSimulatorHost) || new BuiltinSimulatorHost(project, designer); this.host.setProps(this.props); onMount?.(this.host); } @@ -76,7 +76,8 @@ class Content extends Component<{ host: BuiltinSimulatorHost }> { private dispose?: () => void; componentDidMount() { - const editor = globalContext.get('editor'); + const workSpace = globalContext.get('workSpace'); + const editor = workSpace.isActive ? workSpace.window.editor : globalContext.get('editor'); const onEnableEvents = (type: boolean) => { this.setState({ disabledEvents: type, @@ -97,7 +98,7 @@ class Content extends Component<{ host: BuiltinSimulatorHost }> { render() { const sim = this.props.host; const { disabledEvents } = this.state; - const { viewport } = sim; + const { viewport, designer } = sim; const frameStyle: any = { transform: `scale(${viewport.scale})`, height: viewport.contentHeight, @@ -107,10 +108,12 @@ class Content extends Component<{ host: BuiltinSimulatorHost }> { frameStyle.pointerEvents = 'none'; } + const name = designer.name; + return (