diff --git a/packages/demo/build.json b/packages/demo/build.json index a6719240e..87aca0907 100644 --- a/packages/demo/build.json +++ b/packages/demo/build.json @@ -1,6 +1,6 @@ { "entry": { - "vision-preset": "../vision-preset/src/index.ts", + "index": "src/index.ts", "react-simulator-renderer": "../react-simulator-renderer/src/index.ts" }, "vendor": false, diff --git a/packages/demo/package.json b/packages/demo/package.json index 12e672043..edd17d66f 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -5,8 +5,6 @@ "description": "低代码引擎 DEMO", "scripts": { "cloud-build": "build-scripts build --config cloud-build.json", - "gen": "npm run genSkeleton && tyarn", - "genSkeleton": "iceluna gen lowcode -c ./skeleton.config.js -t ./src/editor/config", "start": "build-scripts start" }, "config": {}, @@ -26,26 +24,13 @@ "@ali/lowcode-react-renderer": "^0.8.8", "@ali/lowcode-runtime": "^0.8.13", "@ali/lowcode-utils": "^0.8.4", - "@ali/ve-action-pane": "^4.7.0-beta.0", - "@ali/ve-datapool-pane": "^6.4.3", - "@ali/ve-history-pane": "4.0.0", - "@ali/ve-i18n-manage-pane": "^4.3.0", - "@ali/ve-i18n-pane": "^4.0.0-beta.0", - "@ali/ve-page-history": "1.2.0", - "@ali/ve-page-history-pane": "^5.0.0-beta.0", - "@ali/ve-trunk-pane": "^5.1.0-beta.14", - "@ali/vs-variable-setter": "^3.1.0", - "@ali/vu-function-parser": "^2.5.0-beta.0", - "@ali/vu-legao-design-fetch-context": "^1.0.3", "@alifd/next": "^1.19.12", - "@alife/theme-lowcode-dark": "^0.1.0", "@alife/theme-lowcode-light": "^0.1.0", "compare-versions": "^3.0.1", "react": "^16.8.1", "react-dom": "^16.8.1" }, "devDependencies": { - "@ali/iceluna-cli": "^0.0.16", "@alib/build-scripts": "^0.1.18", "@types/events": "^3.0.0", "@types/react": "^16.8.3", diff --git a/packages/demo/public/assets.json b/packages/demo/public/assets.json index 5e664fa43..a2eae1a6a 100644 --- a/packages/demo/public/assets.json +++ b/packages/demo/public/assets.json @@ -1,21 +1,21 @@ { "version": "1.0.0", - "packages": { - "moment": { + "packages": [ + { "package": "moment", "urls": ["https://g.alicdn.com/mylib/moment/2.24.0/min/moment.min.js"], "library": "moment" }, - "@alifd/next": { + { "title": "fusion组件库", "package": "@alifd/next", "version": "1.19.18", "urls": ["https://unpkg.antfin-inc.com/@alife/next@1.19.18/dist/next.js", "https://unpkg.antfin-inc.com/@alife/next@1.19.18/dist/next.css"], "library": "Next" } - }, - "components": { - "Page": { + ], + "components": [ + { "componentName": "Page", "title": "页面", "configure": { @@ -39,7 +39,7 @@ } } }, - "Div": { + { "componentName": "Div", "title": "容器", "configure": { @@ -48,7 +48,7 @@ } } }, - "Button": { + { "componentName": "Button", "title": "按钮", "devMode": "proCode", @@ -147,7 +147,7 @@ "propType": "node" }] }, - "Button.Group": { + { "componentName": "Button.Group", "title": "按钮组", "devMode": "proCode", @@ -186,7 +186,7 @@ } } }, - "Input": { + { "componentName": "Input", "title": "输入框", "devMode": "proCode", @@ -300,7 +300,7 @@ "description": "预览态模式下渲染的内容\n@param {number} value 评分值" }] }, - "Form": { + { "componentName": "Form", "title": "表单容器", "devMode": "proCode", @@ -423,7 +423,7 @@ } } }, - "Form.Item": { + { "componentName": "Form.Item", "title": "表单项", "devMode": "proCode", @@ -677,7 +677,7 @@ } } }, - "NumberPicker": { + { "componentName": "NumberPicker", "title": "数字输入", "devMode": "proCode", @@ -829,7 +829,7 @@ "description": "预设屏幕宽度" }] }, - "Select": { + { "componentName": "Select", "title": "下拉", "devMode": "proCode", @@ -1461,7 +1461,7 @@ }] } }, - "Select.Option": { + { "componentName": "Select.Option", "title": "选择项", "devMode": "proCode", @@ -1496,7 +1496,7 @@ } } } - }, + ], "componentList": [{ "title": "基础", "icon": "", diff --git a/packages/demo/public/index.html b/packages/demo/public/index.html index 4ba88b9a7..b359afbf4 100644 --- a/packages/demo/public/index.html +++ b/packages/demo/public/index.html @@ -12,63 +12,13 @@ - - - - - +
diff --git a/packages/demo/skeleton.config.js b/packages/demo/skeleton.config.js deleted file mode 100644 index b649fd023..000000000 --- a/packages/demo/skeleton.config.js +++ /dev/null @@ -1,157 +0,0 @@ -module.exports = { - skeleton: { - config: { - package: '@ali/lowcode-editor-skeleton', - version: '^0.8.0' - } - }, - theme: { - fusion: { - package: '@alife/theme-lowcode-light', - version: '^0.1.0' - }, - scss: '' - }, - constants: { - namespace: 'page' - }, - utils: [], - plugins: { - topArea: [ - { - pluginKey: 'logo', - type: 'Custom', - props: { - align: 'left', - width: 100 - }, - config: { - package: '@ali/lowcode-plugin-sample-logo', - version: '^0.8.0' - }, - pluginProps: { - logo: 'https://img.alicdn.com/tfs/TB1hoI9x1H2gK0jSZFEXXcqMpXa-146-40.png', - href: '/' - } - }, - { - pluginKey: 'undoRedo', - type: 'Custom', - props: { - align: 'right', - width: 88 - }, - config: { - package: '@ali/lowcode-plugin-undo-redo', - version: '^0.8.0' - } - }, - { - pluginKey: 'divider', - type: 'Divider', - props: { - align: 'right' - } - }, - { - pluginKey: 'samplePreview', - type: 'Custom', - props: { - align: 'right', - width: 64 - }, - config: { - package: '@ali/lowcode-plugin-sample-preview', - version: '^0.8.0' - } - } - ], - leftArea: [ - { - pluginKey: 'componentsPane', - type: 'PanelIcon', - props: { - align: 'top', - icon: 'zujianku', - title: '组件库', - floatable: true, - }, - config: { - package: '@ali/lowcode-plugin-components-pane', - version: '^0.8.0' - }, - pluginProps: { - } - }, - - { - pluginKey: 'soueceEditor', - type: 'PanelIcon', - props: { - align: 'top', - icon: 'shuxingkongjian', - title: '源码面板' - }, - config: { - package: '@ali/lowcode-plugin-source-editor', - version: '^0.8.2' - }, - pluginProps: {} - }, - { - pluginKey: 'zhEn', - type: 'Custom', - props: { - align: 'bottom', - }, - config: { - package: '@ali/lowcode-plugin-zh-en', - version: '^0.8.0' - }, - pluginProps: {} - } - ], - rightArea: [ - { - pluginKey: 'settingsPane', - type: 'Panel', - props: {}, - config: { - package: '@ali/lowcode-plugin-settings-pane', - version: '^0.8.0' - }, - pluginProps: {} - } - ], - centerArea: [ - { - pluginKey: 'designer', - config: { - package: '@ali/lowcode-plugin-designer', - version: '^0.8.0' - } - }, - { - pluginKey: 'eventBindDialog', - config: { - package: '@ali/lowcode-plugin-event-bind-dialog', - version: '^0.8.0' - } - } - - ] - }, - hooks: [], - shortCuts: [], - lifeCycles: { - init: async function init(editor) { - const assets = await editor.utils.get('./assets.json'); - editor.set('assets', assets); - editor.emit('assets.loaded', assets); - - const schema = await editor.utils.get('./schema.json'); - editor.set('schema', schema); - editor.emit('schema.loaded', schema); - } - } -}; diff --git a/packages/demo/src/editor/config/components.js b/packages/demo/src/editor/components.ts similarity index 51% rename from packages/demo/src/editor/config/components.js rename to packages/demo/src/editor/components.ts index 95831f033..03c6a3e3b 100644 --- a/packages/demo/src/editor/config/components.js +++ b/packages/demo/src/editor/components.ts @@ -1,26 +1,19 @@ -import LowcodeSkeleton from '@ali/lowcode-editor-skeleton'; import logo from '@ali/lowcode-plugin-sample-logo'; -import undoRedo from '@ali/lowcode-plugin-undo-redo'; import samplePreview from '@ali/lowcode-plugin-sample-preview'; +//import undoRedo from '@ali/lowcode-plugin-undo-redo'; import componentsPane from '@ali/lowcode-plugin-components-pane'; -import outlinePane from '@ali/lowcode-plugin-outline-pane'; import zhEn from '@ali/lowcode-plugin-zh-en'; -import settingsPane from '@ali/lowcode-plugin-settings-pane'; -import designer from '@ali/lowcode-plugin-designer'; import eventBindDialog from '@ali/lowcode-plugin-event-bind-dialog'; import variableBindDialog from '@ali/lowcode-plugin-variable-bind-dialog'; -// import sourceEditor from '@ali/lowcode-plugin-source-editor'; +import sourceEditor from '@ali/lowcode-plugin-source-editor'; + export default { - LowcodeSkeleton, logo, - undoRedo, samplePreview, + //undoRedo, componentsPane, - outlinePane, zhEn, - settingsPane, - designer, eventBindDialog, variableBindDialog, - // sourceEditor -}; + sourceEditor, +} diff --git a/packages/demo/src/editor/config.js b/packages/demo/src/editor/config.js new file mode 100644 index 000000000..e76596f63 --- /dev/null +++ b/packages/demo/src/editor/config.js @@ -0,0 +1,106 @@ +export default { + plugins: { + topArea: [ + { + pluginKey: 'logo', + type: 'Custom', + props: { + align: 'left', + width: 100, + }, + pluginProps: { + logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', + href: '/', + }, + }, + /* + { + pluginKey: 'undoRedo', + type: 'Custom', + props: { + align: 'right', + width: 88, + }, + }, + { + pluginKey: 'divider', + type: 'Divider', + props: { + align: 'right', + }, + },*/ + { + pluginKey: 'samplePreview', + type: 'Custom', + props: { + align: 'right', + width: 64, + }, + }, + ], + leftArea: [ + { + pluginKey: 'componentsPane', + type: 'PanelIcon', + props: { + align: 'top', + icon: 'zujianku', + title: '组件库', + }, + pluginProps: {}, + }, + { + pluginKey: 'outlinePane', + type: 'PanelIcon', + props: { + align: 'top', + icon: 'shuxingkongjian', + title: '大纲树', + }, + pluginProps: {}, + }, + + { + pluginKey: 'sourceEditor', + type: 'PanelIcon', + props: { + align: 'top', + icon: 'zujianku', + title: '组件库', + panelProps: { + floatable: true, + defaultWidth: 500, + }, + }, + pluginProps: {}, + }, + { + pluginKey: 'zhEn', + type: 'Custom', + props: { + align: 'bottom', + }, + pluginProps: {}, + }, + ], + /* + centerArea: [ + { + pluginKey: 'eventBindDialog', + }, + { + pluginKey: 'variableBindDialog', + }, + ],*/ + }, + shortCuts: [], + lifeCycles: { + init: async function init(editor) { + const assets = await editor.utils.get('./assets.json'); + editor.set('assets', assets); + + const schema = await editor.utils.get('./schema.json'); + editor.set('schema', schema); + }, + }, +}; diff --git a/packages/demo/src/editor/config/constants.js b/packages/demo/src/editor/config/constants.js deleted file mode 100644 index 1c713fc4e..000000000 --- a/packages/demo/src/editor/config/constants.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - "namespace": "page" -} \ No newline at end of file diff --git a/packages/demo/src/editor/config/locale/en-US.js b/packages/demo/src/editor/config/locale/en-US.js deleted file mode 100644 index 7c645e42f..000000000 --- a/packages/demo/src/editor/config/locale/en-US.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/packages/demo/src/editor/config/locale/index.js b/packages/demo/src/editor/config/locale/index.js deleted file mode 100644 index eaa4da099..000000000 --- a/packages/demo/src/editor/config/locale/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import en_us from './en-US'; -import zh_cn from './zh-CN'; -import zh_tw from './zh-TW'; -import ja_jp from './ja-JP'; -export default { - 'en-US': en_us, - 'zh-CN': zh_cn, - 'zh-TW': zh_tw, - 'ja-JP': ja_jp -}; \ No newline at end of file diff --git a/packages/demo/src/editor/config/locale/ja-JP.js b/packages/demo/src/editor/config/locale/ja-JP.js deleted file mode 100644 index 7c645e42f..000000000 --- a/packages/demo/src/editor/config/locale/ja-JP.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/packages/demo/src/editor/config/locale/zh-CN.js b/packages/demo/src/editor/config/locale/zh-CN.js deleted file mode 100644 index 7c645e42f..000000000 --- a/packages/demo/src/editor/config/locale/zh-CN.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/packages/demo/src/editor/config/locale/zh-TW.js b/packages/demo/src/editor/config/locale/zh-TW.js deleted file mode 100644 index 7c645e42f..000000000 --- a/packages/demo/src/editor/config/locale/zh-TW.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/packages/demo/src/editor/config/skeleton.js b/packages/demo/src/editor/config/skeleton.js deleted file mode 100644 index c9565d572..000000000 --- a/packages/demo/src/editor/config/skeleton.js +++ /dev/null @@ -1,173 +0,0 @@ -export default { - "skeleton": { - "config": { - "package": "@ali/lowcode-editor-skeleton", - "version": "^0.8.0" - } - }, - "theme": { - "fusion": { - "package": "@alife/theme-lowcode-light", - "version": "^0.1.0" - }, - "scss": "" - }, - "constants": { - "namespace": "page" - }, - "utils": [], - "plugins": { - "topArea": [{ - "pluginKey": "logo", - "type": "Custom", - "props": { - "align": "left", - "width": 100 - }, - "config": { - "package": "@ali/lowcode-plugin-sample-logo", - "version": "^0.8.0" - }, - "pluginProps": { - "logo": "https://img.alicdn.com/tfs/TB1hoI9x1H2gK0jSZFEXXcqMpXa-146-40.png", - "href": "/" - } - }, { - "pluginKey": "undoRedo", - "type": "Custom", - "props": { - "align": "right", - "width": 88 - }, - "config": { - "package": "@ali/lowcode-plugin-undo-redo", - "version": "^0.8.0" - } - }, { - "pluginKey": "divider", - "type": "Divider", - "props": { - "align": "right" - } - }, { - "pluginKey": "samplePreview", - "type": "Custom", - "props": { - "align": "right", - "width": 64 - }, - "config": { - "package": "@ali/lowcode-plugin-sample-preview", - "version": "^0.8.0" - } - }], - "leftArea": [{ - "pluginKey": "componentsPane", - "type": "PanelIcon", - "props": { - "align": "top", - "icon": "zujianku", - "title": "组件库", - "panelProps": { - "floatable": true - } - }, - "config": { - "package": "@ali/lowcode-plugin-components-pane", - "version": "^0.8.0" - }, - "pluginProps": {} - }, { - "pluginKey": "outlinePane", - "type": "PanelIcon", - "props": { - "align": "top", - "icon": "shuxingkongjian", - "title": "大纲树" - }, - "config": { - "package": "@ali/lowcode-plugin-outline-pane", - "version": "^0.8.0" - }, - "pluginProps": {} - }, - - { - "pluginKey": "sourceEditor", - "type": "PanelIcon", - "props": { - "align": "top", - "icon": "zujianku", - "title": "组件库", - "panelProps":{ - "floatable": true, - "defaultWidth":500 - - }, - - }, - "config": { - "package": "@ali/lowcode-plugin-source-editor", - "version": "^0.8.0" - }, - "pluginProps": {} - }, - - { - "pluginKey": "zhEn", - "type": "Custom", - "props": { - "align": "bottom" - }, - "config": { - "package": "@ali/lowcode-plugin-zh-en", - "version": "^0.8.0" - }, - "pluginProps": {} - }], - "rightArea": [{ - "pluginKey": "settingsPane", - "type": "Panel", - "props": {}, - "config": { - "package": "@ali/lowcode-plugin-settings-pane", - "version": "^0.8.0" - }, - "pluginProps": {} - }], - "centerArea": [{ - "pluginKey": "designer", - "config": { - "package": "@ali/lowcode-plugin-designer", - "version": "^0.8.0" - } - }, { - "pluginKey": "eventBindDialog", - "config": { - "package": "@ali/lowcode-plugin-event-bind-dialog", - "version": "^0.8.0" - } - }, - { - "pluginKey": "variableBindDialog", - "config": { - "package": "@ali/lowcode-plugin-variable-bind-dialog", - "version": "^0.8.0" - } - } - ] - }, - "hooks": [], - "shortCuts": [], - "lifeCycles": { - "init": async function init(editor) { - const assets = await editor.utils.get('./assets.json'); - editor.set('assets', assets); - editor.emit('assets.loaded', assets); - - const schema = await editor.utils.get('./schema.json'); - editor.set('schema', schema); - editor.emit('schema.loaded', schema); - } - } -}; diff --git a/packages/demo/src/editor/config/theme.scss b/packages/demo/src/editor/config/theme.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/demo/src/editor/config/utils.js b/packages/demo/src/editor/config/utils.js deleted file mode 100644 index dd651ca49..000000000 --- a/packages/demo/src/editor/config/utils.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - -}; \ No newline at end of file diff --git a/packages/demo/src/editor/global.scss b/packages/demo/src/editor/global.scss index 4802a89d4..a0db687e7 100644 --- a/packages/demo/src/editor/global.scss +++ b/packages/demo/src/editor/global.scss @@ -5,3 +5,25 @@ body { box-sizing: border-box; } } + +body, #lce-container { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + box-sizing: border-box; + padding: 0; + margin: 0; + overflow: hidden; + text-rendering: optimizeLegibility; + -webkit-user-select: none; + -webkit-user-drag: none; + -webkit-text-size-adjust: none; + -webkit-touch-callout: none; + -webkit-font-smoothing: antialiased; +} + +html { + min-width: 1024px; +} diff --git a/packages/demo/src/editor/index.tsx b/packages/demo/src/editor/index.tsx index 48c99732c..0b501350b 100644 --- a/packages/demo/src/editor/index.tsx +++ b/packages/demo/src/editor/index.tsx @@ -1,20 +1,13 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -// import { registerSetters } from '@ali/lowcode-setters'; -import config from './config/skeleton'; -import components from './config/components'; -import utils from './config/utils'; - +import { render } from 'react-dom'; +import GeneralWorkbench from '@ali/lowcode-editor-preset-general'; +import config from './config'; +import components from './components'; import './global.scss'; -import './config/theme.scss'; -// registerSetters(); -const Skeleton = components.LowcodeSkeleton; const LCE_CONTAINER = document.getElementById('lce-container'); if (!LCE_CONTAINER) { throw new Error('当前页面不存在
节点.'); } -// @ts-ignore -ReactDOM.render(, LCE_CONTAINER); +render(, LCE_CONTAINER); diff --git a/packages/demo/src/vision/index.ts b/packages/demo/src/vision/index.ts deleted file mode 100644 index 3ab9ef186..000000000 --- a/packages/demo/src/vision/index.ts +++ /dev/null @@ -1,458 +0,0 @@ -/* eslint-disable */ -import { createElement } from 'react'; -import { Button } from '@alifd/next'; -import Engine, { Panes, Prototype } from '@ali/visualengine'; -import { ActionUtil as actionUtil } from '@ali/visualengine-utils'; -import getTrunkPane from '@ali/ve-trunk-pane'; -import DatapoolPane from '@ali/ve-datapool-pane'; -import PageHistoryManager from '@ali/ve-page-history'; -import HistoryPane from '@ali/ve-history-pane'; -import PageHistoryPane from '@ali/ve-page-history-pane'; -// import I18nPane from '@ali/ve-i18n-pane'; -import I18nManagePane from '@ali/ve-i18n-manage-pane'; -import ActionPane from '@ali/ve-action-pane'; -import SourceEditor from '@ali/lowcode-plugin-source-editor'; -import fetchContext from '@ali/vu-legao-design-fetch-context'; -import EventBindDialog from '@ali/lowcode-plugin-event-bind-dialog'; -import loadUrls from './loader'; -import { upgradeAssetsBundle } from './upgrade-assets'; -import { isCSSUrl } from '@ali/lowcode-utils'; -import { I18nSetter } from '@ali/visualengine-utils'; -import VariableSetter from '@ali/vs-variable-setter'; -import _isArray from "lodash/isArray"; -import _isObject from "lodash/isObject"; -import _get from 'lodash/get'; -import funcParser from '@ali/vu-function-parser'; -import cv from 'compare-versions'; - - -const { editor, skeleton, context, HOOKS, Trunk } = Engine; - -Trunk.registerSetter('I18nSetter', { - component: I18nSetter, - // todo: add icon - title: { - type: 'i18n', - 'zh-CN': '国际化输入', - 'en-US': 'International Input' - }, - recommend: true, -}); -context.use(HOOKS.VE_SETTING_FIELD_VARIABLE_SETTER, VariableSetter); - -const externals = ['react', 'react-dom', 'prop-types', 'react-router', 'react-router-dom', '@ali/recore']; - -async function loadAssets() { - const legaoAssets = await editor.utils.get('./legao-assets.json'); - - const assets = upgradeAssetsBundle(legaoAssets); - - if (assets.packages) { - assets.packages.forEach((item: any) => { - if (item.package && externals.indexOf(item.package) > -1) { - item.urls = null; - } - }); - } - - if (assets['x-prototypes']) { - const tasks: Array> = []; - const prototypeStyles: string[] = []; - assets['x-prototypes'].forEach((pkg: any) => { - if (pkg?.urls) { - const urls = Array.isArray(pkg.urls) ? pkg.urls : [pkg.urls]; - urls.forEach((url: string) => { - if (isCSSUrl(url)) { - prototypeStyles.push(url); - } - }); - tasks.push(loadUrls(urls)); - } - }); - if (prototypeStyles.length > 0) { - assets.packages.push({ - library: '_prototypesStyle', - package: '_prototypes-style', - urls: prototypeStyles, - }); - } - await Promise.all(tasks); - // proccess snippets - } - - editor.set('legao-assets', legaoAssets); - editor.set('assets', assets); -} - -async function loadSchema() { - const schema = await editor.utils.get('./schema.json'); - editor.set('schema', schema); -} - -// demo -function initDemoPanes() { - skeleton.add({ - name: 'eventBindDialog', - type: 'Widget', - content: EventBindDialog, - }); - - // skeleton.add({ - // area: 'left', - // name: 'sourceEditor', - // type: "PanelDock", - // content: SourceEditor, - // props: { - // align: undefined, - // description: "动作面板", - // onDestroy: undefined, - // icon: 'set', - // onInit: undefined - // }, - // panelProps:{ - // height: 300, - // help: undefined, - // hideTitleBar: true, - // maxHeight: 800, - // maxWidth: 1200, - // title: "动作面板", - // width: 600 - // } - - // }); - - // skeleton.add({ - // area: 'leftArea', - // name: 'icon1', - // type: 'PanelDock', - // 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: '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, - }, - }), - }); -} - -async function initTrunkPane() { - const assets = await editor.onceGot('legao-assets'); - const config = { - disableLowCodeComponent: true, - disableComponentStore: true, - app: { - getAssetsData() { - return assets; - // return data; - }, - }, - }; - const TrunkPane = getTrunkPane(config); - Panes.add(TrunkPane); -} - -// 数据源面板 -function initDataPoolPane() { - const dpConfigs = {}; - - if (!dpConfigs) { - return; - } - - fetchContext.create('DataPoolPaneAPI', { - saveGlobalConfig: { - url: 'query/appConfig/saveGlobalConfig.json', - method: 'POST', - }, - saveOrUpdateAppDataPool: { - url: 'query/appDataPool/saveOrUpdateAppDataPool.json', - method: 'POST', - }, - batchSaveOrUpdateAppDataPool: { - url: 'query/appDataPool/batchSaveOrUpdateAppDataPool.json', - method: 'POST' - }, - listAppDataPool: { - url: 'query/appDataPool/listAppDataPool.json', - method: 'GET', - }, - getAppDataPool: { - url: 'query/appDataPool/getAppDataPool.json', - method: 'POST', - }, - getEpaasApiInApp: { - url: 'query/formdesign/getEpaasApiInApp.jsonp', - method: 'GET', - }, - getFormListOrder: { - url: 'query/formdesign/getFormListOrder.json', - method: 'GET', - }, - // 实时修改 effectForm - operateAppDpBind: { - url: 'query/appDataPool/operateAppDpBind.json', - method: 'POST', - }, - // 校验全局数据源是否被其他页面修改 - checkAppDataPoolModified: { - url: 'query/appDataPool/checkAppDataPoolModified.json', - method: 'POST', - }, - }); - - const props = { - enableGateService: true, - enableGlobalFitConfig: true, - enableOneAPIService: true, - formUuid: 'xxx', - api: fetchContext.api.DataPoolPaneAPI, - }; - - Panes.add(DatapoolPane, { - props, - }); -} - -// 国际化面板 -function initI18nPane() { - fetchContext.create('I18nManagePaneAPI', { - // 绑定美杜莎 - bindMedusa: { - url: 'query/app/createMedusa.json', - }, - - // 解除绑定 - unbindMedusa: { - url: 'query/app/removeMedusa.json', - }, - - // 同步美杜莎 - syncMedusa: { - url: 'query/formi18n/syncI18n.json', - }, - }); - - Panes.add(I18nManagePane, { - props: { - enableMedusa: true, - api: fetchContext.api.I18nManagePaneAPI, - }, - }); -} - -// 动作面板 -function initActionPane() { - actionUtil.setActions({ - module: { - compiled: "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.submit = submit;\nexports.onLoadData = onLoadData;\nexports.add = add;\nexports.edit = edit;\nexports.del = del;\nexports.search = search;\nexports.reset = reset;\n/**\n* 点击弹框的“确认”\n*/\nfunction submit() {\n var _this = this;\n\n this.$('form').submit(function (data, error) {\n if (data) {\n _this.dataSourceMap['table_submit'].load(data).then(function (res) {\n _this.utils.toast({\n type: 'success',\n title: '提交成功'\n });\n _this.$('dialog').hide();\n _this.dataSourceMap['table_list'].load();\n }).catch(function () {\n _this.utils.toast({\n type: 'error',\n title: '提交失败'\n });\n });\n }\n });\n}\n\n/**\n* tablePc onLoadData\n* @param currentPage 当前页码\n* @param pageSize 每页显示条数\n* @param searchKey 搜索关键字\n* @param orderColumn 排序列\n* @param orderType 排序方式(desc,asc)\n* @param from 触发来源(order,search,pagination)\n*/\nfunction onLoadData(currentPage, pageSize, searchKey, orderColumn, orderType, from) {\n var tableParams = {\n currentPage: from === 'search' ? 1 : currentPage,\n pageSize: pageSize,\n searchKey: searchKey,\n orderColumn: orderColumn,\n orderType: orderType\n };\n this.setState({ tableParams: tableParams });\n}\n\n// 点击新增\nfunction add() {\n this.setState({\n formData: null\n });\n this.$('dialog').show();\n}\n\n// 点击编辑\nfunction edit(rowData) {\n this.setState({\n formData: rowData\n });\n this.$('dialog').show();\n}\n\n// 点击删除\nfunction del(rowData) {\n var _this2 = this;\n\n this.utils.dialog({\n method: 'confirm',\n title: '提示',\n content: '确认删除该条目吗?',\n onOk: function onOk() {\n _this2.dataSourceMap['table_delete'].load({ id: rowData.id }).then(function () {\n _this2.utils.toast({\n type: 'success',\n title: '删除成功'\n });\n _this2.dataSourceMap['table_list'].load();\n }).catch(function () {\n _this2.utils.toast({\n type: 'error',\n title: '删除失败'\n });\n });\n }\n });\n}\n\n/**\n* button onClick\n*/\nfunction search() {\n var filterData = this.$('filter').getValue();\n this.setState({\n filterData: filterData,\n tableParams: _extends({}, this.state.tableParams, {\n time: Date.now(),\n currentPage: 1\n })\n });\n}\n\n/**\n* button onClick\n*/\nfunction reset() {\n this.$('filter').reset();\n this.setState({\n filterData: {},\n tableParams: _extends({}, this.state.tableParams, {\n time: Date.now(),\n currentPage: 1\n })\n });\n}", - source: "/**\n* 点击弹框的“确认”\n*/\nexport function submit() {\n this.$('form').submit((data, error) => {\n if (data) {\n this.dataSourceMap['table_submit'].load(data).then((res) => {\n this.utils.toast({\n type: 'success',\n title: '提交成功'\n });\n this.$('dialog').hide();\n this.dataSourceMap['table_list'].load();\n }).catch(()=>{\n this.utils.toast({\n type: 'error',\n title: '提交失败'\n });\n })\n }\n })\n}\n\n/**\n* tablePc onLoadData\n* @param currentPage 当前页码\n* @param pageSize 每页显示条数\n* @param searchKey 搜索关键字\n* @param orderColumn 排序列\n* @param orderType 排序方式(desc,asc)\n* @param from 触发来源(order,search,pagination)\n*/\nexport function onLoadData(currentPage, pageSize, searchKey, orderColumn, orderType, from) {\n const tableParams = {\n currentPage: from === 'search' ? 1 : currentPage,\n pageSize,\n searchKey,\n orderColumn,\n orderType\n };\n this.setState({ tableParams });\n}\n\n// 点击新增\nexport function add() {\n this.setState({\n formData: null,\n });\n this.$('dialog').show();\n}\n\n\n// 点击编辑\nexport function edit(rowData) {\n this.setState({\n formData: rowData\n });\n this.$('dialog').show();\n}\n\n// 点击删除\nexport function del(rowData) {\n this.utils.dialog({\n method: 'confirm',\n title: '提示',\n content: '确认删除该条目吗?',\n onOk: () => {\n this.dataSourceMap['table_delete'].load({ id: rowData.id }).then(() => {\n this.utils.toast({\n type: 'success',\n title: '删除成功'\n });\n this.dataSourceMap['table_list'].load();\n }).catch(()=>{\n this.utils.toast({\n type: 'error',\n title: '删除失败'\n });\n })\n }\n })\n}\n\n/**\n* button onClick\n*/\nexport function search(){\n const filterData = this.$('filter').getValue();\n this.setState({\n filterData,\n tableParams: {\n ...this.state.tableParams,\n time: Date.now(),\n currentPage: 1\n }\n });\n}\n\n/**\n* button onClick\n*/\nexport function reset(){\n this.$('filter').reset();\n this.setState({\n filterData: {},\n tableParams: {\n ...this.state.tableParams,\n time: Date.now(),\n currentPage: 1\n }\n });\n}" - }, - type: "FUNCTION", - list: [ - { - "id": "submit", - "title": "submit" - }, - { - "id": "onLoadData", - "title": "onLoadData" - }, - { - "id": "add", - "title": "add" - }, - { - "id": "edit", - "title": "edit" - }, - { - "id": "del", - "title": "del" - }, - { - "id": "search", - "title": "search" - }, - { - "id": "reset", - "title": "reset" - } - ] - }); - const props = { - enableGlobalJS: false, - enableVsCodeEdit: false, - enableHeaderTip: true, - }; - - - Panes.add(ActionPane, { - props, - }); -} -function replaceFuncProp(props?: any){ - const replaceProps = {}; - for (const name in props) { - const prop = props[name]; - if (!prop) { - continue; - } - if ((prop.compiled && prop.source) || prop.type === 'actionRef' || prop.type === 'js') { - replaceProps[name] = funcParser(prop); - } else if (_isObject(prop)) { - replaceFuncProp(prop); - } else if (_isArray(prop)) { - prop.map((propItem) => { - replaceFuncProp(propItem); - }); - } - } - - for (const name in replaceProps) { - props[name] = replaceProps[name]; - } - return props; -}; - -// 操作历史与页面历史面板 -function initHistoryPane() { - // let historyConfigs = {getDesignerModuleConfigs( - // this.designerConfigs, - // 'history', - // )}; - let historyConfigs = { - enableRedoAndUndo: true, - enablePageHistory: true, - };; - - const isDemoMode = false; - const isEnvSupportsHistoryPane = true; - const historyManager = PageHistoryManager.getManager(); - - console.log('PageHistoryManager', historyManager); - console.log('PageHistoryManager.onOpenPane', historyManager.onOpenPane); - // 历史撤销、重做以及唤起页面历史按钮 - if (typeof HistoryPane === 'function') { - Panes.add(HistoryPane, { - props : { - showPageHistory: - isEnvSupportsHistoryPane - // && this.app.isForm() - && !isDemoMode, - historyManager, - historyConfigs, - index: -940, - } - }); - } else { - Panes.add(HistoryPane, { - index: -940, - }); - } - - // 页面历史 UI 面板 - if ( - PageHistoryPane - && !isDemoMode - && isEnvSupportsHistoryPane - ) { - Panes.add(PageHistoryPane, { - props : { - historyManager: { - historyManager, - app: { - - } - }, - index: -940, - }, - }); - } -} - - -async function init() { - Engine.Env.setEnv('RE_VERSION', '7.2.0'); - Engine.Env.setSupportFeatures({ - subview: true, - i18nPane: true, - }); - Prototype.addGlobalPropsReducer(replaceFuncProp); - await loadAssets(); - await loadSchema(); - await initTrunkPane(); - initDataPoolPane(); - initI18nPane(); - initActionPane(); - initDemoPanes(); - initHistoryPane(); - Engine.init(); -} -init(); diff --git a/packages/demo/src/vision/loader.js b/packages/demo/src/vision/loader.js deleted file mode 100644 index 4f4bd1a24..000000000 --- a/packages/demo/src/vision/loader.js +++ /dev/null @@ -1,172 +0,0 @@ -/* eslint-disable */ -function getStylePoint(id, level) { - if (stylePointTable[id]) { - return stylePointTable[id]; - } - - const base = getBasePoint(); - - if (id === 'base') { - return base; - } - - const point = new StylePoint(id, level || 2000); - if (level >= base.level) { - let prev = base; - let next = prev.next; - while (next && level >= next.level) { - prev = next; - next = prev.next; - } - prev.next = point; - point.prev = prev; - if (next) { - point.next = next; - next.prev = point; - } - } else { - let next = base; - let prev = next.prev; - while (prev && level < prev.level) { - next = prev; - prev = next.prev; - } - next.prev = point; - point.next = next; - if (prev) { - point.prev = prev; - prev.next = point; - } - } - point.insert(); - stylePointTable[id] = point; - - return point; -} - -const stylePointTable = {}; - -function getBasePoint() { - if (!stylePointTable.base) { - stylePointTable.base = new StylePoint('base', 1000); - stylePointTable.base.insert(); - } - return stylePointTable.base; -} - -class StylePoint { - constructor(id, level, placeholder) { - this.lastContent = null; - this.lastUrl = null; - this.next = null; - this.prev = null; - this.id = id; - this.level = level; - if (placeholder) { - this.placeholder = placeholder; - } else { - this.placeholder = document.createTextNode(''); - } - } - - insert() { - if (this.next) { - document.head.insertBefore(this.placeholder, this.next.placeholder); - } else if (this.prev) { - document.head.insertBefore(this.placeholder, this.prev.placeholder.nextSibling); - } else { - document.head.appendChild(this.placeholder); - } - } - - applyText(content) { - if (this.lastContent === content) { - return; - } - this.lastContent = content; - this.lastUrl = undefined; - const element = document.createElement('style'); - element.setAttribute('type', 'text/css'); - element.setAttribute('data-for', this.id); - element.appendChild(document.createTextNode(content)); - document.head.insertBefore(element, this.placeholder); - document.head.removeChild(this.placeholder); - this.placeholder = element; - } - - applyUrl(url) { - if (this.lastUrl === url) { - return; - } - this.lastContent = undefined; - this.lastUrl = url; - const element = document.createElement('link'); - element.href = url; - element.rel = 'stylesheet'; - element.setAttribute('data-for', this.id); - document.head.insertBefore(element, this.placeholder); - document.head.removeChild(this.placeholder); - this.placeholder = element; - } -} - -function loadCSS(url) { - getStylePoint(url).applyUrl(url); -} - -function isCSSUrl(url) { - return /\.css$/.test(url); -} - -function loadScript(url) { - const node = document.createElement('script'); - - // node.setAttribute('crossorigin', 'anonymous'); - - node.onload = onload; - node.onerror = onload; - - const i = {}; - const promise = new Promise((resolve, reject) => { - i.resolve = resolve; - i.reject = reject; - }); - - function onload(e) { - node.onload = null; - node.onerror = null; - if (e.type === 'load') { - i.resolve(); - } else { - i.reject(); - } - // document.head.removeChild(node); - // node = null; - } - - // node.async = true; - node.src = url; - - document.head.appendChild(node); - - return promise; -} - -export default function loadUrls(urls) { - if (!urls || urls.length < 1) { - return Promise.resolve(); - } - - let promise = null; - urls.forEach((url) => { - if (isCSSUrl(url)) { - loadCSS(url); - } else if (!promise) { - promise = loadScript(url); - } else { - promise = promise.then(() => loadScript(url)); - } - }); - - return promise || Promise.resolve(); -} diff --git a/packages/demo/src/vision/module.d.ts b/packages/demo/src/vision/module.d.ts deleted file mode 100644 index be53328de..000000000 --- a/packages/demo/src/vision/module.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module '@ali/visualengine'; -declare module '@ali/visualengine-utils'; -declare module '@ali/ve-trunk-pane'; -declare module '@ali/vs-variable-setter'; -declare module '@ali/ve-datapool-pane'; -declare module '@ali/ve-history-pane'; -declare module '@ali/ve-page-history-pane'; -declare module '@ali/ve-page-history'; -declare module '@ali/ve-i18n-manage-pane'; -declare module '@ali/ve-action-pane'; -declare module '@ali/vu-legao-design-fetch-context'; -declare module "@ali/vu-function-parser"; -declare module "compare-versions"; diff --git a/packages/demo/src/vision/upgrade-assets.js b/packages/demo/src/vision/upgrade-assets.js deleted file mode 100644 index 3548aaac5..000000000 --- a/packages/demo/src/vision/upgrade-assets.js +++ /dev/null @@ -1,68 +0,0 @@ -/* eslint-disable */ -export function upgradeAssetsBundle(assets) { - const components = []; - const xPrototypes = []; - const componentList = []; - const packages = assets.externals.map(({ urls, library, name, version }) => { - return { - package: name, - version, - urls, - library, - }; - }); - assets.componentDependencies.forEach((item) => { - const componentName = item.alias || item.library; - const metadata = { - componentName, - npm: { - package: item.packageName, - library: item.library, - version: item.version, - destructuring: false, - }, - props: [], - }; - - if (item.prototypeConfigsUrl) { - xPrototypes.push({ - package: item.packageName, - urls: item.prototypeConfigsUrl, - }); - } else if (item.components) { - packages.push({ - urls: item.urls, - library: item.library, - package: item.packageName, - version: item.version, - }); - const meta = item.components[0]; - metadata.componentName = meta.componentName; - metadata.configure = meta.configure; - metadata.title = meta.title; - components.push(metadata); - // TODO: - if (meta.snippets) { - componentList.push({ - title: meta.category, - icon: '', - children: [ - { - title: 'json格式化展示', - icon: '', - snippets: meta.snippets, - }, - ], - }); - } - } - }); - - return { - "version": "1.0.0", - packages, - 'x-prototypes': xPrototypes, - components, - componentList - }; -} diff --git a/packages/editor-core/src/editor.ts b/packages/editor-core/src/editor.ts index 8fd69d46c..db9e0d784 100644 --- a/packages/editor-core/src/editor.ts +++ b/packages/editor-core/src/editor.ts @@ -1,23 +1,9 @@ import { EventEmitter } from 'events'; -import { IEditor, EditorConfig, PluginClassSet } from '@ali/lowcode-types'; +import { IEditor, EditorConfig, PluginClassSet, KeyType, GetOptions, GetReturnType } from '@ali/lowcode-types'; import { IocContext, RegisterOptions } from './di'; import { globalLocale } from './intl'; EventEmitter.defaultMaxListeners = 100; -export type KeyType = Function | Symbol | string; -export type ClassType = Function | (new (...args: any[]) => any); -export interface GetOptions { - forceNew?: boolean; - sourceCls?: ClassType; -} -export type GetReturnType = T extends undefined - ? ClsType extends { - prototype: infer R; - } - ? R - : any - : T; - const NOT_FOUND = Symbol.for('not_found'); import * as utils from './utils'; @@ -36,10 +22,6 @@ export class Editor extends EventEmitter implements IEditor { readonly utils = utils; - constructor(readonly config: EditorConfig = {}, readonly components: PluginClassSet = {}) { - super(); - } - get(keyOrType: KeyOrType, opt?: GetOptions): GetReturnType | undefined { const x = this.context.get(keyOrType, opt); if (x === NOT_FOUND) { @@ -92,14 +74,17 @@ export class Editor extends EventEmitter implements IEditor { this.notifyGot(key || data); } - async init(): Promise { - const { shortCuts = [], lifeCycles } = this.config || {}; + config?: EditorConfig; + components?: PluginClassSet; + async init(config?: EditorConfig, components?: PluginClassSet): Promise { + this.config = config || {}; + this.components = components || {}; + const { shortCuts = [], lifeCycles } = this.config; this.emit('editor.beforeInit'); const init = (lifeCycles && lifeCycles.init) || ((): void => {}); - // 用户可以通过设置extensions.init自定义初始化流程; try { - // await transformToPromise(init(this)); + await init(this); // 注册快捷键 // registShortCuts(shortCuts, this); this.emit('editor.afterInit'); @@ -110,6 +95,9 @@ export class Editor extends EventEmitter implements IEditor { } destroy(): void { + if (!this.config) { + return; + } try { const { shortCuts = [], lifeCycles = {} } = this.config; // unRegistShortCuts(shortCuts); diff --git a/packages/vision-preset/README.md b/packages/editor-preset-general/README.md similarity index 100% rename from packages/vision-preset/README.md rename to packages/editor-preset-general/README.md diff --git a/packages/editor-preset-general/build.json b/packages/editor-preset-general/build.json new file mode 100644 index 000000000..123bf141b --- /dev/null +++ b/packages/editor-preset-general/build.json @@ -0,0 +1,22 @@ +{ + "plugins": [ + [ + "build-plugin-component", + { + "filename": "editor-preset-general", + "library": "LowcodeEditorPresetGeneral", + "libraryTarget": "umd", + "externals": { + "react": "var window.React", + "react-dom": "var window.ReactDOM", + "prop-types": "var window.PropTypes" + } + } + ], + "build-plugin-fusion", + ["build-plugin-moment-locales", { + "locales": ["zh-cn"] + }], + "./build.plugin.js" + ] +} diff --git a/packages/vision-preset/build.plugin.js b/packages/editor-preset-general/build.plugin.js similarity index 100% rename from packages/vision-preset/build.plugin.js rename to packages/editor-preset-general/build.plugin.js diff --git a/packages/editor-preset-general/package.json b/packages/editor-preset-general/package.json new file mode 100644 index 000000000..6323eac30 --- /dev/null +++ b/packages/editor-preset-general/package.json @@ -0,0 +1,42 @@ +{ + "name": "@ali/lowcode-editor-preset-general", + "version": "0.9.0", + "description": "Ali General Editor Preset", + "main": "lib/index.js", + "files": [ + "dist", + "es", + "lib" + ], + "scripts": { + "cloud-build": "build-scripts build --skip-demo" + }, + "license": "MIT", + "dependencies": { + "@ali/lowcode-utils": "^0.8.0", + "@ali/lowcode-types": "^0.8.0", + "@ali/lowcode-editor-core": "^0.8.12", + "@ali/lowcode-editor-skeleton": "^0.8.17", + "@ali/lowcode-plugin-designer": "^0.9.11", + "@ali/lowcode-plugin-outline-pane": "^0.8.17", + "@ali/lowcode-editor-setters": "^0.9.0", + "@alifd/next": "^1.19.12", + "@alife/theme-lowcode-dark": "^0.1.0", + "@alife/theme-lowcode-light": "^0.1.0", + "domready": "^1.0.8", + "immutable": "^3.8.1", + "react": "^16.8.1", + "react-dom": "^16.8.1" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.18", + "@types/domready": "^1.0.0", + "@types/events": "^3.0.0", + "@types/react": "^16.8.3", + "@types/react-dom": "^16.8.2", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "build-plugin-react-app": "^1.1.2", + "tsconfig-paths-webpack-plugin": "^3.2.0" + } +} diff --git a/packages/editor-preset-general/src/index.ts b/packages/editor-preset-general/src/index.ts new file mode 100644 index 000000000..c90cdbaeb --- /dev/null +++ b/packages/editor-preset-general/src/index.ts @@ -0,0 +1,78 @@ +import { render } from 'react-dom'; +import { createElement } from 'react'; +import { Workbench } from '@ali/lowcode-editor-skeleton'; +import { globalContext, Editor } from '@ali/lowcode-editor-core'; +import { Skeleton, SettingsPrimaryPane } from '@ali/lowcode-editor-skeleton'; +import { Designer } from '@ali/lowcode-designer'; +import { OutlineBackupPane, getTreeMaster } from '@ali/lowcode-plugin-outline-pane'; +import DesignerPlugin from '@ali/lowcode-plugin-designer'; +import '@ali/lowcode-editor-setters'; + +export * from '@ali/lowcode-types'; +export * from '@ali/lowcode-utils'; +export * from '@ali/lowcode-editor-core'; +export * from '@ali/lowcode-editor-skeleton'; +export * from '@ali/lowcode-designer'; + +export const editor = new Editor(); +globalContext.register(editor, Editor); + +export const skeleton = new Skeleton(editor); +editor.set(Skeleton, skeleton); +editor.set('skeleton', skeleton); + +export const designer = new Designer({ editor: editor }); +editor.set(Designer, designer); +editor.set('designer', designer); + +skeleton.add({ + area: 'mainArea', + name: 'designer', + type: 'Widget', + content: DesignerPlugin, +}); +skeleton.add({ + area: 'rightArea', + name: 'settingsPane', + type: 'Panel', + content: SettingsPrimaryPane, +}); +skeleton.add({ + area: 'rightArea', + name: 'backupOutline', + type: 'Panel', + props: { + condition: () => { + return designer.dragon.dragging && !getTreeMaster(designer).hasVisibleTreeBoard(); + } + }, + content: OutlineBackupPane, +}); + +const version = '0.9.0-beta'; + +export default function GeneralWorkbench(props: any) { + return createElement(Workbench, { + skeleton, + ...props, + }); +} + +export function init(container?: Element) { + if (!container) { + container = document.createElement('div'); + document.body.appendChild(container); + } + container.id = 'lowcodeEditorPresetGeneral'; + + render( + createElement(GeneralWorkbench), + container, + ); +} + +console.log( + `%cLowcodeEditorPresetGeneral %cv${version}`, + "color:#000;font-weight:bold;", + "color:green;font-weight:bold;" +); diff --git a/packages/setters/tsconfig.json b/packages/editor-preset-general/tsconfig.json similarity index 100% rename from packages/setters/tsconfig.json rename to packages/editor-preset-general/tsconfig.json diff --git a/packages/vision-preset/CHANGELOG.md b/packages/editor-preset-vision/CHANGELOG.md similarity index 100% rename from packages/vision-preset/CHANGELOG.md rename to packages/editor-preset-vision/CHANGELOG.md diff --git a/packages/editor-preset-vision/README.md b/packages/editor-preset-vision/README.md new file mode 100644 index 000000000..688968e8b --- /dev/null +++ b/packages/editor-preset-vision/README.md @@ -0,0 +1,82 @@ +子视图 +prototype.view +view.Preview +view.Mobile + +实时切 + +设备 +device +创建多个 simulator + +不同simulator 加载不同视图 + +这样有利于 环境隔离,比如 rax 和 react + +适配规则 + +规则 1 +mobile view.mobile.xxx +rax view.rax.xxx +miniapp view.miniapp.xxx +view..xxx +通配 view.xxx + +universal + +规则 2 +urls: "view.js,view2 , view3 ", +urls: [ + "view.js", + "view.js *", + "view1.js mobile|pc", + "view2.js " +] + +环境通用资源 + +"react": { + "urls": [ + "//g.alicdn.com/platform/c/react/16.5.2/react.min.js" + ], + "library": "React", + "package": "react", + "version": "16.5.2", + "devices-for": "*" | ["mobile", "web"] | "rax|mobile" +} + + +load legao assets + load all x-prototype-urls + + +load assets + + build componentMeta + if has x-prototype-urls , + load x-prototype-urls + call Bundle.createPrototype() or something register + got prototypeView + +load schema + + +open schema + +load simulator resources + + + +simulator 中加载资源,根据 componentsMap 构建组件查询字典, + + +获取 view 相关的样式、脚本 +获取 proto 相关的样式 +在 simulator 中也加载一次 + +1. meta 信息构造 +2. components 字典构造, proto.getView 或者 通过 npm 信息查询 +3. + + +componentMeta 段描述的信息,如果包含 x-prototype-urls ,那么这个 meta 信息都可以丢掉 diff --git a/packages/vision-preset/build.json b/packages/editor-preset-vision/build.json similarity index 100% rename from packages/vision-preset/build.json rename to packages/editor-preset-vision/build.json diff --git a/packages/editor-preset-vision/build.plugin.js b/packages/editor-preset-vision/build.plugin.js new file mode 100644 index 000000000..1e9165eaf --- /dev/null +++ b/packages/editor-preset-vision/build.plugin.js @@ -0,0 +1,23 @@ +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); + +module.exports = ({ onGetWebpackConfig }) => { + onGetWebpackConfig((config) => { + config.resolve + .plugin('tsconfigpaths') + .use(TsconfigPathsPlugin, [{ + configFile: "./tsconfig.json" + }]); + + /* + config + // 定义插件名称 + .plugin('MonacoWebpackPlugin') + // 第一项为具体插件,第二项为插件参数 + .use(new MonacoWebpackPlugin({ + languages:["javascript","css","json"] + }), []); + */ + config.plugins.delete('hot'); + config.devServer.hot(false); + }); +}; diff --git a/packages/vision-preset/package.json b/packages/editor-preset-vision/package.json similarity index 96% rename from packages/vision-preset/package.json rename to packages/editor-preset-vision/package.json index b6724ed08..f0e9ddd17 100644 --- a/packages/vision-preset/package.json +++ b/packages/editor-preset-vision/package.json @@ -1,5 +1,5 @@ { - "name": "@ali/lowcode-vision-preset", + "name": "@ali/lowcode-editor-preset-vision", "private": true, "version": "0.8.10", "description": "Vision Polyfill for Ali lowCode engine", diff --git a/packages/vision-preset/src/base/base.ts b/packages/editor-preset-vision/src/base/base.ts similarity index 100% rename from packages/vision-preset/src/base/base.ts rename to packages/editor-preset-vision/src/base/base.ts diff --git a/packages/vision-preset/src/base/const.ts b/packages/editor-preset-vision/src/base/const.ts similarity index 100% rename from packages/vision-preset/src/base/const.ts rename to packages/editor-preset-vision/src/base/const.ts diff --git a/packages/vision-preset/src/base/schemaManager.ts b/packages/editor-preset-vision/src/base/schemaManager.ts similarity index 100% rename from packages/vision-preset/src/base/schemaManager.ts rename to packages/editor-preset-vision/src/base/schemaManager.ts diff --git a/packages/vision-preset/src/base/visualDesigner.ts b/packages/editor-preset-vision/src/base/visualDesigner.ts similarity index 100% rename from packages/vision-preset/src/base/visualDesigner.ts rename to packages/editor-preset-vision/src/base/visualDesigner.ts diff --git a/packages/vision-preset/src/base/visualManager.ts b/packages/editor-preset-vision/src/base/visualManager.ts similarity index 100% rename from packages/vision-preset/src/base/visualManager.ts rename to packages/editor-preset-vision/src/base/visualManager.ts diff --git a/packages/vision-preset/src/base/visualRender.ts b/packages/editor-preset-vision/src/base/visualRender.ts similarity index 100% rename from packages/vision-preset/src/base/visualRender.ts rename to packages/editor-preset-vision/src/base/visualRender.ts diff --git a/packages/vision-preset/src/bundle/bundle.ts b/packages/editor-preset-vision/src/bundle/bundle.ts similarity index 100% rename from packages/vision-preset/src/bundle/bundle.ts rename to packages/editor-preset-vision/src/bundle/bundle.ts diff --git a/packages/vision-preset/src/bundle/prototype.ts b/packages/editor-preset-vision/src/bundle/prototype.ts similarity index 100% rename from packages/vision-preset/src/bundle/prototype.ts rename to packages/editor-preset-vision/src/bundle/prototype.ts diff --git a/packages/vision-preset/src/bundle/trunk.ts b/packages/editor-preset-vision/src/bundle/trunk.ts similarity index 100% rename from packages/vision-preset/src/bundle/trunk.ts rename to packages/editor-preset-vision/src/bundle/trunk.ts diff --git a/packages/vision-preset/src/bundle/upgrade-metadata.ts b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts similarity index 100% rename from packages/vision-preset/src/bundle/upgrade-metadata.ts rename to packages/editor-preset-vision/src/bundle/upgrade-metadata.ts diff --git a/packages/vision-preset/src/bus.ts b/packages/editor-preset-vision/src/bus.ts similarity index 100% rename from packages/vision-preset/src/bus.ts rename to packages/editor-preset-vision/src/bus.ts diff --git a/packages/vision-preset/src/components/index.less b/packages/editor-preset-vision/src/components/index.less similarity index 100% rename from packages/vision-preset/src/components/index.less rename to packages/editor-preset-vision/src/components/index.less diff --git a/packages/vision-preset/src/components/index.tsx b/packages/editor-preset-vision/src/components/index.tsx similarity index 100% rename from packages/vision-preset/src/components/index.tsx rename to packages/editor-preset-vision/src/components/index.tsx diff --git a/packages/vision-preset/src/context.ts b/packages/editor-preset-vision/src/context.ts similarity index 100% rename from packages/vision-preset/src/context.ts rename to packages/editor-preset-vision/src/context.ts diff --git a/packages/vision-preset/src/drag-engine.ts b/packages/editor-preset-vision/src/drag-engine.ts similarity index 100% rename from packages/vision-preset/src/drag-engine.ts rename to packages/editor-preset-vision/src/drag-engine.ts diff --git a/packages/vision-preset/src/editor.ts b/packages/editor-preset-vision/src/editor.ts similarity index 100% rename from packages/vision-preset/src/editor.ts rename to packages/editor-preset-vision/src/editor.ts diff --git a/packages/vision-preset/src/env.ts b/packages/editor-preset-vision/src/env.ts similarity index 100% rename from packages/vision-preset/src/env.ts rename to packages/editor-preset-vision/src/env.ts diff --git a/packages/vision-preset/src/exchange.ts b/packages/editor-preset-vision/src/exchange.ts similarity index 100% rename from packages/vision-preset/src/exchange.ts rename to packages/editor-preset-vision/src/exchange.ts diff --git a/packages/vision-preset/src/fields/field.tsx b/packages/editor-preset-vision/src/fields/field.tsx similarity index 100% rename from packages/vision-preset/src/fields/field.tsx rename to packages/editor-preset-vision/src/fields/field.tsx diff --git a/packages/vision-preset/src/fields/fields.less b/packages/editor-preset-vision/src/fields/fields.less similarity index 100% rename from packages/vision-preset/src/fields/fields.less rename to packages/editor-preset-vision/src/fields/fields.less diff --git a/packages/vision-preset/src/fields/fields.tsx b/packages/editor-preset-vision/src/fields/fields.tsx similarity index 100% rename from packages/vision-preset/src/fields/fields.tsx rename to packages/editor-preset-vision/src/fields/fields.tsx diff --git a/packages/vision-preset/src/fields/index.ts b/packages/editor-preset-vision/src/fields/index.ts similarity index 100% rename from packages/vision-preset/src/fields/index.ts rename to packages/editor-preset-vision/src/fields/index.ts diff --git a/packages/vision-preset/src/fields/inlinetip.tsx b/packages/editor-preset-vision/src/fields/inlinetip.tsx similarity index 100% rename from packages/vision-preset/src/fields/inlinetip.tsx rename to packages/editor-preset-vision/src/fields/inlinetip.tsx diff --git a/packages/vision-preset/src/fields/settingField.tsx b/packages/editor-preset-vision/src/fields/settingField.tsx similarity index 100% rename from packages/vision-preset/src/fields/settingField.tsx rename to packages/editor-preset-vision/src/fields/settingField.tsx diff --git a/packages/vision-preset/src/fields/variableSetter.less b/packages/editor-preset-vision/src/fields/variableSetter.less similarity index 100% rename from packages/vision-preset/src/fields/variableSetter.less rename to packages/editor-preset-vision/src/fields/variableSetter.less diff --git a/packages/vision-preset/src/fields/variableSetter.tsx b/packages/editor-preset-vision/src/fields/variableSetter.tsx similarity index 100% rename from packages/vision-preset/src/fields/variableSetter.tsx rename to packages/editor-preset-vision/src/fields/variableSetter.tsx diff --git a/packages/vision-preset/src/fields/variableSwitcher.less b/packages/editor-preset-vision/src/fields/variableSwitcher.less similarity index 100% rename from packages/vision-preset/src/fields/variableSwitcher.less rename to packages/editor-preset-vision/src/fields/variableSwitcher.less diff --git a/packages/vision-preset/src/fields/variableSwitcher.tsx b/packages/editor-preset-vision/src/fields/variableSwitcher.tsx similarity index 100% rename from packages/vision-preset/src/fields/variableSwitcher.tsx rename to packages/editor-preset-vision/src/fields/variableSwitcher.tsx diff --git a/packages/vision-preset/src/flags.ts b/packages/editor-preset-vision/src/flags.ts similarity index 100% rename from packages/vision-preset/src/flags.ts rename to packages/editor-preset-vision/src/flags.ts diff --git a/packages/vision-preset/src/i18n-reducer.ts b/packages/editor-preset-vision/src/i18n-reducer.ts similarity index 100% rename from packages/vision-preset/src/i18n-reducer.ts rename to packages/editor-preset-vision/src/i18n-reducer.ts diff --git a/packages/vision-preset/src/index.ts b/packages/editor-preset-vision/src/index.ts similarity index 100% rename from packages/vision-preset/src/index.ts rename to packages/editor-preset-vision/src/index.ts diff --git a/packages/vision-preset/src/module.d.ts b/packages/editor-preset-vision/src/module.d.ts similarity index 100% rename from packages/vision-preset/src/module.d.ts rename to packages/editor-preset-vision/src/module.d.ts diff --git a/packages/vision-preset/src/pages.ts b/packages/editor-preset-vision/src/pages.ts similarity index 100% rename from packages/vision-preset/src/pages.ts rename to packages/editor-preset-vision/src/pages.ts diff --git a/packages/vision-preset/src/panes.ts b/packages/editor-preset-vision/src/panes.ts similarity index 100% rename from packages/vision-preset/src/panes.ts rename to packages/editor-preset-vision/src/panes.ts diff --git a/packages/vision-preset/src/project.ts b/packages/editor-preset-vision/src/project.ts similarity index 100% rename from packages/vision-preset/src/project.ts rename to packages/editor-preset-vision/src/project.ts diff --git a/packages/vision-preset/src/prop.ts b/packages/editor-preset-vision/src/prop.ts similarity index 100% rename from packages/vision-preset/src/prop.ts rename to packages/editor-preset-vision/src/prop.ts diff --git a/packages/vision-preset/src/symbols.ts b/packages/editor-preset-vision/src/symbols.ts similarity index 100% rename from packages/vision-preset/src/symbols.ts rename to packages/editor-preset-vision/src/symbols.ts diff --git a/packages/vision-preset/src/vc-live-editing.ts b/packages/editor-preset-vision/src/vc-live-editing.ts similarity index 100% rename from packages/vision-preset/src/vc-live-editing.ts rename to packages/editor-preset-vision/src/vc-live-editing.ts diff --git a/packages/vision-preset/src/viewport.ts b/packages/editor-preset-vision/src/viewport.ts similarity index 99% rename from packages/vision-preset/src/viewport.ts rename to packages/editor-preset-vision/src/viewport.ts index 536010ae6..9745e9ee9 100644 --- a/packages/vision-preset/src/viewport.ts +++ b/packages/editor-preset-vision/src/viewport.ts @@ -56,7 +56,7 @@ class StyleResource { const { type, content } = this.config; - let styleElement; + let styleElement: any; if (type === 'URL') { styleElement = document.createElement('link'); styleElement.href = content || ''; diff --git a/packages/vision-preset/src/vision.less b/packages/editor-preset-vision/src/vision.less similarity index 100% rename from packages/vision-preset/src/vision.less rename to packages/editor-preset-vision/src/vision.less diff --git a/packages/vision-preset/tsconfig.json b/packages/editor-preset-vision/tsconfig.json similarity index 100% rename from packages/vision-preset/tsconfig.json rename to packages/editor-preset-vision/tsconfig.json diff --git a/packages/setters/CHANGELOG.md b/packages/editor-setters/CHANGELOG.md similarity index 100% rename from packages/setters/CHANGELOG.md rename to packages/editor-setters/CHANGELOG.md diff --git a/packages/setters/README.md b/packages/editor-setters/README.md similarity index 100% rename from packages/setters/README.md rename to packages/editor-setters/README.md diff --git a/packages/setters/build.json b/packages/editor-setters/build.json similarity index 100% rename from packages/setters/build.json rename to packages/editor-setters/build.json diff --git a/packages/setters/package.json b/packages/editor-setters/package.json similarity index 96% rename from packages/setters/package.json rename to packages/editor-setters/package.json index 0ebb32192..d5cd4f71d 100644 --- a/packages/setters/package.json +++ b/packages/editor-setters/package.json @@ -1,6 +1,6 @@ { - "name": "@ali/lowcode-setters", - "version": "0.8.14", + "name": "@ali/lowcode-editor-setters", + "version": "0.9.0", "description": "Builtin setters for Ali lowCode engine", "files": [ "es", diff --git a/packages/setters/src/color-setter/index.scss b/packages/editor-setters/src/color-setter/index.scss similarity index 100% rename from packages/setters/src/color-setter/index.scss rename to packages/editor-setters/src/color-setter/index.scss diff --git a/packages/setters/src/color-setter/index.tsx b/packages/editor-setters/src/color-setter/index.tsx similarity index 100% rename from packages/setters/src/color-setter/index.tsx rename to packages/editor-setters/src/color-setter/index.tsx diff --git a/packages/setters/src/events-setter/index.scss b/packages/editor-setters/src/events-setter/index.scss similarity index 100% rename from packages/setters/src/events-setter/index.scss rename to packages/editor-setters/src/events-setter/index.scss diff --git a/packages/setters/src/events-setter/index.tsx b/packages/editor-setters/src/events-setter/index.tsx similarity index 100% rename from packages/setters/src/events-setter/index.tsx rename to packages/editor-setters/src/events-setter/index.tsx diff --git a/packages/setters/src/events-setter/native-events.ts b/packages/editor-setters/src/events-setter/native-events.ts similarity index 100% rename from packages/setters/src/events-setter/native-events.ts rename to packages/editor-setters/src/events-setter/native-events.ts diff --git a/packages/setters/src/expression-setter/index.scss b/packages/editor-setters/src/expression-setter/index.scss similarity index 100% rename from packages/setters/src/expression-setter/index.scss rename to packages/editor-setters/src/expression-setter/index.scss diff --git a/packages/setters/src/expression-setter/index.tsx b/packages/editor-setters/src/expression-setter/index.tsx similarity index 100% rename from packages/setters/src/expression-setter/index.tsx rename to packages/editor-setters/src/expression-setter/index.tsx diff --git a/packages/setters/src/expression-setter/locale/snippets.js b/packages/editor-setters/src/expression-setter/locale/snippets.js similarity index 100% rename from packages/setters/src/expression-setter/locale/snippets.js rename to packages/editor-setters/src/expression-setter/locale/snippets.js diff --git a/packages/setters/src/expression-setter/locale/utils.js b/packages/editor-setters/src/expression-setter/locale/utils.js similarity index 100% rename from packages/setters/src/expression-setter/locale/utils.js rename to packages/editor-setters/src/expression-setter/locale/utils.js diff --git a/packages/setters/src/expression-setter/locale/zh-CN.js b/packages/editor-setters/src/expression-setter/locale/zh-CN.js similarity index 100% rename from packages/setters/src/expression-setter/locale/zh-CN.js rename to packages/editor-setters/src/expression-setter/locale/zh-CN.js diff --git a/packages/setters/src/index.tsx b/packages/editor-setters/src/index.tsx similarity index 62% rename from packages/setters/src/index.tsx rename to packages/editor-setters/src/index.tsx index 59b691ebd..edbc26fd5 100644 --- a/packages/setters/src/index.tsx +++ b/packages/editor-setters/src/index.tsx @@ -1,10 +1,9 @@ -import { registerSetter, isJSSlot } from '@ali/lowcode-globals'; +import { registerSetter } from '@ali/lowcode-globals'; import { DatePicker, Input, Radio, Select, Switch, NumberPicker } from '@alifd/next'; import ExpressionSetter from './expression-setter'; import ColorSetter from './color-setter'; import JsonSetter from './json-setter'; import EventsSetter from './events-setter'; -// import StyleSetter from './style-setter'; export const StringSetter = { component: Input, @@ -14,6 +13,8 @@ export const StringSetter = { }; export const NumberSetter = NumberPicker; export const BoolSetter = Switch; +export const SelectSetter = Select; + // suggest: 做成 SelectSetter 一种变体 export const RadioGroupSetter = { component: Radio.Group, @@ -21,8 +22,6 @@ export const RadioGroupSetter = { shape: 'button', }, }; -export const SelectSetter = Select; - // suggest: 做成 StringSetter 的一个参数, export const TextAreaSetter = Input.TextArea; export const DateSetter = DatePicker; @@ -30,16 +29,7 @@ export const DateYearSetter = DatePicker.YearPicker; export const DateMonthSetter = DatePicker.MonthPicker; export const DateRangeSetter = DatePicker.RangePicker; -export { ExpressionSetter, EventsSetter } - -// todo: -export const ClassNameSetter = () => { - return
这里是类名绑定
; -}; - -export const SlotSetter = () => { - return
这里是 SlotSetter
; -}; +export { ExpressionSetter, EventsSetter }; const builtinSetters: any = { StringSetter, @@ -52,23 +42,6 @@ const builtinSetters: any = { title: '表达式输入', recommend: true, }, - SlotSetter: { - component: SlotSetter, - title: '插槽输入', - condition: (field: any) => { - return isJSSlot(field.getValue()); - }, - initialValue: (field: any, value: any) => { - if (isJSSlot(value)) { - return value; - } - return { - type: 'JSSlot', - value: value - }; - }, - recommend: true, - }, RadioGroupSetter, TextAreaSetter, DateSetter, @@ -76,11 +49,8 @@ const builtinSetters: any = { DateMonthSetter, DateRangeSetter, EventsSetter, - // StyleSetter, - // ColorSetter, + ColorSetter, JsonSetter, }; -export function registerSetters() { - registerSetter(builtinSetters); -} +registerSetter(builtinSetters); diff --git a/packages/setters/src/json-setter/index.scss b/packages/editor-setters/src/json-setter/index.scss similarity index 100% rename from packages/setters/src/json-setter/index.scss rename to packages/editor-setters/src/json-setter/index.scss diff --git a/packages/setters/src/json-setter/index.tsx b/packages/editor-setters/src/json-setter/index.tsx similarity index 100% rename from packages/setters/src/json-setter/index.tsx rename to packages/editor-setters/src/json-setter/index.tsx diff --git a/packages/setters/src/json-setter/locale/snippets.js b/packages/editor-setters/src/json-setter/locale/snippets.js similarity index 100% rename from packages/setters/src/json-setter/locale/snippets.js rename to packages/editor-setters/src/json-setter/locale/snippets.js diff --git a/packages/setters/src/json-setter/locale/utils.js b/packages/editor-setters/src/json-setter/locale/utils.js similarity index 100% rename from packages/setters/src/json-setter/locale/utils.js rename to packages/editor-setters/src/json-setter/locale/utils.js diff --git a/packages/setters/src/json-setter/locale/zh-CN.js b/packages/editor-setters/src/json-setter/locale/zh-CN.js similarity index 100% rename from packages/setters/src/json-setter/locale/zh-CN.js rename to packages/editor-setters/src/json-setter/locale/zh-CN.js diff --git a/packages/setters/src/locale/snippets copy.js b/packages/editor-setters/src/locale/snippets copy.js similarity index 100% rename from packages/setters/src/locale/snippets copy.js rename to packages/editor-setters/src/locale/snippets copy.js diff --git a/packages/setters/src/locale/snippets.js b/packages/editor-setters/src/locale/snippets.js similarity index 100% rename from packages/setters/src/locale/snippets.js rename to packages/editor-setters/src/locale/snippets.js diff --git a/packages/setters/src/locale/utils copy.js b/packages/editor-setters/src/locale/utils copy.js similarity index 100% rename from packages/setters/src/locale/utils copy.js rename to packages/editor-setters/src/locale/utils copy.js diff --git a/packages/setters/src/locale/utils.js b/packages/editor-setters/src/locale/utils.js similarity index 100% rename from packages/setters/src/locale/utils.js rename to packages/editor-setters/src/locale/utils.js diff --git a/packages/setters/src/locale/zh-CN copy.js b/packages/editor-setters/src/locale/zh-CN copy.js similarity index 100% rename from packages/setters/src/locale/zh-CN copy.js rename to packages/editor-setters/src/locale/zh-CN copy.js diff --git a/packages/setters/src/locale/zh-CN.js b/packages/editor-setters/src/locale/zh-CN.js similarity index 100% rename from packages/setters/src/locale/zh-CN.js rename to packages/editor-setters/src/locale/zh-CN.js diff --git a/packages/setters/src/mixin-setter/index.scss b/packages/editor-setters/src/mixin-setter/index.scss similarity index 100% rename from packages/setters/src/mixin-setter/index.scss rename to packages/editor-setters/src/mixin-setter/index.scss diff --git a/packages/setters/src/mixin-setter/index.tsx b/packages/editor-setters/src/mixin-setter/index.tsx similarity index 100% rename from packages/setters/src/mixin-setter/index.tsx rename to packages/editor-setters/src/mixin-setter/index.tsx diff --git a/packages/setters/src/mixin-setter/locale/utils.js b/packages/editor-setters/src/mixin-setter/locale/utils.js similarity index 100% rename from packages/setters/src/mixin-setter/locale/utils.js rename to packages/editor-setters/src/mixin-setter/locale/utils.js diff --git a/packages/setters/src/mixin-setter/locale/zh-CN.js b/packages/editor-setters/src/mixin-setter/locale/zh-CN.js similarity index 100% rename from packages/setters/src/mixin-setter/locale/zh-CN.js rename to packages/editor-setters/src/mixin-setter/locale/zh-CN.js diff --git a/packages/setters/src/style-setter/index.tsx b/packages/editor-setters/src/style-setter/index.tsx similarity index 100% rename from packages/setters/src/style-setter/index.tsx rename to packages/editor-setters/src/style-setter/index.tsx diff --git a/packages/setters/src/style-setter/style.less b/packages/editor-setters/src/style-setter/style.less similarity index 100% rename from packages/setters/src/style-setter/style.less rename to packages/editor-setters/src/style-setter/style.less diff --git a/packages/editor-setters/tsconfig.json b/packages/editor-setters/tsconfig.json new file mode 100644 index 000000000..c37b76ecc --- /dev/null +++ b/packages/editor-setters/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib" + }, + "include": [ + "./src/" + ] +} diff --git a/packages/editor-skeleton/src/layouts/workbench.tsx b/packages/editor-skeleton/src/layouts/workbench.tsx index 06f0b5055..c5e75c691 100644 --- a/packages/editor-skeleton/src/layouts/workbench.tsx +++ b/packages/editor-skeleton/src/layouts/workbench.tsx @@ -11,9 +11,15 @@ import MainArea from './main-area'; import BottomArea from './bottom-area'; import RightArea from './right-area'; import './workbench.less'; +import { EditorConfig, PluginClassSet } from '@ali/lowcode-types'; @observer -export class Workbench extends Component<{ skeleton: Skeleton, className?: string, topAreaItemClassName?: string }> { +export class Workbench extends Component<{ skeleton: Skeleton; config?: EditorConfig; components?: PluginClassSet; className?: string; topAreaItemClassName?: string }> { + constructor(props: any) { + super(props); + const { config, components, skeleton } = this.props; + skeleton.buildFromConfig(config, components); + } shouldComponentUpdate() { return false; } diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts index c03be99c1..4b47e8ad6 100644 --- a/packages/editor-skeleton/src/skeleton.ts +++ b/packages/editor-skeleton/src/skeleton.ts @@ -22,6 +22,7 @@ import { Stage, StageConfig } from './widget/stage'; import { isValidElement } from 'react'; import { isPlainObject } from '@ali/lowcode-utils'; import { Divider } from '@alifd/next'; +import { EditorConfig, PluginClassSet } from '@ali/lowcode-types'; export enum SkeletonEvents { PANEL_DOCK_ACTIVE = 'skeleton.panel-dock.active', @@ -146,8 +147,19 @@ export class Skeleton { this.setupPlugins(); } + buildFromConfig(config?: EditorConfig, components: PluginClassSet = {}) { + if (config) { + this.editor.init(config, components); + } + this.setupPlugins(); + } + private setupPlugins() { - const { config, components: componentsMap } = this.editor; + const { config, components = {} } = this.editor; + if (!config) { + return; + } + const { plugins } = config; if (!plugins) { return; @@ -180,8 +192,8 @@ export class Skeleton { } else if (/Icon$/.test(type)) { config.type = type.replace('Icon', 'Dock'); } - if (pluginKey in componentsMap) { - config.content = componentsMap[pluginKey]; + if (pluginKey in components) { + config.content = components[pluginKey]; } this.add(config); }); diff --git a/packages/plugin-sample-logo/src/index.scss b/packages/plugin-sample-logo/src/index.scss index 338b4c58a..39df8743e 100644 --- a/packages/plugin-sample-logo/src/index.scss +++ b/packages/plugin-sample-logo/src/index.scss @@ -1,10 +1,8 @@ .lowcode-plugin-logo { - padding: 14px 8px; - padding-left: 8px; .logo { display: block; - width: 56px; - height: 20px; + width: 32px; + height: 32px; cursor: pointer; background-size: contain; background-position: center; diff --git a/packages/plugin-undo-redo/src/index.tsx b/packages/plugin-undo-redo/src/index.tsx index 249ed6649..891b1e7b9 100644 --- a/packages/plugin-undo-redo/src/index.tsx +++ b/packages/plugin-undo-redo/src/index.tsx @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; import './index.scss'; -import { Editor } from '@ali/lowcode-editor-core'; +import { Editor, Title } from '@ali/lowcode-editor-core'; import { TopIcon } from '@ali/lowcode-editor-skeleton'; import { Designer } from '@ali/lowcode-designer'; import { PluginProps } from '@ali/lowcode-types'; diff --git a/packages/types/src/editor.ts b/packages/types/src/editor.ts index 308122251..bfb2682b8 100644 --- a/packages/types/src/editor.ts +++ b/packages/types/src/editor.ts @@ -3,7 +3,7 @@ import { ReactNode, ReactElement, RefObject, ComponentType } from 'react'; import { NpmInfo } from './npm'; import { RegisterOptions } from 'power-di'; -export type KeyType = Function | symbol | string; +export type KeyType = Function | Symbol | string; export type ClassType = Function | (new (...args: any[]) => any); export interface GetOptions { forceNew?: boolean;