diff --git a/packages/vision-polyfill/src/demo/index.ts b/packages/vision-polyfill/src/demo/index.ts index 2e59f091b..68a90c689 100644 --- a/packages/vision-polyfill/src/demo/index.ts +++ b/packages/vision-polyfill/src/demo/index.ts @@ -1,16 +1,126 @@ // @ts-ignore +import { createElement } from 'react'; +import { Button } from '@alifd/next'; import Engine, { Panes } from '@ali/visualengine'; import getTrunkPane from '@ali/ve-trunk-pane'; +import Preview from '@ali/lowcode-plugin-sample-preview'; +import SourceEditor from '@ali/lowcode-plugin-source-editor'; +import EventBindDialog from '@ali/lowcode-plugin-event-bind-dialog'; import loadUrls from './loader'; import { upgradeAssetsBundle } from './upgrade-assets'; -const { editor } = Engine; +const { editor, skeleton } = Engine; + +// demo +skeleton.add({ + name: 'eventBindDialog', + type: 'Widget', + content: EventBindDialog, +}); +skeleton.add({ + name: 'sourceEditor', + type: 'PanelDock', + props: { + align: 'top', + icon: 'code', + description: '组件库', + }, + panelProps: { + width: 500 + // area: 'leftFixedArea' + }, + content: SourceEditor, +}); +skeleton.add({ + area: 'leftArea', + name: 'icon1', + type: 'Dock', + props: { + align: 'bottom', + icon: 'set', + description: '设置', + }, +}); +skeleton.add({ + area: 'leftArea', + name: 'icon2', + type: 'Dock', + props: { + align: 'bottom', + icon: 'help', + description: '帮助', + }, +}); + +skeleton.add({ + area: 'topArea', + type: 'Dock', + name: 'preview', + props: { + align: 'right', + }, + content: Preview, +}); +skeleton.add({ + area: 'topArea', + type: 'Dock', + name: 'publish', + props: { + align: 'right', + }, + content: createElement(Button, { + size: 'small', + type: 'secondary', + children: '发布', + }), +}); +skeleton.add({ + area: 'topArea', + type: 'Dock', + name: 'save', + props: { + align: 'right', + }, + content: createElement(Button, { + size: 'small', + type: 'primary', + children: '保存', + }), +}); +skeleton.add({ + area: 'topArea', + type: 'Dock', + name: 'preview4', + props: { + align: 'center', + }, + content: createElement('img', { + src: 'https://img.alicdn.com/tfs/TB1WW.VC.z1gK0jSZLeXXb9kVXa-486-64.png', + style: { + height: 32, + }, + }), +}); +skeleton.add({ + area: 'topArea', + type: 'Dock', + name: 'preview1', + props: { + align: 'left', + }, + content: createElement('img', { + src: 'https://img.alicdn.com/tfs/TB1zqBfDlr0gK0jSZFnXXbRRXXa-440-64.png', + style: { + height: 32, + }, + }), +}); initTrunkPane(); Engine.init(); load(); -Engine.Env.setEnv('RE_VERSION', "5.0.1"); +Engine.Env.setEnv('RE_VERSION', '5.0.1'); async function load() { await loadAssets(); diff --git a/packages/vision-polyfill/src/editor.ts b/packages/vision-polyfill/src/editor.ts index 0a0dc0608..8689f97f9 100644 --- a/packages/vision-polyfill/src/editor.ts +++ b/packages/vision-polyfill/src/editor.ts @@ -2,16 +2,11 @@ import { globalContext } from '@ali/lowcode-globals'; import Editor from '@ali/lowcode-editor-core'; import { Designer } from '@ali/lowcode-designer'; import { registerSetters } from '@ali/lowcode-setters'; -import Outline, { Pane } from '@ali/lowcode-plugin-outline-pane'; +import Outline from '@ali/lowcode-plugin-outline-pane'; import SettingsPane from '@ali/lowcode-plugin-settings-pane'; import DesignerPlugin from '@ali/lowcode-plugin-designer'; import { Skeleton } from './skeleton/skeleton'; -// demo -import Preview from '@ali/lowcode-plugin-sample-preview'; -import { createElement } from 'react'; -import { Button } from '@alifd/next'; - registerSetters(); export const editor = new Editor(); @@ -23,101 +18,26 @@ editor.set(Skeleton, skeleton); export const designer = new Designer({ eventPipe: editor }); editor.set(Designer, designer); -skeleton.mainArea.add({ +skeleton.add({ + area: 'mainArea', name: 'designer', type: 'Widget', content: DesignerPlugin, }); -skeleton.rightArea.add({ +skeleton.add({ + area: 'rightArea', name: 'settingsPane', type: 'Panel', content: SettingsPane, }); -skeleton.leftArea.add({ +skeleton.add({ + area: 'leftArea', name: 'outlinePane', type: 'PanelDock', - ...Outline, + content: Outline, panelProps: { area: 'leftFixedArea', }, }); -// demo -skeleton.leftArea.add({ - name: 'icon1', - type: 'Dock', - props: { - align: 'bottom', - icon: 'set', - description: '设置', - } -}); -skeleton.leftArea.add({ - name: 'icon2', - type: 'Dock', - props: { - align: 'bottom', - icon: 'help', - description: '帮助', - } -}); -skeleton.topArea.add({ - type: "Dock", - name: 'preview', - props: { - align: "right", - }, - content: Preview, -}); -skeleton.topArea.add({ - type: "Dock", - name: 'publish', - props: { - align: "right", - }, - content: createElement(Button, { - size: 'small', - type: 'secondary', - children: '发布' - }), -}); -skeleton.topArea.add({ - type: "Dock", - name: 'save', - props: { - align: "right", - }, - content: createElement(Button, { - size: 'small', - type: 'primary', - children: '保存' - }), -}); -skeleton.topArea.add({ - type: "Dock", - name: 'preview4', - props: { - align: "center", - }, - content: createElement('img', { - src: "https://img.alicdn.com/tfs/TB1WW.VC.z1gK0jSZLeXXb9kVXa-486-64.png", - style: { - height: 32 - } - }), -}); - -skeleton.topArea.add({ - type: "Dock", - name: 'preview1', - props: { - align: "left", - }, - content: createElement('img', { - src: "https://img.alicdn.com/tfs/TB1zqBfDlr0gK0jSZFnXXbRRXXa-440-64.png", - style: { - height: 32 - } - }), -}); diff --git a/packages/vision-polyfill/src/skeleton/area.ts b/packages/vision-polyfill/src/skeleton/area.ts index 3f01c6e58..9c35e1289 100644 --- a/packages/vision-polyfill/src/skeleton/area.ts +++ b/packages/vision-polyfill/src/skeleton/area.ts @@ -14,6 +14,13 @@ export default class Area; constructor(readonly skeleton: Skeleton, readonly name: string, handle: (item: T | C) => T, private exclusive?: boolean, defaultSetCurrent: boolean = false) { this.container = skeleton.createContainer(name, handle, exclusive, () => this.visible, defaultSetCurrent); diff --git a/packages/vision-polyfill/src/skeleton/dock.ts b/packages/vision-polyfill/src/skeleton/dock.ts index 9a2de3ca1..5fd726e41 100644 --- a/packages/vision-polyfill/src/skeleton/dock.ts +++ b/packages/vision-polyfill/src/skeleton/dock.ts @@ -38,7 +38,7 @@ export default class Dock implements IWidget { if (content) { this._body = createContent(content, { ...contentProps, - config: this.content, + config: this.config, editor: this.skeleton.editor, }); } else { @@ -47,7 +47,7 @@ export default class Dock implements IWidget { return this._body; } - constructor(readonly skeleton: Skeleton, private config: DockConfig) { + constructor(readonly skeleton: Skeleton, readonly config: DockConfig) { const { props = {}, name } = config; this.name = name; this.align = props.align; diff --git a/packages/vision-polyfill/src/skeleton/left-float-pane.tsx b/packages/vision-polyfill/src/skeleton/left-float-pane.tsx index 993c68908..a38433a0e 100644 --- a/packages/vision-polyfill/src/skeleton/left-float-pane.tsx +++ b/packages/vision-polyfill/src/skeleton/left-float-pane.tsx @@ -31,11 +31,16 @@ export default class LeftFloatPane extends Component<{ area: Area }> // focusin set focus (push|replace) // focusout remove focus // onEsc + const width = area.current?.config.props?.width; + const style = width ? { + width + } : undefined; return (