From d813b5090c8b23e58345ef35a73a7bc075de6bd7 Mon Sep 17 00:00:00 2001 From: "wuyue.xht" Date: Sun, 28 Jun 2020 11:56:12 +0800 Subject: [PATCH 001/120] =?UTF-8?q?fix:=20=E7=94=BB=E5=B8=83BorderAction?= =?UTF-8?q?=E5=9F=8B=E7=82=B9=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/builtin-simulator/bem-tools/border-selecting.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 7adce76b4..4562c9ffd 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx @@ -126,13 +126,13 @@ function createAction(content: ReactNode | ComponentType | ActionContentObj action && action(node); const editor = globalContext.get(Editor); const npm = node?.componentMeta?.npm; - const target = + const selected = [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; editor?.emit('designer.border.action', { name: key, - target, + selected, }); }} > From e91ab1fafe4e41c9103ac06c73b9013068f741b2 Mon Sep 17 00:00:00 2001 From: "wuyue.xht" Date: Mon, 29 Jun 2020 15:09:23 +0800 Subject: [PATCH 002/120] =?UTF-8?q?fix:=20=E5=A4=A7=E7=BA=B2=E6=A0=91?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=98=BE=E7=A4=BA=E9=9A=90=E8=97=8F=E5=9F=8B?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/tree-title.tsx | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/plugin-outline-pane/src/views/tree-title.tsx b/packages/plugin-outline-pane/src/views/tree-title.tsx index 53a69f33b..ec7b9cd33 100644 --- a/packages/plugin-outline-pane/src/views/tree-title.tsx +++ b/packages/plugin-outline-pane/src/views/tree-title.tsx @@ -12,6 +12,18 @@ import { IconCond } from '../icons/cond'; import { IconLoop } from '../icons/loop'; import { createIcon } from '@ali/lowcode-utils'; +function report(type: string, treeNode: TreeNode, rest?: object) { + const editor = globalContext.get(Editor); + const node = treeNode?.node; + const npm = node?.componentMeta?.npm; + const selected = + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; + editor?.emit(`outlinePane.${type}`, { + selected, + ...rest, + }); +} + @observer export default class TreeTitle extends Component<{ treeNode: TreeNode; @@ -37,7 +49,9 @@ export default class TreeTitle extends Component<{ private saveEdit = (e: FocusEvent | KeyboardEvent) => { const { treeNode } = this.props; - treeNode.setTitleLabel((e.target as HTMLInputElement).value || ''); + const value = (e.target as HTMLInputElement).value || ''; + treeNode.setTitleLabel(value); + report('rename', treeNode, { value }); this.cancelEdit(); }; @@ -164,17 +178,8 @@ class HideBtn extends Component<{ treeNode: TreeNode }> { className="tree-node-hide-btn" onClick={(e) => { e.stopPropagation(); + report(treeNode.hidden ? 'show' : 'hide', treeNode); treeNode.setHidden(!treeNode.hidden); - const editor = globalContext.get(Editor); - const node = treeNode?.node; - const npm = node?.componentMeta?.npm; - const selected = - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || - node?.componentMeta?.componentName || - ''; - editor?.emit('outlinePane.hide', { - selected, - }); }} > {treeNode.hidden ? : } From d9828f2d78ed4e4f245644c3b7f6c6f9e743316f Mon Sep 17 00:00:00 2001 From: "wuyue.xht" Date: Mon, 29 Jun 2020 16:22:13 +0800 Subject: [PATCH 003/120] =?UTF-8?q?feat:=20=E5=A4=A7=E7=BA=B2=E6=A0=91?= =?UTF-8?q?=E5=B1=95=E5=BC=80=E6=8A=98=E5=8F=A0=E5=9F=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/plugin-outline-pane/src/views/tree-title.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/plugin-outline-pane/src/views/tree-title.tsx b/packages/plugin-outline-pane/src/views/tree-title.tsx index ec7b9cd33..811ce0ab0 100644 --- a/packages/plugin-outline-pane/src/views/tree-title.tsx +++ b/packages/plugin-outline-pane/src/views/tree-title.tsx @@ -206,6 +206,7 @@ class ExpandBtn extends Component<{ treeNode: TreeNode }> { if (treeNode.expanded) { e.stopPropagation(); } + report(treeNode.expanded ? 'collapse' : 'expand', treeNode); treeNode.setExpanded(!treeNode.expanded); }} > From 43533daadebd49f947e5fd2b0eea2c3283c3cfba Mon Sep 17 00:00:00 2001 From: "wuyue.xht" Date: Tue, 30 Jun 2020 15:36:52 +0800 Subject: [PATCH 004/120] =?UTF-8?q?chore:=20=E5=9F=8B=E7=82=B9=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E8=AF=AD=E4=B9=89=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/plugin-outline-pane/src/views/tree-title.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/plugin-outline-pane/src/views/tree-title.tsx b/packages/plugin-outline-pane/src/views/tree-title.tsx index 811ce0ab0..30df4e078 100644 --- a/packages/plugin-outline-pane/src/views/tree-title.tsx +++ b/packages/plugin-outline-pane/src/views/tree-title.tsx @@ -12,7 +12,7 @@ import { IconCond } from '../icons/cond'; import { IconLoop } from '../icons/loop'; import { createIcon } from '@ali/lowcode-utils'; -function report(type: string, treeNode: TreeNode, rest?: object) { +function emitOutlineEvent(type: string, treeNode: TreeNode, rest?: object) { const editor = globalContext.get(Editor); const node = treeNode?.node; const npm = node?.componentMeta?.npm; @@ -51,7 +51,7 @@ export default class TreeTitle extends Component<{ const { treeNode } = this.props; const value = (e.target as HTMLInputElement).value || ''; treeNode.setTitleLabel(value); - report('rename', treeNode, { value }); + emitOutlineEvent('rename', treeNode, { value }); this.cancelEdit(); }; @@ -178,7 +178,7 @@ class HideBtn extends Component<{ treeNode: TreeNode }> { className="tree-node-hide-btn" onClick={(e) => { e.stopPropagation(); - report(treeNode.hidden ? 'show' : 'hide', treeNode); + emitOutlineEvent(treeNode.hidden ? 'show' : 'hide', treeNode); treeNode.setHidden(!treeNode.hidden); }} > @@ -206,7 +206,7 @@ class ExpandBtn extends Component<{ treeNode: TreeNode }> { if (treeNode.expanded) { e.stopPropagation(); } - report(treeNode.expanded ? 'collapse' : 'expand', treeNode); + emitOutlineEvent(treeNode.expanded ? 'collapse' : 'expand', treeNode); treeNode.setExpanded(!treeNode.expanded); }} > From 93ff5c2393f70e4d1fda94b8b4ba3c0d64349893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E5=B8=8C?= Date: Wed, 1 Jul 2020 12:08:42 +0800 Subject: [PATCH 005/120] feat: prepare publish for code-generator --- .gitignore | 3 ++- packages/code-generator/package.json | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d6c4d6312..2073a217c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist packages/*/lib/ packages/*/es/ packages/*/dist/ +packages/*/output/ package-lock.json yarn.lock deploy-space/packages @@ -102,4 +103,4 @@ typings/ .DS_Store # codealike -codealike.json \ No newline at end of file +codealike.json diff --git a/packages/code-generator/package.json b/packages/code-generator/package.json index 3bffb2689..22220ee8e 100644 --- a/packages/code-generator/package.json +++ b/packages/code-generator/package.json @@ -1,10 +1,11 @@ { "name": "@ali/lowcode-code-generator", - "version": "0.8.6", + "version": "0.8.7", "description": "出码引擎 for LowCode Engine", "main": "lib/index.js", "files": [ - "lib" + "lib", + "demo" ], "scripts": { "build": "rimraf lib && tsc", From 57b30cf785cdf5ad5977ec86602dd5c21ffe256e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E5=B8=8C?= Date: Fri, 3 Jul 2020 11:55:53 +0800 Subject: [PATCH 006/120] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20condition?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E5=AF=BC=E5=87=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/code-generator/src/utils/nodeToJSX.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/code-generator/src/utils/nodeToJSX.ts b/packages/code-generator/src/utils/nodeToJSX.ts index a60351202..db5f87c1d 100644 --- a/packages/code-generator/src/utils/nodeToJSX.ts +++ b/packages/code-generator/src/utils/nodeToJSX.ts @@ -96,8 +96,10 @@ export function generateReactCtrlLine(nodeItem: IComponentNodeItem): CodePiece[] } if (nodeItem.condition) { + const [isString, value] = generateCompositeType(nodeItem.condition); + pieces.unshift({ - value: `(${generateCompositeType(nodeItem.condition)}) && (`, + value: `(${isString ? `'${value}'` : value}) && (`, type: PIECE_TYPE.BEFORE, }); pieces.push({ From 07e27592a605373831c9976f74d9655163e2a268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E5=B8=8C?= Date: Fri, 3 Jul 2020 11:56:30 +0800 Subject: [PATCH 007/120] =?UTF-8?q?fix:=20=E6=96=B0=E5=A2=9E=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=A8=A1=E5=BC=8F=20demo=20&=20=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E8=87=AA=E5=AE=9A=E4=B9=89=E9=9C=80=E8=A6=81=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/code-generator/demo/demo.js | 103 +++++++++++++++++- .../code-generator/demo/shenmaSample.json | 36 ++++++ packages/code-generator/package.json | 2 +- packages/code-generator/src/index.ts | 23 ++++ .../plugins/project/framework/icejs/index.ts | 17 +++ .../src/postprocessor/prettier/index.ts | 2 +- .../code-generator/src/solutions/icejs.ts | 20 ++-- 7 files changed, 188 insertions(+), 15 deletions(-) create mode 100644 packages/code-generator/demo/shenmaSample.json create mode 100644 packages/code-generator/src/plugins/project/framework/icejs/index.ts diff --git a/packages/code-generator/demo/demo.js b/packages/code-generator/demo/demo.js index 91e145de9..61c71de97 100644 --- a/packages/code-generator/demo/demo.js +++ b/packages/code-generator/demo/demo.js @@ -1,4 +1,5 @@ const fs = require('fs'); +// ../lib 可以替换成 @ali/lowcode-code-generator const CodeGenerator = require('../lib').default; function flatFiles(rootName, dir) { @@ -50,4 +51,104 @@ function main() { }); } -main(); +function exportModule() { + const schemaJson = fs.readFileSync('./demo/shenmaSample.json', { encoding: 'utf8' }); + const moduleBuilder = CodeGenerator.createModuleBuilder({ + plugins: [ + CodeGenerator.plugins.react.reactCommonDeps(), + CodeGenerator.plugins.common.esmodule({ + fileType: 'jsx', + }), + CodeGenerator.plugins.react.containerClass(), + CodeGenerator.plugins.react.containerInitState(), + CodeGenerator.plugins.react.containerLifeCycle(), + CodeGenerator.plugins.react.containerMethod(), + CodeGenerator.plugins.react.jsx(), + CodeGenerator.plugins.style.css(), + ], + postProcessors: [ + CodeGenerator.postprocessor.prettier(), + ], + mainFileName: 'index', + }); + + moduleBuilder.generateModuleCode(schemaJson).then(result => { + displayResultInConsole(result); + return result; + }); +} + +function exportProject() { + const schemaJson = fs.readFileSync('./demo/sampleSchema.json', { encoding: 'utf8' }); + + const builder = CodeGenerator.createProjectBuilder({ + template: CodeGenerator.solutionParts.icejs.template, + plugins: { + components: [ + CodeGenerator.plugins.react.reactCommonDeps(), + CodeGenerator.plugins.common.esmodule({ + fileType: 'jsx', + }), + CodeGenerator.plugins.react.containerClass(), + CodeGenerator.plugins.react.containerInitState(), + CodeGenerator.plugins.react.containerLifeCycle(), + CodeGenerator.plugins.react.containerMethod(), + CodeGenerator.plugins.react.jsx(), + CodeGenerator.plugins.style.css(), + ], + pages: [ + CodeGenerator.plugins.react.reactCommonDeps(), + CodeGenerator.plugins.common.esmodule({ + fileType: 'jsx', + }), + CodeGenerator.plugins.react.containerClass(), + CodeGenerator.plugins.react.containerInitState(), + CodeGenerator.plugins.react.containerLifeCycle(), + CodeGenerator.plugins.react.containerMethod(), + CodeGenerator.plugins.react.jsx(), + CodeGenerator.plugins.style.css(), + ], + router: [ + CodeGenerator.plugins.common.esmodule(), + CodeGenerator.solutionParts.icejs.plugins.router(), + ], + entry: [ + CodeGenerator.solutionParts.icejs.plugins.entry(), + ], + constants: [ + CodeGenerator.plugins.project.constants(), + ], + utils: [ + CodeGenerator.plugins.common.esmodule(), + CodeGenerator.plugins.project.utils(), + ], + i18n: [ + CodeGenerator.plugins.project.i18n(), + ], + globalStyle: [ + CodeGenerator.solutionParts.icejs.plugins.globalStyle(), + ], + htmlEntry: [ + CodeGenerator.solutionParts.icejs.plugins.entryHtml(), + ], + packageJSON: [ + CodeGenerator.solutionParts.icejs.plugins.packageJSON(), + ], + }, + postProcessors: [ + CodeGenerator.postprocessor.prettier(), + ], + }); + + builder.generateProject(schemaJson).then(result => { + displayResultInConsole(result); + writeResultToDisk(result, 'output/lowcodeDemo').then(response => + console.log('Write to disk: ', JSON.stringify(response)), + ); + return result; + }); +} + +// main(); +// exportModule(); +exportProject(); diff --git a/packages/code-generator/demo/shenmaSample.json b/packages/code-generator/demo/shenmaSample.json new file mode 100644 index 000000000..eed4c1031 --- /dev/null +++ b/packages/code-generator/demo/shenmaSample.json @@ -0,0 +1,36 @@ +{ + "version": "1.0.0", + "componentsMap": [ + { + "componentName": "Demo", + "package": "@ali/demo", + "version": "1.19.18", + "destructuring": true, + "exportName": "Demo" + } + ], + "id": "page_kc326r8m", + "componentsTree": [{ + "componentName": "Page", + "id": "node_kc326r8h", + "props": {}, + "condition": true, + "loopArgs": ["item", "index"], + "children": [{ + "componentName": "Demo", + "id": "node_kc326r8i", + "props": { + "value": "文本内容", + "color": "#ffffff", + "ui_maxLine": 2, + "url": "", + "ui_type": "xs", + "style": {}, + "className": "" + }, + "condition": true, + "loopArgs": ["item", "index"] + }] + }], + "params": {} +} diff --git a/packages/code-generator/package.json b/packages/code-generator/package.json index 22220ee8e..a6359455c 100644 --- a/packages/code-generator/package.json +++ b/packages/code-generator/package.json @@ -1,6 +1,6 @@ { "name": "@ali/lowcode-code-generator", - "version": "0.8.7", + "version": "0.8.8", "description": "出码引擎 for LowCode Engine", "main": "lib/index.js", "files": [ diff --git a/packages/code-generator/src/index.ts b/packages/code-generator/src/index.ts index 9de9c1538..2ef5cf28c 100644 --- a/packages/code-generator/src/index.ts +++ b/packages/code-generator/src/index.ts @@ -10,6 +10,11 @@ import createRecoreProjectBuilder from './solutions/recore'; // 引入说明 import { REACT_CHUNK_NAME } from './plugins/component/react/const'; +import { + COMMON_CHUNK_NAME, + CLASS_DEFINE_CHUNK_NAME, + DEFAULT_LINK_AFTER, +} from './const/generator'; // 引入通用插件组 import esmodule from './plugins/common/esmodule'; @@ -26,6 +31,7 @@ import css from './plugins/component/style/css'; import constants from './plugins/project/constants'; import i18n from './plugins/project/i18n'; import utils from './plugins/project/utils'; +import prettier from './postprocessor/prettier'; // 引入常用工具 import * as utilsCommon from './utils/common'; @@ -34,6 +40,9 @@ import * as utilsJsExpression from './utils/jsExpression'; import * as utilsNodeToJSX from './utils/nodeToJSX'; import * as utilsTemplateHelper from './utils/templateHelper'; +// 引入内置解决方案模块 +import icejs from './plugins/project/framework/icejs'; + export * from './types'; export default { @@ -43,6 +52,9 @@ export default { icejs: createIceJsProjectBuilder, recore: createRecoreProjectBuilder, }, + solutionParts: { + icejs, + }, publishers: { disk: createDiskPublisher, }, @@ -70,6 +82,9 @@ export default { utils, }, }, + postprocessor: { + prettier, + }, utils: { common: utilsCommon, compositeType: utilsCompositeType, @@ -77,4 +92,12 @@ export default { nodeToJSX: utilsNodeToJSX, templateHelper: utilsTemplateHelper, }, + chunkNames: { + COMMON_CHUNK_NAME, + CLASS_DEFINE_CHUNK_NAME, + REACT_CHUNK_NAME, + }, + defaultLinkAfter: { + COMMON_DEFAULT_LINK_AFTER: DEFAULT_LINK_AFTER, + }, }; diff --git a/packages/code-generator/src/plugins/project/framework/icejs/index.ts b/packages/code-generator/src/plugins/project/framework/icejs/index.ts new file mode 100644 index 000000000..e9c8f255f --- /dev/null +++ b/packages/code-generator/src/plugins/project/framework/icejs/index.ts @@ -0,0 +1,17 @@ +import template from './template'; +import entry from './plugins/entry'; +import entryHtml from './plugins/entryHtml'; +import globalStyle from './plugins/globalStyle'; +import packageJSON from './plugins/packageJSON'; +import router from './plugins/router'; + +export default { + template, + plugins: { + entry, + entryHtml, + globalStyle, + packageJSON, + router, + }, +}; diff --git a/packages/code-generator/src/postprocessor/prettier/index.ts b/packages/code-generator/src/postprocessor/prettier/index.ts index 519c2db5d..85c2f9741 100644 --- a/packages/code-generator/src/postprocessor/prettier/index.ts +++ b/packages/code-generator/src/postprocessor/prettier/index.ts @@ -5,7 +5,7 @@ import { PostProcessor, PostProcessorFactory } from '../../types'; const PARSERS = ['css', 'scss', 'less', 'json', 'html', 'vue']; -interface ProcessorConfig { +type ProcessorConfig = { customFileTypeParser: Record; } diff --git a/packages/code-generator/src/solutions/icejs.ts b/packages/code-generator/src/solutions/icejs.ts index 62a514008..bfb7e28f8 100644 --- a/packages/code-generator/src/solutions/icejs.ts +++ b/packages/code-generator/src/solutions/icejs.ts @@ -12,20 +12,16 @@ import jsx from '../plugins/component/react/jsx'; import reactCommonDeps from '../plugins/component/react/reactCommonDeps'; import css from '../plugins/component/style/css'; import constants from '../plugins/project/constants'; -import iceJsEntry from '../plugins/project/framework/icejs/plugins/entry'; -import iceJsEntryHtml from '../plugins/project/framework/icejs/plugins/entryHtml'; -import iceJsGlobalStyle from '../plugins/project/framework/icejs/plugins/globalStyle'; -import iceJsPackageJSON from '../plugins/project/framework/icejs/plugins/packageJSON'; -import iceJsRouter from '../plugins/project/framework/icejs/plugins/router'; -import template from '../plugins/project/framework/icejs/template'; import i18n from '../plugins/project/i18n'; import utils from '../plugins/project/utils'; +import icejs from '../plugins/project/framework/icejs'; + import { prettier } from '../postprocessor'; export default function createIceJsProjectBuilder(): IProjectBuilder { return createProjectBuilder({ - template, + template: icejs.template, plugins: { components: [ reactCommonDeps(), @@ -53,14 +49,14 @@ export default function createIceJsProjectBuilder(): IProjectBuilder { jsx(), css(), ], - router: [esmodule(), iceJsRouter()], - entry: [iceJsEntry()], + router: [esmodule(), icejs.plugins.router()], + entry: [icejs.plugins.entry()], constants: [constants()], utils: [esmodule(), utils()], i18n: [i18n()], - globalStyle: [iceJsGlobalStyle()], - htmlEntry: [iceJsEntryHtml()], - packageJSON: [iceJsPackageJSON()], + globalStyle: [icejs.plugins.globalStyle()], + htmlEntry: [icejs.plugins.entryHtml()], + packageJSON: [icejs.plugins.packageJSON()], }, postProcessors: [prettier()], }); From 29bc7b883535e32c8807ae4737dbf54e6b2db117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=A3=E5=BD=AC?= Date: Tue, 14 Jul 2020 10:14:48 +0800 Subject: [PATCH 008/120] =?UTF-8?q?=E6=96=B0=E5=A2=9Erax=20simulator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/demo/build.json | 6 +- packages/demo/build.plugin.js | 15 +- packages/demo/public/index.html | 1 + packages/demo/public/rax.json | 20 + packages/demo/public/raxAssets.json | 83 ++++ packages/demo/src/editor/components.ts | 2 +- packages/demo/src/editor/config.js | 10 +- packages/demo/src/vision/index.ts | 2 + .../src/builtin-simulator/create-simulator.ts | 18 +- .../designer/src/builtin-simulator/host.ts | 71 ++- packages/designer/src/simulator.ts | 2 +- packages/rax-render/CHANGELOG.md | 4 + packages/rax-render/package.json | 5 +- packages/rax-render/src/engine/base.jsx | 264 ++++++----- .../rax-render/src/engine/blockEngine.jsx | 16 +- packages/rax-render/src/engine/compEngine.jsx | 32 +- packages/rax-render/src/engine/index.jsx | 115 ++++- packages/rax-render/src/engine/pageEngine.jsx | 104 ++++- packages/rax-render/src/engine/tempEngine.jsx | 16 +- packages/rax-render/src/hoc/compWrapper.js | 6 +- packages/rax-render/src/utils/index.js | 213 ++++----- packages/rax-simulator-renderer/build.json | 21 + .../rax-simulator-renderer/build.plugin.js | 0 packages/rax-simulator-renderer/package.json | 53 +++ .../src/builtin-components/Leaf/index.tsx | 226 ++++++++++ .../UnusualComponent/index.less | 0 .../UnusualComponent/index.tsx | 34 ++ .../src/builtin-components/renderUtils.ts | 82 ++++ packages/rax-simulator-renderer/src/host.ts | 4 + .../rax-simulator-renderer/src/image.d.ts | 1 + packages/rax-simulator-renderer/src/index.ts | 7 + .../src/obx-rax/derivation.ts | 210 +++++++++ .../src/obx-rax/global-state.ts | 68 +++ .../src/obx-rax/next-tick.ts | 56 +++ .../src/obx-rax/observable/compare.ts | 5 + .../src/obx-rax/observable/observable.ts | 179 ++++++++ .../src/obx-rax/observable/obx-array.ts | 152 +++++++ .../src/obx-rax/observable/obx-instance.ts | 14 + .../src/obx-rax/observable/obx-map.ts | 37 ++ .../src/obx-rax/observable/obx-object.ts | 93 ++++ .../src/obx-rax/observable/obx-property.ts | 212 +++++++++ .../src/obx-rax/observable/obx-set.ts | 133 ++++++ .../src/obx-rax/observable/obx.ts | 141 ++++++ .../src/obx-rax/observable/proxy.ts | 40 ++ .../src/obx-rax/observer.ts | 149 ++++++ .../src/obx-rax/reaction.ts | 252 +++++++++++ .../src/obx-rax/utils.ts | 0 .../src/obx-rax/utils/has-own-property.ts | 5 + .../src/obx-rax/utils/index.ts | 7 + .../src/obx-rax/utils/invariant.ts | 5 + .../src/obx-rax/utils/is-primitive.ts | 8 + .../src/obx-rax/utils/next-id.ts | 4 + .../src/obx-rax/utils/shallow-equal.ts | 28 ++ .../src/obx-rax/utils/split-path.ts | 5 + .../src/obx-rax/utils/throttle.ts | 97 ++++ .../src/renderer-view.tsx | 151 +++++++ .../rax-simulator-renderer/src/renderer.less | 111 +++++ .../rax-simulator-renderer/src/renderer.ts | 423 ++++++++++++++++++ .../src/utils/create-defer.ts | 17 + .../src/utils/get-client-rects.ts | 13 + .../src/utils/get-closest-node-instance.ts | 0 .../src/utils/get-device-view.ts | 23 + .../src/utils/loader.ts | 113 +++++ .../src/utils/script.ts | 54 +++ .../rax-simulator-renderer/src/utils/style.ts | 73 +++ packages/react-renderer/src/engine/index.jsx | 20 +- .../react-renderer/src/engine/pageEngine.jsx | 13 +- .../src/renderer-view.tsx | 2 +- .../react-simulator-renderer/src/renderer.ts | 19 +- scripts/start.sh | 1 + 70 files changed, 4037 insertions(+), 329 deletions(-) create mode 100644 packages/demo/public/rax.json create mode 100644 packages/demo/public/raxAssets.json create mode 100644 packages/rax-simulator-renderer/build.json create mode 100644 packages/rax-simulator-renderer/build.plugin.js create mode 100644 packages/rax-simulator-renderer/package.json create mode 100644 packages/rax-simulator-renderer/src/builtin-components/Leaf/index.tsx create mode 100644 packages/rax-simulator-renderer/src/builtin-components/UnusualComponent/index.less create mode 100644 packages/rax-simulator-renderer/src/builtin-components/UnusualComponent/index.tsx create mode 100644 packages/rax-simulator-renderer/src/builtin-components/renderUtils.ts create mode 100644 packages/rax-simulator-renderer/src/host.ts create mode 100644 packages/rax-simulator-renderer/src/image.d.ts create mode 100644 packages/rax-simulator-renderer/src/index.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/derivation.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/global-state.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/next-tick.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/compare.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/observable.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-array.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-instance.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-map.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-object.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-property.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx-set.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/obx.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observable/proxy.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/observer.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/reaction.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/has-own-property.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/index.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/invariant.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/is-primitive.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/next-id.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/shallow-equal.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/split-path.ts create mode 100644 packages/rax-simulator-renderer/src/obx-rax/utils/throttle.ts create mode 100644 packages/rax-simulator-renderer/src/renderer-view.tsx create mode 100644 packages/rax-simulator-renderer/src/renderer.less create mode 100644 packages/rax-simulator-renderer/src/renderer.ts create mode 100644 packages/rax-simulator-renderer/src/utils/create-defer.ts create mode 100644 packages/rax-simulator-renderer/src/utils/get-client-rects.ts create mode 100644 packages/rax-simulator-renderer/src/utils/get-closest-node-instance.ts create mode 100644 packages/rax-simulator-renderer/src/utils/get-device-view.ts create mode 100644 packages/rax-simulator-renderer/src/utils/loader.ts create mode 100644 packages/rax-simulator-renderer/src/utils/script.ts create mode 100644 packages/rax-simulator-renderer/src/utils/style.ts diff --git a/packages/demo/build.json b/packages/demo/build.json index 83cf581dd..42ade8d92 100644 --- a/packages/demo/build.json +++ b/packages/demo/build.json @@ -2,7 +2,8 @@ "entry": { "index": "src/index", "editor-preset-vision": "../editor-preset-vision/src/index.ts", - "react-simulator-renderer": "../react-simulator-renderer/src/index.ts" + "react-simulator-renderer": "../react-simulator-renderer/src/index.ts", + "rax-simulator-renderer": "../rax-simulator-renderer/src/index.ts" }, "vendor": false, "devServer": { @@ -15,7 +16,8 @@ "prop-types": "var window.PropTypes", "@alifd/next": "var window.Next", "@ali/visualengine": "var window.VisualEngine", - "@ali/visualengine-utils": "var window.VisualEngineUtils" + "@ali/visualengine-utils": "var window.VisualEngineUtils", + "rax": "var window.Rax" }, "plugins": [ [ diff --git a/packages/demo/build.plugin.js b/packages/demo/build.plugin.js index 53380e73a..9e95cbd09 100644 --- a/packages/demo/build.plugin.js +++ b/packages/demo/build.plugin.js @@ -10,12 +10,15 @@ module.exports = ({ onGetWebpackConfig }) => { ]); config - // 定义插件名称 - .plugin('MonacoWebpackPlugin') - // 第一项为具体插件,第二项为插件参数 - .use(new MonacoWebpackPlugin({ - languages:["typescript","css","json"] - }), []); + // 定义插件名称 + .plugin('MonacoWebpackPlugin') + // 第一项为具体插件,第二项为插件参数 + .use( + new MonacoWebpackPlugin({ + languages: ['typescript', 'css', 'json'], + }), + [], + ); config.plugins.delete('hot'); config.devServer.hot(false); diff --git a/packages/demo/public/index.html b/packages/demo/public/index.html index e219c8bad..5a4ed76dd 100644 --- a/packages/demo/public/index.html +++ b/packages/demo/public/index.html @@ -16,6 +16,7 @@ + - + - +