From 362319043585911c37319594a42b99341fb34577 Mon Sep 17 00:00:00 2001 From: mazhaobo Date: Fri, 6 Sep 2024 17:39:12 +0800 Subject: [PATCH 01/94] =?UTF-8?q?refactor:=20=E4=B8=BB=E8=A6=81=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E6=96=87=E4=BB=B6=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- packages/engine/README-zh_CN.md | 106 +++++++++++++++++++------------- packages/engine/README.md | 31 ++++++---- 3 files changed, 81 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 2fcba628f4..6fb5544d6c 120000 --- a/README.md +++ b/README.md @@ -1 +1 @@ -packages/engine/README.md \ No newline at end of file +packages/engine/README-zh_CN.md diff --git a/packages/engine/README-zh_CN.md b/packages/engine/README-zh_CN.md index 5442aa58bd..8bd59a83ce 100644 --- a/packages/engine/README-zh_CN.md +++ b/packages/engine/README-zh_CN.md @@ -1,8 +1,33 @@ -

- - - -

+# 前言 + +本工程 fork 于[alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) (2024 年 9 月 6 日 v1.3.2)。 + +由于原工程 V1 确定不再进行社区开源维护,V2 版没有确切计划。因此诞生了本项目,期望继续开源维护。 + +当然,自此开始相关设计也会完全独立,与原工程 V2 的设计不相关联,如果期望后续能继续走原工程 V2 路线,请慎重选择本项目。 + +## 思想变化 + +本项目将转变部分思路,舍弃部分外围的功能开发,以提供核心低码功能为主,做纯粹低代码内核。如 workspace 等模块将降低优先级。 + +更多的内部模块将转移到 plugins 中,作为默认插件提供,而不是封装到内部。整体向更开放的开发方向转变。 + +同时,针对各子模块,将通过 shell 模块开放更多的接口,以支持更多定制化需求。 + +最后,将酌情升级工具链,计划切换到更新的打包工具等,不过优先级会比较低。 + +## 计划 + +目前工程刚 fork,主要工作是进行命名空间的替换,为避免与原工程命名冲突,本仓库命名空间调整为`@lce`,取自 lowcode-engine 的缩写。 +当前主要任务: + +- 主要工程的命名空间调整 +- 修复积压问题 +-

+ + + +

LowCodeEngine

@@ -10,25 +35,22 @@ 一套面向扩展设计的企业级低代码技术体系 -[![NPM version][npm-image]][npm-url] [![NPM downloads][download-image]][download-url] + [![][issues-helper-image]][issues-helper-url] [![Issues need help][help-wanted-image]][help-wanted-url] [![codecov][codecov-image-url]][codecov-url] [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/lowcode-workspace/awesome-lowcode-engine) -[![](https://img.shields.io/badge/LowCodeEngine-%E6%9F%A5%E7%9C%8B%E8%B4%A1%E7%8C%AE%E6%8E%92%E8%A1%8C%E6%A6%9C-orange)](https://opensource.alibaba.com/contribution_leaderboard/details?projectValue=lowcode-engine) - -[npm-image]: https://img.shields.io/npm/v/@alilc/lowcode-engine.svg?style=flat-square -[npm-url]: http://npmjs.org/package/@alilc/lowcode-engine + -[download-image]: https://img.shields.io/npm/dm/@alilc/lowcode-engine.svg?style=flat-square -[download-url]: https://npmjs.org/package/@alilc/lowcode-engine +[npm-image]: https://img.shields.io/npm/v/@lce/lowcode-engine.svg?style=flat-square +[npm-url]: http://npmjs.org/package/@lce/lowcode-engine +[download-image]: https://img.shields.io/npm/dm/@lce/lowcode-engine.svg?style=flat-square +[download-url]: https://npmjs.org/package/@lce/lowcode-engine [help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open [help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 - [issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square [issues-helper-url]: https://github.com/actions-cool/issues-helper - [codecov-image-url]: https://codecov.io/gh/alibaba/lowcode-engine/branch/main/graph/badge.svg [codecov-url]: https://codecov.io/gh/alibaba/lowcode-engine @@ -59,13 +81,13 @@ ## 🌰 使用示例 ```bash -npm install @alilc/lowcode-engine --save-dev +npm install @lce/lowcode-engine --save-dev ``` > **TIPS:仅支持 cdn 方式引入,npm 包用于提供 typings 等代码提示能力** ```ts -import { init, skeleton } from '@alilc/lowcode-engine'; +import { init, skeleton } from '@lce/lowcode-engine'; skeleton.add({ area: 'topArea', @@ -73,8 +95,7 @@ skeleton.add({ name: 'logo', content: YourFantasticLogo, contentProps: { - logo: - 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', + logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', href: '/', }, props: { @@ -87,54 +108,50 @@ init(document.getElementById('lce')); ``` ### 工程化配置: + ```json { "externals": { - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@lce/lowcode-engine": "var window.AliLowCodeEngine", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` ### cdn 可选方式: -#### 方式 1(推荐):alifd cdn -```html -https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js -``` +#### (推荐):uipaas cdn -#### 方式 2(推荐):uipaas cdn ```html -https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js - -https://uipaas-assets.com/prod/npm/@alilc/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js +https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/1.0.18/dist/js/engine-core.js +https://uipaas-assets.com/prod/npm/@lce/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 3:unpkg -```html -https://unpkg.com/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js +#### unpkg -https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +```html +https://unpkg.com/@lce/lowcode-engine@1.0.18/dist/js/engine-core.js +https://unpkg.com/@lce/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 4:jsdelivr -```html -https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js +#### jsdelivr -https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +```html +https://cdn.jsdelivr.net/npm/@lce/lowcode-engine@1.0.18/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@lce/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 5:使用自有 cdn +#### 使用自有 cdn + 将源码中 packages/engine/dist 和 packages/react-simulator-renderer/dist 下的文件传至你的 cdn 提供商 ## 🔗 相关链接 - [官网首页](https://lowcode-engine.cn/) - [Demo 马上玩](https://lowcode-engine.cn/demo) | [引擎 Demo 仓库](https://github.com/alibaba/lowcode-demo) -- [官方物料](https://github.com/alibaba/lowcode-materials) -- [官方设置器(setter)](https://github.com/alibaba/lowcode-engine-ext) -- [官方插件(plugin)](https://github.com/alibaba/lowcode-plugins) +- [阿里物料](https://github.com/alibaba/lowcode-materials) +- [官方设置器(setter)](https://github.com/zboMa/lowcode-engine-ext) +- [官方插件(plugin)](https://github.com/zboMa/lowcode-plugins) - [生态元素(物料、setter、插件)工具链](https://lowcode-engine.cn/site/docs/guide/expand/editor/cli) - [用户文档](https://lowcode-engine.cn/doc) - [API](https://lowcode-engine.cn/site/docs/api/) @@ -144,14 +161,14 @@ https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist ## 💻 本地调试 ```bash -$ git clone git@github.com:alibaba/lowcode-engine.git +$ git clone git@github.com:zboMa/lowcode-engine.git $ cd lowcode-engine $ npm install $ npm run setup $ npm start ``` -> 📢 npm 访问速度较慢,阿里员工可以使用 tnpm,其他同学建议使用 cnpm 或者指定镜像 registry。 +> 📢 npm 访问速度较慢,建议使用 cnpm 或者指定镜像 registry。 > > 📢 windows 环境必须使用 [WSL](https://docs.microsoft.com/zh-cn/windows/wsl/install),其他终端不保证能正常运行 @@ -160,6 +177,7 @@ lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-de ## 🤝 参与共建 请先阅读: + 1. [如何配置引擎调试环境?](https://lowcode-engine.cn/site/docs/participate/prepare) 2. [关于引擎的研发协作流程](https://lowcode-engine.cn/site/docs/participate/flow) 3. [引擎的工程化配置](https://lowcode-engine.cn/site/docs/participate/config) @@ -174,5 +192,5 @@ lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-de 感谢所有为引擎项目贡献力量的同学们~

- +

diff --git a/packages/engine/README.md b/packages/engine/README.md index ae4e7fd43b..0e1e14bfc9 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -1,8 +1,12 @@ -

+# 警告 + +**The English document is not synchronized with the Chinese document.** + +

LowCodeEngine

@@ -10,25 +14,22 @@ An enterprise-class low-code technology stack with scale-out design -[![NPM version][npm-image]][npm-url] [![NPM downloads][download-image]][download-url] + [![][issues-helper-image]][issues-helper-url] [![Issues need help][help-wanted-image]][help-wanted-url] [![codecov][codecov-image-url]][codecov-url] [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/lowcode-workspace/awesome-lowcode-engine) -[![](https://img.shields.io/badge/LowCodeEngine-Check%20Your%20Contribution-orange)](https://opensource.alibaba.com/contribution_leaderboard/details?projectValue=lowcode-engine) + [npm-image]: https://img.shields.io/npm/v/@alilc/lowcode-engine.svg?style=flat-square [npm-url]: http://npmjs.org/package/@alilc/lowcode-engine - [download-image]: https://img.shields.io/npm/dm/@alilc/lowcode-engine.svg?style=flat-square [download-url]: https://npmjs.org/package/@alilc/lowcode-engine [help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open [help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 - [issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square [issues-helper-url]: https://github.com/actions-cool/issues-helper - [codecov-image-url]: https://codecov.io/gh/alibaba/lowcode-engine/branch/main/graph/badge.svg [codecov-url]: https://codecov.io/gh/alibaba/lowcode-engine @@ -73,8 +74,7 @@ skeleton.add({ name: 'logo', content: YourFantasticLogo, contentProps: { - logo: - 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', + logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', href: '/', }, props: { @@ -87,6 +87,7 @@ init(document.getElementById('lce')); ``` ### Engineering configuration: + ```json { "externals": { @@ -97,35 +98,37 @@ init(document.getElementById('lce')); ``` ### cdn optional method: + #### Method 1: alifd cdn + ```html https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js - https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 2: uipaas cdn + ```html https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js - https://uipaas-assets.com/prod/npm/@alilc/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 3: unpkg + ```html https://unpkg.com/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js - https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 4: jsdelivr + ```html https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js - https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 5: Use your own cdn + Pass the files under packages/engine/dist and packages/react-simulator-renderer/dist in the source code to your cdn provider ## 🔗 Related Links @@ -160,6 +163,7 @@ After lowcode-engine is started, several umd files are provided, which can be de ## 🤝 Participation Please read first: + 1. [How to configure the engine debugging environment? ](https://lowcode-engine.cn/site/docs/participate/prepare) 2. [About the R&D collaboration process of the engine](https://lowcode-engine.cn/site/docs/participate/flow) 3. [Engineering Configuration of Engine](https://lowcode-engine.cn/site/docs/participate/config) @@ -167,6 +171,7 @@ Please read first: > Strongly recommend reading ["The Wisdom of Asking Questions"](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way), ["How to Ask Questions to the Open Source Community"](https: //github.com/seajs/seajs/issues/545) and [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html), [ "How to Submit Unanswerable Questions to Open Source Projects"](https://zhuanlan.zhihu.com/p/25795393), better questions are easier to get help. (This paragraph refers to [antd](https://github.com/ant-design/ant-design)) About Pull Request: + - set the target branch to **develop** other than **main** ## ❤️ Contributors From 328fa7b2fe7eccb917f6d2c8ee9122139d4dce48 Mon Sep 17 00:00:00 2001 From: mazhaobo Date: Tue, 10 Sep 2024 11:17:45 +0800 Subject: [PATCH 02/94] refactor: Change to the namespace --- docs/docs/api/common.md | 31 +- docs/docs/api/config.md | 47 ++- docs/docs/api/configOptions.md | 14 +- docs/docs/api/event.md | 31 +- docs/docs/api/hotkey.md | 21 +- docs/docs/api/init.md | 18 +- docs/docs/api/logger.md | 10 +- docs/docs/api/material.md | 186 ++++++---- docs/docs/api/model/dragon.md | 11 +- docs/docs/api/plugins.md | 59 ++-- docs/docs/api/project.md | 48 ++- docs/docs/api/setters.md | 39 ++- docs/docs/api/skeleton.md | 134 +++---- docs/docs/demoUsage/panels/datasource.md | 62 ++-- docs/docs/demoUsage/panels/settings.md | 120 ++++--- docs/docs/faq/faq009.md | 26 +- docs/docs/faq/faq013.md | 19 +- docs/docs/faq/faq024.md | 40 +-- docs/docs/guide/appendix/npms.md | 87 ++--- docs/docs/guide/create/useEditor.md | 49 ++- docs/docs/guide/create/useRenderer.md | 14 +- docs/docs/guide/design/generator.md | 23 +- docs/docs/guide/design/materialParser.md | 12 +- docs/docs/guide/design/renderer.md | 74 ++-- docs/docs/guide/design/setter.md | 4 +- docs/docs/guide/expand/editor/cli.md | 213 ++++++------ docs/docs/guide/expand/editor/material.md | 118 +++++-- docs/docs/guide/expand/editor/metaSpec.md | 117 ++++--- .../guide/expand/editor/parts/partsassets.md | 90 +++-- .../guide/expand/editor/pluginContextMenu.md | 26 +- docs/docs/guide/expand/editor/pluginWidget.md | 52 +-- docs/docs/guide/expand/editor/setter.md | 35 +- docs/docs/guide/expand/editor/summary.md | 63 ++-- .../guide/expand/runtime/codeGeneration.md | 26 +- docs/docs/guide/expand/runtime/renderer.md | 192 +++++----- docs/docs/guide/quickStart/start.md | 2 +- docs/docs/participate/index.md | 16 +- docs/package.json | 2 +- modules/code-generator/CHANGELOG.md | 24 +- modules/code-generator/CONTRIBUTING.md | 2 +- modules/code-generator/README.md | 14 +- modules/code-generator/package.json | 10 +- modules/code-generator/scripts/build-cli.js | 2 +- .../scripts/build-standalone-worker.js | 2 +- .../scripts/build-standalone.js | 2 +- .../scripts/build-template-static-files.js | 4 +- .../src/analyzer/componentAnalyzer.ts | 2 +- modules/code-generator/src/cli/run.ts | 2 +- .../src/cli/solutions/example-solution.ts | 10 +- .../src/generator/ModuleBuilder.ts | 2 +- .../src/generator/ProjectBuilder.ts | 2 +- .../code-generator/src/parser/SchemaParser.ts | 2 +- .../rax/containerInjectDataSourceEngine.ts | 2 +- .../component/rax/containerLifeCycle.ts | 2 +- .../src/plugins/component/rax/jsx.ts | 2 +- .../react/containerInjectDataSourceEngine.ts | 2 +- .../component/react/containerLifeCycle.ts | 2 +- .../src/plugins/component/react/jsx.ts | 2 +- .../framework/icejs/plugins/packageJSON.ts | 2 +- .../icejs/template/files/README.md.ts | 2 +- .../icejs/template/files/abc.json.ts | 2 +- .../icejs/template/files/build.json.ts | 2 +- .../icejs/template/files/editorconfig.ts | 2 +- .../icejs/template/files/eslintignore.ts | 2 +- .../icejs/template/files/eslintrc.js.ts | 2 +- .../icejs/template/files/gitignore.ts | 2 +- .../icejs/template/files/jsconfig.json.ts | 2 +- .../icejs/template/files/prettierignore.ts | 2 +- .../icejs/template/files/prettierrc.js.ts | 2 +- .../components/Footer/index.jsx.ts | 2 +- .../components/Footer/index.style.ts | 2 +- .../BasicLayout/components/Logo/index.jsx.ts | 2 +- .../components/Logo/index.style.ts | 2 +- .../components/PageNav/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/menuConfig.js.ts | 2 +- .../icejs/template/files/stylelintignore.ts | 2 +- .../icejs/template/files/stylelintrc.js.ts | 2 +- .../icejs/template/files/tsconfig.json.ts | 2 +- .../project/framework/icejs/template/index.ts | 2 +- .../framework/icejs/template/static-files.ts | 2 +- .../framework/icejs3/plugins/buildConfig.ts | 2 +- .../framework/icejs3/plugins/packageJSON.ts | 2 +- .../icejs3/template/files/README.md.ts | 2 +- .../icejs3/template/files/browserslistrc.ts | 2 +- .../icejs3/template/files/document.ts | 2 +- .../icejs3/template/files/gitignore.ts | 2 +- .../components/Footer/index.jsx.ts | 2 +- .../components/Footer/index.style.ts | 2 +- .../BasicLayout/components/Logo/index.jsx.ts | 2 +- .../components/Logo/index.style.ts | 2 +- .../components/PageNav/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/menuConfig.js.ts | 2 +- .../icejs3/template/files/tsconfig.ts | 2 +- .../icejs3/template/files/typings.ts | 2 +- .../framework/icejs3/template/static-files.ts | 2 +- .../framework/rax/plugins/packageJSON.ts | 2 +- .../rax/template/files/.eslintignore.ts | 2 +- .../rax/template/files/.eslintrc.js.ts | 2 +- .../rax/template/files/.gitignore.ts | 2 +- .../rax/template/files/.prettierignore.ts | 2 +- .../rax/template/files/.prettierrc.js.ts | 2 +- .../rax/template/files/.stylelintignore.ts | 2 +- .../rax/template/files/.stylelintrc.js.ts | 2 +- .../framework/rax/template/files/README.md.ts | 2 +- .../rax/template/files/jsconfig.json.ts | 2 +- .../rax/template/files/tsconfig.json.ts | 2 +- .../project/framework/rax/template/index.ts | 2 +- .../framework/rax/template/static-files.ts | 2 +- .../src/publisher/disk/index.ts | 2 +- .../src/publisher/disk/utils.ts | 2 +- .../code-generator/src/publisher/zip/index.ts | 2 +- .../code-generator/src/publisher/zip/utils.ts | 2 +- .../code-generator/src/standalone-loader.ts | 4 +- .../code-generator/src/standalone-worker.ts | 2 +- modules/code-generator/src/types/analyze.ts | 2 +- modules/code-generator/src/types/core.ts | 2 +- .../code-generator/src/types/intermediate.ts | 2 +- modules/code-generator/src/types/jsx.ts | 2 +- modules/code-generator/src/types/publisher.ts | 2 +- modules/code-generator/src/utils/common.ts | 2 +- .../code-generator/src/utils/compositeType.ts | 2 +- .../code-generator/src/utils/jsExpression.ts | 2 +- modules/code-generator/src/utils/jsSlot.ts | 2 +- modules/code-generator/src/utils/nodeToJSX.ts | 2 +- .../code-generator/src/utils/resultHelper.ts | 2 +- modules/code-generator/src/utils/schema.ts | 2 +- .../src/utils/templateHelper.ts | 2 +- .../tests/bugfix/i18n-with-params.test.ts | 2 +- .../bugfix/icejs-import-wrong-naming.test.ts | 2 +- .../bugfix/strict-mode-context-1.test.ts | 2 +- .../tolerate-eval-errors-1-loop.test.ts | 2 +- ...tolerate-eval-errors-2-nested-loop.test.ts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../expected/demo-project/ice.config.mts | 2 +- .../public/SchemaParser/p0-basic.test.ts | 2 +- .../tests/public/publisher/disk/disk.test.ts | 2 +- .../tests/public/solutions/icejs3-app.test.ts | 2 +- .../tests/public/solutions/rax-app.test.ts | 2 +- .../tests/public/solutions/react-app.test.ts | 2 +- .../resultHelper/removeDirsFromResult.test.ts | 2 +- .../removeFilesFromResult.test.ts | 2 +- .../tests/utils/schema/handleSubNodes.test.ts | 2 +- modules/material-parser/README.md | 2 +- modules/material-parser/package.json | 2 +- packages/designer/package.json | 8 +- .../bem-tools/border-container.tsx | 19 +- .../bem-tools/border-detecting.tsx | 20 +- .../bem-tools/border-resizing.tsx | 36 +- .../bem-tools/border-selecting.tsx | 32 +- .../bem-tools/drag-resize-engine.ts | 12 +- .../src/builtin-simulator/bem-tools/index.tsx | 25 +- .../builtin-simulator/bem-tools/insertion.tsx | 22 +- .../src/builtin-simulator/create-simulator.ts | 14 +- .../src/builtin-simulator/host-view.tsx | 11 +- .../designer/src/builtin-simulator/host.ts | 94 ++--- .../live-editing/live-editing.ts | 39 ++- .../builtin-simulator/node-selector/index.tsx | 30 +- .../src/builtin-simulator/renderer.ts | 7 +- .../builtin-simulator/resource-consumer.ts | 8 +- .../src/builtin-simulator/utils/clickable.ts | 2 +- .../builtin-simulator/utils/parse-metadata.ts | 9 +- .../src/builtin-simulator/viewport.ts | 2 +- packages/designer/src/component-actions.ts | 46 +-- packages/designer/src/component-meta.ts | 28 +- packages/designer/src/context-menu-actions.ts | 75 ++-- .../designer/src/designer/active-tracker.ts | 15 +- packages/designer/src/designer/clipboard.ts | 5 +- packages/designer/src/designer/designer.ts | 56 ++- packages/designer/src/designer/detecting.ts | 11 +- .../src/designer/drag-ghost/index.tsx | 19 +- packages/designer/src/designer/dragon.ts | 40 ++- packages/designer/src/designer/location.ts | 12 +- .../designer/src/designer/offset-observer.ts | 4 +- packages/designer/src/designer/scroller.ts | 15 +- .../designer/setting/setting-entry-type.ts | 2 +- .../src/designer/setting/setting-field.ts | 31 +- .../designer/setting/setting-prop-entry.ts | 40 ++- .../src/designer/setting/setting-top-entry.ts | 34 +- .../designer/src/designer/setting/utils.ts | 20 +- .../designer/src/document/document-model.ts | 150 ++++---- .../designer/src/document/document-view.tsx | 2 +- packages/designer/src/document/history.ts | 76 ++-- .../src/document/node/exclusive-group.ts | 6 +- .../src/document/node/modal-nodes-manager.ts | 14 +- .../src/document/node/node-children.ts | 73 ++-- packages/designer/src/document/node/node.ts | 150 ++++---- .../designer/src/document/node/props/prop.ts | 54 ++- .../designer/src/document/node/props/props.ts | 28 +- .../src/document/node/transform-stage.ts | 2 +- packages/designer/src/document/selection.ts | 6 +- packages/designer/src/icons/clone.tsx | 2 +- packages/designer/src/icons/component.tsx | 2 +- packages/designer/src/icons/container.tsx | 2 +- packages/designer/src/icons/hidden.tsx | 2 +- packages/designer/src/icons/lock.tsx | 8 +- packages/designer/src/icons/page.tsx | 2 +- packages/designer/src/icons/remove.tsx | 2 +- packages/designer/src/icons/setting.tsx | 2 +- packages/designer/src/icons/unlock.tsx | 8 +- packages/designer/src/locale/index.ts | 2 +- .../designer/src/plugin/plugin-context.ts | 22 +- .../designer/src/plugin/plugin-manager.ts | 65 +++- packages/designer/src/plugin/plugin-types.ts | 11 +- packages/designer/src/plugin/plugin-utils.ts | 9 +- packages/designer/src/plugin/plugin.ts | 12 +- .../designer/src/project/project-view.tsx | 8 +- packages/designer/src/project/project.ts | 135 +++---- packages/designer/src/simulator.ts | 29 +- packages/designer/src/transducers/index.ts | 2 +- packages/designer/src/types/index.ts | 9 +- .../tests/bugs/prop-variable-jse.test.ts | 8 +- .../bem-tools/drag-resize-engine.test.ts | 16 +- .../bem-tools/manager.test.tsx | 12 +- .../tests/builtin-simulator/host.test.ts | 150 ++++---- .../tests/builtin-simulator/renderer.test.tsx | 3 +- .../tests/builtin-simulator/viewport.test.ts | 31 +- .../tests/designer/builtin-hotkey.test.ts | 35 +- .../designer/tests/designer/designer.test.ts | 85 +++-- .../designer/tests/designer/dragon.test.ts | 8 +- .../designer/tests/designer/scroller.test.ts | 34 +- .../designer/setting/setting-field.test.ts | 53 ++- .../setting/setting-prop-entry.test.ts | 15 +- .../setting/setting-top-entry.test.ts | 6 +- .../document-model/document-model.test.ts | 41 +-- .../tests/document/history/history.test.ts | 47 +-- .../document/node/modal-nodes-manager.test.ts | 4 +- .../tests/document/node/node-children.test.ts | 6 +- .../designer/tests/document/node/node.test.ts | 28 +- .../tests/document/node/props/prop.test.ts | 44 ++- .../tests/document/node/props/props.test.ts | 4 +- .../fixtures/component-metadata/abcgroup.ts | 10 +- .../fixtures/component-metadata/abcitem.ts | 10 +- .../fixtures/component-metadata/abcnode.ts | 10 +- .../fixtures/component-metadata/abcoption.ts | 10 +- .../fixtures/component-metadata/button.ts | 6 +- .../fixtures/component-metadata/dialog.ts | 2 +- .../tests/fixtures/component-metadata/div.ts | 10 +- .../fixtures/component-metadata/div10.ts | 2 +- .../tests/fixtures/component-metadata/div2.ts | 10 +- .../tests/fixtures/component-metadata/div3.ts | 12 +- .../tests/fixtures/component-metadata/div4.ts | 10 +- .../tests/fixtures/component-metadata/div5.ts | 10 +- .../tests/fixtures/component-metadata/div6.ts | 10 +- .../tests/fixtures/component-metadata/div7.ts | 10 +- .../tests/fixtures/component-metadata/div8.ts | 2 +- .../tests/fixtures/component-metadata/div9.ts | 2 +- .../tests/fixtures/component-metadata/form.ts | 2 +- .../fixtures/component-metadata/other.ts | 2 +- .../tests/fixtures/component-metadata/page.ts | 2 +- .../fixtures/component-metadata/page2.ts | 2 +- .../component-metadata/root-content.ts | 2 +- .../component-metadata/root-footer.ts | 2 +- .../component-metadata/root-header.ts | 2 +- .../tests/plugin/plugin-manager.test.ts | 8 +- .../tests/project/project-methods.test.ts | 56 +-- .../designer/tests/project/project.test.ts | 142 ++++---- packages/editor-core/package.json | 6 +- packages/editor-core/src/command.ts | 41 ++- packages/editor-core/src/config.ts | 37 +- packages/editor-core/src/di/setter.ts | 48 ++- packages/editor-core/src/editor.ts | 129 ++++--- packages/editor-core/src/event-bus.ts | 6 +- packages/editor-core/src/hotkey.ts | 58 +++- .../editor-core/src/intl/global-locale.ts | 14 +- packages/editor-core/src/intl/index.ts | 20 +- .../editor-core/src/utils/assets-transform.ts | 54 +-- packages/editor-core/src/utils/logger.ts | 2 +- packages/editor-core/src/utils/preference.ts | 4 +- .../editor-core/src/widgets/tip/help-tips.tsx | 4 +- .../src/widgets/tip/tip-handler.ts | 2 +- .../editor-core/src/widgets/tip/tip-item.tsx | 8 +- packages/editor-core/src/widgets/tip/tip.tsx | 4 +- .../editor-core/src/widgets/title/index.tsx | 18 +- packages/editor-skeleton/package.json | 10 +- packages/editor-skeleton/src/area.ts | 26 +- .../src/components/field/fields.tsx | 62 ++-- .../src/components/field/index.ts | 8 +- .../src/components/popup/index.tsx | 38 +- .../src/components/settings/main.ts | 4 +- .../src/components/settings/settings-pane.tsx | 169 +++++---- .../settings/settings-primary-pane.tsx | 79 +++-- .../src/components/stage-box/stage-box.tsx | 13 +- .../src/components/stage-box/stage-chain.ts | 2 +- .../src/components/stage-box/stage.tsx | 14 +- .../src/components/widget-views/index.tsx | 11 +- .../widget-views/panel-operation-row.tsx | 2 +- packages/editor-skeleton/src/icons/arrow.tsx | 5 +- packages/editor-skeleton/src/icons/clear.tsx | 2 +- .../editor-skeleton/src/icons/convert.tsx | 2 +- packages/editor-skeleton/src/icons/exit.tsx | 5 +- packages/editor-skeleton/src/icons/fix.tsx | 2 +- packages/editor-skeleton/src/icons/float.tsx | 2 +- packages/editor-skeleton/src/icons/slot.tsx | 7 +- .../editor-skeleton/src/icons/variable.tsx | 2 +- .../src/layouts/bottom-area.tsx | 15 +- .../editor-skeleton/src/layouts/left-area.tsx | 36 +- .../src/layouts/left-fixed-pane.tsx | 12 +- .../src/layouts/left-float-pane.tsx | 38 +- .../editor-skeleton/src/layouts/main-area.tsx | 2 +- .../src/layouts/right-area.tsx | 27 +- .../src/layouts/sub-top-area.tsx | 68 ++-- .../editor-skeleton/src/layouts/toolbar.tsx | 2 +- .../editor-skeleton/src/layouts/top-area.tsx | 54 +-- .../editor-skeleton/src/layouts/workbench.tsx | 10 +- packages/editor-skeleton/src/locale/index.ts | 2 +- .../editor-skeleton/src/register-defaults.ts | 3 +- packages/editor-skeleton/src/skeleton.ts | 97 ++++-- .../src/transducers/addon-combine.ts | 18 +- .../src/transducers/parse-func.ts | 14 +- .../src/transducers/parse-props.ts | 29 +- packages/editor-skeleton/src/types.ts | 5 +- packages/editor-skeleton/src/widget/dock.ts | 6 +- .../editor-skeleton/src/widget/panel-dock.ts | 4 +- packages/editor-skeleton/src/widget/panel.ts | 20 +- packages/editor-skeleton/src/widget/stage.ts | 2 +- packages/editor-skeleton/src/widget/utils.ts | 12 +- .../src/widget/widget-container.ts | 6 +- packages/editor-skeleton/src/widget/widget.ts | 8 +- packages/engine/README.md | 32 +- packages/engine/build.umd.json | 11 +- packages/engine/package.json | 22 +- packages/engine/src/engine-core.ts | 37 +- .../src/inner-plugins/builtin-hotkey.ts | 28 +- .../inner-plugins/component-meta-parser.ts | 2 +- .../src/inner-plugins/default-context-menu.ts | 24 +- .../inner-plugins/default-panel-registry.tsx | 15 +- .../src/inner-plugins/setter-registry.ts | 4 +- packages/engine/src/locale/index.ts | 2 +- packages/engine/src/modules/classes.ts | 5 +- packages/engine/src/modules/designer-types.ts | 4 +- packages/engine/src/modules/live-editing.ts | 4 +- packages/engine/src/modules/lowcode-types.ts | 2 +- .../engine/src/modules/shell-model-factory.ts | 14 +- packages/engine/src/modules/skeleton-types.ts | 2 +- packages/engine/src/modules/symbols.ts | 2 +- packages/ignitor/build.json | 12 +- packages/ignitor/package.json | 2 +- .../__tests__/node-command.test.ts | 97 ++++-- packages/plugin-command/package.json | 6 +- .../plugin-command/src/history-command.ts | 2 +- packages/plugin-command/src/index.ts | 4 +- packages/plugin-command/src/node-command.ts | 70 ++-- packages/plugin-designer/package.json | 8 +- packages/plugin-designer/src/index.tsx | 9 +- packages/plugin-outline-pane/package.json | 6 +- .../src/controllers/pane-controller.ts | 75 +++- .../src/controllers/tree-master.ts | 28 +- .../src/controllers/tree-node.ts | 14 +- .../src/controllers/tree.ts | 4 +- .../src/helper/dwell-timer.ts | 14 +- .../src/helper/indent-track.ts | 10 +- .../src/icons/arrow-right.tsx | 2 +- .../plugin-outline-pane/src/icons/cond.tsx | 2 +- .../plugin-outline-pane/src/icons/delete.tsx | 2 +- .../src/icons/eye-close.tsx | 2 +- .../plugin-outline-pane/src/icons/eye.tsx | 2 +- .../plugin-outline-pane/src/icons/filter.tsx | 8 +- .../plugin-outline-pane/src/icons/lock.tsx | 2 +- .../plugin-outline-pane/src/icons/loop.tsx | 2 +- .../plugin-outline-pane/src/icons/outline.tsx | 3 +- .../src/icons/radio-active.tsx | 3 +- .../plugin-outline-pane/src/icons/radio.tsx | 3 +- .../plugin-outline-pane/src/icons/setting.tsx | 2 +- .../plugin-outline-pane/src/icons/unlock.tsx | 2 +- packages/plugin-outline-pane/src/index.tsx | 2 +- .../plugin-outline-pane/src/views/pane.tsx | 39 ++- .../src/views/tree-branches.tsx | 43 ++- .../src/views/tree-node.tsx | 46 +-- .../src/views/tree-title.tsx | 107 ++++-- .../plugin-outline-pane/src/views/tree.tsx | 14 +- packages/react-renderer/demo/compose.md | 12 +- packages/react-renderer/demo/dataSource.md | 12 +- packages/react-renderer/demo/i18n.md | 16 +- packages/react-renderer/demo/list.md | 12 +- packages/react-renderer/demo/table.md | 12 +- packages/react-renderer/package.json | 4 +- packages/react-renderer/src/index.ts | 17 +- .../react-simulator-renderer/build.umd.json | 2 +- .../react-simulator-renderer/package.json | 10 +- packages/react-simulator-renderer/src/host.ts | 2 +- .../src/renderer-view.tsx | 45 ++- .../react-simulator-renderer/src/renderer.ts | 129 ++++--- .../src/utils/get-client-rects.ts | 2 +- .../src/utils/react-find-dom-nodes.ts | 2 +- packages/renderer-core/package.json | 8 +- packages/renderer-core/src/hoc/index.tsx | 2 +- packages/renderer-core/src/hoc/leaf.tsx | 164 +++++---- packages/renderer-core/src/renderer/base.tsx | 328 ++++++++++++------ packages/renderer-core/src/renderer/page.tsx | 2 +- .../renderer-core/src/renderer/renderer.tsx | 98 ++++-- packages/renderer-core/src/types/index.ts | 110 +++--- packages/renderer-core/src/utils/common.ts | 62 +++- .../renderer-core/src/utils/data-helper.ts | 57 +-- .../renderer-core/src/utils/is-use-loop.ts | 9 +- packages/renderer-core/src/utils/logger.ts | 4 +- packages/shell/package.json | 14 +- packages/shell/src/api/canvas.ts | 17 +- packages/shell/src/api/command.ts | 16 +- packages/shell/src/api/common.tsx | 52 +-- packages/shell/src/api/commonUI.tsx | 49 ++- packages/shell/src/api/config.ts | 8 +- packages/shell/src/api/event.ts | 14 +- packages/shell/src/api/hotkey.ts | 19 +- packages/shell/src/api/logger.ts | 7 +- packages/shell/src/api/material.ts | 25 +- packages/shell/src/api/plugins.ts | 12 +- packages/shell/src/api/project.ts | 30 +- packages/shell/src/api/setters.ts | 19 +- packages/shell/src/api/simulator-host.ts | 10 +- packages/shell/src/api/skeleton.ts | 51 ++- packages/shell/src/api/workspace.ts | 37 +- .../shell/src/components/context-menu.tsx | 93 ++--- packages/shell/src/model/active-tracker.ts | 10 +- packages/shell/src/model/clipboard.ts | 12 +- packages/shell/src/model/component-meta.ts | 28 +- packages/shell/src/model/condition-group.ts | 8 +- packages/shell/src/model/detecting.ts | 6 +- packages/shell/src/model/document-model.ts | 91 +++-- packages/shell/src/model/drag-object.ts | 9 +- packages/shell/src/model/dragon.ts | 37 +- packages/shell/src/model/drop-location.ts | 10 +- packages/shell/src/model/editor-view.ts | 4 +- packages/shell/src/model/history.ts | 7 +- packages/shell/src/model/locate-event.ts | 6 +- .../shell/src/model/modal-nodes-manager.ts | 8 +- packages/shell/src/model/node-children.ts | 11 +- packages/shell/src/model/node.ts | 55 ++- packages/shell/src/model/plugin-instance.ts | 4 +- packages/shell/src/model/prop.ts | 11 +- packages/shell/src/model/props.ts | 11 +- packages/shell/src/model/resource.ts | 6 +- packages/shell/src/model/selection.ts | 4 +- packages/shell/src/model/setting-field.ts | 6 +- packages/shell/src/model/setting-top-entry.ts | 10 +- packages/shell/src/model/simulator-render.ts | 6 +- packages/shell/src/model/skeleton-item.ts | 6 +- packages/shell/src/model/window.ts | 12 +- packages/types/package.json | 2 +- .../src/deprecated/isActionContentObject.ts | 6 +- packages/types/src/deprecated/isCustomView.ts | 2 +- packages/types/src/deprecated/isDOMText.ts | 2 +- .../types/src/deprecated/isDynamicSetter.ts | 2 +- packages/types/src/deprecated/isI18nData.ts | 3 +- packages/types/src/deprecated/isJSBlock.ts | 2 +- .../types/src/deprecated/isJSExpression.ts | 2 +- packages/types/src/deprecated/isJSFunction.ts | 2 +- packages/types/src/deprecated/isJSSlot.ts | 2 +- .../src/deprecated/isLowCodeComponentType.ts | 11 +- packages/types/src/deprecated/isNodeSchema.ts | 2 +- .../types/src/deprecated/isPlainObject.ts | 8 +- .../src/deprecated/isProCodeComponentType.ts | 11 +- .../types/src/deprecated/isProjectSchema.ts | 2 +- packages/types/src/deprecated/isReactClass.ts | 8 +- .../types/src/deprecated/isReactComponent.ts | 2 +- .../types/src/deprecated/isSetterConfig.ts | 9 +- .../types/src/deprecated/isTitleConfig.ts | 2 +- packages/types/src/shell/api/material.ts | 31 +- packages/types/src/shell/api/workspace.ts | 24 +- .../types/src/shell/model/document-model.ts | 60 +++- packages/utils/package.json | 4 +- packages/utils/src/asset.ts | 80 ++++- packages/utils/src/build-components.ts | 33 +- packages/utils/src/check-prop-types.ts | 29 +- packages/utils/src/check-types/index.ts | 4 +- .../check-types/is-action-content-object.ts | 2 +- .../src/check-types/is-basic-prop-type.ts | 4 +- .../src/check-types/is-component-schema.ts | 4 +- .../utils/src/check-types/is-custom-view.ts | 2 +- .../src/check-types/is-drag-any-object.ts | 8 +- .../check-types/is-drag-node-data-object.ts | 4 +- .../src/check-types/is-drag-node-object.ts | 12 +- .../src/check-types/is-dynamic-setter.ts | 2 +- .../utils/src/check-types/is-i18n-data.ts | 2 +- .../utils/src/check-types/is-isfunction.ts | 2 +- packages/utils/src/check-types/is-jsblock.ts | 2 +- .../utils/src/check-types/is-jsexpression.ts | 2 +- packages/utils/src/check-types/is-jsslot.ts | 2 +- .../is-location-children-detail.ts | 7 +- .../utils/src/check-types/is-location-data.ts | 4 +- .../check-types/is-lowcode-component-type.ts | 7 +- .../check-types/is-lowcode-project-schema.ts | 6 +- .../utils/src/check-types/is-node-schema.ts | 2 +- packages/utils/src/check-types/is-node.ts | 4 +- .../check-types/is-procode-component-type.ts | 6 +- .../src/check-types/is-project-schema.ts | 2 +- .../src/check-types/is-required-prop-type.ts | 16 +- .../utils/src/check-types/is-setter-config.ts | 2 +- .../utils/src/check-types/is-setting-field.ts | 2 +- .../utils/src/check-types/is-title-config.ts | 2 +- packages/utils/src/context-menu.tsx | 105 +++--- packages/utils/src/create-icon.tsx | 8 +- packages/utils/src/misc.ts | 26 +- packages/utils/src/node-helper.ts | 9 +- packages/utils/src/schema.ts | 14 +- packages/utils/src/transaction-manager.ts | 17 +- packages/utils/src/workspace.tsx | 22 +- .../src/check-types/is-custom-view.test.tsx | 2 +- .../check-types/is-drag-any-object.test.ts | 2 +- .../is-drag-node-data-object.test.ts | 2 +- .../check-types/is-drag-node-object.test.ts | 2 +- .../test/src/check-types/is-i18n-data.test.ts | 2 +- .../test/src/check-types/is-jsslot.test.ts | 2 +- .../is-location-children-detail.test.ts | 5 +- .../src/check-types/is-location-data.test.ts | 2 +- .../is-lowcode-component-type.test.ts | 4 +- .../src/check-types/is-project-schema.test.ts | 12 +- packages/utils/test/src/misc.test.ts | 24 +- packages/utils/test/src/schema.test.ts | 25 +- .../test/src/transaction-manager.test.ts | 2 +- packages/workspace/package.json | 12 +- .../workspace/src/context/base-context.ts | 36 +- .../workspace/src/context/view-context.ts | 26 +- .../workspace/src/inner-plugins/webview.tsx | 7 +- packages/workspace/src/layouts/workbench.tsx | 61 ++-- packages/workspace/src/resource-type.ts | 10 +- packages/workspace/src/resource.ts | 49 ++- packages/workspace/src/view/editor-view.tsx | 19 +- packages/workspace/src/view/resource-view.tsx | 37 +- packages/workspace/src/view/window-view.tsx | 22 +- packages/workspace/src/window.ts | 33 +- packages/workspace/src/workspace.ts | 133 +++++-- scripts/build.sh | 34 +- scripts/setup-for-test.sh | 6 +- scripts/start.js | 11 +- scripts/start.sh | 2 +- scripts/sync.sh | 28 +- 538 files changed, 6364 insertions(+), 4276 deletions(-) diff --git a/docs/docs/api/common.md b/docs/docs/api/common.md index c278bf2ad8..1ce872844b 100644 --- a/docs/docs/api/common.md +++ b/docs/docs/api/common.md @@ -3,26 +3,32 @@ title: common - 通用 API sidebar_position: 10 --- -> **@types** [IPublicApiCommon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts)
-> **@since** v1.0.0 - +> **@types** [IPublicApiCommon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts)
> **@since** v1.0.0 ## 模块简介 + 通用模块里包含除了几大核心模块 API 之外的所有 API,比如通用 utils、面板扩展相关 等。 + > 高能预警:之所以叫 skeletonCabin / designerCabin 跟兼容上一个版本的引擎有关系。若有必要,后面将用更有意义的命名空间来组织这些 API。 ## 变量 + #### utils + 通用 utils,详见下方方法签名 相关类型:[IPublicApiCommonUtils](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts) #### skeletonCabin + 面板扩展相关,详见下方方法签名 ## 方法 + ### utils + #### isNodeSchema + 是否为合法的 schema 结构 ```typscript @@ -37,6 +43,7 @@ isNodeSchema(data: any): boolean; ``` #### isFormEvent + 是否为表单事件类型 ```typescript @@ -50,7 +57,9 @@ isFormEvent(e: KeyboardEvent | MouseEvent): boolean; ``` #### getNodeSchemaById + 从 schema 结构中查找指定 id 节点 + ```typescript /** * 从 schema 结构中查找指定 id 节点 @@ -64,9 +73,11 @@ getNodeSchemaById( nodeId: string, ): IPublicTypeNodeSchema | undefined; ``` + 相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) #### executeTransaction + 批处理事务,用于优化特定场景的性能 ```typescript @@ -80,12 +91,14 @@ getNodeSchemaById( */ executeTransaction(fn: () => void, type: IPublicEnumTransitionType): void; ``` + **@since v1.0.16** **示例** + ```typescript -import { common } from '@alilc/lowcode-engine'; -import { IPublicEnumTransitionType } from '@alilc/lowcode-types'; +import { common } from '@lce/lowcode-engine'; +import { IPublicEnumTransitionType } from '@lce/lowcode-types'; common.utils.startTransaction(() => { node1.setProps(); @@ -107,7 +120,9 @@ getConvertedExtraKey(key: string): string **@since v1.0.17** #### createIntl + i18n 相关工具 + ```typescript /** * i18n 相关工具 @@ -135,7 +150,7 @@ createIntl(instance: string | object): { **示例** ```typescript -import { common } from '@alilc/lowcode-engine'; +import { common } from '@lce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -143,7 +158,6 @@ const { intl, getLocale, setLocale } = common.utils.createIntl({ 'en-US': enUS, 'zh-CN': zhCN, }); - ``` #### intl @@ -158,12 +172,15 @@ intl(data: IPublicTypeI18nData | string, params?: object): string; ``` **示例** + ``` const title = common.utils.intl(node.title) ``` ### skeletonCabin + #### Workbench + 编辑器框架 View ```typescript diff --git a/docs/docs/api/config.md b/docs/docs/api/config.md index 414cfc979f..3a7ea4ae20 100644 --- a/docs/docs/api/config.md +++ b/docs/docs/api/config.md @@ -3,15 +3,16 @@ title: config - 配置 API sidebar_position: 5 --- -> **@types** [IPublicModelEngineConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/engine-config.ts)
-> **@since** v1.0.0 - +> **@types** [IPublicModelEngineConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/engine-config.ts)
> **@since** v1.0.0 ## 模块简介 + 配置模块,负责配置的读、写等操作。 ## 方法 + ### get + 获取指定 key 的值 ```typescript @@ -24,14 +25,18 @@ sidebar_position: 5 */ get(key: string, defaultValue?: any): any; ``` + **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; config.get('keyA', true); config.get('keyB', { a: 1 }); ``` + ### set + 设置指定 key 的值 ```typescript @@ -43,14 +48,17 @@ config.get('keyB', { a: 1 }); */ set(key: string, value: any): void; ``` + **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; config.set('keyC', 1); ``` ### has + 判断指定 key 是否有值 ```typescript @@ -64,13 +72,15 @@ has(key: string): boolean; ``` **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; config.has('keyD'); ``` ### setConfig + 批量设值,set 的对象版本 ```typescript @@ -81,14 +91,17 @@ config.has('keyD'); */ setConfig(config: { [key: string]: any }): void; ``` + **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; config.setConfig({ keyA: false, keyB: 2 }); ``` ### getPreference + 获取全局 Preference 管理器,用于管理全局浏览器侧用户 Preference,如 Panel 是否钉住 ```typescript @@ -101,6 +114,7 @@ config.setConfig({ keyA: false, keyB: 2 }); */ getPreference(): IPublicModelPreference; ``` + 相关类型:[IPublicModelPreference](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/preference.ts) **@since v1.1.0** @@ -108,21 +122,21 @@ getPreference(): IPublicModelPreference; 示例 ```javascript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; const panelName = 'outline-master-pane'; // 设置大纲树面板钉住,在大纲树下次重新打开时生效 -config.getPreference().set(`${panelName}-pinned-status-isFloat`, false, 'skeleton') +config.getPreference().set(`${panelName}-pinned-status-isFloat`, false, 'skeleton'); ``` ## 事件 ### onceGot + 获取指定 key 的值,若此时还未赋值,则等待,若已有值,则直接返回值 注:此函数返回 Promise 实例 - ```typescript /** * 获取指定 key 的值,若此时还未赋值,则等待,若已有值,则直接返回值 @@ -134,11 +148,13 @@ config.getPreference().set(`${panelName}-pinned-status-isFloat`, false, 'skeleto */ onceGot(key: string): Promise; ``` + **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; -config.onceGot('keyA').then(value => { +config.onceGot('keyA').then((value) => { console.log(`The value of keyA is ${value}`); }); @@ -147,6 +163,7 @@ const value = await config.onceGot('keyA'); ``` ### onGot + 获取指定 key 的值,函数回调模式,若多次被赋值,回调会被多次调用 ```typescript @@ -160,9 +177,11 @@ const value = await config.onceGot('keyA'); */ onGot(key: string, fn: (data: any) => void): () => void; ``` + **示例** + ```typescript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; config.onGot('keyA', (value) => { console.log(`The value of keyA is ${value}`); @@ -170,4 +189,4 @@ config.onGot('keyA', (value) => { const.set('keyA', 1); // 'The value of keyA is 1' const.set('keyA', 2); // 'The value of keyA is 2' -``` \ No newline at end of file +``` diff --git a/docs/docs/api/configOptions.md b/docs/docs/api/configOptions.md index 5d6e8d7abb..5a158659c5 100644 --- a/docs/docs/api/configOptions.md +++ b/docs/docs/api/configOptions.md @@ -10,7 +10,7 @@ sidebar_position: 5 #### init API ```javascript -import { init } from '@alilc/lowcode-engine'; +import { init } from '@lce/lowcode-engine'; init(document.getElementById('engine'), { enableCondition: false, @@ -22,9 +22,9 @@ init(document.getElementById('engine'), { #### config API ```javascript -import { config } from '@alilc/lowcode-engine'; +import { config } from '@lce/lowcode-engine'; -config.set('enableCondition', false) +config.set('enableCondition', false); ``` [**config api**](./config) @@ -33,7 +33,6 @@ config.set('enableCondition', false) > 源码详见 [IPublicTypeEngineOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts) - ### 画布 #### locale - 语言 @@ -73,7 +72,6 @@ config.set('enableCondition', false) 与 react-renderer 的 appHelper 一致,https://lowcode-engine.cn/site/docs/guide/expand/runtime/renderer#apphelper - #### enableCondition `@type {boolean}` @@ -159,8 +157,8 @@ config.set('enableCondition', false) '.next-calendar-header', '.next-calendar-table', '.editor-container', // 富文本组件 - ] -} + ]; +}; ``` #### enableCanvasLock @@ -197,7 +195,6 @@ config.set('enableCondition', false) 关闭拖拽组件时的虚线响应,性能考虑 - #### disableDefaultSettingPanel `@type {boolean}` `@default {false}` @@ -303,4 +300,3 @@ customPluginTransducer: async (originPlugin: IPublicTypePlugin, ctx: IPublicMode `@type {object}` 大纲树插件面板默认 props - diff --git a/docs/docs/api/event.md b/docs/docs/api/event.md index c2e86f7106..83d20829ed 100644 --- a/docs/docs/api/event.md +++ b/docs/docs/api/event.md @@ -3,15 +3,16 @@ title: event - 事件 API sidebar_position: 10 --- -> **@types** [IPublicApiEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/event.ts)
-> **@since** v1.0.0 - +> **@types** [IPublicApiEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/event.ts)
> **@since** v1.0.0 ## 模块简介 + 负责事件处理 API,支持自定义监听事件、触发事件。 ## 方法 + ### on + 监听事件 ```typescript @@ -23,9 +24,11 @@ sidebar_position: 10 */ on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; ``` + 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### prependListener + 监听事件,会在其他回调函数之前执行 ```typescript @@ -36,9 +39,11 @@ on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; */ prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; ``` + 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### off + 取消监听事件 ```typescript @@ -52,6 +57,7 @@ off(event: string, listener: (...args: any[]) => void): void; ``` ### emit + 触发事件 ```typescript @@ -66,6 +72,7 @@ emit(event: string, ...args: any[]): void; ``` ## 使用示例 + ### 事件触发和监听 ```typescript @@ -80,9 +87,11 @@ event.emit(eventName); ``` ### setter 和 setter/plugin 之间的联动 + 在 A setter 中进行事件注册: + ```typescript -import { event } from '@alilc/lowcode-engine'; +import { event } from '@lce/lowcode-engine'; const SETTER_NAME = 'SetterA'; @@ -90,28 +99,30 @@ class SetterA extends React.Component { componentDidMount() { // 这里由于面板上会有多个 setter,使用 field.id 来标记 setter 名 this.emitEventName = `${SETTER_NAME}-${this.props.field.id}`; - event.on(`common:${this.emitEventName}.bindEvent`, this.bindEvent) + event.on(`common:${this.emitEventName}.bindEvent`, this.bindEvent); } bindEvent = (eventName) => { // do someting - } + }; componentWillUnmount() { - // setter 是以实例为单位的,每个 setter 注销的时候需要把事件也注销掉,避免事件池过多 - event.off(`common:${this.emitEventName}.bindEvent`, this.bindEvent) + // setter 是以实例为单位的,每个 setter 注销的时候需要把事件也注销掉,避免事件池过多 + event.off(`common:${this.emitEventName}.bindEvent`, this.bindEvent); } } ``` + 在 B setter 中触发事件,来完成通信: + ```typescript -import { event } from '@alilc/lowcode-engine'; +import { event } from '@lce/lowcode-engine'; class SetterB extends React.Component { bindFunction = () => { const { field, value } = this.props; // 这里展示的和插件进行通信,事件规则是插件名 + 方法 event.emit('eventBindDialog.openDialog', field.name, this.emitEventName); - } + }; } ``` diff --git a/docs/docs/api/hotkey.md b/docs/docs/api/hotkey.md index be6a3033d0..4c4b7f72a5 100644 --- a/docs/docs/api/hotkey.md +++ b/docs/docs/api/hotkey.md @@ -1,16 +1,18 @@ --- -title: hotkey - 快捷键 API +title: hotkey - 快捷键 API sidebar_position: 10 --- -> **@types** [IPublicApiHotkey](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/hotkey.ts)
-> **@since** v1.0.0 +> **@types** [IPublicApiHotkey](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/hotkey.ts)
> **@since** v1.0.0 ## 模块简介 + 绑定快捷键 API,可以自定义项目快捷键使用。 ## 方法 + ### bind + 绑定快捷键 ```typescript @@ -28,13 +30,16 @@ bind( action?: string, ): IPublicTypeDisposable; ``` + 相关 types + - [IPublicTypeHotkeyCallback](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/hotkey-callback.ts) - [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) - ## 使用示例 + ### 基础示例 + ```typescript hotkey.bind('command+s', (e) => { e.preventDefault(); @@ -43,6 +48,7 @@ hotkey.bind('command+s', (e) => { ``` ### 同时绑定多个快捷键 + ```typescript hotkey.bind(['command+s', 'command+c'], (e) => { e.preventDefault(); @@ -51,10 +57,9 @@ hotkey.bind(['command+s', 'command+c'], (e) => { ``` ### 保存快捷键配置 + ```typescript -import { - hotkey, -} from '@alilc/lowcode-engine'; +import { hotkey } from '@lce/lowcode-engine'; function saveSchema(schema) { // 保存 schema 相关操作 @@ -70,7 +75,7 @@ const saveSampleHotKey = (ctx: IPublicModelPluginContext) => { }); }, }; -} +}; saveSampleHotKey.pluginName = 'saveSampleHotKey'; plugins.register(saveSampleHotKey); diff --git a/docs/docs/api/init.md b/docs/docs/api/init.md index dd84d9c00f..e21a4aff26 100644 --- a/docs/docs/api/init.md +++ b/docs/docs/api/init.md @@ -5,24 +5,28 @@ sidebar_position: 0 > **@since** v1.0.0 - ## 模块简介 + 提供 init 等方法 + ## 方法 + #### init + 初始化引擎 **方法定义** + ```typescript -function init(container?: Element, options?: IPublicTypeEngineOptions): void +function init(container?: Element, options?: IPublicTypeEngineOptions): void; ``` [**初始化引擎配置参数列表**](./configOptions) - ## 使用示例 + ```typescript -import { init } from '@alilc/lowcode-engine'; +import { init } from '@lce/lowcode-engine'; init(document.getElementById('engine'), { enableCondition: false, @@ -30,8 +34,9 @@ init(document.getElementById('engine'), { ``` ### 默认打开移动端画布 + ```typescript -import { init } from '@alilc/lowcode-engine'; +import { init } from '@lce/lowcode-engine'; init({ device: 'mobile', @@ -39,8 +44,9 @@ init({ ``` ### 使用 utils 第三方工具扩展 + ```json -import { init } from '@alilc/lowcode-engine'; +import { init } from '@lce/lowcode-engine'; init({ device: 'mobile', diff --git a/docs/docs/api/logger.md b/docs/docs/api/logger.md index 38d986258b..1c8ad3bfa3 100644 --- a/docs/docs/api/logger.md +++ b/docs/docs/api/logger.md @@ -3,12 +3,12 @@ title: logger - 日志 API sidebar_position: 10 --- -> **@types** [IPublicApiLogger](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/logger.ts)
-> **@since** v1.0.0 - +> **@types** [IPublicApiLogger](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/logger.ts)
> **@since** v1.0.0 ## 模块简介 + 引擎日志模块,可以按照 **日志级别 **和** 业务类型 **两个维度来定制日志。 + > 注:日志级别可以通过 url query 动态调整,详见下方[查看示例](#查看示例)。
> 参考 [zen-logger](https://web.npm.alibaba-inc.com/package/zen-logger) 实现进行封装 @@ -46,7 +46,7 @@ log(...args: any | any[]): void; ## 输出示例 ```typescript -import { Logger } from '@alilc/lowcode-utils'; +import { Logger } from '@lce/lowcode-utils'; const logger = new Logger({ level: 'warn', bizName: 'myPlugin:moduleA' }); logger.log('Awesome Low-Code Engine'); ``` @@ -56,7 +56,7 @@ logger.log('Awesome Low-Code Engine'); 开启查看方式: - 方式 1:所有 logger 创建时会有默认输出的 level, 默认为 warn , 即只展示 warn , error -- 方式 2:url 上追加 __logConf__进行开启,示例如下 +- 方式 2:url 上追加 **logConf**进行开启,示例如下 ``` https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=warn diff --git a/docs/docs/api/material.md b/docs/docs/api/material.md index 0e09441275..52ce4875fa 100644 --- a/docs/docs/api/material.md +++ b/docs/docs/api/material.md @@ -3,16 +3,18 @@ title: material - 物料 API sidebar_position: 10 --- -> **@types** [IPublicApiMaterial](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/material.ts)
-> **@since** v1.0.0 - +> **@types** [IPublicApiMaterial](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/material.ts)
> **@since** v1.0.0 ## 模块简介 + 负责物料相关的 API,包括资产包、设计器辅助层、物料元数据和物料元数据管道函数。 ## 变量 + ### componentsMap + 获取组件 map 结构 + ```typescript /** * 获取组件 map 结构 @@ -20,12 +22,15 @@ sidebar_position: 10 */ get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType | object } ; ``` + 相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) ## 方法 ### 资产包 + #### setAssets + 设置「[资产包](/site/docs/specs/lowcode-spec#2-协议结构)」结构 ```typescript @@ -36,42 +41,49 @@ get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType | */ setAssets(assets: IPublicTypeAssetsJson): void; ``` -相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) +相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** 直接在项目中引用 npm 包 + ```javascript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; import assets from '@alilc/mc-assets-/assets.json'; material.setAssets(assets); ``` 通过接口动态引入资产包 + ```typescript -import { material, plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { material, plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; // 动态加载 assets -plugins.register((ctx: IPublicModelPluginContext) => { - return { - name: 'ext-assets', - async init() { - try { - // 将下述链接替换为您的物料描述地址即可。 - const res = await window.fetch('https://fusion.alicdn.com/assets/default@0.1.95/assets.json'); - const assets = await res.text(); - material.setAssets(assets); - } catch (err) { - console.error(err); - }; - }, - }; -}).catch(err => console.error(err)); +plugins + .register((ctx: IPublicModelPluginContext) => { + return { + name: 'ext-assets', + async init() { + try { + // 将下述链接替换为您的物料描述地址即可。 + const res = await window.fetch( + 'https://fusion.alicdn.com/assets/default@0.1.95/assets.json', + ); + const assets = await res.text(); + material.setAssets(assets); + } catch (err) { + console.error(err); + } + }, + }; + }) + .catch((err) => console.error(err)); ``` #### getAssets + 获取「资产包」结构 ```typescript @@ -82,17 +94,19 @@ plugins.register((ctx: IPublicModelPluginContext) => { */ getAssets(): IPublicTypeAssetsJson; ``` -相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) +相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.getAssets(); ``` #### loadIncrementalAssets + 加载增量的「资产包」结构,该增量包会与原有的合并 ```typescript @@ -104,11 +118,13 @@ material.getAssets(); */ loadIncrementalAssets(incrementalAssets: IPublicTypeAssetsJson): Promise; ``` + 相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; import assets1 from '@alilc/mc-assets-/assets.json'; import assets2 from '@alilc/mc-assets-/assets.json'; @@ -119,20 +135,22 @@ material.loadIncrementalAssets(assets2); 更新特定物料的描述文件 ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.loadIncrementalAssets({ version: '', components: [ - { - "componentName": 'Button', - "props": [{ name: 'new', title: 'new', propType: 'string' }] - } + { + componentName: 'Button', + props: [{ name: 'new', title: 'new', propType: 'string' }], + }, ], -}) +}); ``` ### 设计器辅助层 + #### addBuiltinComponentAction + 在设计器辅助层增加一个扩展 action ```typescript @@ -143,30 +161,33 @@ material.loadIncrementalAssets({ */ addBuiltinComponentAction(action: IPublicTypeComponentAction): void; ``` -相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) +相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) **示例** 新增设计扩展位,并绑定事件 + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.addBuiltinComponentAction({ name: 'myIconName', content: { - icon: () => 'x', - title: 'hover title', - action(node) { - console.log('myIconName 扩展位被点击'); - } + icon: () => 'x', + title: 'hover title', + action(node) { + console.log('myIconName 扩展位被点击'); + }, }, important: true, condition: true, }); ``` + ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01jDbN7B1KfWVzJ16tw_!!6000000001191-2-tps-230-198.png) #### removeBuiltinComponentAction + 移除设计器辅助层的指定 action ```typescript @@ -187,14 +208,15 @@ removeBuiltinComponentAction(name: string): void; - unlock:解锁,可编辑 **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.removeBuiltinComponentAction('myIconName'); ``` - #### modifyBuiltinComponentAction + 修改已有的设计器辅助层的指定 action ```typescript @@ -209,8 +231,8 @@ modifyBuiltinComponentAction( handle: (action: IPublicTypeComponentAction) => void, ): void; ``` -相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) +相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) ##### 内置设计器辅助 name @@ -220,24 +242,24 @@ modifyBuiltinComponentAction( - lock:锁定,不可编辑 - unlock:解锁,可编辑 - - **示例** 给原始的 remove 扩展时间添加执行前后的日志 + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.modifyBuiltinComponentAction('remove', (action) => { const originAction = action.content.action; action.content.action = (node) => { - console.log('before reomve!'); + console.log('before reomve!'); originAction(node); console.log('after remove!'); - } + }; }); ``` ### 右键菜单项 + #### addContextMenuOption 添加右键菜单项 @@ -253,7 +275,7 @@ addContextMenuOption(action: IPublicTypeContextMenuAction): void; 示例 ```typescript -import { IPublicEnumContextMenuType } from '@alilc/lowcode-types'; +import { IPublicEnumContextMenuType } from '@lce/lowcode-types'; material.addContextMenuOption({ name: 'parentItem', @@ -309,19 +331,20 @@ adjustContextMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTy material.adjustContextMenuLayout((actions: IPublicTypeContextMenuAction) => { const names = ['a', 'b']; const newActions = []; - actions.forEach(d => { + actions.forEach((d) => { newActions.push(d); if (names.include(d.name)) { - newActions.push({ type: 'separator' }) + newActions.push({ type: 'separator' }); } }); - return newActions -}) + return newActions; +}); ``` ### 物料元数据 #### getComponentMeta + 获取指定名称的物料元数据 ```typescript @@ -333,11 +356,13 @@ material.adjustContextMenuLayout((actions: IPublicTypeContextMenuAction) => { */ getComponentMeta(componentName: string): IPublicModelComponentMeta | null; ``` + 相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.getComponentMeta('Input'); ``` @@ -354,11 +379,13 @@ material.getComponentMeta('Input'); */ getComponentMetasMap(): Map; ``` + 相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.getComponentMetasMap(); ``` @@ -374,7 +401,9 @@ material.getComponentMetasMap(); ``` ### 物料元数据管道函数 + #### registerMetadataTransducer + 注册物料元数据管道函数,在物料信息初始化时执行。 ```typescript @@ -395,8 +424,9 @@ registerMetadataTransducer( **示例** 给每一个组件的配置添加高级配置面板,其中有一个是否渲染配置项 + ```typescript -import { material } from '@alilc/lowcode-engine' +import { material } from '@lce/lowcode-engine'; function addonCombine(metadata: TransformedComponentMetadata) { const { componentName, configure = {} } = metadata; @@ -441,29 +471,34 @@ material.registerMetadataTransducer(addonCombine, 1, 'parse-func'); 删除高级 Tab ```typescript -import { material } from '@alilc/lowcode-engine'; -import { IPublicTypeFieldConfig } from '@alilc/lowcode-types'; +import { material } from '@lce/lowcode-engine'; +import { IPublicTypeFieldConfig } from '@lce/lowcode-types'; -material.registerMetadataTransducer((transducer) => { - const combined: IPublicTypeFieldConfig[] = []; +material.registerMetadataTransducer( + (transducer) => { + const combined: IPublicTypeFieldConfig[] = []; - transducer.configure.combined?.forEach(d => { - if (d.name !== '#advanced') { - combined.push(d); - } - }); + transducer.configure.combined?.forEach((d) => { + if (d.name !== '#advanced') { + combined.push(d); + } + }); - return { - ...transducer, - configure: { - ...transducer.configure, - combined, - } - }; -}, 111, 'parse-func'); + return { + ...transducer, + configure: { + ...transducer.configure, + combined, + }, + }; + }, + 111, + 'parse-func', +); ``` #### getRegisteredMetadataTransducers + 获取所有物料元数据管道函数 ```typescript @@ -476,13 +511,17 @@ getRegisteredMetadataTransducers(): IPublicTypeMetadataTransducer[]; ``` **示例** + ```typescript -import { material } from '@alilc/lowcode-engine' +import { material } from '@lce/lowcode-engine'; material.getRegisteredMetadataTransducers(); ``` + ## 事件 + ### onChangeAssets + 监听 assets 变化的事件 ```typescript @@ -497,8 +536,9 @@ onChangeAssets(fn: () => void): IPublicTypeDisposable; 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) **示例** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; material.onChangeAssets(() => { console.log('asset changed'); diff --git a/docs/docs/api/model/dragon.md b/docs/docs/api/model/dragon.md index c6feca4329..9e7e287d6c 100644 --- a/docs/docs/api/model/dragon.md +++ b/docs/docs/api/model/dragon.md @@ -2,16 +2,17 @@ title: Dragon sidebar_position: 99 --- -> **@types** [IPublicModelDragon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts)
-> **@since** v1.0.0 + +> **@types** [IPublicModelDragon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts)
> **@since** v1.0.0 ## 基本介绍 拖拽对象 ### 对应接口 + ```typescript -import { IPublicModelDragon } from '@alilc/lowcode-types'; +import { IPublicModelDragon } from '@lce/lowcode-types'; ``` ### 支持版本 @@ -50,6 +51,7 @@ onDragstart(func: (e: IPublicModelLocateEvent) => any): () => void; ### onDrag 绑定 drag 事件 + ```typescript /** * 绑定 drag 事件 @@ -93,6 +95,7 @@ from(shell: Element, boost: (e: MouseEvent) => IPublicTypeDragNodeDataObject | n ### boost 发射拖拽对象 + ```typescript /** * 发射拖拽对象 @@ -126,4 +129,4 @@ addSensor(sensor: any): void; * remove sensor area */ removeSensor(sensor: any): void; -``` \ No newline at end of file +``` diff --git a/docs/docs/api/plugins.md b/docs/docs/api/plugins.md index df025f49e9..cead039716 100644 --- a/docs/docs/api/plugins.md +++ b/docs/docs/api/plugins.md @@ -2,33 +2,38 @@ title: plugins - 插件 API sidebar_position: 2 --- -> **@types** [IPublicApiPlugins](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/plugins.ts)
-> **@since** v1.0.0 + +> **@types** [IPublicApiPlugins](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/plugins.ts)
> **@since** v1.0.0 ## 模块简介 + 插件管理器,提供编排模块中管理插件的能力。 ## 方法 + ### register + 注册插件 ```typescript async function register( plugin: IPublicTypePlugin, options?: IPublicTypePluginRegisterOptions, -): Promise +): Promise; ``` + 相关 types: + - [IPublicTypePlugin](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin.ts) - [IPublicTypePluginRegisterOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-register-options.ts) 其中第一个参数 plugin 通过低代码工具链的插件脚手架生成编写模板,开发者可以参考[这个章节](/site/docs/guide/expand/editor/cli)进行创建 - #### 简单示例 + ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const builtinPluginRegistry = (ctx: IPublicModelPluginContext) => { return { @@ -51,24 +56,28 @@ const builtinPluginRegistry = (ctx: IPublicModelPluginContext) => { componentsPane?.disable?.(); project.onSimulatorRendererReady(() => { componentsPane?.enable?.(); - }) + }); }, }; -} +}; builtinPluginRegistry.pluginName = 'builtinPluginRegistry'; await plugins.register(builtinPluginRegistry); ``` + #### 使用 exports 示例 + ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const PluginA = (ctx: IPublicModelPluginContext) => { return { async init() {}, - exports() { return { x: 1, } }, + exports() { + return { x: 1 }; + }, }; -} +}; PluginA.pluginName = 'PluginA'; const PluginB = (ctx: IPublicModelPluginContext) => { @@ -78,22 +87,23 @@ const PluginB = (ctx: IPublicModelPluginContext) => { console.log(ctx.plugins.PluginA.x); // => 1 }, }; -} +}; PluginA.pluginName = 'pluginA'; PluginB.pluginName = 'PluginB'; PluginB.meta = { dependencies: ['PluginA'], -} +}; await plugins.register(PluginA); await plugins.register(PluginB); ``` -> 注:ctx 是在插件中获取引擎 API 的唯一渠道,具体定义参见 [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) +> 注:ctx 是在插件中获取引擎 API 的唯一渠道,具体定义参见 [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) #### 设置兼容引擎版本示例 + ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext) => { return { @@ -110,10 +120,12 @@ BuiltinPluginRegistry.meta = { } await plugins.register(BuiltinPluginRegistry); ``` + #### 设置插件参数版本示例 + ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext, options: any) => { return { @@ -121,13 +133,12 @@ const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext, options: any) => // 直接传值方式: // 通过 register(xxx, options) 传入 // 通过 options 取出 - // 引擎初始化时也可以设置某插件的全局配置项: // 通过 engine.init(..., preference) 传入 // 通过 ctx.preference.getValue() 取出 }, }; -} +}; BuiltinPluginRegistry.pluginName = 'BuiltinPluginRegistry'; BuiltinPluginRegistry.meta = { preferenceDeclaration: { @@ -155,7 +166,7 @@ BuiltinPluginRegistry.meta = { }, ], }, -} +}; await plugins.register(BuiltinPluginRegistry, { key1: 'abc', key5: 'willNotPassToPlugin' }); ``` @@ -233,7 +244,9 @@ getPluginPreference( - [IPublicModelPluginInstance](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-instance.ts) ## 插件元数据工程转化示例 + your-plugin/package.json + ```json { "name": "@alilc/lowcode-plugin-debug", @@ -248,7 +261,9 @@ your-plugin/package.json } } ``` + 转换后的结构: + ```typescript const debug = (ctx: IPublicModelPluginContext, options: any) => { return {}; diff --git a/docs/docs/api/project.md b/docs/docs/api/project.md index 54bd1474cf..20bdceb69e 100644 --- a/docs/docs/api/project.md +++ b/docs/docs/api/project.md @@ -2,9 +2,11 @@ title: project - 模型 API sidebar_position: 10 --- + ## 模块简介 引擎编排模块中包含多种模型,包括: + - [文档模型 DocumentModel](./model/document-model) - [节点模型 Node](./model/node) - [节点孩子模型 NodeChildren](./model/node-children) @@ -15,6 +17,7 @@ sidebar_position: 10 ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01B1bAZi1asNU3KaSUJ_!!6000000003385-2-tps-1650-1352.png) 在文档模型内部,又有一些引申模型,比如: + - [历史操作 History)](./model/history) - [画布节点选中 Selection)](./model/selection) - [画布节点悬停 Detecting)](./model/detecting) @@ -25,6 +28,7 @@ sidebar_position: 10 下面来看看 project API 的具体介绍 ## 变量 + ### currentDocument 获取当前的 document 实例 @@ -68,8 +72,8 @@ get simulatorHost(): IPublicApiSimulatorHost | null; 相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) - ## 方法 + ### openDocument 打开一个 document @@ -84,6 +88,7 @@ openDocument(doc?: string | IPublicTypeRootSchema | undefined): IPublicModelDocu ``` 相关类型: + - [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) - [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) @@ -102,6 +107,7 @@ createDocument(data?: IPublicTypeRootSchema): IPublicModelDocumentModel | null; ``` 相关类型: + - [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) - [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) @@ -123,6 +129,7 @@ removeDocument(doc: IPublicModelDocumentModel): void; ### getDocumentByFileName 根据 fileName 获取 document + ```typescript /** * 根据 fileName 获取 document @@ -165,6 +172,7 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema; ``` 相关类型: + - [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) - [IPublicTypeProjectSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) @@ -180,9 +188,11 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema; */ importSchema(schema?: IPublicTypeProjectSchema): void; ``` + 相关类型:[IPublicTypeProjectSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) ### addPropsTransducer + 增加一个属性的管道处理函数 ```typescript @@ -197,32 +207,43 @@ addPropsTransducer( stage: IPublicEnumTransformStage, ): void; ``` + 相关类型: + - [IPublicTypePropsTransducer](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/props-transducer.ts) - [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) **示例** 在保存的时候删除每一个组件的 props.hidden + ```typescript -import { project } from '@alilc/lowcode-engine'; -import { IPublicTypeCompositeObject, IPublicEnumTransformStage, IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { project } from '@lce/lowcode-engine'; +import { + IPublicTypeCompositeObject, + IPublicEnumTransformStage, + IPublicModelPluginContext, +} from '@lce/lowcode-types'; export const DeleteHiddenTransducer = (ctx: IPublicModelPluginContext) => { return { async init() { const { project } = ctx; - project.addPropsTransducer((props: IPublicTypeCompositeObject): IPublicTypeCompositeObject => { - delete props.hidden; - return props; - }, IPublicEnumTransformStage.Save); + project.addPropsTransducer( + (props: IPublicTypeCompositeObject): IPublicTypeCompositeObject => { + delete props.hidden; + return props; + }, + IPublicEnumTransformStage.Save, + ); }, }; -} +}; DeleteHiddenTransducer.pluginName = 'DeleteHiddenTransducer'; ``` ### setI18n + 设置多语言语料 ```typescript @@ -240,6 +261,7 @@ setI18n(value: object): void; **@since v1.0.17** ### setConfig + 设置当前项目配置 ```typescript @@ -259,19 +281,19 @@ setI18n(value: object): void; ```typescript // shims.d.ts -declare module '@alilc/lowcode-types' { +declare module '@lce/lowcode-types' { export interface IPublicTypeAppConfig { - customProp: CustomPropType + customProp: CustomPropType; } } export {}; ``` - ## 事件 ### onRemoveDocument + 绑定删除文档事件 ```typescript @@ -283,6 +305,7 @@ export {}; */ onRemoveDocument(fn: (data: { id: string }) => void): IPublicTypeDisposable; ``` + 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) **@since v1.0.16** @@ -300,6 +323,7 @@ onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDispo ``` 相关类型: + - [IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) - [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) @@ -314,7 +338,9 @@ onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDispo */ onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDisposable; ``` + 相关类型: + - [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) - [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md index 0d3435b3d3..1916b033a6 100644 --- a/docs/docs/api/setters.md +++ b/docs/docs/api/setters.md @@ -2,14 +2,17 @@ title: setters - 设置器 API sidebar_position: 10 --- -> **@types** [IPublicApiSetters](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/setters.ts)
-> **@since** v1.0.0 + +> **@types** [IPublicApiSetters](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/setters.ts)
> **@since** v1.0.0 ## 模块简介 + 负责注册设置器、管理设置器的 API。注册自定义设置器之后可以在物料中进行使用。 ## 方法 + ### getSetter + 获取指定 setter ```typescript @@ -21,9 +24,11 @@ sidebar_position: 10 */ getSetter(type: string): IPublicTypeRegisteredSetter | null; ``` + 相关类型:[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) ### getSettersMap + 获取已注册的所有 settersMap ```typescript @@ -40,6 +45,7 @@ getSettersMap(): Map { return { @@ -93,19 +102,21 @@ const SetterRegistry = (ctx: IPublicModelPluginContext) => { }); }, }; -} +}; SetterRegistry.pluginName = 'SetterRegistry'; await plugins.register(SetterRegistry); ``` ### 开发自定义 Setter + AltStringSetter 代码如下: + ```typescript -import * as React from "react"; -import { Input } from "@alifd/next"; +import * as React from 'react'; +import { Input } from '@alifd/next'; -import "./index.scss"; +import './index.scss'; interface AltStringSetterProps { // 当前值 value: string; @@ -125,14 +136,14 @@ export default class AltStringSetter extends React.PureComponent onChange(val)} > ); @@ -144,11 +155,13 @@ export default class AltStringSetter extends React.PureComponent **@types** [IPublicApiSkeleton](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/skeleton.ts)
-> **@since** v1.0.0 +> **@types** [IPublicApiSkeleton](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/skeleton.ts)
> **@since** v1.0.0 ## 模块简介 + 面板 API 提供了面板扩展和管理的能力,如下图蓝色内容都是扩展出来的。 ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01eVA0U41xYRP3e5zo0_!!6000000006455-2-tps-1780-996.png) 页面上可以扩展的区域共 5 个,具体如下: ![image.png](https://img.alicdn.com/imgextra/i3/O1CN014d2AcS1D5c9TshEiQ_!!6000000000165-2-tps-1892-974.png) + ### 基本概念 + #### 扩展区域位置 (area) + ##### topArea 展示在设计器的顶部区域,常见的相关区域的插件主要是: + 1. 注册设计器 Logo; 2. 设计器操作回退和撤销按钮; 3. 全局操作按钮,例如:保存、预览等; + ##### leftArea 左侧区域的展示形式大多数是 Icon 和对应的面板,通过点击 Icon 可以展示对应的面板并隐藏其他的面板。 该区域相关插件的主要有: + 1. 大纲树展示,展示该设计器设计页面的大纲。 2. 组件库,展示注册到设计器中的组件,点击之后,可以从组件库面板中拖拽到设计器的画布中。 3. 数据源面板 @@ -36,17 +42,22 @@ sidebar_position: 10 ##### centerArea 画布区域,由于画布大多数是展示作用,所以一般扩展的种类比较少。常见的扩展有: + 1. 画布大小修改 2. 物料选中扩展区域修改 + ##### rightArea 右侧区域,常用于组件的配置。常见的扩展有:统一处理组件的配置项,例如统一删除某一个配置项,统一添加某一个配置项的。 + ##### toolbar 跟 topArea 类似,按需放置面板插件~ + #### 展示类型 (type) 展示类型用于区分插件在设计器内可操作的几种不同界面类型。主要的几种类型为 PanelDock、Widget、Dock,另有 Panel 类型目前不推荐使用。 + ##### PanelDock PanelDock 是以面板的形式展示在设计器的左侧区域的。其中主要有两个部分组成,一个是图标,一个是面板。当点击图标时可以控制面板的显示和隐藏。 @@ -58,19 +69,20 @@ PanelDock 是以面板的形式展示在设计器的左侧区域的。其中主 其中右上角可以进行固定,可以对弹出的宽度做设定 接入可以参考代码 + ```javascript -import { skeleton } from "@alilc/lowcode-engine"; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ - area: "leftArea", // 插件区域 - type: "PanelDock", // 插件类型,弹出面板 - name: "sourceEditor", + area: 'leftArea', // 插件区域 + type: 'PanelDock', // 插件类型,弹出面板 + name: 'sourceEditor', content: SourceEditor, // 插件组件实例 props: { - align: "left", - icon: "wenjian", + align: 'left', + icon: 'wenjian', title: '标题', // 图标下方展示的标题 - description: "JS 面板", + description: 'JS 面板', }, panelProps: { floatable: true, // 是否可浮动 @@ -78,12 +90,14 @@ skeleton.add({ hideTitleBar: false, maxHeight: 800, maxWidth: 1200, - title: "JS 面板", + title: 'JS 面板', width: 600, }, }); ``` + ##### Widget + Widget 形式是直接渲染在当前编辑器的对应位置上。如 demo 中在设计器顶部的所有组件都是这种展现形式。 ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01IRQIZp1m5AJPwBKDv_!!6000000004902-2-tps-1988-94.png) @@ -91,45 +105,46 @@ Widget 形式是直接渲染在当前编辑器的对应位置上。如 demo 中 接入可以参考代码: ```javascript -import { skeleton } from "@alilc/lowcode-engine"; +import { skeleton } from '@lce/lowcode-engine'; // 注册 logo 面板 skeleton.add({ - area: "topArea", - type: "Widget", - name: "logo", - content: Logo, // Widget 组件实例 - contentProps: { // Widget 插件 props - logo: - "https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png", - href: "/", + area: 'topArea', + type: 'Widget', + name: 'logo', + content: Logo, // Widget 组件实例 + contentProps: { + // Widget 插件 props + logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', + href: '/', }, props: { - align: "left", + align: 'left', width: 100, }, }); ``` + ##### Dock 一个图标的表现形式,可以用于语言切换、跳转到外部链接、打开一个 widget 等场景。 ```javascript -import { skeleton } from "@alilc/lowcode-engine"; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ - area: "leftArea", - type: "Dock", - name: "opener", + area: 'leftArea', + type: 'Dock', + name: 'opener', props: { icon: Icon, // Icon 组件实例 - align: "bottom", + align: 'bottom', onClick: function () { // 打开外部链接 window.open('https://lowcode-engine.cn'); // 显示 widget skeleton.showWidget('xxx'); - } - } + }, + }, }); ``` @@ -150,20 +165,18 @@ skeleton.add({ add(config: IPublicTypeWidgetBaseConfig, extraConfig?: Record): any; ``` - IWidgetBaseConfig 定义如下: -| 属性名 | 含义 | 备注 | -| --- | --- | --- | -| name | 面板名称 | | -| area | 扩展区位置,可选值:'topArea' | 'leftArea' | 'rightArea' | 'toolbar' | 'bottomArea' | 'mainArea' | | -| type | 面板类型,可选值:'Widget' | 'PanelDock' | 'Panel' | Dock | 详见前文中对**展示类型**的描述 | -| content | 面板的实现类/节点,类型是 ReactClass | ReactElement | | -| props | 面板属性 | align: 'top' | 'bottom' | 'left' | 'center' | 'right'; // 指定面板 icon 位置区域
icon: string | ReactElement;  // icon 为字符串时,请确定当前 fusion 主题包中包含该 icon
description: string;
condition: Function; // 指定当前面板的显影状态 | -| contentProps | 面板的实现类/节点的参数 | | -| panelProps | 假如 type: 'Panel' | 'PanelDock' 时有效,传给 Panel 类的参数 | keepVisibleWhileDragging: boolean; // 当有元素在当前 panel 拖拽时,是否保持 panel 为展开状态,默认值:false
area: 'leftFloatArea' | 'leftFixedArea' // 指定 panel 位于浮动面板还是钉住面板 | -| index | 面板的位置,不传默认按插件注册顺序 | | - +| 属性名 | 含义 | 备注 | +| ------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| name | 面板名称 | | +| area | 扩展区位置,可选值:'topArea' | 'leftArea' | 'rightArea' | 'toolbar' | 'bottomArea' | 'mainArea' | | +| type | 面板类型,可选值:'Widget' | 'PanelDock' | 'Panel' | Dock | 详见前文中对**展示类型**的描述 | +| content | 面板的实现类/节点,类型是 ReactClass | ReactElement | | +| props | 面板属性 | align: 'top' | 'bottom' | 'left' | 'center' | 'right'; // 指定面板 icon 位置区域
icon: string | ReactElement;  // icon 为字符串时,请确定当前 fusion 主题包中包含该 icon
description: string;
condition: Function; // 指定当前面板的显影状态 | +| contentProps | 面板的实现类/节点的参数 | | +| panelProps | 假如 type: 'Panel' | 'PanelDock' 时有效,传给 Panel 类的参数 | keepVisibleWhileDragging: boolean; // 当有元素在当前 panel 拖拽时,是否保持 panel 为展开状态,默认值:false
area: 'leftFloatArea' | 'leftFixedArea' // 指定 panel 位于浮动面板还是钉住面板 | +| index | 面板的位置,不传默认按插件注册顺序 | | ### remove @@ -209,6 +222,7 @@ showPanel(name: string): void; ``` ### hidePanel + 隐藏面板 ```typescript @@ -234,7 +248,9 @@ showWidget(name: string): void; ``` ### enableWidget + 将 widget 启用。 + ```typescript /** * 将 widget 启用 @@ -273,6 +289,7 @@ disableWidget(name: string): void; ``` ### showArea + 显示某个 Area ```typescript @@ -284,8 +301,8 @@ disableWidget(name: string): void; showArea(areaName: string): void; ``` - ### hideArea + 隐藏某个 Area ```typescript @@ -311,8 +328,6 @@ getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] 相关类型:[IPublicModelSkeletonItem](https://github.com/alibaba/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts) - - ### registerConfigTransducer 注册一个面板的配置转换器(transducer)。 @@ -321,15 +336,15 @@ getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] /** * 注册一个面板的配置转换器(transducer)。 * Registers a configuration transducer for a panel. - * @param {IPublicTypeConfigTransducer} transducer + * @param {IPublicTypeConfigTransducer} transducer * - 要注册的转换器函数。该函数接受一个配置对象(类型为 IPublicTypeSkeletonConfig)作为输入,并返回修改后的配置对象。 - * - The transducer function to be registered. This function takes a configuration object - * - * @param {number} level + * - The transducer function to be registered. This function takes a configuration object + * + * @param {number} level * - 转换器的优先级。优先级较高的转换器会先执行。 * - The priority level of the transducer. Transducers with higher priority levels are executed first. - * - * @param {string} [id] + * + * @param {string} [id] * - (可选)转换器的唯一标识符。用于在需要时引用或操作特定的转换器。 * - (Optional) A unique identifier for the transducer. Used for referencing or manipulating a specific transducer when needed. */ @@ -339,7 +354,7 @@ registerConfigTransducer(transducer: IPublicTypeConfigTransducer, level: number, 使用示例 ```typescript -import { IPublicModelPluginContext, IPublicTypeSkeletonConfig } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext, IPublicTypeSkeletonConfig } from '@lce/lowcode-types'; function updatePanelWidth(config: IPublicTypeSkeletonConfig) { if (config.type === 'PanelDock') { @@ -349,7 +364,7 @@ function updatePanelWidth(config: IPublicTypeSkeletonConfig) { ...(config.panelProps || {}), width: 240, }, - } + }; } return config; @@ -376,6 +391,7 @@ export default controlPanelWidthPlugin; ``` ## 事件 + ### onShowPanel 监听 Panel 实例显示事件 @@ -471,10 +487,10 @@ onHideWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => ## 使用示例 ```typescript -import { skeleton } from '@alilc/lowcode-engine'; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ - name: 'logo', + name: 'logo', area: 'topArea', type: 'Widget', contentProps: {}, @@ -507,7 +523,6 @@ skeleton.add({ skeleton.showPanel('sourceEditor'); skeleton.hidePanel('sourceEditor'); - // 创建一个浮动的 widget skeleton.add({ name: 'floatingWidget', @@ -521,9 +536,9 @@ skeleton.add({ top: '200px', bottom: 0, width: 'calc(100% - 46px)', - 'background-color': 'lightblue' - } - } + 'background-color': 'lightblue', + }, + }, }); // 显隐 widget @@ -534,9 +549,11 @@ skeleton.hideWidget('floatingWidget'); skeleton.enableWidget('sourceEditor'); skeleton.disableWidget('sourceEditor'); ``` + ### bottomArea 示例 + ```typescript -import { skeleton } from '@alilc/lowcode-engine'; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ name: 'bottomAreaPanelName', @@ -545,10 +562,11 @@ skeleton.add({ content: () => 'demoText', }); - skeleton.showPanel('bottomAreaPanelName'); ``` + ### widget 示例 + ```typescript // 注册 logo 面板 skeleton.add({ diff --git a/docs/docs/demoUsage/panels/datasource.md b/docs/docs/demoUsage/panels/datasource.md index 7e9028e5eb..f198adc724 100644 --- a/docs/docs/demoUsage/panels/datasource.md +++ b/docs/docs/demoUsage/panels/datasource.md @@ -2,32 +2,44 @@ title: 8. 数据源面板详解 sidebar_position: 4 --- + ## 🪚 概述 + 数据源面板主要负责管理低代码中远程数据源内容,通过可视化编辑的方式操作低代码协议中的数据源 Schema,配合 [数据源引擎](/site/docs/guide/design/datasourceEngine) 即可实现低代码中数据源的生产和消费; ![image.png](https://img.alicdn.com/imgextra/i1/O1CN0170HeBg276B7fM9rqh_!!6000000007747-2-tps-2878-1642.png) 数据源面板 -## ❓如何使用 + +## ❓ 如何使用 + > 面板内包含了数据源创建、删除、编辑、排序、导入导出、复制以及搜索等能力,内置支持了 `fecth` & `JSONP`两种常用远程请求类型; ### 三步创建一个数据源 + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01bkgbqj1cOGfwQtEif_!!6000000003590-2-tps-2878-1638.png) 三步创建数据源 ### 参数详解 + > TODO ## ☠️ 更多介绍 + ### 数据源顺序 + > 数据源为何支持排序功能,主要原因是数据源的加载存在先后顺序;接下来我们从协议层以及实现层看数据源之间的顺序关系; TODO + ### 如何定制数据源 + #### 定制数据源类型(设计态) + #### 定制数据源请求实现(运行态) > 当出现以下两种情况的时,我们需要定制数据源请求实现, +> > - 当你默认提供的 `handler`无法满足你的需求 > - 定制了数据源类型,比如 `GraphQL`,需要实现一个对应的 `handler` @@ -54,9 +66,11 @@ export function createFetchHandler(config?: Record) { }; } ``` + 低代码 fetch-handler 默认实现 以上代码是低代码内置的 fetch-handler 默认实现,内部使用了 `universal-request`,假如你们内部使用的 `axios`,你完全重新实现一个; + ```javascript import axios from 'axios'; export function createAxiosFetchHandler(config?: Record) { @@ -76,12 +90,14 @@ export function createAxiosFetchHandler(config?: Record) { ``` ##### 注册到 render + 完成一个 Handler 后你可以通过以下方式接入到 render 或者出码中使用 ###### 渲染 Render + ```tsx import React, { memo } from 'react'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; const SamplePreview = memo(() => { return ( @@ -91,22 +107,24 @@ const SamplePreview = memo(() => { components={components} appHelper={{ requestHandlersMap: { - fetch: createAxiosFetchHandler() - } + fetch: createAxiosFetchHandler(), + }, }} /> ); }); ``` + ###### 出码 + > 目前自定义只能通过重新定义类型来完成,接下来我们会给出码添加 requestHandlersMap 映射能力;如有需求请联系 荣彬 (github-id:xingmolu) +### 设计态启用数据源引擎 -### 设计态启用数据源引擎 > 默认情况下设计态没有开启数据源引擎,我们可以在设计器 init 的时候来传递`requstHandlersMap`来开启;具体代码如下: ```javascript -import { init, plugins } from '@alilc/lowcode-engine'; +import { init, plugins } from '@lce/lowcode-engine'; import { RequestHandlersMap } from '@alilc/lowcode-datasource-types'; const preference = new Map(); @@ -125,8 +143,8 @@ const preference = new Map(); // simulatorUrl 在当 engine-core.js 同一个父路径下时是不需要配置的!!! // 这里因为用的是 alifd cdn,在不同 npm 包,engine-core.js 和 react-simulator-renderer.js 是不同路径 simulatorUrl: [ - 'https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@latest/dist/css/react-simulator-renderer.css', - 'https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@latest/dist/js/react-simulator-renderer.js' + 'https://alifd.alicdn.com/npm/@lce/lowcode-react-simulator-renderer@latest/dist/css/react-simulator-renderer.css', + 'https://alifd.alicdn.com/npm/@lce/lowcode-react-simulator-renderer@latest/dist/js/react-simulator-renderer.js' ], requestHandlersMap: { fetch: createAxiosFetchHandler() @@ -135,20 +153,24 @@ const preference = new Map(); })(); ``` + ## 🥡 附录 + ### 数据源协议 -| **参数** | **说明** | **类型** | **支持变量** | **默认值** | **备注** | -| --- | --- | --- | --- | --- | --- | -| id | 数据请求 ID 标识 | String | - | - | | -| isInit | 是否为初始数据 | Boolean | ✅ | true | 值为 true 时,将在组件初始化渲染时自动发送当前数据请求 | -| isSync | 是否需要串行执行 | Boolean | ✅ | false | 值为 true 时,当前请求将被串行执行 | -| type | 数据请求类型 | String | - | fetch | 支持四种类型:fetch/mtop/jsonp/custom | -| shouldFetch | 本次请求是否可以正常请求 | (options: ComponentDataSourceItemOptions) => boolean | - | () => true | function 参数参考 [ComponentDataSourceItemOptions 对象描述](/site/docs/specs/lowcode-spec#2315-componentdatasourceitemoptions-对象描述) | -| willFetch | 单个数据结果请求参数处理函数 | Function | - | options => options | 只接受一个参数(options),返回值作为请求的 options,当处理异常时,使用原 options。也可以返回一个 Promise,resolve 的值作为请求的 options,reject 时,使用原 options | -| requestHandler | 自定义扩展的外部请求处理器 | Function | - | - | 仅 type=‘custom’时生效 | -| dataHandler | request 成功后的回调函数 | Function | - | response => response.data | 参数:请求成功后 promise 的 value 值 | -| errorHandler | request 失败后的回调函数 | Function | - | - | 参数:请求出错 promise 的 error 内容 | -| options {} | 请求参数 | **ComponentDataSourceItemOptions**| - | - | 每种请求类型对应不同参数,详见见 [ComponentDataSourceItemOptions 对象描述](/site/docs/specs/lowcode-spec#2315-componentdatasourceitemoptions-对象描述) | + +| **参数** | **说明** | **类型** | **支持变量** | **默认值** | **备注** | +| -------------- | ---------------------------- | ---------------------------------------------------- | ------------ | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | 数据请求 ID 标识 | String | - | - | | +| isInit | 是否为初始数据 | Boolean | ✅ | true | 值为 true 时,将在组件初始化渲染时自动发送当前数据请求 | +| isSync | 是否需要串行执行 | Boolean | ✅ | false | 值为 true 时,当前请求将被串行执行 | +| type | 数据请求类型 | String | - | fetch | 支持四种类型:fetch/mtop/jsonp/custom | +| shouldFetch | 本次请求是否可以正常请求 | (options: ComponentDataSourceItemOptions) => boolean | - | () => true | function 参数参考 [ComponentDataSourceItemOptions 对象描述](/site/docs/specs/lowcode-spec#2315-componentdatasourceitemoptions-对象描述) | +| willFetch | 单个数据结果请求参数处理函数 | Function | - | options => options | 只接受一个参数(options),返回值作为请求的 options,当处理异常时,使用原 options。也可以返回一个 Promise,resolve 的值作为请求的 options,reject 时,使用原 options | +| requestHandler | 自定义扩展的外部请求处理器 | Function | - | - | 仅 type=‘custom’时生效 | +| dataHandler | request 成功后的回调函数 | Function | - | response => response.data | 参数:请求成功后 promise 的 value 值 | +| errorHandler | request 失败后的回调函数 | Function | - | - | 参数:请求出错 promise 的 error 内容 | +| options {} | 请求参数 | **ComponentDataSourceItemOptions** | - | - | 每种请求类型对应不同参数,详见见 [ComponentDataSourceItemOptions 对象描述](/site/docs/specs/lowcode-spec#2315-componentdatasourceitemoptions-对象描述) | ### 运行时实现层:数据源引擎设计 + [数据源引擎设计](/site/docs/guide/design/datasourceEngine) diff --git a/docs/docs/demoUsage/panels/settings.md b/docs/docs/demoUsage/panels/settings.md index 9023e587ad..5806bf170f 100644 --- a/docs/docs/demoUsage/panels/settings.md +++ b/docs/docs/demoUsage/panels/settings.md @@ -2,8 +2,11 @@ title: 6. 设置面板详解 sidebar_position: 2 --- + # 设置器介绍 + ## 展示区域 + 设置器,又称为 Setter,主要展示在编辑器的右边区域,如下图: ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01jN0toi1OknXWrPuYt_!!6000000001744-2-tps-3836-1730.png) 其中包含 属性、样式、事件、高级 @@ -13,48 +16,51 @@ sidebar_position: 2 - 事件:如果该物料有声明事件,则会出现事件面板,用于绑定事件。 - 高级:两个逻辑相关的属性,**条件渲染**和**循环** - - ## 设置器 + 上述区域中是有多项设置器的,对于一个组件来说,每一项配置都对应一个设置器,比如我们的配置是一个文本,我们需要的是文本设置器,我们需要配置的是数字,我们需要的就是数字设置器。 下图中的标题和按钮类型配置就分别是文本设置器和下拉框设置器。 ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01Bl2hgm1GiUcXD3TOO_!!6000000000656-2-tps-2120-1460.png) 我们提供了常用的设置器作为内置设置器,也提供了定制能力帮助大家开发特定需求的设置器。 + # 内置设置器 -| **预置 Setter** | **用途** | -| --- | --- | -| StringSetter | 短文本型数据设置器,不可换行 | -| NumberSetter | 数值型数据设置器, | -| BoolSetter | 布尔型数据设置器, | -| SelectSetter | 枚举型数据设置器,采用下拉的形式展现 | -| VariableSetter | 变量型数据设置器, | -| RadioGroupSetter | 枚举型数据设置器,采用 tab 选择的形式展现 | -| TextAreaSetter | 长文本型数据设置器,可换行 | -| DateSetter | 日期型数据设置器 | -| TimePicker | 时间型数据设置器 | -| DateYearSetter | 日期型 - 年数据设置器 | -| DateMonthSetter | 日期型 - 月数据设置器 | -| DateRangeSetter | 日期型数据设置器,可选择时间区间 | -| EventsSetter | 事件绑定设置器 | -| ColorSetter | 颜色设置器 | -| JsonSetter | json 型数据设置器 | -| StyleSetter | 样式设置器 | -| ClassNameSetter | 样式名设置器 | -| FunctionSetter | 函数型数据设置器 | -| MixedSetter | 混合型数据设置器 | -| SlotSetter | 节点型数据设置器 | -| ArraySetter | 列表数组行数据设置器 | -| ObjectSetter | 对象数据设置器,一般内嵌在 ArraySetter 中 | +| **预置 Setter** | **用途** | +| ---------------- | ----------------------------------------- | +| StringSetter | 短文本型数据设置器,不可换行 | +| NumberSetter | 数值型数据设置器, | +| BoolSetter | 布尔型数据设置器, | +| SelectSetter | 枚举型数据设置器,采用下拉的形式展现 | +| VariableSetter | 变量型数据设置器, | +| RadioGroupSetter | 枚举型数据设置器,采用 tab 选择的形式展现 | +| TextAreaSetter | 长文本型数据设置器,可换行 | +| DateSetter | 日期型数据设置器 | +| TimePicker | 时间型数据设置器 | +| DateYearSetter | 日期型 - 年数据设置器 | +| DateMonthSetter | 日期型 - 月数据设置器 | +| DateRangeSetter | 日期型数据设置器,可选择时间区间 | +| EventsSetter | 事件绑定设置器 | +| ColorSetter | 颜色设置器 | +| JsonSetter | json 型数据设置器 | +| StyleSetter | 样式设置器 | +| ClassNameSetter | 样式名设置器 | +| FunctionSetter | 函数型数据设置器 | +| MixedSetter | 混合型数据设置器 | +| SlotSetter | 节点型数据设置器 | +| ArraySetter | 列表数组行数据设置器 | +| ObjectSetter | 对象数据设置器,一般内嵌在 ArraySetter 中 | # 设置器定制 + ## 编写 AltStringSetter + 我们编写一个简单的 Setter,这里我们编写的 Setter 是 AltStringSetter。代码如下: + ```javascript -import * as React from "react"; -import { Input } from "@alifd/next"; +import * as React from 'react'; +import { Input } from '@alifd/next'; -import "./index.scss"; +import './index.scss'; interface AltStringSetterProps { // 当前值 value: string; @@ -74,14 +80,14 @@ export default class AltStringSetter extends React.PureComponent onChange(val)} > ); @@ -90,7 +96,9 @@ export default class AltStringSetter extends React.PureComponent { const { field, value } = this.props; // 这里展示的和插件进行通信,事件规则是插件名 + 方法 event.emit('eventBindDialog.openDialog', field.name, this.emitEventName); -} +}; ``` + ### 修改同级 props 的其他属性值 + setter 本身只影响其中一个 props 的值,如果需要影响其他组件的 props 的值,需要使用 field 的 props: + ```javascript bindFunction = () => { - const { field, value } = this.props; - const propsField = field.parent; - // 获取同级其他属性 showJump 的值 - const otherValue = propsField.getPropValue('showJump'); - // set 同级其他属性 showJump 的值 - propsField.setPropValue('showJump', false); -} + const { field, value } = this.props; + const propsField = field.parent; + // 获取同级其他属性 showJump 的值 + const otherValue = propsField.getPropValue('showJump'); + // set 同级其他属性 showJump 的值 + propsField.setPropValue('showJump', false); +}; ``` + ## 注册 AltStringSetter + 我们需要在低代码引擎中注册 Setter,这样就可以通过 AltStringSetter 的名字在物料中使用了。 + ```javascript import AltStringSetter from './AltStringSetter'; -import { setters } from '@alilc/lowcode-engine'; +import { setters } from '@lce/lowcode-engine'; setters.registerSetter({ - AltStringSetter: { - component: AltStringSetter, - } + AltStringSetter: { + component: AltStringSetter, + }, }); ``` + ## 物料中使用 + 我们需要将目标组件的属性值类型值配置到物料资源配置文件中,例如 `packages/demo/public/assets.json`  其中核心配置如下: + ```json { "props": { @@ -158,7 +177,9 @@ setters.registerSetter({ } } ``` + 在物料中的完整配置如下: + ```json { "componentName": "Message", @@ -184,19 +205,11 @@ setters.registerSetter({ "name": "type", "propType": { "type": "oneOf", - "value": [ - "success", - "warning", - "error", - "notice", - "help", - "loading" - ] + "value": ["success", "warning", "error", "notice", "help", "loading"] }, "description": "反馈类型", "defaultValue": "success" } - ], "configure": { @@ -212,6 +225,9 @@ setters.registerSetter({ } } ``` + ### + # 小结 + 本章介绍了设置器是什么,我们有哪些内置的设置器。以及当不满足设置器诉求时,我们如何定制一个设置器。 diff --git a/docs/docs/faq/faq009.md b/docs/docs/faq/faq009.md index 4115384353..e54229ac0e 100644 --- a/docs/docs/faq/faq009.md +++ b/docs/docs/faq/faq009.md @@ -3,29 +3,36 @@ title: 物料出现 Component Not Found 相关报错 sidebar_position: 9 tags: [FAQ] --- + ## 预览态,antd 资产包按顺序加载,但是没有按顺序执行 + 资产包按顺序加载,但是没有按顺序执行,导致部分 js 执行的时候,依赖的资源没有准备好,报错了。 -传给 @alilc/lowcode-react-renderer 的 components 值为空。 +传给 @lce/lowcode-react-renderer 的 components 值为空。 **解决方案** LowCodeEngine 升级到 1.0.8 -> 相关 PR:[https://github.com/alibaba/lowcode-engine/pull/383](https://github.com/alibaba/lowcode-engine/pull/383) +> 相关 PR:[https://github.com/alibaba/lowcode-engine/pull/383](https://github.com/alibaba/lowcode-engine/pull/383) ## 编辑态,snippets 和注入组件不对应 + 1.在控制台中输入 + ```json AliLowCodeEngine.material.componentsMap ``` + 查看物料配置是否正常。 ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01bAsPoT1QOTSp7Fmz5_!!6000000001966-2-tps-1640-816.png) 如果正常继续。 LowCodeEngine 需要升级到 1.0.10 + ```json AliLowCodeEngine.project.simulator.renderer.components ``` + 看看对应的物料是否存在,如果不存在,排查物料问题。 如果不正常,查看资产包配置,其中资产包中的 `components` 和 `material.componentsMap` 生成有关系。 @@ -47,23 +54,30 @@ AliLowCodeEngine.project.simulator.renderer.components ``` `material.componentsMap` 不存在相关的组件信息,原因有两个: + - 没有添加对应的物料到 components 字段中 - components 配置不正确,需要查看 url 是否正常加载,查看 exportName 是否配置正确,即 `window.${exportName}` 是否存在。 -2.选中组件,在控制台中输入 + 2.选中组件,在控制台中输入 + ```json AliLowCodeEngine.project.currentDocument.selection.getNodes()[0].exportSchema('render') ``` + 查看 componentName 是否匹配。 3.调用 rerender 方法 + ```json AliLowCodeEngine.project.simulator.rerender() ``` + 看一下问题是否恢复。 ## 排查物料问题 + 找到对应组件的资产包,比如下图的资产包。 + ```json { "package": "@yingzhi8/lowcode-public-package", @@ -88,9 +102,13 @@ AliLowCodeEngine.project.simulator.rerender() ``` ### 查看 urls 是否加载 + 通过查看控制台,看加载的 urls + ### library 配置是否正确 -library 是可以在画布上访问到全局变量,确定 library 是否正确,在控制台输入: + +library 是可以在画布上访问到全局变量,确定 library 是否正确,在控制台输入: + ```json AliLowCodeEngine.project.simulator.contentWindow.${library} ``` diff --git a/docs/docs/faq/faq013.md b/docs/docs/faq/faq013.md index a8f86b2948..23b83e93bb 100644 --- a/docs/docs/faq/faq013.md +++ b/docs/docs/faq/faq013.md @@ -3,19 +3,26 @@ title: Modal 类组件 hidden 属性被强制设置 true sidebar_position: 13 tags: [FAQ] --- + ## 注意 + 弹窗的正确弹出方式请参考:[如何通过按钮展示/隐藏弹窗](/site/docs/demoUsage/makeStuff/dialog) + ## 问题原因 + 由于 hidden 属性,导致 Modal 组件在预览的时候不渲染,也就无法获取到实例。 + ## 处理方式 + ### 【推荐】升级到 Engine Verison 1.0.11 以上 + ### 新增 save propsReducer 通过新增 Save 态的 propsReducer,将 hidden props 去掉。可以参考下面的代码: ```typescript -import { project } from '@alilc/lowcode-engine'; -import { IPublicEnumTransformStage } from '@alilc/lowcode-types'; +import { project } from '@lce/lowcode-engine'; +import { IPublicEnumTransformStage } from '@lce/lowcode-types'; export const deleteHiddenTransducer = (ctx: any) => { return { @@ -27,15 +34,15 @@ export const deleteHiddenTransducer = (ctx: any) => { }, IPublicEnumTransformStage.Save); }, }; -} +}; deleteHiddenTransducer.pluginName = 'deleteHiddenTransducer'; - ``` ### 导出 schema 使用 Save 态 + ```typescript -import { TransformStage } from '@alilc/lowcode-types'; +import { TransformStage } from '@lce/lowcode-types'; -const schema = project.exportSchema(TransformStage.Save) +const schema = project.exportSchema(TransformStage.Save); ``` diff --git a/docs/docs/faq/faq024.md b/docs/docs/faq/faq024.md index ab1b68f5d7..d386650e74 100644 --- a/docs/docs/faq/faq024.md +++ b/docs/docs/faq/faq024.md @@ -4,13 +4,11 @@ sidebar_position: 23 tags: [FAQ] --- -#### 如何判断是否开启了IDE模式? +#### 如何判断是否开启了 IDE 模式? -- **通过官方API判断**:您可以通过访问 [workspace.isActive](/site/docs/api/workspace#isactive) 来判断当前是否处于IDE模式。这是阿里低代码引擎提供的一个官方API,专门用于确认是否处于集成开发环境。 +- **通过官方 API 判断**:您可以通过访问 [workspace.isActive](/site/docs/api/workspace#isactive) 来判断当前是否处于 IDE 模式。这是阿里低代码引擎提供的一个官方 API,专门用于确认是否处于集成开发环境。 - - -#### 如何使用插件的ctx来做判断在哪个模式下? +#### 如何使用插件的 ctx 来做判断在哪个模式下? - **插件是否为应用级别**:可以通过 **ctx.isPluginRegisteredInWorkspace** 方法来判断一个插件是否是应用级别的插件。这有助于理解插件在阿里低代码引擎中的作用域和潜在的使用场景。 - **插件的注册级别**:您可以使用 **ctx.registerLevel** 属性来判断插件处于哪个级别。插件级别的值包括: @@ -19,31 +17,25 @@ tags: [FAQ] - **Resource**:资源级别。 - **EditorView**:编辑视图级别。 这些级别代表了插件可能的作用域和使用场景,有助于在开发和管理低代码应用时对插件进行更精确的控制和配置。 +#### 如何在 IDE 模式下设置资源列表? - -#### 如何在IDE模式下设置资源列表? - -- **设置资源列表API**:在IDE模式下,可以通过访问 [workspace.setResourceList](/site/docs/api/workspace#setresourcelist) 来设置或更新IDE中的资源列表。这确保您在编辑器窗口中打开的资源是最新且可访问的。 - - +- **设置资源列表 API**:在 IDE 模式下,可以通过访问 [workspace.setResourceList](/site/docs/api/workspace#setresourcelist) 来设置或更新 IDE 中的资源列表。这确保您在编辑器窗口中打开的资源是最新且可访问的。 #### 如何打开视图窗口? - **使用推荐的方法**:使用 `openEditorWindow(resource: Resource, sleep?: boolean): Promise;` 来打开视图窗口。这里的 **resource** 参数指的是您要打开的特定资源,可通过 [workspace.resourceList](/site/docs/api/workspace#resourcelist) 获取。 - **不推荐使用的过时方法**:有一个过时的方法 `openEditorWindow(resourceName: string, id: string, extra: Object, viewName?: string, sleep?: boolean): Promise;` 也用于打开视图窗口。虽然仍然可用,但官方不推荐使用此方法,并计划在后续版本中废弃,因为它在维护和可扩展性方面存在限制。 - - #### 如何在全局插件中获取视图的上下文? -- 在阿里低代码引擎的全局插件中获取视图的上下文,可以通过使用 **ProvideViewPluginContext** 函数实现。这个函数来自 **@alilc/lowcode-utils** 库,它使得您的 React 组件能够接收 **pluginContext** 作为 props,进而访问和操作当前视图的状态和属性。 +- 在阿里低代码引擎的全局插件中获取视图的上下文,可以通过使用 **ProvideViewPluginContext** 函数实现。这个函数来自 **@lce/lowcode-utils** 库,它使得您的 React 组件能够接收 **pluginContext** 作为 props,进而访问和操作当前视图的状态和属性。 **步骤** **引入依赖**:首先,确保您的插件文件中已经引入了 **ProvideViewPluginContext** 以及其他必要的依赖。 ``` -import { ProvideViewPluginContext } from '@alilc/lowcode-utils'; +import { ProvideViewPluginContext } from '@lce/lowcode-utils ``` **定义 React 组件**:创建一个 React 组件,它将使用来自 **ProvideViewPluginContext** 的 **pluginContext**。 @@ -67,23 +59,19 @@ const globalPlugin = (ctx) => { name: 'datapool', content: ProvideViewPluginContext((props) => { // 组件内容 - return ( - - ) + return ; }), // 其他配置 contentProps: { // 需要提供 pluginContext 作为参数 pluginContext: ctx, - } + }, }); }; ``` 通过这些步骤,您的全局插件中的 React 组件就能够获取并使用视图的上下文了。这为您在插件中实现更复杂的功能和交互提供了基础。 - - **注意事项** - **组件重渲染**:正常情况下,**pluginsContext** 是视图的上下文。当视图切换时,组件会重新渲染。如果需要在组件中处理视图切换导致的重新渲染,可以利用 React 的 **key** 属性。 @@ -102,8 +90,6 @@ ProvideViewPluginContext(props => { 通过这种方式,当视图切换时,组件会根据视图的不同进行重新渲染,确保组件状态与当前视图的上下文保持一致。这对于在低代码平台上开发复杂插件和交互功能是非常有用的。 - - #### 如何判断插件是否在 Workspace 模式下注册? **使用** **ctx.isPluginRegisteredInWorkspace()** **方法**: @@ -112,9 +98,9 @@ ProvideViewPluginContext(props => { ```javascript if (ctx.isPluginRegisteredInWorkspace('pluginName')) { - console.log('插件已在 Workspace 模式下注册。'); + console.log('插件已在 Workspace 模式下注册。'); } else { - console.log('插件未在 Workspace 模式下注册。'); + console.log('插件未在 Workspace 模式下注册。'); } ``` @@ -126,8 +112,8 @@ if (ctx.isPluginRegisteredInWorkspace('pluginName')) { ```javascript if (ctx.registerLevel !== IPublicEnumPluginRegisterLevel.Workspace) { - console.log('插件未在 Workspace 模式下注册。'); + console.log('插件未在 Workspace 模式下注册。'); } else { - console.log('插件已在 Workspace 模式下注册。'); + console.log('插件已在 Workspace 模式下注册。'); } ``` diff --git a/docs/docs/guide/appendix/npms.md b/docs/docs/guide/appendix/npms.md index b0292c2739..24cf78a36e 100644 --- a/docs/docs/guide/appendix/npms.md +++ b/docs/docs/guide/appendix/npms.md @@ -2,46 +2,47 @@ title: NPM 包对应源码位置汇总 sidebar_position: 3 --- -| 包名 | 仓库 | 路径 | -| --- | --- | --- | -| @alilc/lowcode-code-generator | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/code-generator | -| @alilc/lowcode-material-parser | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/material-parser | -| @alilc/lowcode-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/designer | -| @alilc/lowcode-editor-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-core | -| @alilc/lowcode-editor-skeleton | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-skeleton | -| @alilc/lowcode-engine | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/engine | -| @alilc/lowcode-plugin-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-designer | -| @alilc/lowcode-plugin-outline-pane | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-outline-pane | -| @alilc/lowcode-react-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-renderer | -| @alilc/lowcode-react-simulator-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-simulator-renderer | -| @alilc/lowcode-renderer-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/renderer-core | -| @alilc/lowcode-shell | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/shell | -| @alilc/lowcode-types | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/types | -| @alilc/lowcode-utils | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/utils | -| @alilc/lowcode-datasource-engine | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-engine | -| @alilc/lowcode-datasource-fetch-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-fetch-handler | -| @alilc/lowcode-datasource-jsonp-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-jsonp-handler | -| @alilc/lowcode-datasource-mopen-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mopen-handler | -| @alilc/lowcode-datasource-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mtop-handler | -| @alilc/lowcode-datasource-types | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-types | -| @alilc/lowcode-datasource-universal-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-universal-mtop-handler | -| @alilc/lowcode-datasource-url-params-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-url-params-handler | -| @alilc/build-plugin-alt | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/build-plugin-alt | -| @alilc/create-element | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/create-element | -| @alilc/lowcode-plugin-inject | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/lowcode-plugin-inject | -| @alilc/action-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/action-block | -| @alilc/lowcode-plugin-base-monaco-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-base-monaco-editor | -| @alilc/lowcode-plugin-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-block | -| @alilc/lowcode-plugin-code-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-code-editor | -| @alilc/lowcode-plugin-components-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-components-pane | -| @alilc/lowcode-plugin-datasource-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-datasource-pane | -| @alilc/lowcode-plugin-manual | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-manual | -| @alilc/lowcode-plugin-schema | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-schema | -| @alilc/lowcode-plugin-undo-redo | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-undo-redo | -| @alilc/lowcode-plugin-zh-en | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-zh-en | -| @alifd/fusion-ui | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-ui | -| @alilc/lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-lowcode-materials | -| @alilc/antd-lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/antd-lowcode-materials | -| @alifd/layout(原 @alifd/pro-layout 升级后的版本) | [https://github.com/alibaba-fusion/layout](https://github.com/alibaba-fusion/layout) | | -| | | | -| | | | + +| 包名 | 仓库 | 路径 | +| -------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------ | +| @lce/lowcode-code-generator | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/code-generator | +| @lce/lowcode-material-parser | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/material-parser | +| @lce/lowcode-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/designer | +| @lce/lowcode-editor-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-core | +| @lce/lowcode-editor-skeleton | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-skeleton | +| @lce/lowcode-engine | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/engine | +| @lce/lowcode-plugin-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-designer | +| @lce/lowcode-plugin-outline-pane | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-outline-pane | +| @lce/lowcode-react-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-renderer | +| @lce/lowcode-react-simulator-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-simulator-renderer | +| @lce/lowcode-renderer-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/renderer-core | +| @lce/lowcode-shell | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/shell | +| @lce/lowcode-types | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/types | +| @lce/lowcode-utils | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/utils | +| @alilc/lowcode-datasource-engine | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-engine | +| @alilc/lowcode-datasource-fetch-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-fetch-handler | +| @alilc/lowcode-datasource-jsonp-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-jsonp-handler | +| @alilc/lowcode-datasource-mopen-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mopen-handler | +| @alilc/lowcode-datasource-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mtop-handler | +| @alilc/lowcode-datasource-types | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-types | +| @alilc/lowcode-datasource-universal-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-universal-mtop-handler | +| @alilc/lowcode-datasource-url-params-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-url-params-handler | +| @alilc/build-plugin-alt | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/build-plugin-alt | +| @alilc/create-element | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/create-element | +| @alilc/lowcode-plugin-inject | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/lowcode-plugin-inject | +| @alilc/action-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/action-block | +| @alilc/lowcode-plugin-base-monaco-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-base-monaco-editor | +| @alilc/lowcode-plugin-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-block | +| @alilc/lowcode-plugin-code-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-code-editor | +| @alilc/lowcode-plugin-components-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-components-pane | +| @alilc/lowcode-plugin-datasource-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-datasource-pane | +| @alilc/lowcode-plugin-manual | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-manual | +| @alilc/lowcode-plugin-schema | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-schema | +| @alilc/lowcode-plugin-undo-redo | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-undo-redo | +| @alilc/lowcode-plugin-zh-en | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-zh-en | +| @alifd/fusion-ui | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-ui | +| @alilc/lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-lowcode-materials | +| @alilc/antd-lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/antd-lowcode-materials | +| @alifd/layout(原 @alifd/pro-layout 升级后的版本) | [https://github.com/alibaba-fusion/layout](https://github.com/alibaba-fusion/layout) | | +| | | | +| | | | diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 8df4158a6c..884c674b77 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -17,9 +17,11 @@ sidebar_position: 0 npm install -g @alilc/create-element@latest ``` 4. 通过命令行工具创建 + ```bash npm init @alilc/element editor-project-name ``` + 这时会看到一个选项列表 @@ -27,6 +29,7 @@ sidebar_position: 0 选择`编辑器`,并填写对应的问题,即可完成创建。 > 注 @alilc/create-element 版本需 >= 1.0.4,若看不到`编辑器`选项,请重新执行步骤 3 + 5. 进入创建后的目录 ```bash cd editor-project-name @@ -41,7 +44,7 @@ sidebar_position: 0 ``` 执行后如果看到这个界面,说明项目启动成功。您可以继续看后续章节了。本章节后续内容均为高级配置方式。 - ![image.png](https://img.alicdn.com/imgextra/i4/O1CN013qJVoV1OAcFNKFrIQ_!!6000000001665-2-tps-3060-1634.png) +![image.png](https://img.alicdn.com/imgextra/i4/O1CN013qJVoV1OAcFNKFrIQ_!!6000000001665-2-tps-3060-1634.png) ## 方法 2: 使用 UMD 包方式配置 @@ -50,17 +53,27 @@ sidebar_position: 0 ### 引入 UMD 包资源 我们需要在启动前,正确在项目中通过 UMD 包方式直接依赖如下内容: + > 亦可使用异步加载工具,如果您按照正确的顺序进行加载 ```html - + - + - + - + @@ -76,13 +89,20 @@ sidebar_position: 0 - + - + ``` -> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 CDN 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 CDN 替代 -> - [https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js) +> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 CDN 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 CDN 替代 +> +> - [https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/1.0.18/dist/js/engine-core.js) ### 配置打包 @@ -95,8 +115,8 @@ sidebar_position: 0 "react-dom": "var window.ReactDOM", "prop-types": "var window.PropTypes", "@alifd/next": "var window.Next", - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@lce/lowcode-engine": "var window.AliLowCodeEngine", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var window.moment", "lodash": "var window._" } @@ -116,17 +136,19 @@ window.AliLowCodeEngine.init(document.getElementById('lce-container'), { ``` 如果您的项目中使用了 TypeScript,您可以通过如下 devDependencies 引入相关包,并获得对应的类型推断。 + ```javascript // package.json { "devDependencies": { - "@alilc/lowcode-engine": "^1.0.0" + "@lce/lowcode-engine": "^1.0.0" } } ``` + ```javascript // src/index.tsx -import { init } from '@alilc/lowcode-engine'; +import { init } from '@lce/lowcode-engine'; init(document.getElementById('lce-container'), { enableCondition: true, @@ -143,4 +165,5 @@ init 的功能包括但不限于: > 本节中的低代码编辑器例子可以在 demo 中找到:[https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts) ## 配置低代码编辑器 + 详见[低代码扩展简述](/site/docs/guide/expand/editor/summary)章节。 diff --git a/docs/docs/guide/create/useRenderer.md b/docs/docs/guide/create/useRenderer.md index a9fc79909e..6fd902005d 100644 --- a/docs/docs/guide/create/useRenderer.md +++ b/docs/docs/guide/create/useRenderer.md @@ -69,25 +69,20 @@ async function getSchemaAndComponents() { ### 进行渲染 拿到 schema 和 components 以后,您可以借由资产包数据和页面数据来完成页面的渲染: + ```tsx import React from 'react'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; const SamplePreview = () => { - return ( - - ); -} + return ; +}; ``` > 注 1:您可以注意到,此处是依赖了 React 进行渲染的,对于 Vue 形态的渲染或编辑器支持,详见[对应公告](https://github.com/alibaba/lowcode-engine/issues/236)。 > > 注 2:本节示例可在 Demo 代码里找到更完整的版本:[https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/preview.tsx](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/preview.tsx) - ## 出码模块 [在 Demo 中](https://lowcode-engine.cn/demo/demo-general/index.html),右上角有出码模块的示例使用方式: @@ -96,7 +91,6 @@ const SamplePreview = () => { > 本节示例可在出码插件里找到:[https://github.com/alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) - ## 低代码的生产和消费流程总览 经过“接入编辑器” - “接入运行时”这两节的介绍,我们已经可以了解到低代码所构建的生产和消费流程了,梳理如下图: diff --git a/docs/docs/guide/design/generator.md b/docs/docs/guide/design/generator.md index 2310cb7a5f..fe89c64d38 100644 --- a/docs/docs/guide/design/generator.md +++ b/docs/docs/guide/design/generator.md @@ -7,10 +7,10 @@ sidebar_position: 5 ## npm 包与仓库信息 -| **NPM 包** | **代码仓库** | **说明** | -| --- | --- | --- | -| [@alilc/lowcode-code-generator](https://www.npmjs.com/package/@alilc/lowcode-code-generator) | [alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine)(子目录:modules/code-generator)| 出码模块核心库,支持在 node 环境下运行,也提供了浏览器下运行的 standalone 模式 | -| [@alilc/lowcode-plugin-code-generator](https://www.npmjs.com/package/@alilc/lowcode-plugin-code-generator) | [alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) | 出码示例 -- 浏览器端出码插件 | +| **NPM 包** | **代码仓库** | **说明** | +| ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| [@lce/lowcode-code-generator](https://www.npmjs.com/package/@lce/lowcode-code-generator) | [alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine)(子目录:modules/code-generator) | 出码模块核心库,支持在 node 环境下运行,也提供了浏览器下运行的 standalone 模式 | +| [@alilc/lowcode-plugin-code-generator](https://www.npmjs.com/package/@alilc/lowcode-plugin-code-generator) | [alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) | 出码示例 -- 浏览器端出码插件 | ## 出码模块原理 @@ -30,12 +30,15 @@ sidebar_position: 5 出码模块和编译器很类似,都是将代码的一种表现形式转换成另一种表现形式,如: #### 编译器流程 + ![image.png](https://img.alicdn.com/imgextra/i3/O1CN019F21Lb1bsCwvNcWRq_!!6000000003520-2-tps-3228-492.png) #### 出码模块流程 + ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01SEcVta1uLD72W0URZ_!!6000000006020-2-tps-1536-182.png) ### 出码流程详解 + #### 协议解析 协议解析主要是将输入的 schema 解析成更适合出码模块内部使用的数据结构的过程。这样在后面的代码生成过程中就可以直接用这些数据,不必重复解析了。 @@ -61,6 +64,7 @@ sidebar_position: 5 ![](https://img.alicdn.com/imgextra/i4/O1CN01P0Lw7v1lfyWtfQTuR_!!6000000004847-2-tps-994-278.png) #### 代码生成 + 代码生成的流程如下: ![](https://img.alicdn.com/imgextra/i1/O1CN01lhcWBg1RG3nsoSoY2_!!6000000002083-2-tps-1468-464.png) @@ -93,17 +97,18 @@ interface IProjectPlugins { [slotName: string]: BuilderComponentPlugin[]; } ``` + ##### 代码块 代码块是出码产物的最小单元,由出码模块插件产出,多个代码块最后会被组装为代码文件。每个代码块通过 name 描述自己,再通过 linkAfter 描述应该跟在哪些 name 的代码块后面。 ```typescript interface ICodeChunk { - type: ChunkType; // 处理类型 ast | string | json - fileType: string; // 文件类型 js | css | ts ... - name: string; // 代码块名称,与 linkAfter 相关 - subModule?: string; // 模块内文件名,默认是 index - content: ChunkContent; // 代码块内容,数据格式与 type 相关 + type: ChunkType; // 处理类型 ast | string | json + fileType: string; // 文件类型 js | css | ts ... + name: string; // 代码块名称,与 linkAfter 相关 + subModule?: string; // 模块内文件名,默认是 index + content: ChunkContent; // 代码块内容,数据格式与 type 相关 linkAfter: string[]; } ``` diff --git a/docs/docs/guide/design/materialParser.md b/docs/docs/guide/design/materialParser.md index 78936011fd..fb6917d3e3 100644 --- a/docs/docs/guide/design/materialParser.md +++ b/docs/docs/guide/design/materialParser.md @@ -2,25 +2,31 @@ title: 入料模块设计 sidebar_position: 2 --- + ## 介绍 -入料模块负责物料接入,通过自动扫描、解析源码组件,产出一份符合《中后台低代码组件描述协议》的** **JSON Schema。这份 Schema 包含基础信息和属性描述信息部分,低代码引擎会基于它们在运行时自动生成一份 configure 配置,用作设置面板展示。 + +入料模块负责物料接入,通过自动扫描、解析源码组件,产出一份符合《中后台低代码组件描述协议》的\*\* \*\*JSON Schema。这份 Schema 包含基础信息和属性描述信息部分,低代码引擎会基于它们在运行时自动生成一份 configure 配置,用作设置面板展示。 ## npm 包与仓库信息 -- npm 包:@alilc/lowcode-material-parser +- npm 包:@lce/lowcode-material-parser - 仓库:[https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) 下的 modules/material-parser ## 原理 + 入料模块使用动静态分析结合的方案,动态胜在真实,静态胜在细致,不过全都依赖源码中定义的属性,若未定义,或者定义错误,则无法正确入料。 ### 整体流程 + 大体分为本地化、扫描、解析、转换、校验 5 部分,如下图所示。 ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01sXf5fL1E5RcRxAlM1_!!6000000000300-2-tps-2116-206.png) ### 静态解析 + 在静态分析时,分为 JS 和 TS 两种情况。 #### 静态解析 JS + 在 JS 情况下,基于 react-docgen 进行扩展,自定义了 resolver 及 handler,前者用于寻找组件定义,后者用于解析 propTypes、defaultProps 等信息,整体流程图如下: ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01VrhkEb1R6tsntvGhV_!!6000000002063-2-tps-2176-478.png) @@ -28,6 +34,7 @@ sidebar_position: 2 react-docgen 使用 babel 生成语法树,再使用 ast-types 进行遍历去寻找组件节点及其属性类型定义。原本的 react-docgen 只能解析单文件,且不能解析 IIFE、逗号表达式等语法结构 (一般出现在转码后的代码中)。笔者对其进行改造,使之可以递归解析多文件去查找组件定义,且能够解开 IIFE,以及对逗号表达式进行转换,以方便后续的组件解析。另外,还增加了子组件解析的功能,即类似 `Button.Group = Group` 这种定义。 #### 静态解析 TS + 在 TS 情况下,还要再细分为 TS 源码和 TS 编译后的代码。 TS 源码中,React 组件具有类型签名;TS 编译后的代码中,dts 文件 (如有) 包含全部的 class / interface / type 类型信息。可以从这些类型信息中获取组件属性描述。整体流程图如下: @@ -75,6 +82,7 @@ TypeScript Compiler 会将合成类型的所有属性展开,比如 `boolean | 值得注意的是,有些 js 文件里还会引入 css 文件,而且从笔者了解的情况来看,这种情况在集团内部不在少数。这种组件不配合 webpack 使用,肯定会报错,但是使用 webpack 会明显拖慢速度,所以笔者采用了 sandbox 的方式,对 require 进来的类 css 文件进行 mock。这里,笔者使用了 vm2 这个库,它对 node 自带的 vm 进行了封装,可以劫持文件中的 require 方法。因为 parse-prop-types 的修改在沙箱中会失效,所以笔者也 mock 了组件中的 prop-types 库。 ### 整体大图 + 把上述的静态解析和动态解析流程结合起来,可以得到以下大图。 ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01TA9lQp27QmwVT7WUC_!!6000000007792-2-tps-2658-1072.png) diff --git a/docs/docs/guide/design/renderer.md b/docs/docs/guide/design/renderer.md index 4a8c43f329..03366932fd 100644 --- a/docs/docs/guide/design/renderer.md +++ b/docs/docs/guide/design/renderer.md @@ -2,6 +2,7 @@ title: 渲染模块设计 sidebar_position: 4 --- + ## 低代码渲染介绍 @@ -10,13 +11,14 @@ sidebar_position: 4 ## npm 包与仓库信息 -- React 框架渲染 npm 包:@alilc/lowcode-react-renderer +- React 框架渲染 npm 包:@lce/lowcode-react-renderer - 仓库:[https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) 下的 - - packages/renderer-core - - packages/react-renderer - - packages/react-simulator-renderer + - packages/renderer-core + - packages/react-renderer + - packages/react-simulator-renderer ## 渲染框架原理 + ### 整体架构 ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01i4IiSR1cMtUFXaWQq_!!6000000003587-2-tps-1686-1062.png) @@ -32,54 +34,65 @@ sidebar_position: 4 这里主要解析一下刚刚提到的架构中的适配层和渲染层。 #### 适配层 + 适配层提供的是各个框架之间的差异项。比如 `React.createElement` 和 `Rax.createElement` 方法是不同的。所以需要在适配层对 API 进行抹平。 ##### React + ```typescript import { createElement } from 'react'; -import { - adapter, -} from '@ali/lowcode-renderer-core'; +import { adapter } from '@ali/lowcode-renderer-core'; adapter.setRuntime({ createElement, }); ``` + ##### Rax + ```typescript import { createElement } from 'rax'; -import { - adapter, -} from '@ali/lowcode-renderer-core'; +import { adapter } from '@ali/lowcode-renderer-core'; adapter.setRuntime({ createElement, }); ``` + 这时,在核心层使用的 `createElement` 会基于使用不同的 renderer 而使用不同的方法,自动适配框架所需的运行时方法。 所需的方法包括: - `setRuntime`:设置运行时相关方法 - - `Component`:组件类,参考 React 的 `Component`。 - - `PureComponent`:组件类,参考 React 的 `PureComponent`。 - - `createContext`:创建一个 `Context` 对象的方法。例如,当 React 渲染一个订阅了这个 `Context` 对象的组件,这个组件会从组件树中离自身最近的那个匹配的 `Provider` 中读取到当前的 `context` 值。 - - `createElement`:创建 `Component` 元素,例如在 React 中即为创建 React 元素。 - - `forwardRef`:ref 转发的方法。Ref 转发是一个可选特性,其允许某些组件接收 ref,并将其向下传递(换句话说,“转发”它)给子组件。 - - `findDOMNode`:是一个访问底层 DOM 节点的方法。如果组件已经被挂载到 DOM 上,此方法会返回浏览器中相应的原生 DOM 元素。 + - `Component`:组件类,参考 React 的 `Component`。 + - `PureComponent`:组件类,参考 React 的 `PureComponent`。 + - `createContext`:创建一个 `Context` 对象的方法。例如,当 React 渲染一个订阅了这个 `Context` 对象的组件,这个组件会从组件树中离自身最近的那个匹配的 `Provider` 中读取到当前的 `context` 值。 + - `createElement`:创建 `Component` 元素,例如在 React 中即为创建 React 元素。 + - `forwardRef`:ref 转发的方法。Ref 转发是一个可选特性,其允许某些组件接收 ref,并将其向下传递(换句话说,“转发”它)给子组件。 + - `findDOMNode`:是一个访问底层 DOM 节点的方法。如果组件已经被挂载到 DOM 上,此方法会返回浏览器中相应的原生 DOM 元素。 - `setRenderers` - - `PageRenderer`:页面渲染的方法。可以定制页面渲染的生命周期,定制导航,定制路由等。 - - `ComponentRenderer`:组件渲染的方法。 - - `BlockRenderer`:区块渲染的方法。 + - `PageRenderer`:页面渲染的方法。可以定制页面渲染的生命周期,定制导航,定制路由等。 + - `ComponentRenderer`:组件渲染的方法。 + - `BlockRenderer`:区块渲染的方法。 #### 渲染层 + ##### React Renderer + 内部的技术栈统一都是 React,大多数适配层的 API 都是按照 React 来设计的,所以对于 React Renderer 来说,需要做的不多。 React Renderer 的代码量很少,主要是将 React API 注册到适配层中。 ```typescript -import React, { Component, PureComponent, createElement, createContext, forwardRef, ReactInstance, ContextType } from 'react'; +import React, { + Component, + PureComponent, + createElement, + createContext, + forwardRef, + ReactInstance, + ContextType, +} from 'react'; import ReactDOM from 'react-dom'; import { adapter, @@ -118,7 +131,9 @@ adapter.setConfigProvider(ConfigProvider); ``` ##### Rax Renderer + Rax 的大多数 API 和 React 基本也是一致的,差异点在于重写了一些方法。 + ```typescript import { Component, PureComponent, createElement, createContext, forwardRef } from 'rax'; import findDOMNode from 'rax-find-dom-node'; @@ -152,8 +167,11 @@ adapter.setRenderers({ ``` ### 多模式渲染 + #### 预览模式渲染 + 预览模式的渲染,主要是通过 Schema、components 即可完成上述的页面渲染能力。 + ```typescript import ReactRenderer from '@ali/lowcode-react-renderer'; import ReactDOM from 'react-dom'; @@ -168,7 +186,7 @@ const schema = { props: { type: 'primary', style: { - color: '#2077ff' + color: '#2077ff', }, }, children: '确定', @@ -180,19 +198,20 @@ const components = { Button, }; -ReactDOM.render(( - -), document.getElementById('root')); +ReactDOM.render( + , + document.getElementById('root'), +); ``` #### 设计模式渲染(Simulator) + 设计模式渲染就是将编排生成的《搭建协议》渲染成视图的过程,视图是可以交互的,所以必须要处理好内部数据流、生命周期、事件绑定、国际化等等。也称为画布的渲染,画布是 UI 编排的核心,它一般融合了页面的渲染以及组件/区块的拖拽、选择、快捷配置。 画布的渲染和预览模式的渲染的区别在于,画布的渲染和设计器之间是有交互的。所以在这里我们新增了一层 `Simulator` 作为设计器和渲染的连接器。 `Simulator` 是将设计器传入的 `DocumentModel` 和组件/库描述转成相应的 Schema 和 组件类。再调用 Render 层完成渲染。我们这里介绍一下它提供的能力。 + ##### 整体架构 + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN017cYBAp1hvJKPUVLbx_!!6000000004339-2-tps-1500-864.png) - `Project`:位于顶层的 Project,保留了对所有文档模型的引用,用于管理应用级 Schema 的导入与导出。 @@ -206,6 +225,7 @@ ReactDOM.render(( - 通用交互模型:内置了拖拽、活跃追踪、悬停探测、剪贴板、滚动、快捷键绑定。 ##### 模拟器介绍 + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01GF1PMj288kxovvnK8_!!6000000007888-2-tps-1500-740.png) - 运行时环境:从运行时环境来看,目前我们有 React 生态、Rax 生态。而在对外的历程中,我们也会拥有 Vue 生态、Angular 生态等。 diff --git a/docs/docs/guide/design/setter.md b/docs/docs/guide/design/setter.md index 7afbbf034f..e3790b4663 100644 --- a/docs/docs/guide/design/setter.md +++ b/docs/docs/guide/design/setter.md @@ -15,9 +15,10 @@ sidebar_position: 6 - 样式:展示该物料样式的属性; - 事件:如果该物料有声明事件,则会出现事件面板,用于绑定事件; - 高级:两个逻辑相关的属性,**条件渲染**和**循环。** + ## npm 包与仓库信息 -- npm 包:@alilc/lowcode-engine-ext +- npm 包:@lce/lowcode-engine-ext - 仓库:[https://github.com/alibaba/lowcode-engine-ext](https://github.com/alibaba/lowcode-engine-ext) ## 设置器模块原理 @@ -75,6 +76,7 @@ interface SettingTargetProp extends SettingTarget { ``` ### SettingField 抽象 + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01D855j01j8sg9GdtJr_!!6000000004504-2-tps-2022-402.png) ```typescript diff --git a/docs/docs/guide/expand/editor/cli.md b/docs/docs/guide/expand/editor/cli.md index 0577a181db..24a9abec19 100644 --- a/docs/docs/guide/expand/editor/cli.md +++ b/docs/docs/guide/expand/editor/cli.md @@ -2,6 +2,7 @@ title: 低代码生态脚手架 & 调试机制 sidebar_position: 10 --- + ## 脚手架简述 在 fork 低代码编辑器 demo 项目后,您可以直接在项目中任意扩展低代码编辑器。如果您想要将自己的组件/插件/设置器封装成一个独立的 npm 包并提供给社区,您可以使用我们的低代码脚手架建立低代码扩展。 @@ -12,21 +13,24 @@ sidebar_position: 10 > > 中文教程:[https://blog.csdn.net/weixin_45027467/article/details/106862520](https://blog.csdn.net/weixin_45027467/article/details/106862520) - ## 脚手架功能 + ### 脚手架初始化 ```bash npm init @alilc/element your-element-name ``` + 不写 your-element-name 的情况下,则在当前目录创建。 > 注 1:如遇错误提示 `sh: create-element: command not found` 可先执行下述命令 + ```bash npm install -g @alilc/create-element ``` > 注 2:觉得安装速度比较慢的同学,可以设置 npm 国内镜像,如 + ```bash npm init @alilc/element your-element-name --registry=https://registry.npmmirror.com ``` @@ -64,135 +68,140 @@ npm publish ### 组件/插件/Setter 侧 1. 插件/setter 在原有 alt 的配置中添加相关的调试配置 - ```json - // build.json 中 - { - "plugins": [ - [ - "@alilc/build-plugin-alt", - { - "type": "plugin", - "inject": true, // 开启注入调试 - // 配置要打开的页面,在注入调试模式下,不配置此项的话不会打开浏览器 - // 支持直接使用官方 demo 项目:https://lowcode-engine.cn/demo/index.html - "openUrl": "https://lowcode-engine.cn/demo/index.html?debug" - } - ], + +```json +// build.json 中 +{ + "plugins": [ + [ + "@alilc/build-plugin-alt", + { + "type": "plugin", + "inject": true, // 开启注入调试 + // 配置要打开的页面,在注入调试模式下,不配置此项的话不会打开浏览器 + // 支持直接使用官方 demo 项目:https://lowcode-engine.cn/demo/index.html + "openUrl": "https://lowcode-engine.cn/demo/index.html?debug" + } ] - } - ``` + ] +} +``` 2. 组件需先安装 @alilc/build-plugin-alt,再将组件内的 `build.lowcode.js`文件修改如下 - ```javascript - const { library } = require('./build.json'); - - module.exports = { - alias: { - '@': './src', - }, - plugins: [ - [ - // lowcode 的配置保持不变,这里仅为示意。 - '@alifd/build-plugin-lowcode', - { - library, - engineScope: "@alilc" - }, - ], - [ - '@alilc/build-plugin-alt', - { - type: 'component', - inject: true, - library, - // 配置要打开的页面,在注入调试模式下,不配置此项的话不会打开浏览器 - // 支持直接使用官方 demo 项目:https://lowcode-engine.cn/demo/index.html - openUrl: "https://lowcode-engine.cn/demo/index.html?debug" - } - ]], - }; - ``` -3. 本地组件/插件/Setter正常启动调试,在项目的访问地址增加 debug,即可开启注入调试。 - ```url - https://lowcode-engine.cn/demo/demo-general/index.html?debug - ``` +```javascript +const { library } = require('./build.json'); + +module.exports = { + alias: { + '@': './src', + }, + plugins: [ + [ + // lowcode 的配置保持不变,这里仅为示意。 + '@alifd/build-plugin-lowcode', + { + library, + engineScope: '@alilc', + }, + ], + [ + '@alilc/build-plugin-alt', + { + type: 'component', + inject: true, + library, + // 配置要打开的页面,在注入调试模式下,不配置此项的话不会打开浏览器 + // 支持直接使用官方 demo 项目:https://lowcode-engine.cn/demo/index.html + openUrl: 'https://lowcode-engine.cn/demo/index.html?debug', + }, + ], + ], +}; +``` + +3. 本地组件/插件/Setter 正常启动调试,在项目的访问地址增加 debug,即可开启注入调试。 + +```url +https://lowcode-engine.cn/demo/demo-general/index.html?debug +``` ### 项目侧的准备 > 如果你的低代码项目 fork 自官方 demo,那么项目侧的准备已经就绪,不用再看以下内容~ 1. 安装 @alilc/lowcode-plugin-inject - ```bash - npm i @alilc/lowcode-plugin-inject --save-dev - ``` + +```bash +npm i @alilc/lowcode-plugin-inject --save-dev +``` 2. 在引擎初始化侧引入插件 - ```typescript - import Inject, { injectAssets } from '@alilc/lowcode-plugin-inject'; - import { IPublicModelPluginContext } from '@alilc/lowcode-types'; - - export default async () => { - // 注意 Inject 插件必须在其他插件前注册,且所有插件的注册必须 await - await plugins.register(Inject); - await plugins.register(OtherPlugin); - await plugins.register((ctx: IPublicModelPluginContext) => { - return { - name: "editor-init", - async init() { - // 设置物料描述前,使用插件提供的 injectAssets 进行处理 - const { material, project } = ctx; - material.setAssets(await injectAssets(assets)); - }, - }; - }); - } - ``` + +```typescript +import Inject, { injectAssets } from '@alilc/lowcode-plugin-inject'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; + +export default async () => { + // 注意 Inject 插件必须在其他插件前注册,且所有插件的注册必须 await + await plugins.register(Inject); + await plugins.register(OtherPlugin); + await plugins.register((ctx: IPublicModelPluginContext) => { + return { + name: 'editor-init', + async init() { + // 设置物料描述前,使用插件提供的 injectAssets 进行处理 + const { material, project } = ctx; + material.setAssets(await injectAssets(assets)); + }, + }; + }); +}; +``` 3. 在 saveSchema 时过滤掉插入的 url,避免影响渲染态 - ```typescript - import { filterPackages } from '@alilc/lowcode-plugin-inject'; - export const saveSchema = async () => { - // ... - const packages = await filterPackages(editor.get('assets').packages); - window.localStorage.setItem( - 'packages', - JSON.stringify(packages), - ); - // ... - }; - ``` + +```typescript +import { filterPackages } from '@alilc/lowcode-plugin-inject'; +export const saveSchema = async () => { + // ... + const packages = await filterPackages(editor.get('assets').packages); + window.localStorage.setItem('packages', JSON.stringify(packages)); + // ... +}; +``` 4. 如果希望预览态也可以注入调试组件,则需要在 preview 逻辑里插入组件 - ```javascript - import { injectComponents } from '@alilc/lowcode-plugin-inject'; - async function init() { - // 在传递给 ReactRenderer 前,先通过 injectComponents 进行处理 - const components = await injectComponents(buildComponents(libraryMap, componentsMap)); - // ... - } - ``` +```javascript +import { injectComponents } from '@alilc/lowcode-plugin-inject'; + +async function init() { + // 在传递给 ReactRenderer 前,先通过 injectComponents 进行处理 + const components = await injectComponents(buildComponents(libraryMap, componentsMap)); + // ... +} +``` 注:若控制台出现如下错误,直接访问一次该 url 即可~ ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01cvKmeK1saCqpIxbLW_!!6000000005782-2-tps-1418-226.png) - ## Meta 信息 + meta 信息是放在生态元素 package.json 中的一小段 json,用户可以通过 meta 了解到这个元素的一些基本信息,如元素类型,一些入口信息等。 ```typescript interface LcMeta { - type: 'plugin' | 'setter' | 'component'; // 元素类型,尚未实现 - pluginName: string; // 插件名,仅插件包含 + type: 'plugin' | 'setter' | 'component'; // 元素类型,尚未实现 + pluginName: string; // 插件名,仅插件包含 meta: { - dependencies: string[]; // 插件依赖的其他插件列表,仅插件包含 + dependencies: string[]; // 插件依赖的其他插件列表,仅插件包含 engines: { - lowcodeEngine: string; // 适配的引擎版本 - } - prototype: string; // 物料描述入口,仅组件包含,尚未实现 - prototypeView: string; // 物料设计态入口,仅组件包含,尚未实现 - } + lowcodeEngine: string; // 适配的引擎版本 + }; + prototype: string; // 物料描述入口,仅组件包含,尚未实现 + prototypeView: string; // 物料设计态入口,仅组件包含,尚未实现 + }; } ``` diff --git a/docs/docs/guide/expand/editor/material.md b/docs/docs/guide/expand/editor/material.md index 6e4979553b..84d2652924 100644 --- a/docs/docs/guide/expand/editor/material.md +++ b/docs/docs/guide/expand/editor/material.md @@ -2,7 +2,9 @@ title: 物料扩展 sidebar_position: 1 --- + ## 物料简述 + 物料是页面搭建的原料,按照粒度可分为组件、区块和模板: 1. 组件:组件是页面搭建最小的可复用单元,其只对外暴露配置项,用户无需感知其内部实现; @@ -10,8 +12,11 @@ sidebar_position: 1 3. 模板:模板和区块类似,也是一段符合低代码协议的 schema,不过其根节点的 componentName 需固定为 Page,它常常用于初始化一个页面; 低代码编辑器中的物料需要进行一定的配置和处理,才能让用户在低代码平台使用起来。这个过程中,需要一份一份配置文件,也就是资产包。资产包文件中,针对每个物料定义了它们在低代码编辑器中的使用描述。 + ## 资产包配置 + ### 什么是低代码资产包 + ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01SQJfxh1Y8uwDXksaK_!!6000000003015-2-tps-3068-1646.png) 在低代码 Demo 中,我们可以看到,组件面板不只提供一个组件,组件是以集合的形式提供给低代码平台的,而低代码资产包正是这些组件构成集合的形式。 **_它背后的 Interface,_**[**_在引擎中的定义摘抄如下_**](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/assets.ts)**_:_** @@ -32,46 +37,59 @@ export interface ComponentSort { export interface RemoteComponentDescription { exportName: string; // 组件描述导出名字,可以通过 window[exportName] 获取到组件描述的 Object 内容; url: string; // 组件描述的资源链接; - package: { // 组件 (库) 的 npm 信息; + package: { + // 组件 (库) 的 npm 信息; npm: string; - } + }; } ``` + 资产包协议 TS 描述 + ### Demo 中的资产包 + 在 Demo 项目中,自带了一份默认的资产包: + > [https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/services/assets.json](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/services/assets.json) 这份资产包里的物料是我们内部沉淀出的,用户可以通过这套资产包体验引擎提供的搭建、配置能力。 **_在项目中正常注册资产包:_** + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; // 以任何方式引入 assets material.setAssets(assets); ``` + **_以支持调试的方式注册资产包:_** + > 这样启动并部署出来的项目,可以通过在预览地址加上 ?debug 来调试本地物料。 > 例如: +> > - 通过插件初始化一个物料 > - 按照参考文章配置物料支持调试 > - 启动物料 > - 访问:[https://lowcode-engine.cn/demo/demo-general/index.html?debug](https://lowcode-engine.cn/demo/demo-general/index.html) > -详细参考:[低代码生态脚手架 & 调试机制](https://lowcode-engine.cn/site/docs/guide/expand/editor/cli) +> 详细参考:[低代码生态脚手架 & 调试机制](https://lowcode-engine.cn/site/docs/guide/expand/editor/cli) ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; import Inject, { injectAssets } from '@alilc/lowcode-plugin-inject'; await material.setAssets(await injectAssets(assets)); ``` ### 手工配置资产包 + 参考 Demo 中的[基础 Fusion Assets 定义](https://github.com/alibaba/lowcode-demo/blob/main/demo-basic-fusion/src/services/assets.json),如果我们修改 assets.json,我们就能做到配置资产包: - packages 对象:我们需要在其中定义这个包的获取方式,如果不定义,就不会被低代码引擎动态加载并对应上组件实例。定义方式是 UMD 的包,低代码引擎会尝试在 window 上寻找对应 library 的实例; - components 对象:我们需要在其中定义物料描述,物料描述我们将在下一节继续讲解。 + ## 物料描述配置 + ### 什么是物料描述 + 在低代码平台中,用户是不同的,有可能是开发、测试、运营、设计,也有可能是销售、行政、HR 等等各种角色。他们大多数不具备专业的前端开发知识,对于低代码平台来说,我们使用组件的流程如下: 1. 用户通过拖拽/选择组件,在画布中看到组件; @@ -88,7 +106,9 @@ await material.setAssets(await injectAssets(assets)); 3. 能力配置/体验增强:推荐用于优化搭建产品编辑体验,定制编辑能力的配置信息。 因此,我们设计了[**《中后台低代码组件描述协议》**](/site/docs/specs/material-spec)来描述一个低代码编辑器中可被配置的内容。 + ### Demo 中的物料描述 + 我们可以从 Demo 中的 assets.json 找到如下三个物料描述: - @alifd/pro-layout:布局组件,放在`window.AlifdProLayoutMeta`,[meta 文件地址](https://alifd.alicdn.com/npm/@alifd/pro-layout@1.0.1-beta.5/build/lowcode/meta.js); @@ -96,36 +116,50 @@ await material.setAssets(await injectAssets(assets)); - @alilc/lowcode-materials:原子组件,放在 `window.AlilcLowcodeMaterialsMeta`,[meta 文件地址](https://alifd.alicdn.com/npm/@alilc/lowcode-materials@1.0.1/build/lowcode/meta.js); **_引擎中,会尝试调用对应 meta 文件,并注入到全局:_** + ```tsx const src = 'https://alifd.alicdn.com/npm/@alifd/pro-layout@1.0.1-beta.5/build/lowcode/meta.js'; const script = document.createElement('script'); script.src = src; document.head.appendChild(script); ``` + 然后在 window 上就能拿到对应的物料描述内容了: ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01DHSEOH1RwCEq19Ro9_!!6000000002175-2-tps-1896-1138.png) 手工配置物料描述时,可以用这样的方式参考一下 Demo 中的物料描述是如何实现的。 + ### 手工配置物料描述 + 详见:“物料描述详解”章节。 + ## 物料的低代码开发 + > _**注意:引擎提供的 cli 并未对 windows 系统做适配,windows 环境必须使用 **_[_**WSL**_](https://docs.microsoft.com/zh-cn/windows/wsl/install)_**,其他终端不保证能正常运行**_ 您可以通过本节内容,完成一个组件在低代码编辑器中的配置和调试。 + ### 前言(必读) -引擎提供的物料开发脚手架内置了**_入料模块_**,初始化的时候会自动根据源码解析出一份_**低代码描述**_,但是从源码解析出来的低代码描述让用户直接使用是不够精细的,因为源码包含的信息不够,它没办法完全包含配置项的交互; + +引擎提供的物料开发脚手架内置了**_入料模块_**,初始化的时候会自动根据源码解析出一份**_低代码描述_**,但是从源码解析出来的低代码描述让用户直接使用是不够精细的,因为源码包含的信息不够,它没办法完全包含配置项的交互; ![image.png](https://img.alicdn.com/imgextra/i1/O1CN010t0YzC1znDPQB1LUA_!!6000000006758-2-tps-802-1830.png) 比如设计师出了上面的设计稿,这里面除了有哪些 props 可被配置,通过哪个设置器配置,还包含了 props 之间的聚合、排序,甚至有自定义 setter,这些信息源码里是不具备的,需要在低代码描述里进行开发; **_因此我们建议只把 cli 初始化的低代码描述作为启动,要根据用户习惯对配置项进行设计,然后人工地去开发调试直接的低代码描述。_** + ### 新开发组件 + #### 组件项目初始化 + ```bash npm init @alilc/element your-material-name ``` + #### 选择组件类型 + > 组件 -> <组件组织方式> ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01BTiMt51iLPtzDbuh8_!!6000000004396-2-tps-1596-464.png) 这里我们选择 react-组件库,之后便生出我们的组件库项目,目录结构如下: + ``` my-materials ├── README.md @@ -146,7 +180,9 @@ my-materials │ │ └── package.json // 【必选】 └── └── ExampleComponent2 // 业务组件2 ``` + #### 组件开发与调试 + ```bash # 安装依赖 npm install @@ -157,6 +193,7 @@ npm run lowcode:dev # 构建低代码产物 npm run lowcode:build ``` + 执行上述命令后会在组件 (库) 根目录生成一个 `lowcode` 文件夹,里面会包含每个组件的低代码描述: ![image.png](https://img.alicdn.com/imgextra/i2/O1CN016m7gOK1DvpIcnlTvY_!!6000000000279-2-tps-1446-906.png) @@ -167,44 +204,57 @@ npm run lowcode:build - 设置组件的 setter(上一个章节介绍的设置器,也可以定制设置器用到物料中); - 新增组件配置项; - 更改当前配置项; + #### 配置示例 + 隐藏一个 prop + ```typescript { name: 'dataSource', condition: () => false, } ``` + 展示样式 + ```typescript { name: 'dataSource', display: 'accordion' | 'inline' | 'block' | 'plain' | 'popup' | 'entry', // 常用的是 inline(默认), block、entry } ``` + #### 编辑态视图 + 用户可以在 lowcode/ 目录下新增 view.tsx 来增加编辑态视图。编辑态视图用于在编辑态时展示与真实预览不一样的视图。 view.tsx 输出的也是一个 React 组件。 注意:如果是单组件,而非组件库模式的话,view.tsx 应置于 lowcode 而非 lowcode/ 目录下 - #### 发布组件 + ```bash # 在组件根目录下,执行 $ npm publish ``` + ### 现存组件低代码化 + 组件低代码化是指,在引入低代码平台之前,我们大多数都是使用源码开发的组件,也就是 ProCode 组件。 在引入低代码平台之后,原来的源码组件是需要转化为低代码物料,这样才能在低代码平台进行消费。 所以接下来会说明,对于已有的源码组件,我们如何把它低代码化。 + #### 配置低代码开发环境 + 在您的组件开发环境中,安装 [build-scripts](https://github.com/ice-lab/build-scripts) 和它的低代码开发插件: + ```bash npm install -D @alifd/build-plugin-lowcode @alib/build-scripts --save-dev ``` + 新增 build-scripts 配置文件:build.lowcode.js ```javascript @@ -214,21 +264,24 @@ module.exports = { }, plugins: [ [ - "@alifd/build-plugin-lowcode", + '@alifd/build-plugin-lowcode', { engineScope: '@alilc', - } - ] + }, + ], ], }; - ``` + 在 package.json 中定义低代码开发相关命令 + ```javascript "lowcode:dev": "build-scripts start --config ./build.lowcode.js", "lowcode:build": "build-scripts build --config ./build.lowcode.js", ``` + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN014iSa1P1dNdkUUtoMm_!!6000000003724-2-tps-1830-822.png) + #### 开发调试 ```bash @@ -246,20 +299,24 @@ npm run lowcode:build ``` #### 发布组件 + ```bash # 在组件根目录下,执行 npm publish ``` ## 在项目中引入组件 (库) + > 以下内容可观看[《阿里巴巴低代码引擎项目实战 (3)-自定义组件接入》](https://www.bilibili.com/video/BV1dZ4y1m76S/)直播回放 对于平台或者用户来说,可能所需要的组件集合是不同的。如果需要自定义组件集合,就需要定制资产包,定制的资产包是配置了一系列组件的,将这份资产包用于引擎即可在引擎中使用自定义的组件集合。 ### 管理一份资产包 + 项目中使用的组件相关资源都需要在资产包中定义,那么我们自己开发的组件库如果要在项目中使用,只需要把组件构建好的相关资源 merge 到 assets.json 中就可以; #### 自定义组件加入到资产包 + 通过官方脚手架自定义组件构建发布之后,npm 包里会出现一个 `build/lowcode/assets-prod.json`文件,我们只需要把该文件的内容 merge 到项目的 assets.json 中就可以; #### 资产包托管 @@ -269,24 +326,29 @@ npm publish - 再高级一点的做法是实现一个资产包管理的服务,能够通过用户界面去更新资产包的内容; ### 在项目中引入资产包 + ```typescript -import { material, plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { material, plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; // 动态加载 assets -plugins.register((ctx: IPublicModelPluginContext) => { - return { - name: 'ext-assets', - async init() { - try { - // 将下述链接替换为您的物料即可。无论是通过 utils 从物料中心引入,还是通过其他途径如直接引入物料描述 - const res = await window.fetch('https://fusion.alicdn.com/assets/default@0.1.95/assets.json'); - const assets = await res.text(); - material.setAssets(assets); - } catch (err) { - console.error(err); - } - }, - } -}).catch(err => console.error(err)); +plugins + .register((ctx: IPublicModelPluginContext) => { + return { + name: 'ext-assets', + async init() { + try { + // 将下述链接替换为您的物料即可。无论是通过 utils 从物料中心引入,还是通过其他途径如直接引入物料描述 + const res = await window.fetch( + 'https://fusion.alicdn.com/assets/default@0.1.95/assets.json', + ); + const assets = await res.text(); + material.setAssets(assets); + } catch (err) { + console.error(err); + } + }, + }; + }) + .catch((err) => console.error(err)); ``` diff --git a/docs/docs/guide/expand/editor/metaSpec.md b/docs/docs/guide/expand/editor/metaSpec.md index dda16a9cb3..3d764e3bac 100644 --- a/docs/docs/guide/expand/editor/metaSpec.md +++ b/docs/docs/guide/expand/editor/metaSpec.md @@ -2,6 +2,7 @@ title: 物料描述详解 sidebar_position: 2 --- + ## 物料描述概述 中后台前端体系中,存在大量的组件,程序员可以通过阅读文档,知悉组件的用法。可是搭建平台无法理解 README,而且很多时候,README 里并没有属性列表。这时,我们需要一份额外的描述,来告诉低代码搭建平台,组件接受哪些属性,又是该用怎样的方式来配置这些属性,于是,[**《中后台低代码组件描述协议》**](/site/docs/specs/material-spec)应运而生。协议主要包含三部分:基础信息、属性信息 props、能力配置/体验增强 configure。 @@ -14,9 +15,10 @@ sidebar_position: 2 ## 自动生成物料描述 -可以使用官方提供的 `@alilc/lowcode-material-parser` 解析本地组件,自动生成物料描述。把物料描述放到资产包定义中,就能让低代码引擎理解如何制作物料。详见上一个章节“物料扩展”。 +可以使用官方提供的 `@lce/lowcode-material-parser` 解析本地组件,自动生成物料描述。把物料描述放到资产包定义中,就能让低代码引擎理解如何制作物料。详见上一个章节“物料扩展”。 下面以某个组件代码片段为例: + ```typescript // /path/to/component import { PureComponent } from 'react'; @@ -28,8 +30,8 @@ export default class FusionForm extends PureComponent { static defaultProps = { name: '张三', age: 18, - friends: ['李四','王五','赵六'], - } + friends: ['李四', '王五', '赵六'], + }; static propTypes = { /** @@ -43,7 +45,7 @@ export default class FusionForm extends PureComponent { /** * 这是用于描述好友列表 */ - friends: PropTypes.array + friends: PropTypes.array, }; render() { @@ -55,7 +57,7 @@ export default class FusionForm extends PureComponent { 引入 parse 工具自动解析 ```typescript -import parse from '@alilc/lowcode-material-parser'; +import parse from '@lce/lowcode-material-parser'; (async () => { const result = await parse({ entry: '/path/to/component' }); console.log(JSON.stringify(result, null, 2)); @@ -97,11 +99,7 @@ import parse from '@alilc/lowcode-material-parser'; "name": "friends", "propType": "array", "description": "这是用于描述好友列表", - "defaultValue": [ - "李四", - "王五", - "赵六" - ] + "defaultValue": ["李四", "王五", "赵六"] } ] } @@ -153,11 +151,7 @@ import parse from '@alilc/lowcode-material-parser'; "name": "friends", "propType": "array", "description": "这是用于描述好友列表", - "defaultValue": [ - "李四", - "王五", - "赵六" - ] + "defaultValue": ["李四", "王五", "赵六"] } ], // 手工增加的 size 属性 @@ -168,7 +162,7 @@ import parse from '@alilc/lowcode-material-parser'; "title": "尺寸", "name": "size", "setter": { - "componentName": 'RadioGroupSetter', + "componentName": "RadioGroupSetter", "isRequired": true, "props": { "options": [ @@ -176,7 +170,7 @@ import parse from '@alilc/lowcode-material-parser'; { "title": "中", "value": "normal" }, { "title": "小", "value": "small" } ] - }, + } } } ] @@ -287,10 +281,12 @@ import parse from '@alilc/lowcode-material-parser'; ```javascript { configure: { - props: [{ - description: '标签文本', - display: 'inline', - }] + props: [ + { + description: '标签文本', + display: 'inline', + }, + ]; } } ``` @@ -302,10 +298,12 @@ import parse from '@alilc/lowcode-material-parser'; ```javascript { configure: { - props: [{ - description: '高级', - display: 'block', - }] + props: [ + { + description: '高级', + display: 'block', + }, + ]; } } ``` @@ -317,10 +315,12 @@ import parse from '@alilc/lowcode-material-parser'; ```javascript { configure: { - props: [{ - description: '表单项配置', - display: 'accordion', - }] + props: [ + { + description: '表单项配置', + display: 'accordion', + }, + ]; } } ``` @@ -329,16 +329,17 @@ import parse from '@alilc/lowcode-material-parser'; ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01zkjBak1YY6igYUO1n_!!6000000003070-2-tps-796-424.png) - ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01lmuRTl1LOPKMnsfLJ_!!6000000001289-2-tps-794-632.png) ```javascript { configure: { - props: [{ - description: '风格与样式', - display: 'entry', - }] + props: [ + { + description: '风格与样式', + display: 'entry', + }, + ]; } } ``` @@ -350,15 +351,16 @@ import parse from '@alilc/lowcode-material-parser'; ```javascript { configure: { - props: [{ - description: '返回上级', - display: 'plain', - }] + props: [ + { + description: '返回上级', + display: 'plain', + }, + ]; } } ``` - ### 进阶配置 #### 组件的 children 属性允许传入 ReactNode @@ -401,6 +403,7 @@ import parse from '@alilc/lowcode-material-parser'; }, } ``` + #### 组件的非 children 属性允许传入 ReactNode 这就需要使用 `SlotSetter` 开启插槽了,如下面示例,给 Tab 的 title 开启插槽,允许拖拽组件 @@ -410,25 +413,21 @@ import parse from '@alilc/lowcode-material-parser'; ```json { // ... - configure: { - isExtend: true, - props: [ + "configure": { + "isExtend": true, + "props": [ { - title: '选项卡标题', - name: 'title', - setter: { - componentName: 'MixedSetter', - props: { - setters: [ - 'StringSetter', - 'SlotSetter', - 'VariableSetter', - ], - }, - }, - }, - ], - }, + "title": "选项卡标题", + "name": "title", + "setter": { + "componentName": "MixedSetter", + "props": { + "setters": ["StringSetter", "SlotSetter", "VariableSetter"] + } + } + } + ] + } } ``` @@ -465,7 +464,7 @@ import parse from '@alilc/lowcode-material-parser'; } // BackwardSetter -import { SettingTarget, DynamicSetter } from '@alilc/lowcode-types'; +import { SettingTarget, DynamicSetter } from '@lce/lowcode-types'; const BackwardSetter: DynamicSetter = (target: SettingTarget) => { return { componentName: ( @@ -501,7 +500,7 @@ const BackwardSetter: DynamicSetter = (target: SettingTarget) => { // direction 为 hoz 则展示当前 prop 配置 condition: (target) => { return target.getProps().getPropValue('direction') === 'hoz'; - } + }; } ``` diff --git a/docs/docs/guide/expand/editor/parts/partsassets.md b/docs/docs/guide/expand/editor/parts/partsassets.md index 00670ecadc..74709de16e 100644 --- a/docs/docs/guide/expand/editor/parts/partsassets.md +++ b/docs/docs/guide/expand/editor/parts/partsassets.md @@ -48,25 +48,27 @@ sidebar_position: 4 构建历史界面会显示当前资产包所有的构建历史记录,表格状态栏展示了构建的状态:`成功`,`失败`,`正在运行` 三种状态,操作列可以在构建成功时复制或者下载资产包结果 ## 使用资产包 + 你可以在 [lowcode-demo](https://github.com/alibaba/lowcode-demo) 中直接引用,可直接替换 demo 中原来的资产包文件: 例如,在 [demo-lowcode-component](https://github.com/alibaba/lowcode-demo/tree/main/demo-lowcode-component) 中,直接用你的资产包文件替换文件[assets.json](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/services/assets.json),即可快速使用自己的物料了。 ### 在编辑器中使用资产包 + 在使用含有低代码组件的资产包注意 注意引擎版本必须大于等于 `1.1.0-beta.9`。 然后直接替换 [lowcode-demo](https://github.com/alibaba/lowcode-demo) demo 中的 `assets.json` 文件即可。 ### 在预览中使用资产包 + 在预览中使用资产包的整体思路是从 `资产包` 中提取并转换出 `ReactRenderer` 渲染所需要的 react 组件列表 (`components` 参数),然后将 `schema` 以及 `components` 传入到 `ReactRenderer` 中进行渲染,需要注意的是,在 `资产包` 的转换过程中,我们也需要将 `低代码组件` 转换成 react 组件,具体逻辑可以参考下 [demo-lowcode-component](https://github.com/alibaba/lowcode-demo/tree/main/demo-lowcode-component) 中 `src/parse-assets.ts` 文件的实现。 基于资产包进行预览的整体逻辑如下: [详见](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/preview.tsx): + ```ts import ReactDOM from 'react-dom'; import React, { useState } from 'react'; import { Loading } from '@alifd/next'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import { createFetchHandler } from '@alilc/lowcode-datasource-fetch-handler'; -import { - getProjectSchemaFromLocalStorage, -} from './services/mockService'; +import { getProjectSchemaFromLocalStorage } from './services/mockService'; import assets from './services/assets.json'; import { parseAssets } from './parse-assets'; @@ -126,10 +128,15 @@ ReactDOM.render(, document.getElementById('ice-container')); ``` 从资产包中解析 react 组件列表的逻辑如下,[详见](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/parse-assets.ts): + ```ts -import { ComponentDescription, ComponentSchema, RemoteComponentDescription } from '@alilc/lowcode-types'; -import { buildComponents, AssetsJson, AssetLoader } from '@alilc/lowcode-utils'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import { + ComponentDescription, + ComponentSchema, + RemoteComponentDescription, +} from '@lce/lowcode-types'; +import { buildComponents, AssetsJson, AssetLoader } from '@lce/lowcode-utils'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import { injectComponents } from '@alilc/lowcode-plugin-inject'; import React, { createElement } from 'react'; @@ -138,7 +145,7 @@ export async function parseAssets(assets: AssetsJson) { const libraryAsset = []; const libraryMap = {}; const packagesMap = {}; - packages.forEach(pkg => { + packages.forEach((pkg) => { const { package: _package, library, urls, renderUrls, id } = pkg; if (_package) { libraryMap[id || _package] = library; @@ -173,38 +180,48 @@ export async function parseAssets(assets: AssetsJson) { await Promise.all( remoteComponentDescriptions.map(async (component: any) => { const { exportName, url, npm } = component; - await (new AssetLoader()).load(url); + await new AssetLoader().load(url); function setAssetsComponent(component: any, extraNpmInfo: any = {}) { const components = component.components; if (Array.isArray(components)) { - components.forEach(d => { - newComponents = newComponents.concat({ - npm: { - ...npm, - ...extraNpmInfo, - }, - ...d, - } || []); + components.forEach((d) => { + newComponents = newComponents.concat( + { + npm: { + ...npm, + ...extraNpmInfo, + }, + ...d, + } || [], + ); }); return; } - newComponents = newComponents.concat({ - npm: { - ...npm, - ...extraNpmInfo, - }, - ...component.components, - } || []); + newComponents = newComponents.concat( + { + npm: { + ...npm, + ...extraNpmInfo, + }, + ...component.components, + } || [], + ); } - function setArrayAssets(value: any[], preExportName: string = '', preSubName: string = '') { + function setArrayAssets( + value: any[], + preExportName: string = '', + preSubName: string = '', + ) { value.forEach((d: any, i: number) => { - const exportName = [preExportName, i.toString()].filter(d => !!d).join('.'); - const subName = [preSubName, i.toString()].filter(d => !!d).join('.'); - Array.isArray(d) ? setArrayAssets(d, exportName, subName) : setAssetsComponent(d, { - exportName, - subName, - }); + const exportName = [preExportName, i.toString()].filter((d) => !!d).join('.'); + const subName = [preSubName, i.toString()].filter((d) => !!d).join('.'); + Array.isArray(d) + ? setArrayAssets(d, exportName, subName) + : setAssetsComponent(d, { + exportName, + subName, + }); }); } if (window[exportName]) { @@ -230,14 +247,14 @@ export async function parseAssets(assets: AssetsJson) { }; } return acc; - }, {}) + }, {}); function genLowCodeComponentsMap(components) { const lowcodeComponentsMap = {}; lowcodeComponentsArray.forEach((lowcode) => { const id = lowcode.reference?.id; const schema = packagesMap[id]?.schema; - const comp = genLowcodeComp(schema, {...components, ...lowcodeComponentsMap}); + const comp = genLowcodeComp(schema, { ...components, ...lowcodeComponentsMap }); lowcodeComponentsMap[lowcode.componentName] = comp; }); return lowcodeComponentsMap; @@ -245,8 +262,8 @@ export async function parseAssets(assets: AssetsJson) { let components = await injectComponents(buildComponents(libraryMap, proCodeComponentsMap)); const lowCodeComponents = genLowCodeComponentsMap(components); return { - components: { ...components, ...lowCodeComponents } - } + components: { ...components, ...lowCodeComponents }, + }; } function genLowcodeComp(schema: ComponentSchema, components: any) { @@ -262,6 +279,7 @@ function genLowcodeComp(schema: ComponentSchema, components: any) { }; } ``` + ## 联系我们 - \ No newline at end of file + diff --git a/docs/docs/guide/expand/editor/pluginContextMenu.md b/docs/docs/guide/expand/editor/pluginContextMenu.md index 962c913e7e..95cc0c6c01 100644 --- a/docs/docs/guide/expand/editor/pluginContextMenu.md +++ b/docs/docs/guide/expand/editor/pluginContextMenu.md @@ -6,13 +6,14 @@ sidebar_position: 6 ## 场景一:扩展选中节点操作项 ### 增加节点操作项 + ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01J7PrJc1S86XNDBIFQ_!!6000000002201-2-tps-1240-292.png) 选中节点后,在选中框的右上角有操作按钮,编排模块默认实现了查看组件直系父节点、复制节点和删除节点按钮外,还可以通过相关 API 来扩展更多操作,如下代码: ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext, IPublicModelNode } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext, IPublicModelNode } from '@lce/lowcode-types'; import { Icon, Message } from '@alifd/next'; const addHelloAction = (ctx: IPublicModelPluginContext) => { @@ -44,18 +45,19 @@ await plugins.register(addHelloAction); ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01O8W2H61ybw2b7K5nV_!!6000000006598-2-tps-1315-343.png) 具体 API 参考:[API 文档](/site/docs/api/material#addbuiltincomponentaction) + ### 删除节点操作项 ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const removeCopyAction = (ctx: IPublicModelPluginContext) => { return { async init() { ctx.material.removeBuiltinComponentAction('copy'); - } - } + }, + }; }; removeCopyAction.pluginName = 'removeCopyAction'; await plugins.register(removeCopyAction); @@ -74,9 +76,9 @@ await plugins.register(removeCopyAction); - 仓库地址:[https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) - 具体代码:[https://github.com/alibaba/lowcode-plugins/tree/main/packages/action-block](https://github.com/alibaba/lowcode-plugins/tree/main/packages/action-block) - 直播回放: - - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) - - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - ICON 优化](https://www.bilibili.com/video/BV1zr4y1H7Km/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 自动截图](https://www.bilibili.com/video/BV1GZ4y117VH/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 样式优化](https://www.bilibili.com/video/BV1Pi4y1S7ZT/) - - [阿里低代码引擎项目实战 (12)-区块管理 (完结)-给引擎插件提个 PR](https://www.bilibili.com/video/BV1hB4y1277o/) + - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) + - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - ICON 优化](https://www.bilibili.com/video/BV1zr4y1H7Km/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 自动截图](https://www.bilibili.com/video/BV1GZ4y117VH/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 样式优化](https://www.bilibili.com/video/BV1Pi4y1S7ZT/) + - [阿里低代码引擎项目实战 (12)-区块管理 (完结)-给引擎插件提个 PR](https://www.bilibili.com/video/BV1hB4y1277o/) diff --git a/docs/docs/guide/expand/editor/pluginWidget.md b/docs/docs/guide/expand/editor/pluginWidget.md index 06125575f6..f6f650e7c9 100644 --- a/docs/docs/guide/expand/editor/pluginWidget.md +++ b/docs/docs/guide/expand/editor/pluginWidget.md @@ -18,11 +18,11 @@ sidebar_position: 5 ## 注册插件 API ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const pluginA = (ctx: IPublicModelPluginContext, options: any) => { - return { + return { init() { console.log(options.key); // 往引擎增加面板 @@ -109,7 +109,7 @@ PanelDock 是以面板的形式展示在设计器的左侧区域的。其中主 接入可以参考代码 ```javascript -import { skeleton } from '@alilc/lowcode-engine'; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ area: 'leftArea', // 插件区域 @@ -117,9 +117,9 @@ skeleton.add({ name: 'sourceEditor', content: SourceEditor, // 插件组件实例 props: { - align: "left", - icon: "wenjian", - description: "JS 面板", + align: 'left', + icon: 'wenjian', + description: 'JS 面板', }, panelProps: { floatable: true, // 是否可浮动 @@ -127,7 +127,7 @@ skeleton.add({ hideTitleBar: false, maxHeight: 800, maxWidth: 1200, - title: "JS 面板", + title: 'JS 面板', width: 600, }, }); @@ -142,17 +142,17 @@ Widget 形式是直接渲染在当前编辑器的对应位置上。如 demo 中 接入可以参考代码: ```javascript -import { skeleton } from '@alilc/lowcode-engine'; +import { skeleton } from '@lce/lowcode-engine'; // 注册 logo 面板 skeleton.add({ area: 'topArea', type: 'Widget', name: 'logo', content: Logo, // Widget 组件实例 - contentProps: { // Widget 插件 props - logo: - "https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png", - href: "/", + contentProps: { + // Widget 插件 props + logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png', + href: '/', }, props: { align: 'left', @@ -166,7 +166,7 @@ skeleton.add({ 一个图标的表现形式,可以用于语言切换、跳转到外部链接、打开一个 widget 等场景。 ```javascript -import { skeleton } from '@alilc/lowcode-engine'; +import { skeleton } from '@lce/lowcode-engine'; skeleton.add({ area: 'leftArea', @@ -180,8 +180,8 @@ skeleton.add({ window.open('https://lowcode-engine.cn'); // 显示 widget skeleton.showWidget('xxx'); - } - } + }, + }, }); ``` @@ -196,19 +196,19 @@ skeleton.add({ - 仓库地址:[https://github.com/mark-ck/lowcode-portal](https://github.com/mark-ck/lowcode-portal) - 具体代码:[https://github.com/mark-ck/lowcode-portal/blob/master/src/plugins/pages-plugin/index.tsx](https://github.com/mark-ck/lowcode-portal/blob/master/src/plugins/pages-plugin/index.tsx) - 直播回放: - - [低代码引擎项目实战 (4)-自定义插件 - 页面管理](https://www.bilibili.com/video/BV17a411i73f/) - - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 后端](https://www.bilibili.com/video/BV1uZ4y1U7Ly/) - - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 前端](https://www.bilibili.com/video/BV1Yq4y1a74P/) - - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 完结](https://www.bilibili.com/video/BV13Y4y1e7EV/) + - [低代码引擎项目实战 (4)-自定义插件 - 页面管理](https://www.bilibili.com/video/BV17a411i73f/) + - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 后端](https://www.bilibili.com/video/BV1uZ4y1U7Ly/) + - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 前端](https://www.bilibili.com/video/BV1Yq4y1a74P/) + - [低代码引擎项目实战 (4)-自定义插件 - 页面管理 - 完结](https://www.bilibili.com/video/BV13Y4y1e7EV/) ### 区块面板 - 仓库地址:[https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) - 具体代码:[https://github.com/alibaba/lowcode-plugins/tree/main/packages/plugin-block](https://github.com/alibaba/lowcode-plugins/tree/main/packages/plugin-block) - 直播回放: - - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) - - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - ICON 优化](https://www.bilibili.com/video/BV1zr4y1H7Km/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 自动截图](https://www.bilibili.com/video/BV1GZ4y117VH/) - - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 样式优化](https://www.bilibili.com/video/BV1Pi4y1S7ZT/) - - [阿里低代码引擎项目实战 (12)-区块管理 (完结)-给引擎插件提个 PR](https://www.bilibili.com/video/BV1hB4y1277o/) + - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) + - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - ICON 优化](https://www.bilibili.com/video/BV1zr4y1H7Km/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 自动截图](https://www.bilibili.com/video/BV1GZ4y117VH/) + - [阿里巴巴低代码引擎项目实战 (11)-区块管理 - 样式优化](https://www.bilibili.com/video/BV1Pi4y1S7ZT/) + - [阿里低代码引擎项目实战 (12)-区块管理 (完结)-给引擎插件提个 PR](https://www.bilibili.com/video/BV1hB4y1277o/) diff --git a/docs/docs/guide/expand/editor/setter.md b/docs/docs/guide/expand/editor/setter.md index 4f0e0219fc..13bacd4071 100644 --- a/docs/docs/guide/expand/editor/setter.md +++ b/docs/docs/guide/expand/editor/setter.md @@ -2,6 +2,7 @@ title: 设置器扩展 sidebar_position: 7 --- + ## 设置器简述 设置器主要用于低代码组件属性值的设置,顾名思义叫"设置器",又称为 Setter。由于组件的属性有各种类型,需要有与之对应的设置器支持,每一个设置器对应一个值的类型。 @@ -101,6 +102,7 @@ props 字段是入料模块扫描自动填入的类型,用户可以通过 conf ``` ## 自定义设置器 + ### 编写 AltStringSetter 我们编写一个简单的 Setter,它的功能如下: @@ -108,10 +110,11 @@ props 字段是入料模块扫描自动填入的类型,用户可以通过 conf ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01fQ4GLd1RzrPSdULiw_!!6000000002183-2-tps-720-90.png) **代码如下:** + ```tsx -import * as React from "react"; -import { Input } from "@alifd/next"; -import "./index.scss"; +import * as React from 'react'; +import { Input } from '@alifd/next'; +import './index.scss'; interface AltStringSetterProps { // 当前值 @@ -126,7 +129,7 @@ interface AltStringSetterProps { export default class AltStringSetter extends React.PureComponent { // 声明 Setter 的 title - static displayName = 'AltStringSetter'; + static displayName = 'AltStringSetter'; componentDidMount() { const { onChange, value, defaultValue } = this.props; @@ -140,7 +143,7 @@ export default class AltStringSetter extends React.PureComponent onChange(val)} > ); @@ -153,7 +156,7 @@ export default class AltStringSetter extends React.PureComponent { const { field, value } = this.props; // 这里展示的和插件进行通信,事件规则是插件名 + 方法 event.emit('eventBindDialog.openDialog', field.name, this.emitEventName); -} +}; ``` #### 修改同级 props 的其他属性值 @@ -189,13 +192,13 @@ setter 本身只影响其中一个 props 的值,如果需要影响其他组件 ```javascript bindFunction = () => { - const { field, value } = this.props; - const propsField = field.parent; - // 获取同级其他属性 showJump 的值 - const otherValue = propsField.getPropValue('showJump'); - // set 同级其他属性 showJump 的值 - propsField.setPropValue('showJump', false); -} + const { field, value } = this.props; + const propsField = field.parent; + // 获取同级其他属性 showJump 的值 + const otherValue = propsField.getPropValue('showJump'); + // set 同级其他属性 showJump 的值 + propsField.setPropValue('showJump', false); +}; ``` ### 注册 AltStringSetter @@ -238,4 +241,4 @@ registerSetter('AltStringSetter', AltStringSetter); ] } } -``` \ No newline at end of file +``` diff --git a/docs/docs/guide/expand/editor/summary.md b/docs/docs/guide/expand/editor/summary.md index 814340f3d3..04e1e2bc31 100644 --- a/docs/docs/guide/expand/editor/summary.md +++ b/docs/docs/guide/expand/editor/summary.md @@ -2,6 +2,7 @@ title: 编辑态扩展简述 sidebar_position: 0 --- + ## 扩展点简述 我们可以从 Demo 的项目中看到页面中有很多的区块: @@ -22,9 +23,11 @@ sidebar_position: 0 ## 配置扩展点 ### 配置物料 + 通过配置注入物料,这里的配置是物料中心根据物料资产包协议生成的,后面“物料扩展”章节会有详细说明。 + ```typescript -import { material } from '@alilc/lowcode-engine'; +import { material } from '@lce/lowcode-engine'; // 假设您已把物料配置在本地 import assets from './assets.json'; @@ -33,45 +36,54 @@ material.setAssets(assets); ``` 也可以通过异步加载物料中心上的物料。 + ```typescript -import { material, plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { material, plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; // 动态加载 assets -plugins.register((ctx: IPublicModelPluginContext) => { - return { - name: 'ext-assets', - async init() { - try { - // 将下述链接替换为您的物料即可。无论是通过 utils 从物料中心引入,还是通过其他途径如直接引入物料描述 - const res = await window.fetch('https://fusion.alicdn.com/assets/default@0.1.95/assets.json') - const assets = await res.text() - material.setAssets(assets) - } catch (err) { - console.error(err) - } - }, - } -}).catch(err => console.error(err)); +plugins + .register((ctx: IPublicModelPluginContext) => { + return { + name: 'ext-assets', + async init() { + try { + // 将下述链接替换为您的物料即可。无论是通过 utils 从物料中心引入,还是通过其他途径如直接引入物料描述 + const res = await window.fetch( + 'https://fusion.alicdn.com/assets/default@0.1.95/assets.json', + ); + const assets = await res.text(); + material.setAssets(assets); + } catch (err) { + console.error(err); + } + }, + }; + }) + .catch((err) => console.error(err)); ``` ### 配置插件 + 可以通过 npm 包的方式引入社区插件,配置如下所示: + ```typescript -import { plugins } from '@alilc/lowcode-engine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { plugins } from '@lce/lowcode-engine'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; import PluginIssueTracker from '@alilc/lowcode-plugin-issue-tracker'; // 注册一个提 issue 组件到您的编辑器中,方位默认在左栏下侧 -plugins.register(PluginIssueTracker) - .catch(err => console.error(err)); +plugins.register(PluginIssueTracker).catch((err) => console.error(err)); ``` + 后续“插件扩展”章节会详细说明。 ### 配置设置器 + 低代码引擎默认内置了设置器(详见“配置设置器”章节)。您可以通过 npm 包的方式引入自定义的设置器,配置如下所示: + ```typescript -import { setters } from '@alilc/lowcode-engine'; +import { setters } from '@lce/lowcode-engine'; // 假设您自定义了一个 setter import MuxMonacoEditorSetter from './components/setters/MuxMonacoEditorSetter'; @@ -81,12 +93,13 @@ setters.registerSetter({ component: MuxMonacoEditorSetter, title: 'Textarea', condition: (field) => { - const v = field.getValue() - return typeof v === 'string' + const v = field.getValue(); + return typeof v === 'string'; }, }, }); ``` + 后续“设置器扩展”章节会详细说明。 > 本章节所有可扩展配置内容在 demo 中均可找到:[https://github.com/alibaba/lowcode-demo/tree/main/demo-general](https://github.com/alibaba/lowcode-demo/tree/main/demo-general) diff --git a/docs/docs/guide/expand/runtime/codeGeneration.md b/docs/docs/guide/expand/runtime/codeGeneration.md index 71cf81bd1c..e358c0470f 100644 --- a/docs/docs/guide/expand/runtime/codeGeneration.md +++ b/docs/docs/guide/expand/runtime/codeGeneration.md @@ -4,28 +4,35 @@ sidebar_position: 1 --- ## 出码简述 + 所谓出码,即将低代码编排出的 schema 进行解析并转换成最终可执行的代码的过程。 + ## 出码的适用范围 + 出码是为了更高效的运行和更灵活地定制渲染,相对而言,基于 Schema 的运行时渲染,有着能实时响应内容的变化和接入成本低的优点,但是也存在着实时解析运行的性能开销比较大和包大小比较大的问题,而且无法自由地进行扩展二次开发,功能自由度受到一定程度限制。 当然,出码也会存在一些限制:一方面需要额外的接入成本,另一方面通常需要额外的生成代码和打包构建的时间,难以做到基于 Schema 的运行时渲染那样保存即预览的效果。 所以不是所有场景都建议做出码,一般来说以下 3 个场景可以考虑使用出码进行优化。 ### 场景一:想要极致的打开速度,降低 LCP/FID + 这种场景比较常见的是 C 端应用,比如手淘上的页面和手机钉钉上的页面,要求能够尽快得响应用户操作,不要出现卡死的情况。当一个流入协议大小比较大的时候,前端进行解析时的开销也比较大。如果能把这部分负担转移到编译时去完成的话,前端依赖包大小就会减少许多。从而也提升了加载速度,降低了带宽消耗。页面越简单,这其中的 gap 就会越明显。 ### 场景二:老项目 + 新需求,想用搭建产出 + 这是一个很常见的场景,毕竟迁移或者重构都是有一个过程的,阿里的业务都是一边跑一边换发动机。在这种场景中,我们不可能要求使用运行时方案来做实现,因为运行时是一个项目级别的能力,最好是项目中统一使用他这一种方式,保证体验的一致性与连贯性。所以我们可以只在低代码平台上搭建新的业务页面,然后通过出码模块导出这些页面的源码,连同一些全局依赖模块,一起 Merge 到老项目中。完成开发体验的优化。 ### 场景三:协议不能描述部分代码逻辑(协议功能不足或特别定制化的逻辑) + 当我们发现一些逻辑诉求不能在目前协议中很好地表达的时候,这其实是项目复杂度较高的一个信号。比较好的方式就是将低代码研发和源码研发结合起来。这种模式下最大的诉求点之一就是,需要将搭建的内容输出为可读性和确定性都比较良好的代码模块。这也就是出码模块需要支持好的使用场景了。 ## 如何使用 + ### 1) 通过命令行快速体验 -欢迎使用命令行工具快速体验:`npx @alilc/lowcode-code-generator -i example-schema.json -o generated -s icejs3` +欢迎使用命令行工具快速体验:`npx @lce/lowcode-code-generator -i example-schema.json -o generated -s icejs3` ---其中 example-schema.json 可以从[这里下载](https://alifd.alicdn.com/npm/@alilc/lowcode-code-generator@latest/example-schema.json) +--其中 example-schema.json 可以从[这里下载](https://alifd.alicdn.com/npm/@lce/lowcode-code-generator@latest/example-schema.json) ### 2) 通过设计器插件快速体验 @@ -33,7 +40,7 @@ sidebar_position: 1 2. 注册插件: ```typescript -import { plugins } from '@alilc/lowcode-engine'; +import { plugins } from '@lce/lowcode-engine'; import CodeGenPlugin from '@alilc/lowcode-plugin-code-generator'; // 在你的初始化函数中: @@ -49,11 +56,11 @@ await plugins.register(CodeGenPlugin, { disableCodeGenActionBtn: true }); 此代码生成器一开始就是为服务端出码设计的,你可以直接这样来在 node.js 环境中使用: -1. 安装依赖: `npm install --save @alilc/lowcode-code-generator` +1. 安装依赖: `npm install --save @lce/lowcode-code-generator` 2. 引入代码生成器: ```javascript -import CodeGenerator from '@alilc/lowcode-code-generator'; +import CodeGenerator from '@lce/lowcode-code-generator'; ``` 3. 创建项目构建器: @@ -94,11 +101,11 @@ await CodeGenerator.publishers.zip().publish({ 随着现在电脑性能和浏览器技术的发展,出码其实已经不必非得在服务端做了,借助于 Web Worker 特性,可以在浏览器中进行出码: -1. 安装依赖: `npm install --save @alilc/lowcode-code-generator` +1. 安装依赖: `npm install --save @lce/lowcode-code-generator` 2. 引入代码生成器: ```javascript -import * as CodeGenerator from '@alilc/lowcode-code-generator/standalone-loader'; +import * as CodeGenerator from '@lce/lowcode-code-generator/standalone-loader'; ``` 3. 【可选】提前初始化代码生成器: @@ -122,12 +129,15 @@ console.log(result); // 出码结果 (默认是递归结构描述的,可以传 注:一般来说在浏览器中出码适合做即时预览功能。 ### 5)自定义出码 + 前端框架灵活多变,默认内置的出码方案很难满足所有人的需求,好在此代码生成器支持非常灵活的插件机制 -- 内置功能大多都是通过插件完成的(在 `src/plugins`下),比如: ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01CEl2Hq1omnH0UCyGF_!!6000000005268-2-tps-457-376.png) 所以您可以通过添加自己的插件或替换掉默认内置的插件来实现您的自定义功能。 为了方便自定义出码方案,出码模块还提供自定义出码方案的脚手架功能,即执行下面脚本即可生成一个自定义出码方案: + ```shell -npx @alilc/lowcode-code-generator init-solution +npx @lce/lowcode-code-generator init-solution ``` + 里面内置了一个示例的插件 (在 `src/plugins/example.ts`中),您可以根据注释引导来完善相关插件,从而组合生成您的专属出码方案 (`src/index.ts`)。您所生成的出码方案可以发布成 NPM 包,从而能按上文 1~4 中的使用方案进行使用。 diff --git a/docs/docs/guide/expand/runtime/renderer.md b/docs/docs/guide/expand/runtime/renderer.md index 4e6d914bbf..a08ea7ad3f 100644 --- a/docs/docs/guide/expand/runtime/renderer.md +++ b/docs/docs/guide/expand/runtime/renderer.md @@ -2,12 +2,15 @@ title: 使用渲染模块 sidebar_position: 0 --- + ## 快速使用 + 渲染依赖于 schema 和 components。其中 schema 和 components 需要一一对应,schema 中使用到的组件都需要在 components 中进行声明,否则无法正常渲染。 + ### 简单示例 ```jsx -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import ReactDOM from 'react-dom'; import { Button } from '@alifd/next'; @@ -20,7 +23,7 @@ const schema = { props: { type: 'primary', style: { - color: '#2077ff' + color: '#2077ff', }, }, children: '确定', @@ -32,58 +35,59 @@ const components = { Button, }; -ReactDOM.render(( - -), document.getElementById('root')); +ReactDOM.render( + , + document.getElementById('root'), +); ``` #### + ### 项目使用示例 + > [设计器 demo](https://lowcode-engine.cn/demo/demo-general/index.html) > 项目代码完整示例:[https://github.com/alibaba/lowcode-demo](https://github.com/alibaba/lowcode-demo) **step 1:在设计器中获取组件列表** + ```typescript -import { material, project } from '@alilc/lowcode-engine'; -const packages = material.getAssets().packages +import { material, project } from '@lce/lowcode-engine'; +const packages = material.getAssets().packages; ``` + **step 2:在设计器中获取当前配置页面的 schema** + ```typescript -import { material, project } from '@alilc/lowcode-engine'; +import { material, project } from '@lce/lowcode-engine'; const schema = project.exportSchema(); ``` - **step 3:以某种方式存储 schema 和 packages** 这里用 localStorage 作为存储示例,真实项目中使用数据库或者其他存储方式。 + ```typescript -window.localStorage.setItem( - 'projectSchema', - JSON.stringify(project.exportSchema()) -); +window.localStorage.setItem('projectSchema', JSON.stringify(project.exportSchema())); const packages = await filterPackages(material.getAssets().packages); -window.localStorage.setItem( - 'packages', - JSON.stringify(packages) -); +window.localStorage.setItem('packages', JSON.stringify(packages)); ``` + **step 4:预览时,获取存储的 schema 和 packages** + ```typescript const packages = JSON.parse(window.localStorage.getItem('packages') || ''); const projectSchema = JSON.parse(window.localStorage.getItem('projectSchema') || ''); const { componentsMap: componentsMapArray, componentsTree } = projectSchema; ``` + **step 5:通过整合 schema 和 packages 信息,进行渲染** + ```typescript import ReactDOM from 'react-dom'; import React, { useState } from 'react'; import { Loading } from '@alifd/next'; -import { buildComponents, assetBundle, AssetLevel, AssetLoader } from '@alilc/lowcode-utils'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import { buildComponents, assetBundle, AssetLevel, AssetLoader } from '@lce/lowcode-utils'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import { injectComponents } from '@alilc/lowcode-plugin-inject'; const SamplePreview = () => { @@ -142,9 +146,10 @@ const SamplePreview = () => { }; ReactDOM.render(, document.getElementById('ice-container')); - ``` + ### 国际化示例 + ```typescript class Demo extends PureComponent { static displayName = 'renderer-demo'; @@ -157,12 +162,12 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} locale="zh-CN" messages={{ - "hello": "你好", - "china": "中国" + hello: '你好', + china: '中国', }} /> @@ -173,32 +178,33 @@ class Demo extends PureComponent { ## API -| 参数 | 说明 | 类型 | 必选 | -| --- | --- | --- | --- | -| schema | 符合[搭建协议](https://lowcode-engine.cn/lowcode)的数据 | Object | 是 | -| components | 组件依赖的实例 | Object | 是 | -| componentsMap | 组件的配置信息 | Object | 否 | -| appHelper | 渲染模块全局上下文 | Object | 否 | -| designMode | 设计模式,可选值:extend、border、preview | String | 否 | -| suspended | 是否挂起 | Boolean | 否 | -| onCompGetRef | 组件 ref 回调(schema, ref)=> {} | Function | 否 | -| onCompGetCtx | 组件 ctx 更新回调 (schema, ctx) => {} | Function | 否 | -| rendererName | 渲染类型,标识当前模块是以什么类型进行渲染的 | string | 否 | -| customCreateElement | 自定义创建 element 的钩子 -(Component, props, children) => {} | Function | 否 | -| notFoundComponent | 当组件找不到时,可以通过这个参数自定义展示文案。 | Component | 否 | -| thisRequiredInJSE | 为 true 的情况下 JSExpression 仅支持通过 this 来访问。假如需要兼容原来的 'state.xxx',则设置为 false,推荐使用 true。 | Boolean | 否 | -| locale | 国际化语言类型 | string | 否 | -| messages | 国际化语言对象 | Object | 否 | - +| 参数 | 说明 | 类型 | 必选 | +| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------- | ---- | +| schema | 符合[搭建协议](https://lowcode-engine.cn/lowcode)的数据 | Object | 是 | +| components | 组件依赖的实例 | Object | 是 | +| componentsMap | 组件的配置信息 | Object | 否 | +| appHelper | 渲染模块全局上下文 | Object | 否 | +| designMode | 设计模式,可选值:extend、border、preview | String | 否 | +| suspended | 是否挂起 | Boolean | 否 | +| onCompGetRef | 组件 ref 回调(schema, ref)=> {} | Function | 否 | +| onCompGetCtx | 组件 ctx 更新回调 (schema, ctx) => {} | Function | 否 | +| rendererName | 渲染类型,标识当前模块是以什么类型进行渲染的 | string | 否 | +| customCreateElement | 自定义创建 element 的钩子 | +| (Component, props, children) => {} | Function | 否 | +| notFoundComponent | 当组件找不到时,可以通过这个参数自定义展示文案。 | Component | 否 | +| thisRequiredInJSE | 为 true 的情况下 JSExpression 仅支持通过 this 来访问。假如需要兼容原来的 'state.xxx',则设置为 false,推荐使用 true。 | Boolean | 否 | +| locale | 国际化语言类型 | string | 否 | +| messages | 国际化语言对象 | Object | 否 | ### schema 搭建基础协议数据,渲染模块将基于 schema 中的内容进行实时渲染。 ### messages + 国际化内容,需要配合 locale 使用 messages 格式示例: + ```typescript { 'zh-CN': { @@ -211,6 +217,7 @@ messages 格式示例: ``` ### locale + 当前语言类型 示例:'zh-CN' | 'en-US' @@ -222,7 +229,6 @@ messages 格式示例: > 在生产环境下不需要设置。 - 配置规范参见[《低代码引擎搭建协议规范》](https://lowcode-engine.cn/lowcode),主要在搭建场景中使用,用于提升用户搭建体验。 - 属性配置校验:用户可以配置组件特定属性的 `propTypes`,在搭建场景中用户输入的属性值不满足 `propType` 配置时,渲染模块会将当前属性设置为 `undefined`,避免组件抛错导致编辑器崩溃; @@ -243,65 +249,71 @@ appHelper 主要用于设置渲染模块的全局上下文,目前 appHelper ```javascript export default { - "componentName": "Page", - "fileName": "test", - "props": {}, - "children": [{ - "componentName": "Div", - "props": {}, - "children": [{ - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "this.location.pathname" - } - } - }, { - "componentName": "Button", - "props": { - "type": "primary", - "style": { - "marginLeft": 10 + componentName: 'Page', + fileName: 'test', + props: {}, + children: [ + { + componentName: 'Div', + props: {}, + children: [ + { + componentName: 'Text', + props: { + text: { + type: 'JSExpression', + value: 'this.location.pathname', + }, + }, }, - "onClick": { - "type": "JSExpression", - "value": "function onClick(e) { this.utils.xxx(this.constants.yyy);}" - } - }, - "children": "click me" - }] - }] -} + { + componentName: 'Button', + props: { + type: 'primary', + style: { + marginLeft: 10, + }, + onClick: { + type: 'JSExpression', + value: 'function onClick(e) { this.utils.xxx(this.constants.yyy);}', + }, + }, + children: 'click me', + }, + ], + }, + ], +}; ``` ```typescript -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import ReactDOM from 'react-dom'; import { Button } from '@alifd/next'; -import schema from './schema' +import schema from './schema'; const components = { Button, }; -ReactDOM.render(( +ReactDOM.render( {} - } + appHelper={{ + utils: { + xxx: () => {}, + }, }} - /> -), document.getElementById('root')); + />, + document.getElementById('root'), +); ``` + ### designMode > 在生产环境下不需要设置。 - designMode 属性主要在搭建场景中使用,主要有以下作用: - 当 `designMode` 改变时,触发当前 schema 中所有组件重新渲染 @@ -319,22 +331,25 @@ designMode 属性主要在搭建场景中使用,主要有以下作用: - `ref`:当前组件的 ref 实例 ### onCompGetCtx + 组件 ctx 更新的回调,在组件每次 render 渲染周期我们都会为组件构造新的上下文环境,因此该回调函数会在组件每次 render 过程中触发,主要包含两个参数: - `schema`:当前组件的 schema 模型结构 - `ctx`:当前组件的上下文信息,主要包含以下内容: - - `page`:当前页面容器实例 - - `this`: 当前组件所属的容器组件实例 - - `item`/`index`: 循环上下文(属性 key 可以根据 loopArgs 进行定制) - - `form`: 表单上下文 + - `page`:当前页面容器实例 + - `this`: 当前组件所属的容器组件实例 + - `item`/`index`: 循环上下文(属性 key 可以根据 loopArgs 进行定制) + - `form`: 表单上下文 ### rendererName + 渲染类型,标识当前模块是以什么类型进行渲染的 - `LowCodeRenderer`: 低代码组件 - `PageRenderer`: 页面 ### customCreateElement + 自定义创建 element 的钩子,用于在渲染前后对组件进行一些处理,包括但不限于增加 props、删除部分 props。主要包含三个参数: - `Component`:要渲染的组件 @@ -342,6 +357,7 @@ designMode 属性主要在搭建场景中使用,主要有以下作用: - `children`:要渲染的组件的子元素 ### thisRequiredInJSE + > 版本 >= 1.0.11 默认值:true diff --git a/docs/docs/guide/quickStart/start.md b/docs/docs/guide/quickStart/start.md index 356f501769..a8f97ee297 100644 --- a/docs/docs/guide/quickStart/start.md +++ b/docs/docs/guide/quickStart/start.md @@ -157,7 +157,7 @@ Demo 根据**不同的设计器所需要的物料不同**,分为了下面的 8 ```javascript import * as React from 'react'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; const LowcodePluginPluginDemo = (ctx: IPublicModelPluginContext) => { return { diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md index e09f2ddad2..a72f5b70db 100644 --- a/docs/docs/participate/index.md +++ b/docs/docs/participate/index.md @@ -29,23 +29,24 @@ npm install && npm run setup 本质上是将 demo 页面引入的几个 js/css 代理到 engine 项目,可以使用趁手的代理工具,这里推荐 [XSwitch](https://chrome.google.com/webstore/detail/xswitch/idkjhjggpffolpidfkikidcokdkdaogg?hl=en-US)。 本地开发代理规则如下: + ```json { "proxy": [ [ - "https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/js/engine-core.js", + "https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/(.*)/dist/js/engine-core.js", "http://localhost:5555/js/AliLowCodeEngine.js" ], [ - "https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/css/engine-core.css", + "https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/(.*)/dist/css/engine-core.css", "http://localhost:5555/css/AliLowCodeEngine.css" ], [ - "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js", + "https?://uipaas-assets.com/prod/npm/@lce/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js", "http://localhost:5555/js/ReactSimulatorRenderer.js" ], [ - "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", + "https?://uipaas-assets.com/prod/npm/@lce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", "http://localhost:5555/css/ReactSimulatorRenderer.css" ] ] @@ -62,12 +63,12 @@ npm start 开启代理之后,就可以进行开发调试了。 - ### 贡献低代码引擎文档 #### 开发文档 在 lowcode-engine 目录下执行下面命令 + ``` cd docs @@ -75,6 +76,7 @@ npm start ``` #### 维护方式 + - 官方文档通过 github 管理文档源,官网文档与[主仓库 develop 分支](https://github.com/alibaba/lowcode-engine/tree/develop/docs)保持同步。 - 点击每篇文档下发的 `编辑此页` 可直接定位到 github 中位置。 - 欢迎 PR,文档 PR 也会作为贡献者贡献,会用于贡献度统计。 @@ -87,7 +89,6 @@ npm start 使用 vscode 进行编辑的朋友可以安装 vscode 插件 [huacnlee.autocorrect](https://github.com/huacnlee/autocorrect) 辅助文档 lint。 - ### 贡献低代码引擎生态 相关源码详见[NPM 包对应源码位置汇总](/site/docs/guide/appendix/npms) @@ -99,6 +100,7 @@ npm start PR 被合并之后,我们会尽快发布相关的正式版本或者 beta 版本。 ### 加入 Contributor 群 + 提交过 Bugfix 或 Feature 类 PR 的同学,如果有兴趣一起参与维护 LowcodeEngine,我们提供了一个核心贡献者交流群。 1. 可以通过[填写问卷](https://survey.taobao.com/apps/zhiliao/4YEtu9gHF)的方式,参与到其中。 @@ -115,4 +117,4 @@ PR 被合并之后,我们会尽快发布相关的正式版本或者 beta 版 - 如果你修复了 bug 或者添加了代码,而这些内容需要测试,请添加测试! - 确保通过测试套件(yarn test)。 - 请签订贡献者许可证协议(Contributor License Agreement)。 - > 如已签署 CLA 仍被提示需要签署,[解决办法](/site/docs/faq/faq021) \ No newline at end of file + > 如已签署 CLA 仍被提示需要签署,[解决办法](/site/docs/faq/faq021) diff --git a/docs/package.json b/docs/package.json index 7facd9db8b..b73c452d06 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-engine-docs", + "name": "@lce/lowcode-engine-docs", "version": "1.2.31", "description": "低代码引擎版本化文档", "license": "MIT", diff --git a/modules/code-generator/CHANGELOG.md b/modules/code-generator/CHANGELOG.md index 62527d0229..0a329f21a1 100644 --- a/modules/code-generator/CHANGELOG.md +++ b/modules/code-generator/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -### [1.0.7-beta.2](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.3...@alilc/lowcode-code-generator@1.0.7-beta.2) (2022-11-24) +### [1.0.7-beta.2](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.7-beta.2) (2022-11-24) ### Bug Fixes @@ -12,16 +12,16 @@ All notable changes to this project will be documented in this file. See [standa * add support for jsx expression ([453e069](https://github.com/alibaba/lowcode-engine/commit/453e0699ece06d98e59227e23248baf1de4082aa)) * 修复生成的 icejs 项目不支持 constants 的问题, fixes [#1259](https://github.com/alibaba/lowcode-engine/issues/1259) ([a079fbc](https://github.com/alibaba/lowcode-engine/commit/a079fbc256f8275e8a69eb6d8abb6f6b08179578)) * 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/alibaba/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) -### [1.0.7-beta.1](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.7-beta.0...@alilc/lowcode-code-generator@1.0.7-beta.1) (2022-10-26) +### [1.0.7-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.7-beta.0...@lce/lowcode-code-generator@1.0.7-beta.1) (2022-10-26) ### Bug Fixes * fix empty string lost when generate variable ([2cf74cd](https://github.com/alibaba/lowcode-engine/commit/2cf74cd04b4f48a3501d37329d39784f6964366a)) -### [1.0.7-beta.0](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.6-beta.0...@alilc/lowcode-code-generator@1.0.7-beta.0) (2022-10-25) +### [1.0.7-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.6-beta.0...@lce/lowcode-code-generator@1.0.7-beta.0) (2022-10-25) -### [1.0.6-beta.0](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.3...@alilc/lowcode-code-generator@1.0.6-beta.0) (2022-10-25) +### [1.0.6-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.6-beta.0) (2022-10-25) ### Features @@ -157,21 +157,21 @@ All notable changes to this project will be documented in this file. See [standa * use uppercase resize trigger names based on material spec ([7fda0ef](https://github.com/alibaba/lowcode-engine/commit/7fda0efe131e0e2e3141849cf3f87307e7ce1b36)) * when designMode is not design, the hidden attribute does not take effect ([3dd0b6d](https://github.com/alibaba/lowcode-engine/commit/3dd0b6d0a86267e3029c176ff49aff793ce3e186)) -### [1.0.4](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.4-beta.0...@alilc/lowcode-code-generator@1.0.4) (2022-04-12) +### [1.0.4](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4) (2022-04-12) ### Bug Fixes * 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([eb4cc69](https://github.com/alibaba/lowcode-engine/commit/eb4cc693f5dbcae54546c569eb8fa331d074e062)) -### [1.0.4-beta.1](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.4-beta.0...@alilc/lowcode-code-generator@1.0.4-beta.1) (2022-04-11) +### [1.0.4-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4-beta.1) (2022-04-11) ### Bug Fixes * 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([987f4ce](https://github.com/alibaba/lowcode-engine/commit/987f4cea54ef8a75d0b63a0268b5a20b2938b8a7)) -### [1.0.4-beta.0](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.3...@alilc/lowcode-code-generator@1.0.4-beta.0) (2022-04-10) +### [1.0.4-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.4-beta.0) (2022-04-10) ### Features @@ -188,7 +188,7 @@ All notable changes to this project will be documented in this file. See [standa * fix unnecessary props calculation ([f1fed75](https://github.com/alibaba/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) * 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([79db4ac](https://github.com/alibaba/lowcode-engine/commit/79db4ac97f34f24b7f7460fb3fc67521967f8cc5)) -### [1.0.3](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.2...@alilc/lowcode-code-generator@1.0.3) (2022-03-29) +### [1.0.3](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2...@lce/lowcode-code-generator@1.0.3) (2022-03-29) ### Features @@ -209,16 +209,16 @@ All notable changes to this project will be documented in this file. See [standa * variable binding lost after modify the mock value ([ef95b56](https://github.com/alibaba/lowcode-engine/commit/ef95b5683273d8302bde1582de8afe3d87a808d8)) * Workbench should receive the original skeleton other than shell skeleton ([d5c3ca1](https://github.com/alibaba/lowcode-engine/commit/d5c3ca1068ce2c2140980bd059d0da333574dc34)) -### [1.0.2](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.2-beta.1...@alilc/lowcode-code-generator@1.0.2) (2022-03-08) +### [1.0.2](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.1...@lce/lowcode-code-generator@1.0.2) (2022-03-08) -### [1.0.2-beta.1](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.2-beta.0...@alilc/lowcode-code-generator@1.0.2-beta.1) (2022-03-08) +### [1.0.2-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.0...@lce/lowcode-code-generator@1.0.2-beta.1) (2022-03-08) ### Bug Fixes * 🐛 补充 icejs 模板中缺失的依赖包 ([a94553e](https://github.com/alibaba/lowcode-engine/commit/a94553e503d439b67478df6a34950d9e3d15a063)) -### [1.0.2-beta.0](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.0...@alilc/lowcode-code-generator@1.0.2-beta.0) (2022-03-08) +### [1.0.2-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.2-beta.0) (2022-03-08) ### Features @@ -246,7 +246,7 @@ All notable changes to this project will be documented in this file. See [standa * lint&fix auto generated types.ts ([7dde970](https://github.com/alibaba/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) * The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/alibaba/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) -### [1.0.1](https://github.com/alibaba/lowcode-engine/compare/@alilc/lowcode-code-generator@1.0.0...@alilc/lowcode-code-generator@1.0.1) (2022-03-08) +### [1.0.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.1) (2022-03-08) ### Features diff --git a/modules/code-generator/CONTRIBUTING.md b/modules/code-generator/CONTRIBUTING.md index 5f4d373b80..007f46c911 100644 --- a/modules/code-generator/CONTRIBUTING.md +++ b/modules/code-generator/CONTRIBUTING.md @@ -1,7 +1,7 @@ # 如何共建 1. 拉取最新代码,切换到 develop 分支,基于 develop 分支切出一个 feature 或 hotfix 分支 -2. 到 `lowcode-engine` 项目根目录下,执行 `lerna bootstrap && lerna run build --scope "@alilc/lowcode-types"` 来安装依赖并构建 +2. 到 `lowcode-engine` 项目根目录下,执行 `lerna bootstrap && lerna run build --scope "@lce/lowcode-types"` 来安装依赖并构建 3. 到 `lowcode-engine/modules/code-generator`下,安装依赖(`npm i`),然后先跑一遍 `npm test` 看看是否所有用例都能通过 (如果网络条件不太好,建议使用 [cnpm - 淘宝提供的中国 NPM 镜像](https://npmmirror.com/)) 4. 在 tests 目录下编写您的需求/问题的测试用例 5. 修改 src 下的一些代码,然后运行 `npm test` 或 `npm start` 启动 jest 进行调测 diff --git a/modules/code-generator/README.md b/modules/code-generator/README.md index 1d67b3aa16..b9f818af3e 100644 --- a/modules/code-generator/README.md +++ b/modules/code-generator/README.md @@ -6,9 +6,9 @@ ### 1) 通过命令行快速体验 -欢迎使用命令行工具快速体验:`npx @alilc/lowcode-code-generator -i example-schema.json -o generated -s icejs` +欢迎使用命令行工具快速体验:`npx @lce/lowcode-code-generator -i example-schema.json -o generated -s icejs` ---其中 example-schema.json 可以从[这里下载](https://unpkg.com/@alilc/lowcode-code-generator@beta/example-schema.json) +--其中 example-schema.json 可以从[这里下载](https://unpkg.com/@lce/lowcode-code-generator@beta/example-schema.json) ### 2) 通过设计器插件快速体验 @@ -16,7 +16,7 @@ 2. 注册插件: ```ts -import { plugins } from '@alilc/lowcode-engine'; +import { plugins } from '@lce/lowcode-engine'; import CodeGenPlugin from '@alilc/lowcode-plugin-code-generator'; // 在你的初始化函数中: @@ -32,11 +32,11 @@ await plugins.register(CodeGenPlugin, { disableCodeGenActionBtn: true }); 此代码生成器一开始就是为服务端出码设计的,你可以直接这样来在 node.js 环境中使用: -1. 安装依赖: `npm install --save @alilc/lowcode-code-generator` +1. 安装依赖: `npm install --save @lce/lowcode-code-generator` 2. 引入代码生成器: ```js -import CodeGenerator from '@alilc/lowcode-code-generator'; +import CodeGenerator from '@lce/lowcode-code-generator'; ``` 3. 创建项目构建器: @@ -77,11 +77,11 @@ await CodeGenerator.publishers.zip().publish({ 随着现在电脑性能和浏览器技术的发展,出码其实已经不必非得在服务端做了,借助于 Web Worker 特性,可以在浏览器中进行出码: -1. 安装依赖: `npm install --save @alilc/lowcode-code-generator` +1. 安装依赖: `npm install --save @lce/lowcode-code-generator` 2. 引入代码生成器: ```js -import * as CodeGenerator from '@alilc/lowcode-code-generator/standalone-loader'; +import * as CodeGenerator from '@lce/lowcode-code-generator/standalone-loader'; ``` 3. 【可选】提前初始化代码生成器: diff --git a/modules/code-generator/package.json b/modules/code-generator/package.json index cd114fa067..7d3101f706 100644 --- a/modules/code-generator/package.json +++ b/modules/code-generator/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-code-generator", + "name": "@lce/lowcode-code-generator", "version": "1.1.7", "description": "出码引擎 for LowCode Engine", "license": "MIT", @@ -41,9 +41,9 @@ "test:cov": "jest --coverage", "test:update-snapshots": "cross-env UPDATE_EXPECTED=true jest -u", "analyze:standalone": "ANALYZE=true node scripts/build-standalone", - "release:beta": "standard-version -t @alilc/lowcode-code-generator\\@ -r patch --prerelease beta && git push --follow-tags && npm publish --tag beta", - "release:patch": "standard-version -t @alilc/lowcode-code-generator\\@ -r patch && git push --follow-tags && npm publish", - "release:minor": "standard-version -t @alilc/lowcode-code-generator\\@ -r minor && git push --follow-tags && npm publish", + "release:beta": "standard-version -t @lce/lowcode-code-generator\\@ -r patch --prerelease beta && git push --follow-tags && npm publish --tag beta", + "release:patch": "standard-version -t @lce/lowcode-code-generator\\@ -r patch && git push --follow-tags && npm publish", + "release:minor": "standard-version -t @lce/lowcode-code-generator\\@ -r minor && git push --follow-tags && npm publish", "prepublishOnly": "npm run build", "demo": "node bin/lowcode-code-generator.js -i example-schema.json -o demo -s icejs" }, @@ -62,7 +62,7 @@ "**/*.{js,jsx,ts,tsx}": "eslint" }, "dependencies": { - "@alilc/lowcode-types": "^1.0.0", + "@lce/lowcode-types": "^1.0.0", "@babel/generator": "^7.12.11", "@babel/parser": "^7.12.11", "@babel/runtime": "^7.12.5", diff --git a/modules/code-generator/scripts/build-cli.js b/modules/code-generator/scripts/build-cli.js index 394f87f6e9..2c5fb5f2c2 100644 --- a/modules/code-generator/scripts/build-cli.js +++ b/modules/code-generator/scripts/build-cli.js @@ -18,7 +18,7 @@ const ignorePlugin = require('esbuild-plugin-ignore'); sourcesContent: true, plugins: [ ignorePlugin([ - // @alilc/lowcode-types 中误依赖了 react,这里忽略下 + // @lce/lowcode-types 中误依赖了 react,这里忽略下 { resourceRegExp: /^react$/, contextRegExp: /./, diff --git a/modules/code-generator/scripts/build-standalone-worker.js b/modules/code-generator/scripts/build-standalone-worker.js index c5f87395bc..77bc408443 100644 --- a/modules/code-generator/scripts/build-standalone-worker.js +++ b/modules/code-generator/scripts/build-standalone-worker.js @@ -22,7 +22,7 @@ const buildConfig = { resourceRegExp: /^fs$/, contextRegExp: /./, }, - // @alilc/lowcode-types 中误依赖了 react,这里忽略下 + // @lce/lowcode-types 中误依赖了 react,这里忽略下 { resourceRegExp: /^react$/, contextRegExp: /./, diff --git a/modules/code-generator/scripts/build-standalone.js b/modules/code-generator/scripts/build-standalone.js index 3b101f5ac0..105ef87080 100644 --- a/modules/code-generator/scripts/build-standalone.js +++ b/modules/code-generator/scripts/build-standalone.js @@ -24,7 +24,7 @@ const buildConfig = { resourceRegExp: /^fs$/, contextRegExp: /./, }, - // @alilc/lowcode-types 中误依赖了 react,这里忽略下 + // @lce/lowcode-types 中误依赖了 react,这里忽略下 { resourceRegExp: /^react$/, contextRegExp: /./, diff --git a/modules/code-generator/scripts/build-template-static-files.js b/modules/code-generator/scripts/build-template-static-files.js index 4daad4360d..7afd9aa53b 100644 --- a/modules/code-generator/scripts/build-template-static-files.js +++ b/modules/code-generator/scripts/build-template-static-files.js @@ -68,7 +68,7 @@ function buildTemplateStaticFiles({ sourceDir, outputDir }) { PROJECT_ROOT, path.join(sourceDir, sourceFileName), )}" and run "npm run template" */`, - `import { ResultFile } from '@alilc/lowcode-types';`, + `import { ResultFile } from '@lce/lowcode-types';`, '', `export default function getFile(): [string[], ResultFile] {`, ` return ${JSON5.stringify([ @@ -99,7 +99,7 @@ function buildTemplateStaticFiles({ sourceDir, outputDir }) { path.join(outputDir, 'static-files.ts'), [ `/* Note: this file is generated by "npm run template", please dont modify this file directly */`, - `import { ResultDir } from '@alilc/lowcode-types'; + `import { ResultDir } from '@lce/lowcode-types'; import { createResultDir } from '../../../../../utils/resultHelper'; import { runFileGenerator } from '../../../../../utils/templateHelper';`, diff --git a/modules/code-generator/src/analyzer/componentAnalyzer.ts b/modules/code-generator/src/analyzer/componentAnalyzer.ts index 69e8ad482d..68794757e7 100644 --- a/modules/code-generator/src/analyzer/componentAnalyzer.ts +++ b/modules/code-generator/src/analyzer/componentAnalyzer.ts @@ -1,4 +1,4 @@ -import type { IPublicTypeNodeSchema, IPublicTypeCompositeObject } from '@alilc/lowcode-types'; +import type { IPublicTypeNodeSchema, IPublicTypeCompositeObject } from '@lce/lowcode-types'; import type { TComponentAnalyzer } from '../types'; import { handleSubNodes } from '../utils/schema'; diff --git a/modules/code-generator/src/cli/run.ts b/modules/code-generator/src/cli/run.ts index ec6814f767..974868f06e 100644 --- a/modules/code-generator/src/cli/run.ts +++ b/modules/code-generator/src/cli/run.ts @@ -9,7 +9,7 @@ import * as path from 'path'; import { getErrorMessage } from '../utils/errors'; import CodeGenerator from '..'; import type { IProjectBuilder } from '..'; -import type { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema } from '@lce/lowcode-types'; /** * 执行出码 CLI 命令 diff --git a/modules/code-generator/src/cli/solutions/example-solution.ts b/modules/code-generator/src/cli/solutions/example-solution.ts index bfb9d079b1..43e373b45e 100644 --- a/modules/code-generator/src/cli/solutions/example-solution.ts +++ b/modules/code-generator/src/cli/solutions/example-solution.ts @@ -547,7 +547,7 @@ codealike.json "test": "jest", "test:watch": "jest --watch", "test:update-snapshots": "cross-env UPDATE_EXPECTED=true npx jest", - "demo": "npm run build && npx @alilc/lowcode-code-generator --solution . --output generated demo-schema.json" + "demo": "npm run build && npx @lce/lowcode-code-generator --solution . --output generated demo-schema.json" }, "repository": { "type": "git", @@ -559,8 +559,8 @@ codealike.json "registry": "https://registry.npm.xxx.com" }, "dependencies": { - "@alilc/lowcode-code-generator": "^1.0.0", - "@alilc/lowcode-types": "^1.0.0", + "@lce/lowcode-code-generator": "^1.0.0", + "@lce/lowcode-types": "^1.0.0", "tslib": "^2.3.0" }, "devDependencies": { @@ -626,7 +626,7 @@ codealike.json }, { file: 'src/index.ts', - content: `import CodeGen from '@alilc/lowcode-code-generator'; + content: `import CodeGen from '@lce/lowcode-code-generator'; import examplePlugin from './plugins/example'; @@ -714,7 +714,7 @@ export default function createHelloWorldProjectBuilder() { COMMON_CHUNK_NAME, CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER, -} from '@alilc/lowcode-code-generator'; +} from '@lce/lowcode-code-generator'; export interface PluginConfig { fileType: string; diff --git a/modules/code-generator/src/generator/ModuleBuilder.ts b/modules/code-generator/src/generator/ModuleBuilder.ts index e172f716e5..e089199efc 100644 --- a/modules/code-generator/src/generator/ModuleBuilder.ts +++ b/modules/code-generator/src/generator/ModuleBuilder.ts @@ -1,4 +1,4 @@ -import { IPublicTypeProjectSchema, ResultFile, ResultDir } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema, ResultFile, ResultDir } from '@lce/lowcode-types'; import { BuilderComponentPlugin, diff --git a/modules/code-generator/src/generator/ProjectBuilder.ts b/modules/code-generator/src/generator/ProjectBuilder.ts index a910b49002..f3706dc0a6 100644 --- a/modules/code-generator/src/generator/ProjectBuilder.ts +++ b/modules/code-generator/src/generator/ProjectBuilder.ts @@ -1,4 +1,4 @@ -import { ResultDir, ResultFile, IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { ResultDir, ResultFile, IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { IModuleBuilder, diff --git a/modules/code-generator/src/parser/SchemaParser.ts b/modules/code-generator/src/parser/SchemaParser.ts index b4f7424ce5..d0f36a561d 100644 --- a/modules/code-generator/src/parser/SchemaParser.ts +++ b/modules/code-generator/src/parser/SchemaParser.ts @@ -12,7 +12,7 @@ import { IPublicTypePropsMap, IPublicTypeNodeData, IPublicTypeNpmInfo, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { IPageMeta, CodeGeneratorError, diff --git a/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts b/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts index cb7a9e8c36..3014f549ce 100644 --- a/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts +++ b/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts @@ -6,7 +6,7 @@ import { InterpretDataSourceConfig, isJSExpression, isJSFunction, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import changeCase from 'change-case'; import { CLASS_DEFINE_CHUNK_NAME, COMMON_CHUNK_NAME } from '../../../const/generator'; diff --git a/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts b/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts index bbee6367f2..3e1daa1578 100644 --- a/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts +++ b/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts @@ -1,5 +1,5 @@ import _ from 'lodash'; -import { isJSExpression, isJSFunction } from '@alilc/lowcode-types'; +import { isJSExpression, isJSFunction } from '@lce/lowcode-types'; import { CLASS_DEFINE_CHUNK_NAME } from '../../../const/generator'; import { RAX_CHUNK_NAME } from './const'; diff --git a/modules/code-generator/src/plugins/component/rax/jsx.ts b/modules/code-generator/src/plugins/component/rax/jsx.ts index ddae619cd6..a39af7cb34 100644 --- a/modules/code-generator/src/plugins/component/rax/jsx.ts +++ b/modules/code-generator/src/plugins/component/rax/jsx.ts @@ -4,7 +4,7 @@ import { IPublicTypeNpmInfo, IPublicTypeCompositeValue, isJSExpression, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import _ from 'lodash'; import changeCase from 'change-case'; diff --git a/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts b/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts index c4385017b8..4ccc1e265c 100644 --- a/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts +++ b/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts @@ -6,7 +6,7 @@ import { InterpretDataSourceConfig, isJSExpression, isJSFunction, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import changeCase from 'change-case'; import { diff --git a/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts b/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts index 5f7d6d22a7..9c98961d91 100644 --- a/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts +++ b/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts @@ -12,7 +12,7 @@ import { ICodeStruct, IContainerInfo, } from '../../../types'; -import { isJSFunction, isJSExpression } from '@alilc/lowcode-types'; +import { isJSFunction, isJSExpression } from '@lce/lowcode-types'; import { isJSExpressionFn } from '../../../utils/common'; export interface PluginConfig { diff --git a/modules/code-generator/src/plugins/component/react/jsx.ts b/modules/code-generator/src/plugins/component/react/jsx.ts index 588b356ad6..7155d1bacb 100644 --- a/modules/code-generator/src/plugins/component/react/jsx.ts +++ b/modules/code-generator/src/plugins/component/react/jsx.ts @@ -16,7 +16,7 @@ import { COMMON_CHUNK_NAME } from '../../../const/generator'; import { createReactNodeGenerator } from '../../../utils/nodeToJSX'; import { Scope } from '../../../utils/Scope'; -import { IPublicTypeJSExpression } from '@alilc/lowcode-types'; +import { IPublicTypeJSExpression } from '@lce/lowcode-types'; import { generateExpression } from '../../../utils/jsExpression'; import { transformJsExpr } from '../../../core/jsx/handlers/transformJsExpression'; import { transformThis2Context } from '../../../core/jsx/handlers/transformThis2Context'; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts index 24fa83e567..c4b391fe8a 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts @@ -1,4 +1,4 @@ -import { PackageJSON } from '@alilc/lowcode-types'; +import { PackageJSON } from '@lce/lowcode-types'; import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts index a908e10730..97c9dbe609 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts index c3bc1bb8cd..a7d4e8e692 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts index 744e01f9e2..53641ea910 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts index 876b1b02b2..f384df350b 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts index 9a106bb16d..45de2f75e0 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts index 7731c9ee47..b3493e70c2 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts index 5c6eb3f13b..cfca67a9a0 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts index 5132f3f303..4e8cfa1d61 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts index 9e858153bf..ea42e0446f 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts index 80c3d71ba3..7969296019 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts index 9647a76439..a567831f0c 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts index 941be0d263..0bf3b09fd1 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts index 9c078c92c2..f17c2a1d11 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts index 5ac92b550f..a1b5d42b86 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts index ef517bccb7..014f39eee2 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts index 9c7318dab0..d34b5baec9 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts index 636539b657..96a39b4709 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts index cd90e96404..b87d33c79a 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts index cae73c8438..245c55b65d 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts index 8d15815c87..64250bf2ac 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/index.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/index.ts index c03b7956de..fa22d95117 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/index.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/index.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { IProjectTemplate } from '../../../../../types'; import { generateStaticFiles } from './static-files'; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts index b213e9c2b4..d7c0726d3e 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { createResultDir } from '../../../../../utils/resultHelper'; import { runFileGenerator } from '../../../../../utils/templateHelper'; diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts b/modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts index 322796154a..f7712b9fc8 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts @@ -96,7 +96,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion(${cfg?.themePackage ? `{ diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts b/modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts index 3c39ba7399..cb584e0d7e 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts @@ -1,4 +1,4 @@ -import { PackageJSON } from '@alilc/lowcode-types'; +import { PackageJSON } from '@lce/lowcode-types'; import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts index e73ab2b82c..ebc1157fd8 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts index a3a346e3ff..6c850fca31 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts index 3345625557..d0475796a5 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; /* eslint-disable max-len */ diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts index 5c6eb3f13b..cfca67a9a0 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts index 9647a76439..a567831f0c 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts index 941be0d263..0bf3b09fd1 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts index 9c078c92c2..f17c2a1d11 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts index dfd00dd3e0..4417411f3c 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts index 1713057566..82b1edad68 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts index 9c7318dab0..d34b5baec9 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts index 636539b657..96a39b4709 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts index f58639db20..304b3a2e14 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts index c8cbe92545..07e17e89b5 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts @@ -1,4 +1,4 @@ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; import { createResultFile } from '../../../../../../utils/resultHelper'; export default function getFile(): [string[], ResultFile] { diff --git a/modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts b/modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts index 8f3794b61a..b22c189a6d 100644 --- a/modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts +++ b/modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { createResultDir } from '../../../../../utils/resultHelper'; import { runFileGenerator } from '../../../../../utils/templateHelper'; diff --git a/modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts b/modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts index 401ba3f97f..88806d5573 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts @@ -1,4 +1,4 @@ -import { IPublicTypeNpmInfo, PackageJSON } from '@alilc/lowcode-types'; +import { IPublicTypeNpmInfo, PackageJSON } from '@lce/lowcode-types'; import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; import { diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts index 9b07005dcc..30c82a94f0 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.eslintignore.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts index c30947a192..5f4bdc49de 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.eslintrc.js.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts index 352ca00f9d..17c1e24df8 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.gitignore.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts index be31d87484..aa6f649dd4 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.prettierignore.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts index 1c70fa1bde..c54956ff38 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.prettierrc.js.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts index 840994cbeb..7a3c975951 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.stylelintignore.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts index adbca1440c..8dc5966a86 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/.stylelintrc.js.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts index d7e220046c..23bc9141b7 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/README.md.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts index f70fa1f19a..23b37f1608 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/jsconfig.json.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts b/modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts index c29d2cd4b2..9efbfc8ead 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ /* Note: this file is generated by "npm run template", please dont modify this file directly */ /* -- instead, you should modify "static-files/rax/tsconfig.json.template" and run "npm run template" */ -import { ResultFile } from '@alilc/lowcode-types'; +import { ResultFile } from '@lce/lowcode-types'; export default function getFile(): [string[], ResultFile] { return [ diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/index.ts b/modules/code-generator/src/plugins/project/framework/rax/template/index.ts index aa37944864..cea75985d8 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/index.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/index.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { IProjectTemplate } from '../../../../../types'; import { generateStaticFiles } from './static-files'; diff --git a/modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts b/modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts index 2b5b9249f4..f6ac838bd1 100644 --- a/modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts +++ b/modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts @@ -1,5 +1,5 @@ /* Note: this file is generated by "npm run template", please dont modify this file directly */ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { createResultDir } from '../../../../../utils/resultHelper'; import { runFileGenerator } from '../../../../../utils/templateHelper'; diff --git a/modules/code-generator/src/publisher/disk/index.ts b/modules/code-generator/src/publisher/disk/index.ts index bf414963ed..c04b576cac 100644 --- a/modules/code-generator/src/publisher/disk/index.ts +++ b/modules/code-generator/src/publisher/disk/index.ts @@ -1,6 +1,6 @@ import * as defaultFs from 'fs'; -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { PublisherFactory, IPublisher, IPublisherFactoryParams, PublisherError } from '../../types'; import { getErrorMessage } from '../../utils/errors'; import { writeFolder, IFileSystem } from './utils'; diff --git a/modules/code-generator/src/publisher/disk/utils.ts b/modules/code-generator/src/publisher/disk/utils.ts index 4d69237c8f..12942f43bf 100644 --- a/modules/code-generator/src/publisher/disk/utils.ts +++ b/modules/code-generator/src/publisher/disk/utils.ts @@ -1,6 +1,6 @@ import * as systemFs from 'fs'; import { join } from 'path'; -import { ResultDir, ResultFile } from '@alilc/lowcode-types'; +import { ResultDir, ResultFile } from '@lce/lowcode-types'; export interface IFileSystem { existsSync: typeof systemFs.existsSync; diff --git a/modules/code-generator/src/publisher/zip/index.ts b/modules/code-generator/src/publisher/zip/index.ts index 0ac0b6f67f..312b8db13a 100644 --- a/modules/code-generator/src/publisher/zip/index.ts +++ b/modules/code-generator/src/publisher/zip/index.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; import { PublisherFactory, IPublisher, IPublisherFactoryParams, PublisherError } from '../../types'; import { getErrorMessage } from '../../utils/errors'; import { isNodeProcess, writeZipToDisk, generateProjectZip } from './utils'; diff --git a/modules/code-generator/src/publisher/zip/utils.ts b/modules/code-generator/src/publisher/zip/utils.ts index 08d3a12f44..114d94b109 100644 --- a/modules/code-generator/src/publisher/zip/utils.ts +++ b/modules/code-generator/src/publisher/zip/utils.ts @@ -1,5 +1,5 @@ import JSZip from 'jszip'; -import { ResultDir, ResultFile } from '@alilc/lowcode-types'; +import { ResultDir, ResultFile } from '@lce/lowcode-types'; import type { ZipBuffer } from './index'; export const isNodeProcess = (): boolean => { diff --git a/modules/code-generator/src/standalone-loader.ts b/modules/code-generator/src/standalone-loader.ts index 0c8903ddcb..bbeb7de78e 100644 --- a/modules/code-generator/src/standalone-loader.ts +++ b/modules/code-generator/src/standalone-loader.ts @@ -1,5 +1,5 @@ import fetch from 'node-fetch'; -import type { IPublicTypeProjectSchema, ResultDir } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema, ResultDir } from '@lce/lowcode-types'; import type { FlattenFile } from './types/file'; declare const Worker: any; @@ -8,7 +8,7 @@ declare const __PACKAGE_VERSION__: string; const packageVersion = __PACKAGE_VERSION__ || 'latest'; -export const DEFAULT_WORKER_JS = `https://cdn.jsdelivr.net/npm/@alilc/lowcode-code-generator@${packageVersion}/dist/standalone-worker.min.js`; +export const DEFAULT_WORKER_JS = `https://cdn.jsdelivr.net/npm/@lce/lowcode-code-generator@${packageVersion}/dist/standalone-worker.min.js`; export const DEFAULT_TIMEOUT_IN_MS = 60 * 1000; diff --git a/modules/code-generator/src/standalone-worker.ts b/modules/code-generator/src/standalone-worker.ts index e00a4877bf..707e861653 100644 --- a/modules/code-generator/src/standalone-worker.ts +++ b/modules/code-generator/src/standalone-worker.ts @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -import type { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import CodeGen from './standalone'; declare const self: any; diff --git a/modules/code-generator/src/types/analyze.ts b/modules/code-generator/src/types/analyze.ts index 3bf444d29e..9af4653148 100644 --- a/modules/code-generator/src/types/analyze.ts +++ b/modules/code-generator/src/types/analyze.ts @@ -1,4 +1,4 @@ -import type { IPublicTypeContainerSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeContainerSchema } from '@lce/lowcode-types'; export interface ICompAnalyzeResult { isUsingRef: boolean; diff --git a/modules/code-generator/src/types/core.ts b/modules/code-generator/src/types/core.ts index 1219a1e767..f49de6d87c 100644 --- a/modules/code-generator/src/types/core.ts +++ b/modules/code-generator/src/types/core.ts @@ -5,7 +5,7 @@ import { IPublicTypeJSONObject, IPublicTypeJSSlot, IPublicTypeNodeDataType, IPublicTypeProjectSchema, ResultDir, ResultFile, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import type { ProjectBuilderInitOptions } from '../generator/ProjectBuilder'; import { IScopeBindings } from '../utils/ScopeBindings'; diff --git a/modules/code-generator/src/types/intermediate.ts b/modules/code-generator/src/types/intermediate.ts index 7cba0bd44b..aafb1e7313 100644 --- a/modules/code-generator/src/types/intermediate.ts +++ b/modules/code-generator/src/types/intermediate.ts @@ -3,7 +3,7 @@ import { IPublicTypeUtilsMap, IPublicTypeContainerSchema, IPublicTypeJSONObject, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { IDependency, INpmPackage } from './deps'; import { ICompAnalyzeResult } from './analyze'; diff --git a/modules/code-generator/src/types/jsx.ts b/modules/code-generator/src/types/jsx.ts index 28f948d639..210014c893 100644 --- a/modules/code-generator/src/types/jsx.ts +++ b/modules/code-generator/src/types/jsx.ts @@ -1,4 +1,4 @@ -import { IPublicTypeNodeSchema, IPublicTypeCompositeValue } from '@alilc/lowcode-types'; +import { IPublicTypeNodeSchema, IPublicTypeCompositeValue } from '@lce/lowcode-types'; import { HandlerSet, BaseGenerator, NodeGenerator } from './core'; export enum PIECE_TYPE { diff --git a/modules/code-generator/src/types/publisher.ts b/modules/code-generator/src/types/publisher.ts index 5df5145df0..9ed5223ff3 100644 --- a/modules/code-generator/src/types/publisher.ts +++ b/modules/code-generator/src/types/publisher.ts @@ -1,4 +1,4 @@ -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; export type PublisherFactory = (configuration?: Partial) => U; diff --git a/modules/code-generator/src/utils/common.ts b/modules/code-generator/src/utils/common.ts index fa7ab30a95..501e026f17 100644 --- a/modules/code-generator/src/utils/common.ts +++ b/modules/code-generator/src/utils/common.ts @@ -1,4 +1,4 @@ -import type { IPublicTypeJSExpression, IPublicTypeJSFunction } from '@alilc/lowcode-types'; +import type { IPublicTypeJSExpression, IPublicTypeJSFunction } from '@lce/lowcode-types'; import changeCase from 'change-case'; import short from 'short-uuid'; import { DependencyType, IDependency, IExternalDependency, IInternalDependency } from '../types'; diff --git a/modules/code-generator/src/utils/compositeType.ts b/modules/code-generator/src/utils/compositeType.ts index 0dd612641d..c076d7511a 100644 --- a/modules/code-generator/src/utils/compositeType.ts +++ b/modules/code-generator/src/utils/compositeType.ts @@ -8,7 +8,7 @@ import { isJSFunction, isJSSlot, IPublicTypeJSSlot, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import _ from 'lodash'; import { IScope, CompositeValueGeneratorOptions, CodeGeneratorError } from '../types'; diff --git a/modules/code-generator/src/utils/jsExpression.ts b/modules/code-generator/src/utils/jsExpression.ts index 08d2fafd8a..b4864b23ec 100644 --- a/modules/code-generator/src/utils/jsExpression.ts +++ b/modules/code-generator/src/utils/jsExpression.ts @@ -2,7 +2,7 @@ import * as parser from '@babel/parser'; import generate from '@babel/generator'; import traverse from '@babel/traverse'; import * as t from '@babel/types'; -import { IPublicTypeJSExpression, IPublicTypeJSFunction, isJSExpression, isJSFunction } from '@alilc/lowcode-types'; +import { IPublicTypeJSExpression, IPublicTypeJSFunction, isJSExpression, isJSFunction } from '@lce/lowcode-types'; import { CodeGeneratorError, IScope } from '../types'; import { transformExpressionLocalRef, ParseError } from './expressionParser'; import { isJSExpressionFn } from './common'; diff --git a/modules/code-generator/src/utils/jsSlot.ts b/modules/code-generator/src/utils/jsSlot.ts index 265f6857f2..382a0bd84d 100644 --- a/modules/code-generator/src/utils/jsSlot.ts +++ b/modules/code-generator/src/utils/jsSlot.ts @@ -1,4 +1,4 @@ -import { IPublicTypeJSSlot, isJSSlot, IPublicTypeNodeData } from '@alilc/lowcode-types'; +import { IPublicTypeJSSlot, isJSSlot, IPublicTypeNodeData } from '@lce/lowcode-types'; import { CodeGeneratorError, NodeGenerator, IScope } from '../types'; import { unwrapJsExprQuoteInJsx } from './jsxHelpers'; diff --git a/modules/code-generator/src/utils/nodeToJSX.ts b/modules/code-generator/src/utils/nodeToJSX.ts index d29f28762c..d58b2ddee3 100644 --- a/modules/code-generator/src/utils/nodeToJSX.ts +++ b/modules/code-generator/src/utils/nodeToJSX.ts @@ -1,6 +1,6 @@ import _ from 'lodash'; import { pipe } from 'fp-ts/function'; -import { IPublicTypeNodeSchema, isNodeSchema, IPublicTypeNodeDataType, IPublicTypeCompositeValue } from '@alilc/lowcode-types'; +import { IPublicTypeNodeSchema, isNodeSchema, IPublicTypeNodeDataType, IPublicTypeCompositeValue } from '@lce/lowcode-types'; import { IScope, diff --git a/modules/code-generator/src/utils/resultHelper.ts b/modules/code-generator/src/utils/resultHelper.ts index d7a3ef5653..99806f1410 100644 --- a/modules/code-generator/src/utils/resultHelper.ts +++ b/modules/code-generator/src/utils/resultHelper.ts @@ -1,4 +1,4 @@ -import { ResultFile, ResultDir } from '@alilc/lowcode-types'; +import { ResultFile, ResultDir } from '@lce/lowcode-types'; import nm from 'nanomatch'; import { CodeGeneratorError } from '../types/error'; diff --git a/modules/code-generator/src/utils/schema.ts b/modules/code-generator/src/utils/schema.ts index f9529945eb..16678cd874 100644 --- a/modules/code-generator/src/utils/schema.ts +++ b/modules/code-generator/src/utils/schema.ts @@ -11,7 +11,7 @@ import { IPublicTypeCompositeValue, isNodeSchema, isJSFunction, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { CodeGeneratorError } from '../types/error'; import { isJSExpressionFn } from './common'; diff --git a/modules/code-generator/src/utils/templateHelper.ts b/modules/code-generator/src/utils/templateHelper.ts index 8602ff258b..c08fc7d58f 100644 --- a/modules/code-generator/src/utils/templateHelper.ts +++ b/modules/code-generator/src/utils/templateHelper.ts @@ -1,4 +1,4 @@ -import { ResultDir, ResultFile } from '@alilc/lowcode-types'; +import { ResultDir, ResultFile } from '@lce/lowcode-types'; import { createResultDir, addDirectory, addFile } from './resultHelper'; type FuncFileGenerator = () => [string[], ResultFile]; diff --git a/modules/code-generator/tests/bugfix/i18n-with-params.test.ts b/modules/code-generator/tests/bugfix/i18n-with-params.test.ts index b58afda8cf..29fd955939 100644 --- a/modules/code-generator/tests/bugfix/i18n-with-params.test.ts +++ b/modules/code-generator/tests/bugfix/i18n-with-params.test.ts @@ -1,7 +1,7 @@ import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { createDiskPublisher } from '../helpers/solutionHelper'; const testCaseBaseName = path.basename(__filename, '.test.ts'); diff --git a/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts b/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts index efb7fd5bee..4b0bbfd00c 100644 --- a/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts +++ b/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts @@ -1,7 +1,7 @@ import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { createDiskPublisher } from '../helpers/solutionHelper'; const testCaseBaseName = path.basename(__filename, '.test.ts'); diff --git a/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts b/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts index ebca6a26fd..068d2f83f4 100644 --- a/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts +++ b/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts @@ -1,7 +1,7 @@ import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { createDiskPublisher } from '../helpers/solutionHelper'; import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs'; diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts b/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts index 78f2b50b32..dbba0fab66 100644 --- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts +++ b/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts @@ -1,7 +1,7 @@ import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { createDiskPublisher } from '../helpers/solutionHelper'; import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs'; diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts b/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts index 1842005938..83fbfa3aff 100644 --- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts +++ b/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts @@ -1,7 +1,7 @@ import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { createDiskPublisher } from '../helpers/solutionHelper'; import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs'; diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts index e1d8a28141..bdafdafa15 100644 --- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts +++ b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts @@ -77,7 +77,7 @@ export default defineConfig(() => ({ 'react-dom/client': 'ReactDOM', '@alifd/next': 'Next', lodash: 'var window._', - '@alilc/lowcode-engine': 'var window.AliLowCodeEngine', + '@lce/lowcode-engine': 'var window.AliLowCodeEngine', }, plugins: [ fusion({ diff --git a/modules/code-generator/tests/public/SchemaParser/p0-basic.test.ts b/modules/code-generator/tests/public/SchemaParser/p0-basic.test.ts index 311b93c6b2..8386bf1762 100644 --- a/modules/code-generator/tests/public/SchemaParser/p0-basic.test.ts +++ b/modules/code-generator/tests/public/SchemaParser/p0-basic.test.ts @@ -1,4 +1,4 @@ -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { SchemaParser } from '../../../src'; import SCHEMA_WITH_SLOT from './data/schema-with-slot.json'; diff --git a/modules/code-generator/tests/public/publisher/disk/disk.test.ts b/modules/code-generator/tests/public/publisher/disk/disk.test.ts index a654a8a63b..06e8bbeb71 100644 --- a/modules/code-generator/tests/public/publisher/disk/disk.test.ts +++ b/modules/code-generator/tests/public/publisher/disk/disk.test.ts @@ -1,5 +1,5 @@ import CodeGen from '../../../../src'; -import { ResultDir } from '@alilc/lowcode-types'; +import { ResultDir } from '@lce/lowcode-types'; describe('public/publisher/disk/disk', () => { // standalone 模式下没有 disk publisher diff --git a/modules/code-generator/tests/public/solutions/icejs3-app.test.ts b/modules/code-generator/tests/public/solutions/icejs3-app.test.ts index 3d3ec4eac6..b253193164 100644 --- a/modules/code-generator/tests/public/solutions/icejs3-app.test.ts +++ b/modules/code-generator/tests/public/solutions/icejs3-app.test.ts @@ -12,7 +12,7 @@ import { import CodeGenerator from '../../../src'; -import type { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema } from '@lce/lowcode-types'; jest.setTimeout(15 * 1000); diff --git a/modules/code-generator/tests/public/solutions/rax-app.test.ts b/modules/code-generator/tests/public/solutions/rax-app.test.ts index 320daf6daa..afeb8fe393 100644 --- a/modules/code-generator/tests/public/solutions/rax-app.test.ts +++ b/modules/code-generator/tests/public/solutions/rax-app.test.ts @@ -13,7 +13,7 @@ import { import CodeGenerator from '../../../src'; -import type { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema } from '@lce/lowcode-types'; jest.setTimeout(15 * 1000); diff --git a/modules/code-generator/tests/public/solutions/react-app.test.ts b/modules/code-generator/tests/public/solutions/react-app.test.ts index f70f10af09..39dbe1f316 100644 --- a/modules/code-generator/tests/public/solutions/react-app.test.ts +++ b/modules/code-generator/tests/public/solutions/react-app.test.ts @@ -12,7 +12,7 @@ import { import CodeGenerator from '../../../src'; -import type { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import type { IPublicTypeProjectSchema } from '@lce/lowcode-types'; jest.setTimeout(15 * 1000); diff --git a/modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts b/modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts index 642ef4b18a..23b75fb5db 100644 --- a/modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts +++ b/modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts @@ -1,4 +1,4 @@ -import type { ResultDir } from '@alilc/lowcode-types'; +import type { ResultDir } from '@lce/lowcode-types'; import _ from 'lodash'; import CodeGen from '../../../src'; diff --git a/modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts b/modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts index d34964f37b..22902d8ac5 100644 --- a/modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts +++ b/modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts @@ -1,4 +1,4 @@ -import type { ResultDir } from '@alilc/lowcode-types'; +import type { ResultDir } from '@lce/lowcode-types'; import _ from 'lodash'; import CodeGen from '../../../src'; diff --git a/modules/code-generator/tests/utils/schema/handleSubNodes.test.ts b/modules/code-generator/tests/utils/schema/handleSubNodes.test.ts index d88ecdf549..a2198df0b7 100644 --- a/modules/code-generator/tests/utils/schema/handleSubNodes.test.ts +++ b/modules/code-generator/tests/utils/schema/handleSubNodes.test.ts @@ -1,4 +1,4 @@ -import { IPublicTypeNodeData } from '@alilc/lowcode-types'; +import { IPublicTypeNodeData } from '@lce/lowcode-types'; import { handleSubNodes } from '../../../src/utils/schema'; import SCHEMA_WITH_SLOT from './data/schema-with-slot.json'; diff --git a/modules/material-parser/README.md b/modules/material-parser/README.md index 0d3f5555d5..0e47ce4e9c 100644 --- a/modules/material-parser/README.md +++ b/modules/material-parser/README.md @@ -1,4 +1,4 @@ -# @alilc/lowcode-material-parser +# @lce/lowcode-material-parser > 入料模块 diff --git a/modules/material-parser/package.json b/modules/material-parser/package.json index 8b68c02955..332739cff1 100644 --- a/modules/material-parser/package.json +++ b/modules/material-parser/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-material-parser", + "name": "@lce/lowcode-material-parser", "version": "1.0.3", "description": "material parser for Ali lowCode engine", "main": "lib/index.js", diff --git a/packages/designer/package.json b/packages/designer/package.json index 97256d3a21..0db9ea5301 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-designer", + "name": "@lce/lowcode-designer", "version": "1.3.2", "description": "Designer for Ali LowCode Engine", "main": "lib/index.js", @@ -15,9 +15,9 @@ }, "license": "MIT", "dependencies": { - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "react": "^16", "react-dom": "^16.7.0", diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-container.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-container.tsx index 212cb80bbd..1e8b5e586d 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-container.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-container.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; import { Component, Fragment, ReactElement, PureComponent } from 'react'; import classNames from 'classnames'; -import { computed, observer, Title, globalLocale } from '@alilc/lowcode-editor-core'; -import { IPublicTypeI18nData, IPublicTypeTitleContent } from '@alilc/lowcode-types'; -import { isI18nData } from '@alilc/lowcode-utils'; +import { computed, observer, Title, globalLocale } from '@lce/lowcode-editor-core'; +import { IPublicTypeI18nData, IPublicTypeTitleContent } from '@lce/lowcode-types'; +import { isI18nData } from '@lce/lowcode-utils'; import { DropLocation } from '../../designer'; import { BuiltinSimulatorHost } from '../../builtin-simulator/host'; import { INode } from '../../document/node'; @@ -47,11 +47,14 @@ function getTitle(title: string | IPublicTypeI18nData | ReactElement) { } @observer -export class BorderContainer extends Component<{ - host: BuiltinSimulatorHost; -}, { - target?: INode; -}> { +export class BorderContainer extends Component< + { + host: BuiltinSimulatorHost; + }, + { + target?: INode; + } +> { state = {} as any; @computed get scale() { diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx index 49e68b77c8..ee9d5ccab2 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx @@ -1,8 +1,8 @@ import { Component, Fragment, PureComponent } from 'react'; import classNames from 'classnames'; -import { computed, observer, Title } from '@alilc/lowcode-editor-core'; -import { IPublicTypeTitleContent } from '@alilc/lowcode-types'; -import { getClosestNode } from '@alilc/lowcode-utils'; +import { computed, observer, Title } from '@lce/lowcode-editor-core'; +import { IPublicTypeTitleContent } from '@lce/lowcode-types'; +import { getClosestNode } from '@lce/lowcode-utils'; import { intl } from '../../locale'; import { BuiltinSimulatorHost } from '../host'; @@ -35,9 +35,7 @@ export class BorderDetectingInstance extends PureComponent<{ return (
- { - isLocked ? (<Title title={intl('locked')} className="lc-borders-status" />) : null - } + {isLocked ? <Title title={intl('locked')} className="lc-borders-status" /> : null} </div> ); } @@ -77,7 +75,10 @@ export class BorderDetecting extends Component<{ host: BuiltinSimulatorHost }> { const { current } = this; const canHoverHook = current?.componentMeta.advanced.callbacks?.onHoverHook; - const canHover = (canHoverHook && typeof canHoverHook === 'function') ? canHoverHook(current.internalToShellNode()) : true; + const canHover = + canHoverHook && typeof canHoverHook === 'function' + ? canHoverHook(current.internalToShellNode()) + : true; if (!canHover || !current || host.viewport.scrolling || host.liveEditing.editing) { return null; @@ -118,7 +119,10 @@ export class BorderDetecting extends Component<{ host: BuiltinSimulatorHost }> { scrollX={this.scrollX} scrollY={this.scrollY} // @ts-ignore - rect={host.computeComponentInstanceRect(host.getComponentInstances(lockedNode)[0], lockedNode.componentMeta.rootSelector)} + rect={host.computeComponentInstanceRect( + host.getComponentInstances(lockedNode)[0], + lockedNode.componentMeta.rootSelector, + )} isLocked={lockedNode?.getId() !== current.getId()} /> ); diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx index 4b3c5c31a9..4e3c40072e 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx @@ -1,6 +1,6 @@ import React, { Component, Fragment } from 'react'; import DragResizeEngine from './drag-resize-engine'; -import { observer, computed } from '@alilc/lowcode-editor-core'; +import { observer, computed } from '@lce/lowcode-editor-core'; import classNames from 'classnames'; import { SimulatorContext } from '../context'; import { BuiltinSimulatorHost } from '../host'; @@ -89,7 +89,12 @@ export class BoxResizingForNode extends Component<{ host: BuiltinSimulatorHost; return null; } return ( - <BoxResizingInstance key={observed.id} dragging={this.dragging} designer={designer} observed={observed} /> + <BoxResizingInstance + key={observed.id} + dragging={this.dragging} + designer={designer} + observed={observed} + /> ); })} </Fragment> @@ -135,12 +140,15 @@ export class BoxResizingInstance extends Component<{ // this.hoveringCapture.setBoundary(this.outline); this.willBind(); - const resize = (e: MouseEvent, direction: string, node: INode, moveX: number, moveY: number) => { + const resize = ( + e: MouseEvent, + direction: string, + node: INode, + moveX: number, + moveY: number, + ) => { const { advanced } = node.componentMeta; - if ( - advanced.callbacks && - typeof advanced.callbacks.onResize === 'function' - ) { + if (advanced.callbacks && typeof advanced.callbacks.onResize === 'function') { (e as any).trigger = direction; (e as any).deltaX = moveX; (e as any).deltaY = moveY; @@ -151,10 +159,7 @@ export class BoxResizingInstance extends Component<{ const resizeStart = (e: MouseEvent, direction: string, node: INode) => { const { advanced } = node.componentMeta; - if ( - advanced.callbacks && - typeof advanced.callbacks.onResizeStart === 'function' - ) { + if (advanced.callbacks && typeof advanced.callbacks.onResizeStart === 'function') { (e as any).trigger = direction; const cbNode = node?.isNode ? node.internalToShellNode() : node; advanced.callbacks.onResizeStart(e, cbNode); @@ -163,10 +168,7 @@ export class BoxResizingInstance extends Component<{ const resizeEnd = (e: MouseEvent, direction: string, node: INode) => { const { advanced } = node.componentMeta; - if ( - advanced.callbacks && - typeof advanced.callbacks.onResizeEnd === 'function' - ) { + if (advanced.callbacks && typeof advanced.callbacks.onResizeEnd === 'function') { (e as any).trigger = direction; const cbNode = node?.isNode ? node.internalToShellNode() : node; advanced.callbacks.onResizeEnd(e, cbNode); @@ -248,7 +250,9 @@ export class BoxResizingInstance extends Component<{ const { node } = observed; const metadata = node.componentMeta.getMetadata(); if (metadata.configure?.advanced?.getResizingHandlers) { - triggerVisible = metadata.configure.advanced.getResizingHandlers(node.internalToShellNode()); + triggerVisible = metadata.configure.advanced.getResizingHandlers( + node.internalToShellNode(), + ); } } triggerVisible = normalizeTriggers(triggerVisible); 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 143c67e020..cf280993b5 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx @@ -9,9 +9,9 @@ import { ComponentType, } from 'react'; import classNames from 'classnames'; -import { observer, computed, Tip, engineConfig } from '@alilc/lowcode-editor-core'; -import { createIcon, isReactComponent, isActionContentObject } from '@alilc/lowcode-utils'; -import { IPublicTypeActionContentObject } from '@alilc/lowcode-types'; +import { observer, computed, Tip, engineConfig } from '@lce/lowcode-editor-core'; +import { createIcon, isReactComponent, isActionContentObject } from '@lce/lowcode-utils'; +import { IPublicTypeActionContentObject } from '@lce/lowcode-types'; import { BuiltinSimulatorHost } from '../host'; import { INode, OffsetObserver } from '../../designer'; import NodeSelector from '../node-selector'; @@ -54,11 +54,8 @@ export class BorderSelectingInstance extends Component<{ } return ( - <div - className={className} - style={style} - > - {(!dragging && !hideComponentAction) ? <Toolbar observed={observed} /> : null} + <div className={className} style={style}> + {!dragging && !hideComponentAction ? <Toolbar observed={observed} /> : null} </div> ); } @@ -107,7 +104,10 @@ class Toolbar extends Component<{ observed: OffsetObserver }> { // FIXME: need this? return; } - if (important && (typeof condition === 'function' ? condition(node) !== false : condition !== false)) { + if ( + important && + (typeof condition === 'function' ? condition(node) !== false : condition !== false) + ) { actions.push(createAction(content, name, node)); } }); @@ -120,7 +120,11 @@ class Toolbar extends Component<{ observed: OffsetObserver }> { } } -function createAction(content: ReactNode | ComponentType<any> | IPublicTypeActionContentObject, key: string, node: INode) { +function createAction( + content: ReactNode | ComponentType<any> | IPublicTypeActionContentObject, + key: string, + node: INode, +) { if (isValidElement<{ key: string; node: INode }>(content)) { return cloneElement(content, { key, node }); } @@ -187,7 +191,13 @@ export class BorderSelectingForNode extends Component<{ host: ISimulatorHost; no if (!observed) { return null; } - return <BorderSelectingInstance key={observed.id} dragging={this.dragging} observed={observed} />; + return ( + <BorderSelectingInstance + key={observed.id} + dragging={this.dragging} + observed={observed} + /> + ); })} </Fragment> ); diff --git a/packages/designer/src/builtin-simulator/bem-tools/drag-resize-engine.ts b/packages/designer/src/builtin-simulator/bem-tools/drag-resize-engine.ts index 6689379dde..64f079f08e 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/drag-resize-engine.ts +++ b/packages/designer/src/builtin-simulator/bem-tools/drag-resize-engine.ts @@ -1,8 +1,8 @@ import { ISimulatorHost } from '../../simulator'; import { Designer, Point } from '../../designer'; -import { cursor } from '@alilc/lowcode-utils'; +import { cursor } from '@lce/lowcode-utils'; import { makeEventsHandler } from '../../utils/misc'; -import { createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +import { createModuleEventBus, IEventBus } from '@lce/lowcode-editor-core'; // 拖动缩放 export default class DragResizeEngine { @@ -52,7 +52,7 @@ export default class DragResizeEngine { if (!sourceDocument || sourceDocument === document) { return e; } - const srcSim = masterSensors.find(sim => sim.contentDocument === sourceDocument); + const srcSim = masterSensors.find((sim) => sim.contentDocument === sourceDocument); if (srcSim) { return srcSim.viewport.toGlobalPoint(e); } @@ -61,7 +61,7 @@ export default class DragResizeEngine { const over = (e: MouseEvent) => { const handleEvents = makeEventsHandler(e, masterSensors); - handleEvents(doc => { + handleEvents((doc) => { doc.removeEventListener('mousemove', move, true); doc.removeEventListener('mouseup', over, true); }); @@ -77,7 +77,7 @@ export default class DragResizeEngine { node = boost(e); startEvent = createResizeEvent(e); const handleEvents = makeEventsHandler(e, masterSensors); - handleEvents(doc => { + handleEvents((doc) => { doc.addEventListener('mousemove', move, true); doc.addEventListener('mouseup', over, true); }); @@ -118,7 +118,7 @@ export default class DragResizeEngine { private getMasterSensors(): ISimulatorHost[] { return this.designer.project.documents - .map(doc => { + .map((doc) => { if (doc.active && doc.simulator?.sensorAvailable) { return doc.simulator; } diff --git a/packages/designer/src/builtin-simulator/bem-tools/index.tsx b/packages/designer/src/builtin-simulator/bem-tools/index.tsx index bc485af1b4..3ed7703189 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/index.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/index.tsx @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { observer, engineConfig } from '@alilc/lowcode-editor-core'; +import { observer, engineConfig } from '@lce/lowcode-editor-core'; import { BorderDetecting } from './border-detecting'; import { BorderContainer } from './border-container'; import { BuiltinSimulatorHost } from '../host'; @@ -19,19 +19,22 @@ export class BemTools extends Component<{ host: BuiltinSimulatorHost }> { return null; } return ( - <div className="lc-bem-tools" style={{ transform: `translate(${-scrollX * scale}px,${-scrollY * scale}px)` }}> - { !engineConfig.get('disableDetecting') && <BorderDetecting key="hovering" host={host} /> } + <div + className="lc-bem-tools" + style={{ transform: `translate(${-scrollX * scale}px,${-scrollY * scale}px)` }} + > + {!engineConfig.get('disableDetecting') && <BorderDetecting key="hovering" host={host} />} <BorderSelecting key="selecting" host={host} /> - { engineConfig.get('enableReactiveContainer') && <BorderContainer key="reactive-container-border" host={host} /> } + {engineConfig.get('enableReactiveContainer') && ( + <BorderContainer key="reactive-container-border" host={host} /> + )} <InsertionView key="insertion" host={host} /> <BorderResizing key="resizing" host={host} /> - { - host.designer.bemToolsManager.getAllBemTools().map(tools => { - const ToolsCls = tools.item; - return <ToolsCls key={tools.name} host={host} />; - }) - } + {host.designer.bemToolsManager.getAllBemTools().map((tools) => { + const ToolsCls = tools.item; + return <ToolsCls key={tools.name} host={host} />; + })} </div> ); } -} \ No newline at end of file +} diff --git a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx index 98ac4266cc..602f0fb678 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx @@ -1,15 +1,17 @@ import { Component } from 'react'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { BuiltinSimulatorHost } from '../host'; -import { - DropLocation, - isVertical, -} from '../../designer'; +import { DropLocation, isVertical } from '../../designer'; import { ISimulatorHost } from '../../simulator'; import { INode } from '../../document'; import './insertion.less'; -import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicTypeLocationChildrenDetail, IPublicTypeRect } from '@alilc/lowcode-types'; -import { isLocationChildrenDetail } from '@alilc/lowcode-utils'; +import { + IPublicTypeNodeData, + IPublicTypeNodeSchema, + IPublicTypeLocationChildrenDetail, + IPublicTypeRect, +} from '@lce/lowcode-types'; +import { isLocationChildrenDetail } from '@lce/lowcode-utils'; interface InsertionData { edge?: DOMRect; @@ -23,7 +25,11 @@ interface InsertionData { /** * 处理拖拽子节点(INode)情况 */ -function processChildrenDetail(sim: ISimulatorHost, container: INode, detail: IPublicTypeLocationChildrenDetail): InsertionData { +function processChildrenDetail( + sim: ISimulatorHost, + container: INode, + detail: IPublicTypeLocationChildrenDetail, +): InsertionData { let edge = detail.edge || null; if (!edge) { diff --git a/packages/designer/src/builtin-simulator/create-simulator.ts b/packages/designer/src/builtin-simulator/create-simulator.ts index 57369efd89..13a8bc512e 100644 --- a/packages/designer/src/builtin-simulator/create-simulator.ts +++ b/packages/designer/src/builtin-simulator/create-simulator.ts @@ -9,7 +9,7 @@ import { AssetType, assetItem, isCSSUrl, -} from '@alilc/lowcode-utils'; +} from '@lce/lowcode-utils'; import { BuiltinSimulatorRenderer } from './renderer'; @@ -58,19 +58,13 @@ export function createSimulator( const lv = asset.level || level || AssetLevel.Environment; const scriptType = asset.scriptType ? ` type="${asset.scriptType}"` : ''; if (asset.type === AssetType.JSUrl) { - scripts[lv].push( - `<script src="${asset.content}"${id}${scriptType}></script>`, - ); + scripts[lv].push(`<script src="${asset.content}"${id}${scriptType}></script>`); } else if (asset.type === AssetType.JSText) { scripts[lv].push(`<script${id}${scriptType}>${asset.content}</script>`); } else if (asset.type === AssetType.CSSUrl) { - styles[lv].push( - `<link rel="stylesheet" href="${asset.content}"${id} />`, - ); + styles[lv].push(`<link rel="stylesheet" href="${asset.content}"${id} />`); } else if (asset.type === AssetType.CSSText) { - styles[lv].push( - `<style type="text/css"${id}>${asset.content}</style>`, - ); + styles[lv].push(`<style type="text/css"${id}>${asset.content}</style>`); } } } diff --git a/packages/designer/src/builtin-simulator/host-view.tsx b/packages/designer/src/builtin-simulator/host-view.tsx index 21e0079306..f75dc7a78f 100644 --- a/packages/designer/src/builtin-simulator/host-view.tsx +++ b/packages/designer/src/builtin-simulator/host-view.tsx @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { BuiltinSimulatorHost, BuiltinSimulatorProps } from './host'; import { BemTools } from './bem-tools'; import { Project } from '../project'; @@ -24,7 +24,8 @@ export class BuiltinSimulatorHostView extends Component<SimulatorHostProps> { constructor(props: any) { super(props); const { project, onMount, designer } = this.props; - this.host = (project.simulator as BuiltinSimulatorHost) || new BuiltinSimulatorHost(project, designer); + this.host = + (project.simulator as BuiltinSimulatorHost) || new BuiltinSimulatorHost(project, designer); this.host.setProps(this.props); onMount?.(this.host); } @@ -58,7 +59,11 @@ class Canvas extends Component<{ host: BuiltinSimulatorHost }> { return ( <div className={className} style={canvas}> - <div ref={(elmt) => sim.mountViewport(elmt)} className="lc-simulator-canvas-viewport" style={viewport}> + <div + ref={(elmt) => sim.mountViewport(elmt)} + className="lc-simulator-canvas-viewport" + style={viewport} + > <BemTools host={sim} /> <Content host={sim} /> </div> diff --git a/packages/designer/src/builtin-simulator/host.ts b/packages/designer/src/builtin-simulator/host.ts index 57f8569326..18c8f4000a 100644 --- a/packages/designer/src/builtin-simulator/host.ts +++ b/packages/designer/src/builtin-simulator/host.ts @@ -12,13 +12,9 @@ import { makeObservable, createModuleEventBus, IEventBus, -} from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-editor-core'; -import { - ISimulatorHost, - Component, - DropContainer, -} from '../simulator'; +import { ISimulatorHost, Component, DropContainer } from '../simulator'; import Viewport from './viewport'; import { createSimulator } from './create-simulator'; import { Node, INode, contains, isRootNode, isLowCodeComponent } from '../document'; @@ -40,7 +36,7 @@ import { isDragNodeObject, isLocationData, Logger, -} from '@alilc/lowcode-utils'; +} from '@lce/lowcode-utils'; import { isShaken, ILocateEvent, @@ -64,7 +60,7 @@ import { IPublicTypeLocationDetailType, IPublicTypeRect, IPublicModelNode, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { BuiltinSimulatorRenderer } from './renderer'; import { clipboard } from '../designer/clipboard'; import { LiveEditing } from './live-editing/live-editing'; @@ -352,24 +348,30 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp */ connect( renderer: BuiltinSimulatorRenderer, - effect: (reaction: IReactionPublic) => void, options?: IReactionOptions, + effect: (reaction: IReactionPublic) => void, + options?: IReactionOptions, ) { this._renderer = renderer; return autorun(effect, options); } - reaction(expression: (reaction: IReactionPublic) => unknown, effect: (value: unknown, prev: unknown, reaction: IReactionPublic) => void, - opts?: IReactionOptions | undefined): IReactionDisposer { + reaction( + expression: (reaction: IReactionPublic) => unknown, + effect: (value: unknown, prev: unknown, reaction: IReactionPublic) => void, + opts?: IReactionOptions | undefined, + ): IReactionDisposer { return reaction(expression, effect, opts); } - autorun(effect: (reaction: IReactionPublic) => void, options?: IReactionOptions): IReactionDisposer { + autorun( + effect: (reaction: IReactionPublic) => void, + options?: IReactionOptions, + ): IReactionDisposer { return autorun(effect, options); } purge(): void { // todo - } mountViewport(viewport: HTMLElement | null) { @@ -450,11 +452,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp const vendors = [ // required & use once - assetBundle( - this.get('environment') || - defaultEnvironment, - AssetLevel.Environment, - ), + assetBundle(this.get('environment') || defaultEnvironment, AssetLevel.Environment), // required & use once assetBundle(this.get('extraEnvironment'), AssetLevel.Environment), @@ -463,11 +461,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp // required & TODO: think of update assetBundle(this.theme, AssetLevel.Theme), // required & use once - assetBundle( - this.get('simulatorUrl') || - defaultSimulatorUrl, - AssetLevel.Runtime, - ), + assetBundle(this.get('simulatorUrl') || defaultSimulatorUrl, AssetLevel.Runtime), ]; // wait 准备 iframe 内容、依赖库注入 @@ -697,10 +691,14 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp '.next-calendar-table', '.editor-container', // 富文本组件 ]; - const ignoreSelectors = customizeIgnoreSelectors?.(defaultIgnoreSelectors, e) || defaultIgnoreSelectors; + const ignoreSelectors = + customizeIgnoreSelectors?.(defaultIgnoreSelectors, e) || defaultIgnoreSelectors; const ignoreSelectorsString = ignoreSelectors.join(','); // 提供了 customizeIgnoreSelectors 的情况下,忽略 isFormEvent() 判断 - if ((!customizeIgnoreSelectors && isFormEvent(e)) || target?.closest(ignoreSelectorsString)) { + if ( + (!customizeIgnoreSelectors && isFormEvent(e)) || + target?.closest(ignoreSelectorsString) + ) { e.preventDefault(); e.stopPropagation(); } @@ -918,7 +916,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp /** * @see ISimulator */ - getComponentInstances(node: INode, context?: IPublicTypeNodeInstance): IPublicTypeComponentInstance[] | null { + getComponentInstances( + node: INode, + context?: IPublicTypeNodeInstance, + ): IPublicTypeComponentInstance[] | null { const docId = node.document?.id; if (!docId) { return null; @@ -966,7 +967,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp /** * @see ISimulator */ - computeComponentInstanceRect(instance: IPublicTypeComponentInstance, selector?: string): IPublicTypeRect | null { + computeComponentInstanceRect( + instance: IPublicTypeComponentInstance, + selector?: string, + ): IPublicTypeRect | null { const renderer = this.renderer!; const elements = this.findDOMNodes(instance, selector); if (!elements) { @@ -1032,7 +1036,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp /** * @see ISimulator */ - findDOMNodes(instance: IPublicTypeComponentInstance, selector?: string): Array<Element | Text> | null { + findDOMNodes( + instance: IPublicTypeComponentInstance, + selector?: string, + ): Array<Element | Text> | null { const elements = this._renderer?.findDOMNodes(instance); if (!elements) { return null; @@ -1051,7 +1058,9 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp /** * 通过 DOM 节点获取节点,依赖 simulator 的接口 */ - getNodeInstanceFromElement(target: Element | null): IPublicTypeNodeInstance<IPublicTypeComponentInstance, INode> | null { + getNodeInstanceFromElement( + target: Element | null, + ): IPublicTypeNodeInstance<IPublicTypeComponentInstance, INode> | null { if (!target) { return null; } @@ -1193,7 +1202,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp const operationalNodes = nodes?.filter((node) => { const onMoveHook = node.componentMeta?.advanced.callbacks?.onMoveHook; - const canMove = onMoveHook && typeof onMoveHook === 'function' ? onMoveHook(node.internalToShellNode()) : true; + const canMove = + onMoveHook && typeof onMoveHook === 'function' + ? onMoveHook(node.internalToShellNode()) + : true; let parentContainerNode: INode | null = null; let parentNode = node.parent; @@ -1207,9 +1219,13 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp parentNode = parentNode.parent; } - const onChildMoveHook = parentContainerNode?.componentMeta?.advanced.callbacks?.onChildMoveHook; + const onChildMoveHook = + parentContainerNode?.componentMeta?.advanced.callbacks?.onChildMoveHook; - const childrenCanMove = onChildMoveHook && parentContainerNode && typeof onChildMoveHook === 'function' ? onChildMoveHook(node.internalToShellNode(), parentContainerNode.internalToShellNode()) : true; + const childrenCanMove = + onChildMoveHook && parentContainerNode && typeof onChildMoveHook === 'function' + ? onChildMoveHook(node.internalToShellNode(), parentContainerNode.internalToShellNode()) + : true; return canMove && childrenCanMove; }); @@ -1227,9 +1243,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp const dropContainer = this.getDropContainer(e); const lockedNode = getClosestNode(dropContainer?.container, (node) => node.isLocked); if (lockedNode) return null; - if ( - !dropContainer - ) { + if (!dropContainer) { return null; } @@ -1296,8 +1310,9 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp const inst = instances ? instances.length > 1 ? instances.find( - (_inst) => this.getClosestNodeInstance(_inst, container.id)?.instance === containerInstance, - ) + (_inst) => + this.getClosestNodeInstance(_inst, container.id)?.instance === containerInstance, + ) : instances[0] : null; const rect = inst @@ -1514,10 +1529,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp /** * 查找邻近容器 */ - getNearByContainer( - { container, instance }: DropContainer, - drillDownExcludes: Set<INode>, - ) { + getNearByContainer({ container, instance }: DropContainer, drillDownExcludes: Set<INode>) { const { children } = container; if (!children || children.isEmpty()) { return null; diff --git a/packages/designer/src/builtin-simulator/live-editing/live-editing.ts b/packages/designer/src/builtin-simulator/live-editing/live-editing.ts index c8594d701b..14da59b048 100644 --- a/packages/designer/src/builtin-simulator/live-editing/live-editing.ts +++ b/packages/designer/src/builtin-simulator/live-editing/live-editing.ts @@ -1,5 +1,5 @@ -import { obx } from '@alilc/lowcode-editor-core'; -import { IPublicTypePluginConfig, IPublicTypeLiveTextEditingConfig } from '@alilc/lowcode-types'; +import { obx } from '@lce/lowcode-editor-core'; +import { IPublicTypePluginConfig, IPublicTypeLiveTextEditingConfig } from '@lce/lowcode-types'; import { INode, Prop } from '../../document'; const EDITOR_KEY = 'data-setter-prop'; @@ -59,7 +59,9 @@ export class LiveEditing { const editor = node.document?.designer.editor; const npm = node?.componentMeta?.npm; const selected = - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || + node?.componentMeta?.componentName || + ''; editor?.eventBus.emit('designer.builtinSimulator.liveEditing', { selected, }); @@ -70,10 +72,10 @@ export class LiveEditing { if (liveTextEditing) { if (propTarget) { // 已埋点命中 data-setter-prop="proptarget", 从 liveTextEditing 读取配置(mode|onSaveContent) - matched = liveTextEditing.find(config => config.propTarget == propTarget); + matched = liveTextEditing.find((config) => config.propTarget == propTarget); } else { // 执行 embedTextEditing selector 规则,获得第一个节点 是否 contains e.target,若匹配,读取配置 - matched = liveTextEditing.find(config => { + matched = liveTextEditing.find((config) => { if (!config.selector) { return false; } @@ -89,7 +91,8 @@ export class LiveEditing { }); if (matched) { propTarget = matched.propTarget; - setterPropElement = matched.propElement || queryPropElement(rootElement, targetElement, matched.selector); + setterPropElement = + matched.propElement || queryPropElement(rootElement, targetElement, matched.selector); } } @@ -117,9 +120,15 @@ export class LiveEditing { // 4. 监听 blur 事件 // 5. 设置编辑锁定:disable hover | disable select | disable canvas drag - const onSaveContent = matched?.onSaveContent || saveHandlers.find(item => item.condition(prop))?.onSaveContent || defaultSaveContent; + const onSaveContent = + matched?.onSaveContent || + saveHandlers.find((item) => item.condition(prop))?.onSaveContent || + defaultSaveContent; - setterPropElement.setAttribute('contenteditable', matched?.mode && matched.mode !== 'plaintext' ? 'true' : 'plaintext-only'); + setterPropElement.setAttribute( + 'contenteditable', + matched?.mode && matched.mode !== 'plaintext' ? 'true' : 'plaintext-only', + ); setterPropElement.classList.add('engine-live-editing'); // be sure setterPropElement.focus(); @@ -134,7 +143,7 @@ export class LiveEditing { switch (e.code) { case 'Enter': break; - // TODO: check is richtext? + // TODO: check is richtext? case 'Escape': break; case 'Tab': @@ -186,9 +195,11 @@ export class LiveEditing { } } -export type SpecificRule = (target: EditingTarget) => (IPublicTypeLiveTextEditingConfig & { - propElement?: HTMLElement; -}) | null; +export type SpecificRule = (target: EditingTarget) => + | (IPublicTypeLiveTextEditingConfig & { + propElement?: HTMLElement; + }) + | null; export interface SaveHandler { condition: (prop: Prop) => boolean; @@ -223,7 +234,9 @@ function queryPropElement(rootElement: HTMLElement, targetElement: HTMLElement, } if (!propElement.contains(targetElement)) { // try selectorAll - propElement = Array.from(rootElement.querySelectorAll(selector)).find(item => item.contains(targetElement)) as HTMLElement; + propElement = Array.from(rootElement.querySelectorAll(selector)).find((item) => + item.contains(targetElement), + ) as HTMLElement; if (!propElement) { return null; } diff --git a/packages/designer/src/builtin-simulator/node-selector/index.tsx b/packages/designer/src/builtin-simulator/node-selector/index.tsx index 0723115da2..b997450292 100644 --- a/packages/designer/src/builtin-simulator/node-selector/index.tsx +++ b/packages/designer/src/builtin-simulator/node-selector/index.tsx @@ -1,10 +1,10 @@ import { Overlay } from '@alifd/next'; import React, { MouseEvent } from 'react'; -import { Title, observer } from '@alilc/lowcode-editor-core'; -import { canClickNode } from '@alilc/lowcode-utils'; +import { Title, observer } from '@lce/lowcode-editor-core'; +import { canClickNode } from '@lce/lowcode-utils'; import './index.less'; -import { INode } from '@alilc/lowcode-designer'; +import { INode } from '@lce/lowcode-designer'; const { Popup } = Overlay; @@ -80,17 +80,21 @@ export default class InstanceNodeSelector extends React.Component<IProps, IState } }; - onMouseOver = (node: INode) => (_: any, flag = true) => { - if (node && typeof node.hover === 'function') { - node.hover(flag); - } - }; + onMouseOver = + (node: INode) => + (_: any, flag = true) => { + if (node && typeof node.hover === 'function') { + node.hover(flag); + } + }; - onMouseOut = (node: INode) => (_: any, flag = false) => { - if (node && typeof node.hover === 'function') { - node.hover(flag); - } - }; + onMouseOut = + (node: INode) => + (_: any, flag = false) => { + if (node && typeof node.hover === 'function') { + node.hover(flag); + } + }; renderNodes = () => { const nodes = this.state.parentNodes; diff --git a/packages/designer/src/builtin-simulator/renderer.ts b/packages/designer/src/builtin-simulator/renderer.ts index 15664757bc..99cac14895 100644 --- a/packages/designer/src/builtin-simulator/renderer.ts +++ b/packages/designer/src/builtin-simulator/renderer.ts @@ -1,7 +1,10 @@ import { Component } from '../simulator'; -import { IPublicTypeComponentInstance, IPublicTypeSimulatorRenderer } from '@alilc/lowcode-types'; +import { IPublicTypeComponentInstance, IPublicTypeSimulatorRenderer } from '@lce/lowcode-types'; -export type BuiltinSimulatorRenderer = IPublicTypeSimulatorRenderer<Component, IPublicTypeComponentInstance>; +export type BuiltinSimulatorRenderer = IPublicTypeSimulatorRenderer< + Component, + IPublicTypeComponentInstance +>; export function isSimulatorRenderer(obj: any): obj is BuiltinSimulatorRenderer { return obj && obj.isSimulatorRenderer; diff --git a/packages/designer/src/builtin-simulator/resource-consumer.ts b/packages/designer/src/builtin-simulator/resource-consumer.ts index cc195e516f..eb5475c99d 100644 --- a/packages/designer/src/builtin-simulator/resource-consumer.ts +++ b/packages/designer/src/builtin-simulator/resource-consumer.ts @@ -1,4 +1,10 @@ -import { autorun, makeObservable, obx, createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +import { + autorun, + makeObservable, + obx, + createModuleEventBus, + IEventBus, +} from '@lce/lowcode-editor-core'; import { BuiltinSimulatorHost } from './host'; import { BuiltinSimulatorRenderer, isSimulatorRenderer } from './renderer'; diff --git a/packages/designer/src/builtin-simulator/utils/clickable.ts b/packages/designer/src/builtin-simulator/utils/clickable.ts index 5413ad5c52..9cdf9940a5 100644 --- a/packages/designer/src/builtin-simulator/utils/clickable.ts +++ b/packages/designer/src/builtin-simulator/utils/clickable.ts @@ -1,4 +1,4 @@ -import { getClosestNode, canClickNode } from '@alilc/lowcode-utils'; +import { getClosestNode, canClickNode } from '@lce/lowcode-utils'; import { INode } from '../../document'; /** diff --git a/packages/designer/src/builtin-simulator/utils/parse-metadata.ts b/packages/designer/src/builtin-simulator/utils/parse-metadata.ts index 6969a47db5..3269c0d6e3 100644 --- a/packages/designer/src/builtin-simulator/utils/parse-metadata.ts +++ b/packages/designer/src/builtin-simulator/utils/parse-metadata.ts @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import { isValidElement } from 'react'; -import { isElement } from '@alilc/lowcode-utils'; -import { IPublicTypePropConfig } from '@alilc/lowcode-types'; +import { isElement } from '@lce/lowcode-utils'; +import { IPublicTypePropConfig } from '@lce/lowcode-types'; export const primitiveTypes = [ 'string', @@ -42,7 +42,10 @@ function makeRequired(propType: any, lowcodeType: string | object): LowcodeCheck } // eslint-disable-next-line @typescript-eslint/ban-types -function define(propType: any = PropTypes.any, lowcodeType: string | object = {}): LowcodeCheckType { +function define( + propType: any = PropTypes.any, + lowcodeType: string | object = {}, +): LowcodeCheckType { if (!propType._inner && propType.name !== 'lowcodeCheckType') { propType.lowcodeType = lowcodeType; } diff --git a/packages/designer/src/builtin-simulator/viewport.ts b/packages/designer/src/builtin-simulator/viewport.ts index b37cad7eec..b07708f258 100644 --- a/packages/designer/src/builtin-simulator/viewport.ts +++ b/packages/designer/src/builtin-simulator/viewport.ts @@ -1,4 +1,4 @@ -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; import { Point, ScrollTarget } from '../designer'; import { AutoFit, IViewport } from '../simulator'; diff --git a/packages/designer/src/component-actions.ts b/packages/designer/src/component-actions.ts index 57ad30bf25..79874a7214 100644 --- a/packages/designer/src/component-actions.ts +++ b/packages/designer/src/component-actions.ts @@ -1,19 +1,20 @@ -import { IPublicModelNode, IPublicTypeComponentAction, IPublicTypeMetadataTransducer } from '@alilc/lowcode-types'; -import { engineConfig } from '@alilc/lowcode-editor-core'; -import { intlNode } from './locale'; import { - IconLock, - IconUnlock, - IconRemove, - IconClone, - IconHidden, -} from './icons'; + IPublicModelNode, + IPublicTypeComponentAction, + IPublicTypeMetadataTransducer, +} from '@lce/lowcode-types'; +import { engineConfig } from '@lce/lowcode-editor-core'; +import { intlNode } from './locale'; +import { IconLock, IconUnlock, IconRemove, IconClone, IconHidden } from './icons'; import { componentDefaults, legacyIssues } from './transducers'; function deduplicateRef(node: IPublicModelNode | null | undefined) { const currentRef = node?.getPropValue('ref'); if (currentRef) { - node?.setPropValue('ref', `${node.componentName.toLowerCase()}-${Math.random().toString(36).slice(2, 9)}`); + node?.setPropValue( + 'ref', + `${node.componentName.toLowerCase()}-${Math.random().toString(36).slice(2, 9)}`, + ); } node?.children?.forEach(deduplicateRef); } @@ -67,7 +68,9 @@ export class ComponentActions { if (isRGL) { // 复制 layout 信息 const layout: any = rglNode?.getPropValue('layout') || []; - const curLayout = layout.filter((item: any) => item.i === node.getPropValue('fieldId')); + const curLayout = layout.filter( + (item: any) => item.i === node.getPropValue('fieldId'), + ); if (curLayout && curLayout[0]) { layout.push({ ...curLayout[0], @@ -75,7 +78,10 @@ export class ComponentActions { }); rglNode?.setPropValue('layout', layout); // 如果是磁贴块复制,则需要滚动到影响位置 - setTimeout(() => newNode?.document?.project?.simulatorHost?.scrollToNode(newNode), 10); + setTimeout( + () => newNode?.document?.project?.simulatorHost?.scrollToNode(newNode), + 10, + ); } } } @@ -95,7 +101,9 @@ export class ComponentActions { }, /* istanbul ignore next */ condition: (node: IPublicModelNode) => { - return engineConfig.get('enableCanvasLock', false) && node.isContainerNode && !node.isLocked; + return ( + engineConfig.get('enableCanvasLock', false) && node.isContainerNode && !node.isLocked + ); }, important: true, }, @@ -142,14 +150,12 @@ export class ComponentActions { } } - registerMetadataTransducer( - transducer: IPublicTypeMetadataTransducer, - level = 100, - id?: string, - ) { + registerMetadataTransducer(transducer: IPublicTypeMetadataTransducer, level = 100, id?: string) { transducer.level = level; transducer.id = id; - const i = this.metadataTransducers.findIndex((item) => item.level != null && item.level > level); + const i = this.metadataTransducers.findIndex( + (item) => item.level != null && item.level > level, + ); if (i < 0) { this.metadataTransducers.push(transducer); } else { @@ -160,4 +166,4 @@ export class ComponentActions { getRegisteredMetadataTransducers(): IPublicTypeMetadataTransducer[] { return this.metadataTransducers; } -} \ No newline at end of file +} diff --git a/packages/designer/src/component-meta.ts b/packages/designer/src/component-meta.ts index 1ee1154f18..0b991c56bf 100644 --- a/packages/designer/src/component-meta.ts +++ b/packages/designer/src/component-meta.ts @@ -13,16 +13,12 @@ import { IPublicTypeAdvanced, IPublicTypeDisposable, IPublicTypeLiveTextEditingConfig, -} from '@alilc/lowcode-types'; -import { deprecate, isRegExp, isTitleConfig, isNode } from '@alilc/lowcode-utils'; -import { computed, createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-types'; +import { deprecate, isRegExp, isTitleConfig, isNode } from '@lce/lowcode-utils'; +import { computed, createModuleEventBus, IEventBus } from '@lce/lowcode-editor-core'; import { Node, INode } from './document'; import { Designer } from './designer'; -import { - IconContainer, - IconPage, - IconComponent, -} from './icons'; +import { IconContainer, IconPage, IconComponent } from './icons'; export function ensureAList(list?: string | string[]): string[] | null { if (!list) { @@ -138,7 +134,7 @@ export class ComponentMeta implements IComponentMeta { private _isTopFixed?: boolean; get isTopFixed(): boolean { - return !!(this._isTopFixed); + return !!this._isTopFixed; } private parentWhitelist?: IPublicTypeNestingFilter | null; @@ -287,8 +283,8 @@ export class ComponentMeta implements IComponentMeta { } private transformMetadata( - metadta: IPublicTypeComponentMetadata, - ): IPublicTypeTransformedComponentMetadata { + metadta: IPublicTypeComponentMetadata, + ): IPublicTypeTransformedComponentMetadata { const registeredTransducers = this.designer.componentActions.getRegisteredMetadataTransducers(); const result = registeredTransducers.reduce((prevMetadata, current) => { return current(prevMetadata); @@ -351,7 +347,10 @@ export class ComponentMeta implements IComponentMeta { return true; } - checkNestingDown(my: INode, target: INode | IPublicTypeNodeSchema | IPublicTypeNodeSchema[]): boolean { + checkNestingDown( + my: INode, + target: INode | IPublicTypeNodeSchema | IPublicTypeNodeSchema[], + ): boolean { // 检查父子关系,直接约束型,在画布中拖拽直接掠过目标容器 if (this.childWhitelist) { const _target: any = !Array.isArray(target) ? [target] : target; @@ -372,14 +371,15 @@ export class ComponentMeta implements IComponentMeta { this.emitter.removeListener('metadata_change', fn); }; } - } export function isComponentMeta(obj: any): obj is ComponentMeta { return obj && obj.isComponentMeta; } -function preprocessMetadata(metadata: IPublicTypeComponentMetadata): IPublicTypeTransformedComponentMetadata { +function preprocessMetadata( + metadata: IPublicTypeComponentMetadata, +): IPublicTypeTransformedComponentMetadata { if (metadata.configure) { if (Array.isArray(metadata.configure)) { return { diff --git a/packages/designer/src/context-menu-actions.ts b/packages/designer/src/context-menu-actions.ts index c88e03ac65..75de9f57c2 100644 --- a/packages/designer/src/context-menu-actions.ts +++ b/packages/designer/src/context-menu-actions.ts @@ -1,8 +1,19 @@ -import { IPublicTypeContextMenuAction, IPublicEnumContextMenuType, IPublicTypeContextMenuItem, IPublicApiMaterial, IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { + IPublicTypeContextMenuAction, + IPublicEnumContextMenuType, + IPublicTypeContextMenuItem, + IPublicApiMaterial, + IPublicModelPluginContext, +} from '@lce/lowcode-types'; import { IDesigner, INode } from './designer'; -import { createContextMenu, parseContextMenuAsReactNode, parseContextMenuProperties, uniqueId } from '@alilc/lowcode-utils'; +import { + createContextMenu, + parseContextMenuAsReactNode, + parseContextMenuProperties, + uniqueId, +} from '@lce/lowcode-utils'; import { Menu } from '@alifd/next'; -import { engineConfig } from '@alilc/lowcode-editor-core'; +import { engineConfig } from '@lce/lowcode-editor-core'; import './context-menu-actions.scss'; export interface IContextMenuActions { @@ -34,16 +45,14 @@ export class GlobalContextMenuActions { return; } this.enableContextMenu = enable; - this.dispose.forEach(d => d()); + this.dispose.forEach((d) => d()); if (enable) { this.initEvent(); } }); } - handleContextMenu = ( - event: MouseEvent, - ) => { + handleContextMenu = (event: MouseEvent) => { event.stopPropagation(); event.preventDefault(); @@ -58,7 +67,9 @@ export class GlobalContextMenuActions { const destroy = () => { destroyFn?.(); }; - const pluginContext: IPublicModelPluginContext = contextMenu.designer.editor.get('pluginContext') as IPublicModelPluginContext; + const pluginContext: IPublicModelPluginContext = contextMenu.designer.editor.get( + 'pluginContext', + ) as IPublicModelPluginContext; const menus: IPublicTypeContextMenuItem[] = parseContextMenuProperties(actions, { nodes: [], @@ -125,7 +136,7 @@ export class ContextMenuActions implements IContextMenuActions { enableContextMenu: boolean; - id: string = uniqueId('contextMenu');; + id: string = uniqueId('contextMenu'); constructor(designer: IDesigner) { this.designer = designer; @@ -136,7 +147,7 @@ export class ContextMenuActions implements IContextMenuActions { return; } this.enableContextMenu = enable; - this.dispose.forEach(d => d()); + this.dispose.forEach((d) => d()); if (enable) { this.initEvent(); } @@ -145,10 +156,7 @@ export class ContextMenuActions implements IContextMenuActions { globalContextMenuActions.registerContextMenuActions(this); } - handleContextMenu = ( - nodes: INode[], - event: MouseEvent, - ) => { + handleContextMenu = (nodes: INode[], event: MouseEvent) => { const designer = this.designer; event.stopPropagation(); event.preventDefault(); @@ -164,10 +172,12 @@ export class ContextMenuActions implements IContextMenuActions { destroyFn?.(); }; - const pluginContext: IPublicModelPluginContext = this.designer.editor.get('pluginContext') as IPublicModelPluginContext; + const pluginContext: IPublicModelPluginContext = this.designer.editor.get( + 'pluginContext', + ) as IPublicModelPluginContext; const menus: IPublicTypeContextMenuItem[] = parseContextMenuProperties(actions, { - nodes: nodes.map(d => designer.shellModelFactory.createNode(d)!), + nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!), destroy, event, pluginContext, @@ -181,7 +191,7 @@ export class ContextMenuActions implements IContextMenuActions { const menuNode = parseContextMenuAsReactNode(layoutMenu, { destroy, - nodes: nodes.map(d => designer.shellModelFactory.createNode(d)!), + nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!), pluginContext, }); @@ -194,22 +204,19 @@ export class ContextMenuActions implements IContextMenuActions { initEvent() { const designer = this.designer; this.dispose.push( - designer.editor.eventBus.on('designer.builtinSimulator.contextmenu', ({ - node, - originalEvent, - }: { - node: INode; - originalEvent: MouseEvent; - }) => { - originalEvent.stopPropagation(); - originalEvent.preventDefault(); - // 如果右键的节点不在 当前选中的节点中,选中该节点 - if (!designer.currentSelection.has(node.id)) { - designer.currentSelection.select(node.id); - } - const nodes = designer.currentSelection.getNodes(); - this.handleContextMenu(nodes, originalEvent); - }), + designer.editor.eventBus.on( + 'designer.builtinSimulator.contextmenu', + ({ node, originalEvent }: { node: INode; originalEvent: MouseEvent }) => { + originalEvent.stopPropagation(); + originalEvent.preventDefault(); + // 如果右键的节点不在 当前选中的节点中,选中该节点 + if (!designer.currentSelection.has(node.id)) { + designer.currentSelection.select(node.id); + } + const nodes = designer.currentSelection.getNodes(); + this.handleContextMenu(nodes, originalEvent); + }, + ), ); } @@ -230,4 +237,4 @@ export class ContextMenuActions implements IContextMenuActions { adjustMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]) { adjustMenuLayoutFn = fn; } -} \ No newline at end of file +} diff --git a/packages/designer/src/designer/active-tracker.ts b/packages/designer/src/designer/active-tracker.ts index 74d865673f..717eefdc10 100644 --- a/packages/designer/src/designer/active-tracker.ts +++ b/packages/designer/src/designer/active-tracker.ts @@ -1,12 +1,9 @@ import { INode } from '../document/node/node'; -import { obx, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; -import { - IPublicTypeActiveTarget, - IPublicModelActiveTracker, -} from '@alilc/lowcode-types'; -import { isNode } from '@alilc/lowcode-utils'; - -export interface IActiveTracker extends Omit< IPublicModelActiveTracker, 'track' | 'onChange' > { +import { obx, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; +import { IPublicTypeActiveTarget, IPublicModelActiveTracker } from '@lce/lowcode-types'; +import { isNode } from '@lce/lowcode-utils'; + +export interface IActiveTracker extends Omit<IPublicModelActiveTracker, 'track' | 'onChange'> { _target: ActiveTarget | INode; track(originalTarget: ActiveTarget | INode): void; @@ -14,7 +11,7 @@ export interface IActiveTracker extends Omit< IPublicModelActiveTracker, 'track' onChange(fn: (target: ActiveTarget) => void): () => void; } -export interface ActiveTarget extends Omit< IPublicTypeActiveTarget, 'node' > { +export interface ActiveTarget extends Omit<IPublicTypeActiveTarget, 'node'> { node: INode; } diff --git a/packages/designer/src/designer/clipboard.ts b/packages/designer/src/designer/clipboard.ts index 34ce2b5b53..295ea2b6f2 100644 --- a/packages/designer/src/designer/clipboard.ts +++ b/packages/designer/src/designer/clipboard.ts @@ -1,4 +1,4 @@ -import { IPublicModelClipboard } from '@alilc/lowcode-types'; +import { IPublicModelClipboard } from '@lce/lowcode-types'; function getDataFromPasteEvent(event: ClipboardEvent) { const { clipboardData } = event; @@ -21,12 +21,11 @@ function getDataFromPasteEvent(event: ClipboardEvent) { } } catch (error) { // TODO: open the parser implement - return { }; + return {}; } } export interface IClipboard extends IPublicModelClipboard { - initCopyPaster(el: HTMLTextAreaElement): void; injectCopyPaster(document: Document): void; diff --git a/packages/designer/src/designer/designer.ts b/packages/designer/src/designer/designer.ts index 1dd4bc04e6..1bfcfd3ff4 100644 --- a/packages/designer/src/designer/designer.ts +++ b/packages/designer/src/designer/designer.ts @@ -1,5 +1,13 @@ import { ComponentType } from 'react'; -import { obx, computed, autorun, makeObservable, IReactionPublic, IReactionOptions, IReactionDisposer } from '@alilc/lowcode-editor-core'; +import { + obx, + computed, + autorun, + makeObservable, + IReactionPublic, + IReactionOptions, + IReactionDisposer, +} from '@lce/lowcode-editor-core'; import { IPublicTypeProjectSchema, IPublicTypeComponentMetadata, @@ -17,8 +25,16 @@ import { IPublicTypeLocationData, IPublicEnumTransformStage, IPublicModelLocateEvent, -} from '@alilc/lowcode-types'; -import { mergeAssets, IPublicTypeAssetsJson, isNodeSchema, isDragNodeObject, isDragNodeDataObject, isLocationChildrenDetail, Logger } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { + mergeAssets, + IPublicTypeAssetsJson, + isNodeSchema, + isDragNodeObject, + isDragNodeDataObject, + isLocationChildrenDetail, + Logger, +} from '@lce/lowcode-utils'; import { IProject, Project } from '../project'; import { Node, DocumentModel, insertChildren, INode, ISelection } from '../document'; import { ComponentMeta, IComponentMeta } from '../component-meta'; @@ -55,9 +71,9 @@ export interface DesignerProps { onDragstart?: (e: IPublicModelLocateEvent) => void; onDrag?: (e: IPublicModelLocateEvent) => void; onDragend?: ( - e: { dragObject: IPublicModelDragObject; copy: boolean }, - loc?: DropLocation, - ) => void; + e: { dragObject: IPublicModelDragObject; copy: boolean }, + loc?: DropLocation, + ) => void; } export interface IDesigner { @@ -113,11 +129,18 @@ export interface IDesigner { postEvent(event: string, ...args: any[]): void; - transformProps(props: IPublicTypeCompositeObject | IPublicTypePropsList, node: Node, stage: IPublicEnumTransformStage): IPublicTypeCompositeObject | IPublicTypePropsList; + transformProps( + props: IPublicTypeCompositeObject | IPublicTypePropsList, + node: Node, + stage: IPublicEnumTransformStage, + ): IPublicTypeCompositeObject | IPublicTypePropsList; createSettingEntry(nodes: INode[]): ISettingTopEntry; - autorun(effect: (reaction: IReactionPublic) => void, options?: IReactionOptions<any, any>): IReactionDisposer; + autorun( + effect: (reaction: IReactionPublic) => void, + options?: IReactionOptions<any, any>, + ): IReactionDisposer; } export class Designer implements IDesigner { @@ -313,7 +336,11 @@ export class Designer implements IDesigner { */ createLocation(locationData: IPublicTypeLocationData<INode>): DropLocation { const loc = new DropLocation(locationData); - if (this._dropLocation && this._dropLocation.document && this._dropLocation.document !== loc.document) { + if ( + this._dropLocation && + this._dropLocation.document && + this._dropLocation.document !== loc.document + ) { this._dropLocation.document.dropLocation = null; } this._dropLocation = loc; @@ -612,7 +639,11 @@ export class Designer implements IDesigner { return maps; } - transformProps(props: IPublicTypeCompositeObject | IPublicTypePropsList, node: Node, stage: IPublicEnumTransformStage) { + transformProps( + props: IPublicTypeCompositeObject | IPublicTypePropsList, + node: Node, + stage: IPublicEnumTransformStage, + ) { if (Array.isArray(props)) { // current not support, make this future return props; @@ -647,7 +678,10 @@ export class Designer implements IDesigner { } } - autorun(effect: (reaction: IReactionPublic) => void, options?: IReactionOptions<any, any>): IReactionDisposer { + autorun( + effect: (reaction: IReactionPublic) => void, + options?: IReactionOptions<any, any>, + ): IReactionDisposer { return autorun(effect, options); } diff --git a/packages/designer/src/designer/detecting.ts b/packages/designer/src/designer/detecting.ts index a5d898d6e0..a26ccb7606 100644 --- a/packages/designer/src/designer/detecting.ts +++ b/packages/designer/src/designer/detecting.ts @@ -1,14 +1,11 @@ -import { makeObservable, obx, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; -import { IPublicModelDetecting } from '@alilc/lowcode-types'; +import { makeObservable, obx, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; +import { IPublicModelDetecting } from '@lce/lowcode-types'; import type { IDocumentModel } from '../document/document-model'; import type { INode } from '../document/node/node'; const DETECTING_CHANGE_EVENT = 'detectingChange'; -export interface IDetecting extends Omit<IPublicModelDetecting<INode>, - 'capture' | - 'release' | - 'leave' -> { +export interface IDetecting + extends Omit<IPublicModelDetecting<INode>, 'capture' | 'release' | 'leave'> { capture(node: INode | null): void; release(node: INode | null): void; diff --git a/packages/designer/src/designer/drag-ghost/index.tsx b/packages/designer/src/designer/drag-ghost/index.tsx index 50fca2f28e..faf9cc3ccb 100644 --- a/packages/designer/src/designer/drag-ghost/index.tsx +++ b/packages/designer/src/designer/drag-ghost/index.tsx @@ -1,10 +1,14 @@ import { Component, ReactElement } from 'react'; -import { observer, obx, Title, makeObservable } from '@alilc/lowcode-editor-core'; +import { observer, obx, Title, makeObservable } from '@lce/lowcode-editor-core'; import { Designer } from '../designer'; import { isDragNodeObject } from '../dragon'; import { isSimulatorHost } from '../../simulator'; import './ghost.less'; -import { IPublicTypeI18nData, IPublicTypeNodeSchema, IPublicModelDragObject } from '@alilc/lowcode-types'; +import { + IPublicTypeI18nData, + IPublicTypeNodeSchema, + IPublicModelDragObject, +} from '@lce/lowcode-types'; type offBinding = () => any; @@ -26,7 +30,7 @@ export default class DragGhost extends Component<{ designer: Designer }> { super(props); makeObservable(this); this.dispose = [ - this.dragon.onDragstart(e => { + this.dragon.onDragstart((e) => { if (e.originalEvent.type.slice(0, 4) === 'drag') { return; } @@ -34,7 +38,7 @@ export default class DragGhost extends Component<{ designer: Designer }> { this.x = e.globalX; this.y = e.globalY; }), - this.dragon.onDrag(e => { + this.dragon.onDrag((e) => { this.x = e.globalX; this.y = e.globalY; if (isSimulatorHost(e.sensor)) { @@ -61,12 +65,15 @@ export default class DragGhost extends Component<{ designer: Designer }> { const dataList = Array.isArray(dragObject.data) ? dragObject.data : [dragObject.data]; - return dataList.map((item: IPublicTypeNodeSchema, i) => (this.props.designer.getComponentMeta(item.componentName).title)); + return dataList.map( + (item: IPublicTypeNodeSchema, i) => + this.props.designer.getComponentMeta(item.componentName).title, + ); } componentWillUnmount() { if (this.dispose) { - this.dispose.forEach(off => off()); + this.dispose.forEach((off) => off()); } } diff --git a/packages/designer/src/designer/dragon.ts b/packages/designer/src/designer/dragon.ts index 8dcce2b4a2..362a8f6f65 100644 --- a/packages/designer/src/designer/dragon.ts +++ b/packages/designer/src/designer/dragon.ts @@ -1,4 +1,4 @@ -import { obx, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { obx, makeObservable, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; import { IPublicTypeDragNodeObject, IPublicTypeDragAnyObject, @@ -9,8 +9,8 @@ import { IPublicModelDragon, IPublicModelLocateEvent, IPublicModelSensor, -} from '@alilc/lowcode-types'; -import { setNativeSelection, cursor } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { setNativeSelection, cursor } from '@lce/lowcode-utils'; import { INode, Node } from '../document'; import { ISimulatorHost, isSimulatorHost } from '../simulator'; import { IDesigner } from './designer'; @@ -26,24 +26,28 @@ export interface ILocateEvent extends IPublicModelLocateEvent { } /** - * @deprecated use same function in @alilc/lowcode-utils + * @deprecated use same function in @lce/lowcode-utils */ export function isDragNodeObject(obj: any): obj is IPublicTypeDragNodeObject { return obj && obj.type === IPublicEnumDragObjectType.Node; } /** - * @deprecated use same function in @alilc/lowcode-utils + * @deprecated use same function in @lce/lowcode-utils */ export function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataObject { return obj && obj.type === IPublicEnumDragObjectType.NodeData; } /** - * @deprecated use same function in @alilc/lowcode-utils + * @deprecated use same function in @lce/lowcode-utils */ export function isDragAnyObject(obj: any): obj is IPublicTypeDragAnyObject { - return obj && obj.type !== IPublicEnumDragObjectType.NodeData && obj.type !== IPublicEnumDragObjectType.Node; + return ( + obj && + obj.type !== IPublicEnumDragObjectType.NodeData && + obj.type !== IPublicEnumDragObjectType.Node + ); } export function isLocateEvent(e: any): e is ILocateEvent { @@ -95,10 +99,7 @@ function isDragEvent(e: any): e is DragEvent { return e?.type?.startsWith('drag'); } -export interface IDragon extends IPublicModelDragon< - INode, - ILocateEvent -> { +export interface IDragon extends IPublicModelDragon<INode, ILocateEvent> { emitter: IEventBus; } @@ -170,13 +171,20 @@ export class Dragon implements IDragon { * @param dragObject 拖拽对象 * @param boostEvent 拖拽初始时事件 */ - boost(dragObject: IPublicModelDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: INode | IPublicModelNode) { + boost( + dragObject: IPublicModelDragObject, + boostEvent: MouseEvent | DragEvent, + fromRglNode?: INode | IPublicModelNode, + ) { const { designer } = this; const masterSensors = this.getMasterSensors(); const handleEvents = makeEventsHandler(boostEvent, masterSensors); const newBie = !isDragNodeObject(dragObject); const forceCopyState = - isDragNodeObject(dragObject) && dragObject.nodes.some((node: Node | IPublicModelNode) => (typeof node.isSlot === 'function' ? node.isSlot() : node.isSlot)); + isDragNodeObject(dragObject) && + dragObject.nodes.some((node: Node | IPublicModelNode) => + typeof node.isSlot === 'function' ? node.isSlot() : node.isSlot, + ); const isBoostFromDragAPI = isDragEvent(boostEvent); let lastSensor: IPublicModelSensor | undefined; @@ -433,7 +441,7 @@ export class Dragon implements IDragon { if (!sourceDocument || sourceDocument === document) { evt.globalX = e.clientX; evt.globalY = e.clientY; - } else /* istanbul ignore next */ { + } /* istanbul ignore next */ else { // event from simulator sandbox let srcSim: ISimulatorHost | undefined; const lastSim = lastSensor && isSimulatorHost(lastSensor) ? lastSensor : null; @@ -467,7 +475,9 @@ export class Dragon implements IDragon { /* istanbul ignore next */ const chooseSensor = (e: ILocateEvent) => { // this.sensors will change on dragstart - const sensors: IPublicModelSensor[] = this.sensors.concat(masterSensors as IPublicModelSensor[]); + const sensors: IPublicModelSensor[] = this.sensors.concat( + masterSensors as IPublicModelSensor[], + ); let sensor = e.sensor && e.sensor.isEnter(e) ? e.sensor diff --git a/packages/designer/src/designer/location.ts b/packages/designer/src/designer/location.ts index 3b9b080cd6..0dc1a52311 100644 --- a/packages/designer/src/designer/location.ts +++ b/packages/designer/src/designer/location.ts @@ -7,7 +7,7 @@ import { IPublicTypeLocationDetail, IPublicTypeLocationData, IPublicModelLocateEvent, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; export interface Point { clientX: number; @@ -24,14 +24,14 @@ export type Rects = DOMRect[] & { }; /** - * @deprecated use same function in @alilc/lowcode-utils + * @deprecated use same function in @lce/lowcode-utils */ export function isLocationData(obj: any): boolean { return obj && obj.target && obj.detail; } /** - * @deprecated use same function in @alilc/lowcode-utils + * @deprecated use same function in @lce/lowcode-utils */ export function isLocationChildrenDetail(obj: any): boolean { return obj && obj.type === IPublicTypeLocationDetailType.Children; @@ -60,7 +60,10 @@ export function isChildInline(child: Element | Text, win?: Window) { return true; } const style = (win || getWindow(child)).getComputedStyle(child); - return /^inline/.test(style.getPropertyValue('display')) || /^(left|right)$/.test(style.getPropertyValue('float')); + return ( + /^inline/.test(style.getPropertyValue('display')) || + /^(left|right)$/.test(style.getPropertyValue('float')) + ); } export function getRectTarget(rect: IPublicTypeRect | null) { @@ -99,7 +102,6 @@ export function getWindow(elem: Element | Document): Window { return (isDocument(elem) ? elem : elem.ownerDocument!).defaultView!; } export interface IDropLocation extends Omit<IPublicModelDropLocation, 'target' | 'clone'> { - readonly source: string; get target(): INode; diff --git a/packages/designer/src/designer/offset-observer.ts b/packages/designer/src/designer/offset-observer.ts index 2cf5bfee26..7596c13737 100644 --- a/packages/designer/src/designer/offset-observer.ts +++ b/packages/designer/src/designer/offset-observer.ts @@ -1,6 +1,6 @@ import requestIdleCallback, { cancelIdleCallback } from 'ric-shim'; -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; -import { uniqueId } from '@alilc/lowcode-utils'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; +import { uniqueId } from '@lce/lowcode-utils'; import { INodeSelector, IViewport } from '../simulator'; import { INode } from '../document'; diff --git a/packages/designer/src/designer/scroller.ts b/packages/designer/src/designer/scroller.ts index 7391c39fab..51569121a6 100644 --- a/packages/designer/src/designer/scroller.ts +++ b/packages/designer/src/designer/scroller.ts @@ -1,8 +1,11 @@ -import { isElement } from '@alilc/lowcode-utils'; -import { IPublicModelScrollTarget, IPublicTypeScrollable, IPublicModelScroller } from '@alilc/lowcode-types'; +import { isElement } from '@lce/lowcode-utils'; +import { + IPublicModelScrollTarget, + IPublicTypeScrollable, + IPublicModelScroller, +} from '@lce/lowcode-types'; -export interface IScrollTarget extends IPublicModelScrollTarget { -} +export interface IScrollTarget extends IPublicModelScrollTarget {} export class ScrollTarget implements IScrollTarget { get left() { @@ -48,9 +51,7 @@ function easing(n: number) { const SCROLL_ACCURACY = 30; -export interface IScroller extends IPublicModelScroller { - -} +export interface IScroller extends IPublicModelScroller {} export class Scroller implements IScroller { private pid: number | undefined; scrollable: IPublicTypeScrollable; diff --git a/packages/designer/src/designer/setting/setting-entry-type.ts b/packages/designer/src/designer/setting/setting-entry-type.ts index 1aee9016e5..02174ff9be 100644 --- a/packages/designer/src/designer/setting/setting-entry-type.ts +++ b/packages/designer/src/designer/setting/setting-entry-type.ts @@ -1,4 +1,4 @@ -import { IPublicApiSetters, IPublicModelEditor } from '@alilc/lowcode-types'; +import { IPublicApiSetters, IPublicModelEditor } from '@lce/lowcode-types'; import { IDesigner } from '../designer'; import { INode } from '../../document'; import { ISettingField } from './setting-field'; diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index 1a63fb7a40..f4ef6f14f8 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -9,18 +9,19 @@ import { IPublicTypeDisposable, IPublicModelSettingField, IBaseModelSettingField, -} from '@alilc/lowcode-types'; -import type { - IPublicTypeSetValueOptions, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; +import type { IPublicTypeSetValueOptions } from '@lce/lowcode-types'; import { Transducer } from './utils'; import { ISettingPropEntry, SettingPropEntry } from './setting-prop-entry'; -import { computed, obx, makeObservable, action, untracked, intl } from '@alilc/lowcode-editor-core'; -import { cloneDeep, isCustomView, isDynamicSetter, isJSExpression } from '@alilc/lowcode-utils'; +import { computed, obx, makeObservable, action, untracked, intl } from '@lce/lowcode-editor-core'; +import { cloneDeep, isCustomView, isDynamicSetter, isJSExpression } from '@lce/lowcode-utils'; import { ISettingTopEntry } from './setting-top-entry'; -import { IComponentMeta, INode } from '@alilc/lowcode-designer'; +import { IComponentMeta, INode } from '@lce/lowcode-designer'; -function getSettingFieldCollectorKey(parent: ISettingTopEntry | ISettingField, config: IPublicTypeFieldConfig) { +function getSettingFieldCollectorKey( + parent: ISettingTopEntry | ISettingField, + config: IPublicTypeFieldConfig, +) { let cur = parent; const path = [config.name]; while (cur !== parent.top) { @@ -32,12 +33,12 @@ function getSettingFieldCollectorKey(parent: ISettingTopEntry | ISettingField, c return path.join('.'); } -export interface ISettingField extends ISettingPropEntry, Omit<IBaseModelSettingField< - ISettingTopEntry, - ISettingField, - IComponentMeta, - INode ->, 'setValue' | 'key' | 'node'> { +export interface ISettingField + extends ISettingPropEntry, + Omit< + IBaseModelSettingField<ISettingTopEntry, ISettingField, IComponentMeta, INode>, + 'setValue' | 'key' | 'node' + > { readonly isSettingField: true; readonly isRequired: boolean; @@ -316,7 +317,7 @@ export class SettingField extends SettingPropEntry implements ISettingField { } /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utilsinstead */ export function isSettingField(obj: any): obj is ISettingField { return obj && obj.isSettingField; diff --git a/packages/designer/src/designer/setting/setting-prop-entry.ts b/packages/designer/src/designer/setting/setting-prop-entry.ts index d6904f0c82..76b34ecb8e 100644 --- a/packages/designer/src/designer/setting/setting-prop-entry.ts +++ b/packages/designer/src/designer/setting/setting-prop-entry.ts @@ -1,6 +1,20 @@ -import { obx, computed, makeObservable, runInAction, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; -import { GlobalEvent, IPublicApiSetters, IPublicModelEditor, IPublicModelSettingField, IPublicTypeFieldExtraProps, IPublicTypeSetValueOptions } from '@alilc/lowcode-types'; -import { uniqueId, isJSExpression } from '@alilc/lowcode-utils'; +import { + obx, + computed, + makeObservable, + runInAction, + IEventBus, + createModuleEventBus, +} from '@lce/lowcode-editor-core'; +import { + GlobalEvent, + IPublicApiSetters, + IPublicModelEditor, + IPublicModelSettingField, + IPublicTypeFieldExtraProps, + IPublicTypeSetValueOptions, +} from '@lce/lowcode-types'; +import { uniqueId, isJSExpression } from '@lce/lowcode-utils'; import { ISettingEntry } from './setting-entry-type'; import { INode } from '../../document'; import type { IComponentMeta } from '../../component-meta'; @@ -33,7 +47,12 @@ export interface ISettingPropEntry extends ISettingEntry { remove(): void; - setValue(val: any, isHotValue?: boolean, force?: boolean, extraOptions?: IPublicTypeSetValueOptions): void; + setValue( + val: any, + isHotValue?: boolean, + force?: boolean, + extraOptions?: IPublicTypeSetValueOptions, + ): void; internalToShellField(): IPublicModelSettingField; } @@ -83,7 +102,11 @@ export class SettingPropEntry implements ISettingPropEntry { extraProps: IPublicTypeFieldExtraProps = {}; - constructor(readonly parent: ISettingTopEntry | ISettingField, name: string | number | undefined, type?: 'field' | 'group') { + constructor( + readonly parent: ISettingTopEntry | ISettingField, + name: string | number | undefined, + type?: 'field' | 'group', + ) { makeObservable(this); if (type == null) { const c = typeof name === 'string' ? name.slice(0, 1) : ''; @@ -206,7 +229,12 @@ export class SettingPropEntry implements ISettingPropEntry { /** * 设置当前属性值 */ - setValue(val: any, isHotValue?: boolean, force?: boolean, extraOptions?: IPublicTypeSetValueOptions) { + setValue( + val: any, + isHotValue?: boolean, + force?: boolean, + extraOptions?: IPublicTypeSetValueOptions, + ) { const oldValue = this.getValue(); if (this.type === 'field') { this.name?.toString() && this.parent.setPropValue(this.name, val); diff --git a/packages/designer/src/designer/setting/setting-top-entry.ts b/packages/designer/src/designer/setting/setting-top-entry.ts index 85be74b7f6..e818cf8906 100644 --- a/packages/designer/src/designer/setting/setting-top-entry.ts +++ b/packages/designer/src/designer/setting/setting-top-entry.ts @@ -1,6 +1,11 @@ -import { IPublicTypeCustomView, IPublicModelEditor, IPublicModelSettingTopEntry, IPublicApiSetters } from '@alilc/lowcode-types'; -import { isCustomView } from '@alilc/lowcode-utils'; -import { computed, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { + IPublicTypeCustomView, + IPublicModelEditor, + IPublicModelSettingTopEntry, + IPublicApiSetters, +} from '@lce/lowcode-types'; +import { isCustomView } from '@lce/lowcode-utils'; +import { computed, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; import { ISettingEntry } from './setting-entry-type'; import { ISettingField, SettingField } from './setting-field'; import { INode } from '../../document'; @@ -14,10 +19,9 @@ function generateSessionId(nodes: INode[]) { .join(','); } -export interface ISettingTopEntry extends ISettingEntry, IPublicModelSettingTopEntry< - INode, - ISettingField -> { +export interface ISettingTopEntry + extends ISettingEntry, + IPublicModelSettingTopEntry<INode, ISettingField> { readonly top: ISettingTopEntry; readonly parent: ISettingTopEntry; @@ -177,7 +181,7 @@ export class SettingTopEntry implements ISettingTopEntry { */ get(propName: string | number): ISettingField | null { if (!propName) return null; - return this._settingFieldMap[propName] || (new SettingField(this, { name: propName })); + return this._settingFieldMap[propName] || new SettingField(this, { name: propName }); } /** @@ -244,7 +248,7 @@ export class SettingTopEntry implements ISettingTopEntry { this.disposeItems(); this._settingFieldMap = {}; this.emitter.removeAllListeners(); - this.disposeFunctions.forEach(f => f()); + this.disposeFunctions.forEach((f) => f()); this.disposeFunctions = []; } @@ -253,21 +257,15 @@ export class SettingTopEntry implements ISettingTopEntry { } // ==== copy some Node api ===== - getStatus() { + getStatus() {} - } - - setStatus() { - - } + setStatus() {} getChildren() { // this.nodes.map() } - getDOMNode() { - - } + getDOMNode() {} getId() { return this.id; diff --git a/packages/designer/src/designer/setting/utils.ts b/packages/designer/src/designer/setting/utils.ts index 75ed1dfc1a..620557ff3b 100644 --- a/packages/designer/src/designer/setting/utils.ts +++ b/packages/designer/src/designer/setting/utils.ts @@ -1,11 +1,11 @@ // all this file for polyfill vision logic import { isValidElement } from 'react'; -import { IPublicTypeFieldConfig, IPublicTypeSetterConfig } from '@alilc/lowcode-types'; -import { isSetterConfig, isDynamicSetter } from '@alilc/lowcode-utils'; +import { IPublicTypeFieldConfig, IPublicTypeSetterConfig } from '@lce/lowcode-types'; +import { isSetterConfig, isDynamicSetter } from '@lce/lowcode-utils'; import { ISettingField } from './setting-field'; function getHotterFromSetter(setter) { - return setter && (setter.Hotter || (setter.type && setter.type.Hotter)) || []; // eslint-disable-line + return (setter && (setter.Hotter || (setter.type && setter.type.Hotter))) || []; // eslint-disable-line } function getTransducerFromSetter(setter) { @@ -25,8 +25,8 @@ function combineTransducer(transducer, arr, context) { } return { - toHot: (transducer && transducer.toHot || (x => x)).bind(context), // eslint-disable-line - toNative: (transducer && transducer.toNative || (x => x)).bind(context), // eslint-disable-line + toHot: ((transducer && transducer.toHot) || ((x) => x)).bind(context), // eslint-disable-line + toNative: ((transducer && transducer.toNative) || ((x) => x)).bind(context), // eslint-disable-line }; } @@ -71,10 +71,16 @@ export class Transducer { if (isDynamicSetter(setter) && isDynamic) { try { setter = setter.call(context.internalToShellField(), context.internalToShellField()); - } catch (e) { console.error(e); } + } catch (e) { + console.error(e); + } } - this.setterTransducer = combineTransducer(getTransducerFromSetter(setter), getHotterFromSetter(setter), context); + this.setterTransducer = combineTransducer( + getTransducerFromSetter(setter), + getHotterFromSetter(setter), + context, + ); this.context = context; } diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index edca8fd818..731cf41f99 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -7,7 +7,7 @@ import { wrapWithEventSwitch, createModuleEventBus, IEventBus, -} from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-editor-core'; import { IPublicTypeNodeData, IPublicTypeNodeSchema, @@ -19,13 +19,9 @@ import { IPublicEnumTransformStage, IPublicTypeOnChangeOptions, IPublicTypeDisposable, -} from '@alilc/lowcode-types'; -import type { - IPublicTypeRootSchema, -} from '@alilc/lowcode-types'; -import type { - IDropLocation, -} from '@alilc/lowcode-designer'; +} from '@lce/lowcode-types'; +import type { IPublicTypeRootSchema } from '@lce/lowcode-types'; +import type { IDropLocation } from '@lce/lowcode-designer'; import { uniqueId, isPlainObject, @@ -36,7 +32,7 @@ import { isDragNodeObject, isDragNodeDataObject, isNode, -} from '@alilc/lowcode-utils'; +} from '@lce/lowcode-utils'; import { IProject } from '../project'; import { ISimulatorHost } from '../simulator'; import type { IComponentMeta } from '../component-meta'; @@ -50,37 +46,38 @@ import { EDITOR_EVENT } from '../types'; export type GetDataType<T, NodeType> = T extends undefined ? NodeType extends { - schema: infer R; - } - ? R - : any + schema: infer R; + } + ? R + : any : T; -export interface IDocumentModel extends Omit<IPublicModelDocumentModel< - ISelection, - IHistory, - INode, - IDropLocation, - IModalNodesManager, - IProject ->, - 'detecting' | - 'checkNesting' | - 'getNodeById' | - // 以下属性在内部的 document 中不存在 - 'exportSchema' | - 'importSchema' | - 'onAddNode' | - 'onRemoveNode' | - 'onChangeDetecting' | - 'onChangeSelection' | - 'onChangeNodeProp' | - 'onImportSchema' | - 'isDetectingNode' | - 'onFocusNodeChanged' | - 'onDropLocationChanged' -> { - +export interface IDocumentModel + extends Omit< + IPublicModelDocumentModel< + ISelection, + IHistory, + INode, + IDropLocation, + IModalNodesManager, + IProject + >, + | 'detecting' + | 'checkNesting' + | 'getNodeById' + // 以下属性在内部的 document 中不存在 + | 'exportSchema' + | 'importSchema' + | 'onAddNode' + | 'onRemoveNode' + | 'onChangeDetecting' + | 'onChangeSelection' + | 'onChangeNodeProp' + | 'onImportSchema' + | 'isDetectingNode' + | 'onFocusNodeChanged' + | 'onDropLocationChanged' + > { readonly designer: IDesigner; selection: ISelection; @@ -115,7 +112,11 @@ export interface IDocumentModel extends Omit<IPublicModelDocumentModel< checkNesting( dropTarget: INode, - dragObject: IPublicTypeDragNodeObject | IPublicTypeNodeSchema | INode | IPublicTypeDragNodeDataObject, + dragObject: + | IPublicTypeDragNodeObject + | IPublicTypeNodeSchema + | INode + | IPublicTypeDragNodeDataObject, ): boolean; getNodeCount(): number; @@ -138,7 +139,12 @@ export interface IDocumentModel extends Omit<IPublicModelDocumentModel< getComponentMeta(componentName: string): IComponentMeta; - insertNodes(parent: INode, thing: INode[] | IPublicTypeNodeData[], at?: number | null, copy?: boolean): INode[]; + insertNodes( + parent: INode, + thing: INode[] | IPublicTypeNodeData[], + at?: number | null, + copy?: boolean, + ): INode[]; open(): IDocumentModel; @@ -253,10 +259,10 @@ export class DocumentModel implements IDocumentModel { set dropLocation(loc: IDropLocation | null) { this._dropLocation = loc; // pub event - this.designer.editor.eventBus.emit( - 'document.dropLocation.changed', - { document: this, location: loc }, - ); + this.designer.editor.eventBus.emit('document.dropLocation.changed', { + document: this, + location: loc, + }); } /** @@ -356,7 +362,9 @@ export class DocumentModel implements IDocumentModel { }; } - onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions<INode>) => void): IPublicTypeDisposable { + onChangeNodeChildren( + fn: (info: IPublicTypeOnChangeOptions<INode>) => void, + ): IPublicTypeDisposable { this.designer.editor?.eventBus.on(EDITOR_EVENT.NODE_CHILDREN_CHANGE, fn); return () => { @@ -475,14 +483,24 @@ export class DocumentModel implements IDocumentModel { /** * 插入一个节点 */ - insertNode(parent: INode, thing: INode | IPublicTypeNodeData, at?: number | null, copy?: boolean): INode | null { + insertNode( + parent: INode, + thing: INode | IPublicTypeNodeData, + at?: number | null, + copy?: boolean, + ): INode | null { return insertChild(parent, thing, at, copy); } /** * 插入多个节点 */ - insertNodes(parent: INode, thing: INode[] | IPublicTypeNodeData[], at?: number | null, copy?: boolean) { + insertNodes( + parent: INode, + thing: INode[] | IPublicTypeNodeData[], + at?: number | null, + copy?: boolean, + ) { return insertChildren(parent, thing, at, copy); } @@ -547,7 +565,7 @@ export class DocumentModel implements IDocumentModel { const drillDownNodeId = this._drillDownNode?.id; runWithGlobalEventOff(() => { // TODO: 暂时用饱和式删除,原因是 Slot 节点并不是树节点,无法正常递归删除 - this.nodes.forEach(node => { + this.nodes.forEach((node) => { if (node.isRoot()) return; this.internalRemoveAndPurgeNode(node, true); }); @@ -560,14 +578,20 @@ export class DocumentModel implements IDocumentModel { }); } - export(stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Serilize): IPublicTypeRootSchema | undefined { + export( + stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Serilize, + ): IPublicTypeRootSchema | undefined { stage = compatStage(stage); // 置顶只作用于 Page 的第一级子节点,目前还用不到里层的置顶;如果后面有需要可以考虑将这段写到 node-children 中的 export const currentSchema = this.rootNode?.export<IPublicTypeRootSchema>(stage); - if (Array.isArray(currentSchema?.children) && currentSchema?.children?.length && currentSchema?.children?.length > 0) { + if ( + Array.isArray(currentSchema?.children) && + currentSchema?.children?.length && + currentSchema?.children?.length > 0 + ) { const FixedTopNodeIndex = currentSchema?.children - .filter(i => isPlainObject(i)) - .findIndex((i => (i as IPublicTypeNodeSchema).props?.__isTopFixed__)); + .filter((i) => isPlainObject(i)) + .findIndex((i) => (i as IPublicTypeNodeSchema).props?.__isTopFixed__); if (FixedTopNodeIndex > 0) { const FixedTopNode = currentSchema?.children.splice(FixedTopNodeIndex, 1); currentSchema?.children.unshift(FixedTopNode[0]); @@ -672,7 +696,11 @@ export class DocumentModel implements IDocumentModel { checkNesting( dropTarget: INode, - dragObject: IPublicTypeDragNodeObject | IPublicTypeNodeSchema | INode | IPublicTypeDragNodeDataObject, + dragObject: + | IPublicTypeDragNodeObject + | IPublicTypeNodeSchema + | INode + | IPublicTypeDragNodeDataObject, ): boolean { let items: Array<INode | IPublicTypeNodeSchema>; if (isDragNodeDataObject(dragObject)) { @@ -685,7 +713,9 @@ export class DocumentModel implements IDocumentModel { console.warn('the dragObject is not in the correct type, dragObject:', dragObject); return true; } - return items.every((item) => this.checkNestingDown(dropTarget, item) && this.checkNestingUp(dropTarget, item)); + return items.every( + (item) => this.checkNestingDown(dropTarget, item) && this.checkNestingUp(dropTarget, item), + ); } /** @@ -693,7 +723,10 @@ export class DocumentModel implements IDocumentModel { * Will be deleted in version 2.0.0. * Use checkNesting method instead. */ - checkDropTarget(dropTarget: INode, dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject): boolean { + checkDropTarget( + dropTarget: INode, + dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject, + ): boolean { let items: Array<INode | IPublicTypeNodeSchema>; if (isDragNodeDataObject(dragObject)) { items = Array.isArray(dragObject.data) ? dragObject.data : [dragObject.data]; @@ -760,7 +793,7 @@ export class DocumentModel implements IDocumentModel { /** * @deprecated - */ + */ /* istanbul ignore next */ exportAddonData() { const addons: { @@ -796,10 +829,7 @@ export class DocumentModel implements IDocumentModel { } /* istanbul ignore next */ - acceptRootNodeVisitor( - visitorName = 'default', - visitorFn: (node: IRootNode) => any, - ) { + acceptRootNodeVisitor(visitorName = 'default', visitorFn: (node: IRootNode) => any) { let visitorResult = {}; if (!visitorName) { /* eslint-disable-next-line no-console */ diff --git a/packages/designer/src/document/document-view.tsx b/packages/designer/src/document/document-view.tsx index c6dbe76a81..3752218633 100644 --- a/packages/designer/src/document/document-view.tsx +++ b/packages/designer/src/document/document-view.tsx @@ -1,6 +1,6 @@ import { Component } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { DocumentModel, IDocumentModel } from './document-model'; import { BuiltinSimulatorHostView } from '../builtin-simulator'; diff --git a/packages/designer/src/document/history.ts b/packages/designer/src/document/history.ts index ca288c03a8..7154762a81 100644 --- a/packages/designer/src/document/history.ts +++ b/packages/designer/src/document/history.ts @@ -1,6 +1,10 @@ -import { reaction, untracked, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; -import { IPublicTypeNodeSchema, IPublicModelHistory, IPublicTypeDisposable } from '@alilc/lowcode-types'; -import { Logger } from '@alilc/lowcode-utils'; +import { reaction, untracked, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; +import { + IPublicTypeNodeSchema, + IPublicModelHistory, + IPublicTypeDisposable, +} from '@lce/lowcode-types'; +import { Logger } from '@lce/lowcode-utils'; import { IDocumentModel } from '../designer'; const logger = new Logger({ level: 'warn', bizName: 'history' }); @@ -41,41 +45,45 @@ export class History<T = IPublicTypeNodeSchema> implements IHistory { private timeGap: number = 1000; constructor( - dataFn: () => T | null, - private redoer: (data: T) => void, - private document?: IDocumentModel, - ) { + dataFn: () => T | null, + private redoer: (data: T) => void, + private document?: IDocumentModel, + ) { this.session = new Session(0, null, this.timeGap); this.records = [this.session]; - reaction((): any => { - return dataFn(); - }, (data: T) => { - if (this.asleep) return; - untracked(() => { - const log = this.currentSerialization.serialize(data); - - // do not record unchanged data - if (this.session.data === log) { - return; - } - - if (this.session.isActive()) { - this.session.log(log); - } else { - this.session.end(); - const lastState = this.getState(); - const cursor = this.session.cursor + 1; - const session = new Session(cursor, log, this.timeGap); - this.session = session; - this.records.splice(cursor, this.records.length - cursor, session); - const currentState = this.getState(); - if (currentState !== lastState) { - this.emitter.emit('statechange', currentState); + reaction( + (): any => { + return dataFn(); + }, + (data: T) => { + if (this.asleep) return; + untracked(() => { + const log = this.currentSerialization.serialize(data); + + // do not record unchanged data + if (this.session.data === log) { + return; } - } - }); - }, { fireImmediately: true }); + + if (this.session.isActive()) { + this.session.log(log); + } else { + this.session.end(); + const lastState = this.getState(); + const cursor = this.session.cursor + 1; + const session = new Session(cursor, log, this.timeGap); + this.session = session; + this.records.splice(cursor, this.records.length - cursor, session); + const currentState = this.getState(); + if (currentState !== lastState) { + this.emitter.emit('statechange', currentState); + } + } + }); + }, + { fireImmediately: true }, + ); } setSerialization(serialization: Serialization<T, string>) { diff --git a/packages/designer/src/document/node/exclusive-group.ts b/packages/designer/src/document/node/exclusive-group.ts index 9f57b12fc7..44fbeb9740 100644 --- a/packages/designer/src/document/node/exclusive-group.ts +++ b/packages/designer/src/document/node/exclusive-group.ts @@ -1,6 +1,6 @@ -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; -import { uniqueId } from '@alilc/lowcode-utils'; -import { IPublicTypeTitleContent, IPublicModelExclusiveGroup } from '@alilc/lowcode-types'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; +import { uniqueId } from '@lce/lowcode-utils'; +import { IPublicTypeTitleContent, IPublicModelExclusiveGroup } from '@lce/lowcode-types'; import type { INode } from './node'; import { intl } from '../../locale'; diff --git a/packages/designer/src/document/node/modal-nodes-manager.ts b/packages/designer/src/document/node/modal-nodes-manager.ts index 21c31ab46a..f8d6c916da 100644 --- a/packages/designer/src/document/node/modal-nodes-manager.ts +++ b/packages/designer/src/document/node/modal-nodes-manager.ts @@ -1,7 +1,7 @@ import { INode } from './node'; import { DocumentModel } from '../document-model'; -import { IPublicModelModalNodesManager } from '@alilc/lowcode-types'; -import { createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +import { IPublicModelModalNodesManager } from '@lce/lowcode-types'; +import { createModuleEventBus, IEventBus } from '@lce/lowcode-editor-core'; export function getModalNodes(node: INode) { if (!node) return []; @@ -18,8 +18,7 @@ export function getModalNodes(node: INode) { return nodes; } -export interface IModalNodesManager extends IPublicModelModalNodesManager<INode> { -} +export interface IModalNodesManager extends IPublicModelModalNodesManager<INode> {} export class ModalNodesManager implements IModalNodesManager { willDestroy: any; @@ -107,10 +106,9 @@ export class ModalNodesManager implements IModalNodesManager { } private addNodeEvent(node: INode) { - this.nodeRemoveEvents[node.id] = - node.onVisibleChange(() => { - this.emitter.emit('visibleChange'); - }); + this.nodeRemoveEvents[node.id] = node.onVisibleChange(() => { + this.emitter.emit('visibleChange'); + }); } private removeNodeEvent(node: INode) { diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index 65210fe62c..b42978cecf 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -1,7 +1,18 @@ -import { obx, computed, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { + obx, + computed, + makeObservable, + IEventBus, + createModuleEventBus, +} from '@lce/lowcode-editor-core'; import { Node, INode } from './node'; -import { IPublicTypeNodeData, IPublicModelNodeChildren, IPublicEnumTransformStage, IPublicTypeDisposable } from '@alilc/lowcode-types'; -import { shallowEqual, compatStage, isNodeSchema } from '@alilc/lowcode-utils'; +import { + IPublicTypeNodeData, + IPublicModelNodeChildren, + IPublicEnumTransformStage, + IPublicTypeDisposable, +} from '@lce/lowcode-types'; +import { shallowEqual, compatStage, isNodeSchema } from '@lce/lowcode-utils'; import { foreachReverse } from '../../utils/tree'; import { NodeRemoveOptions } from '../../types'; @@ -10,12 +21,11 @@ export interface IOnChangeOptions { node: Node; } -export interface INodeChildren extends Omit<IPublicModelNodeChildren<INode>, - 'importSchema' | - 'exportSchema' | - 'isEmpty' | - 'notEmpty' -> { +export interface INodeChildren + extends Omit< + IPublicModelNodeChildren<INode>, + 'importSchema' | 'exportSchema' | 'isEmpty' | 'notEmpty' + > { children: INode[]; get owner(): INode; @@ -28,11 +38,11 @@ export interface INodeChildren extends Omit<IPublicModelNodeChildren<INode>, * 删除一个节点 */ internalDelete( - node: INode, - purge: boolean, - useMutator: boolean, - options: NodeRemoveOptions - ): boolean; + node: INode, + purge: boolean, + useMutator: boolean, + options: NodeRemoveOptions, + ): boolean; /** * 插入一个节点,返回新长度 @@ -97,14 +107,16 @@ export class NodeChildren implements INodeChildren { } constructor( - readonly owner: INode, - data: IPublicTypeNodeData | IPublicTypeNodeData[], - options: any = {}, - ) { + readonly owner: INode, + data: IPublicTypeNodeData | IPublicTypeNodeData[], + options: any = {}, + ) { makeObservable(this); - this.children = (Array.isArray(data) ? data : [data]).filter(child => !!child).map((child) => { - return this.owner.document?.createNode(child, options.checkId); - }); + this.children = (Array.isArray(data) ? data : [data]) + .filter((child) => !!child) + .map((child) => { + return this.owner.document?.createNode(child, options.checkId); + }); } internalInitParent() { @@ -127,7 +139,7 @@ export class NodeChildren implements INodeChildren { } import(data?: IPublicTypeNodeData | IPublicTypeNodeData[], checkId = false) { - data = (data ? (Array.isArray(data) ? data : [data]) : []).filter(d => !!d); + data = (data ? (Array.isArray(data) ? data : [data]) : []).filter((d) => !!d); const originChildren = this.children.slice(); this.children.forEach((child) => child.internalSetParent(null)); @@ -187,7 +199,7 @@ export class NodeChildren implements INodeChildren { } unlinkChild(node: INode) { - const i = this.children.map(d => d.id).indexOf(node.id); + const i = this.children.map((d) => d.id).indexOf(node.id); if (i < 0) { return false; } @@ -208,7 +220,12 @@ export class NodeChildren implements INodeChildren { /** * 删除一个节点 */ - internalDelete(node: INode, purge = false, useMutator = true, options: NodeRemoveOptions = {}): boolean { + internalDelete( + node: INode, + purge = false, + useMutator = true, + options: NodeRemoveOptions = {}, + ): boolean { node.internalPurgeStart(); if (node.isParentalNode) { foreachReverse( @@ -227,7 +244,7 @@ export class NodeChildren implements INodeChildren { ); } // 需要在从 children 中删除 node 前记录下 index,internalSetParent 中会执行删除 (unlink) 操作 - const i = this.children.map(d => d.id).indexOf(node.id); + const i = this.children.map((d) => d.id).indexOf(node.id); if (purge) { // should set parent null node.internalSetParent(null, useMutator); @@ -275,7 +292,7 @@ export class NodeChildren implements INodeChildren { const { children } = this; let index = at == null || at === -1 ? children.length : at; - const i = children.map(d => d.id).indexOf(node.id); + const i = children.map((d) => d.id).indexOf(node.id); if (node.parent) { const editor = node.document?.designer.editor; @@ -344,7 +361,7 @@ export class NodeChildren implements INodeChildren { * 取得节点索引编号 */ indexOf(node: INode): number { - return this.children.map(d => d.id).indexOf(node.id); + return this.children.map((d) => d.id).indexOf(node.id); } /** @@ -446,7 +463,7 @@ export class NodeChildren implements INodeChildren { const willRemove = this.children.filter(remover); if (willRemove.length > 0) { willRemove.forEach((node) => { - const i = this.children.map(d => d.id).indexOf(node.id); + const i = this.children.map((d) => d.id).indexOf(node.id); if (i > -1) { this.children.splice(i, 1); node.remove(false); diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index c8363d0586..9ba6d434a8 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -1,5 +1,15 @@ import { ReactElement } from 'react'; -import { obx, computed, autorun, makeObservable, runInAction, wrapWithEventSwitch, action, createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +import { + obx, + computed, + autorun, + makeObservable, + runInAction, + wrapWithEventSwitch, + action, + createModuleEventBus, + IEventBus, +} from '@lce/lowcode-editor-core'; import { IPublicTypeNodeSchema, IPublicTypePropsMap, @@ -17,9 +27,9 @@ import { IPublicEnumTransformStage, IPublicTypeDisposable, IBaseModelNode, -} from '@alilc/lowcode-types'; -import { compatStage, isDOMText, isJSExpression, isNode, isNodeSchema } from '@alilc/lowcode-utils'; -import { ISettingTopEntry } from '@alilc/lowcode-designer'; +} from '@lce/lowcode-types'; +import { compatStage, isDOMText, isJSExpression, isNode, isNodeSchema } from '@lce/lowcode-utils'; +import { ISettingTopEntry } from '@lce/lowcode-designer'; import { Props, getConvertedExtraKey, IProps } from './props/props'; import type { IDocumentModel } from '../document-model'; import { NodeChildren, INodeChildren } from './node-children'; @@ -37,34 +47,36 @@ export interface NodeStatus { inPlaceEditing: boolean; } -export interface IBaseNode<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> extends Omit<IBaseModelNode< - IDocumentModel, - IBaseNode, - INodeChildren, - IComponentMeta, - ISettingTopEntry, - IProps, - IProp, - IExclusiveGroup ->, - 'isRoot' | - 'isPage' | - 'isComponent' | - 'isModal' | - 'isSlot' | - 'isParental' | - 'isLeaf' | - 'settingEntry' | - // 在内部的 node 模型中不存在 - 'getExtraPropValue' | - 'setExtraPropValue' | - 'exportSchema' | - 'visible' | - 'importSchema' | - // 内外实现有差异 - 'isContainer' | - 'isEmpty' -> { +export interface IBaseNode<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> + extends Omit< + IBaseModelNode< + IDocumentModel, + IBaseNode, + INodeChildren, + IComponentMeta, + ISettingTopEntry, + IProps, + IProp, + IExclusiveGroup + >, + | 'isRoot' + | 'isPage' + | 'isComponent' + | 'isModal' + | 'isSlot' + | 'isParental' + | 'isLeaf' + | 'settingEntry' + // 在内部的 node 模型中不存在 + | 'getExtraPropValue' + | 'setExtraPropValue' + | 'exportSchema' + | 'visible' + | 'importSchema' + // 内外实现有差异 + | 'isContainer' + | 'isEmpty' + > { isNode: boolean; get componentMeta(): IComponentMeta; @@ -112,7 +124,9 @@ export interface IBaseNode<Schema extends IPublicTypeNodeSchema = IPublicTypeNod getSuitablePlace(node: INode, ref: any): any; - onChildrenChange(fn: (param?: { type: string; node: INode }) => void): IPublicTypeDisposable | undefined; + onChildrenChange( + fn: (param?: { type: string; node: INode }) => void, + ): IPublicTypeDisposable | undefined; onPropChange(func: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable; @@ -134,11 +148,7 @@ export interface IBaseNode<Schema extends IPublicTypeNodeSchema = IPublicTypeNod isEmpty(): boolean; - remove( - useMutator?: boolean, - purge?: boolean, - options?: NodeRemoveOptions, - ): void; + remove(useMutator?: boolean, purge?: boolean, options?: NodeRemoveOptions): void; didDropIn(dragment: INode): void; @@ -212,7 +222,9 @@ export interface IBaseNode<Schema extends IPublicTypeNodeSchema = IPublicTypeNod * isLocked * hidden */ -export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> implements IBaseNode { +export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> + implements IBaseNode +{ private emitter: IEventBus; /** @@ -381,10 +393,7 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> this.props = new Props(this, props, extras); this._children = new NodeChildren(this as INode, this.initialChildren(children)); this._children.internalInitParent(); - this.props.merge( - this.upgradeProps(this.initProps(props || {})), - this.upgradeProps(extras), - ); + this.props.merge(this.upgradeProps(this.initProps(props || {})), this.upgradeProps(extras)); this.setupAutoruns(); } @@ -409,12 +418,18 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> */ @action private initBuiltinProps() { - this.props.has(getConvertedExtraKey('hidden')) || this.props.add(false, getConvertedExtraKey('hidden')); - this.props.has(getConvertedExtraKey('title')) || this.props.add('', getConvertedExtraKey('title')); - this.props.has(getConvertedExtraKey('isLocked')) || this.props.add(false, getConvertedExtraKey('isLocked')); - this.props.has(getConvertedExtraKey('condition')) || this.props.add(true, getConvertedExtraKey('condition')); - this.props.has(getConvertedExtraKey('conditionGroup')) || this.props.add('', getConvertedExtraKey('conditionGroup')); - this.props.has(getConvertedExtraKey('loop')) || this.props.add(undefined, getConvertedExtraKey('loop')); + this.props.has(getConvertedExtraKey('hidden')) || + this.props.add(false, getConvertedExtraKey('hidden')); + this.props.has(getConvertedExtraKey('title')) || + this.props.add('', getConvertedExtraKey('title')); + this.props.has(getConvertedExtraKey('isLocked')) || + this.props.add(false, getConvertedExtraKey('isLocked')); + this.props.has(getConvertedExtraKey('condition')) || + this.props.add(true, getConvertedExtraKey('condition')); + this.props.has(getConvertedExtraKey('conditionGroup')) || + this.props.add('', getConvertedExtraKey('conditionGroup')); + this.props.has(getConvertedExtraKey('loop')) || + this.props.add(undefined, getConvertedExtraKey('loop')); } @action @@ -439,7 +454,9 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> }); } - private initialChildren(children: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined): IPublicTypeNodeData[] { + private initialChildren( + children: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined, + ): IPublicTypeNodeData[] { const { initialChildren } = this.componentMeta.advanced; if (children == null) { @@ -626,9 +643,13 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> } if (this.isSlot()) { this.parent.removeSlot(this); - this.parent.children?.internalDelete(this, purge, useMutator, { suppressRemoveEvent: true }); + this.parent.children?.internalDelete(this, purge, useMutator, { + suppressRemoveEvent: true, + }); } else { - this.parent.children?.internalDelete(this, purge, useMutator, { suppressRemoveEvent: true }); + this.parent.children?.internalDelete(this, purge, useMutator, { + suppressRemoveEvent: true, + }); } } } @@ -649,7 +670,8 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> canSelect(): boolean { const onSelectHook = this.componentMeta?.advanced?.callbacks?.onSelectHook; - const canSelect = typeof onSelectHook === 'function' ? onSelectHook(this.internalToShellNode()!) : true; + const canSelect = + typeof onSelectHook === 'function' ? onSelectHook(this.internalToShellNode()!) : true; return canSelect; } @@ -944,7 +966,10 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> /** * 导出 schema */ - export<T = IPublicTypeNodeSchema>(stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Save, options: any = {}): T { + export<T = IPublicTypeNodeSchema>( + stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Save, + options: any = {}, + ): T { stage = compatStage(stage); const baseSchema: any = { componentName: this.componentName, @@ -1098,12 +1123,11 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> */ canPerformAction(actionName: string): boolean { const availableActions = - this.componentMeta?.availableActions?.filter((action: IPublicTypeComponentAction) => { - const { condition } = action; - return typeof condition === 'function' ? - condition(this) !== false : - condition !== false; - }) + this.componentMeta?.availableActions + ?.filter((action: IPublicTypeComponentAction) => { + const { condition } = action; + return typeof condition === 'function' ? condition(this) !== false : condition !== false; + }) .map((action: IPublicTypeComponentAction) => action.name) || []; return availableActions.indexOf(actionName) >= 0; @@ -1160,7 +1184,9 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> return this.props; } - onChildrenChange(fn: (param?: { type: string; node: INode }) => void): IPublicTypeDisposable | undefined { + onChildrenChange( + fn: (param?: { type: string; node: INode }) => void, + ): IPublicTypeDisposable | undefined { const wrappedFunc = wrapWithEventSwitch(fn); return this.children?.onChange(wrappedFunc); } @@ -1230,7 +1256,7 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema> const isContainerNode = this.isContainer(); const isEmptyNode = this.isEmpty(); const isRGLContainerNode = this.isRGLContainer; - const isRGLNode = (this.getParent()?.isRGLContainer) as boolean; + const isRGLNode = this.getParent()?.isRGLContainer as boolean; const isRGL = isRGLContainerNode || (isRGLNode && (!isContainerNode || !isEmptyNode)); let rglNode = isRGLContainerNode ? this : isRGL ? this?.getParent() : null; return { isContainerNode, isEmptyNode, isRGLContainerNode, isRGLNode, isRGL, rglNode }; diff --git a/packages/designer/src/document/node/props/prop.ts b/packages/designer/src/document/node/props/prop.ts index d70f0f56ec..5ea1d7ad77 100644 --- a/packages/designer/src/document/node/props/prop.ts +++ b/packages/designer/src/document/node/props/prop.ts @@ -1,7 +1,29 @@ -import { untracked, computed, obx, engineConfig, action, makeObservable, mobx, runInAction } from '@alilc/lowcode-editor-core'; -import { GlobalEvent, IPublicEnumTransformStage } from '@alilc/lowcode-types'; -import type { IPublicTypeCompositeValue, IPublicTypeJSSlot, IPublicTypeSlotSchema, IPublicModelProp } from '@alilc/lowcode-types'; -import { uniqueId, isPlainObject, hasOwnProperty, compatStage, isJSExpression, isJSSlot, isNodeSchema } from '@alilc/lowcode-utils'; +import { + untracked, + computed, + obx, + engineConfig, + action, + makeObservable, + mobx, + runInAction, +} from '@lce/lowcode-editor-core'; +import { GlobalEvent, IPublicEnumTransformStage } from '@lce/lowcode-types'; +import type { + IPublicTypeCompositeValue, + IPublicTypeJSSlot, + IPublicTypeSlotSchema, + IPublicModelProp, +} from '@lce/lowcode-types'; +import { + uniqueId, + isPlainObject, + hasOwnProperty, + compatStage, + isJSExpression, + isJSSlot, + isNodeSchema, +} from '@lce/lowcode-utils'; import { valueToSource } from './value-to-source'; import { IPropParent } from './props'; import type { IProps } from './props'; @@ -13,9 +35,7 @@ export const UNSET = Symbol.for('unset'); // eslint-disable-next-line no-redeclare export type UNSET = typeof UNSET; -export interface IProp extends Omit<IPublicModelProp< - INode ->, 'exportSchema' | 'node'>, IPropParent { +export interface IProp extends Omit<IPublicModelProp<INode>, 'exportSchema' | 'node'>, IPropParent { spread: boolean; key: string | number | undefined; @@ -274,7 +294,9 @@ export class Prop implements IProp, IPropParent { this.get(propName, false)?.unset(); } - export(stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Save): IPublicTypeCompositeValue { + export( + stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Save, + ): IPublicTypeCompositeValue { stage = compatStage(stage); const type = this._type; if (stage === IPublicEnumTransformStage.Render && this.key === '___condition___') { @@ -294,7 +316,7 @@ export class Prop implements IProp, IPropParent { } if (type === 'slot') { - const schema = this._slotNode?.export(stage) || {} as any; + const schema = this._slotNode?.export(stage) || ({} as any); if (stage === IPublicEnumTransformStage.Render) { return { type: 'JSSlot', @@ -372,7 +394,7 @@ export class Prop implements IProp, IPropParent { } else { this._type = 'map'; } - } else /* istanbul ignore next */ { + } /* istanbul ignore next */ else { this._type = 'expression'; this._value = { type: 'JSExpression', @@ -389,11 +411,7 @@ export class Prop implements IProp, IPropParent { } } - emitChange = ({ - oldValue, - }: { - oldValue: IPublicTypeCompositeValue | UNSET; - }) => { + emitChange = ({ oldValue }: { oldValue: IPublicTypeCompositeValue | UNSET }) => { const editor = this.owner.document?.designer.editor; const propsInfo = { key: this.key, @@ -432,7 +450,11 @@ export class Prop implements IProp, IPropParent { this._type = 'slot'; let slotSchema: IPublicTypeSlotSchema; // 当 data.value 的结构为 { componentName: 'Slot' } 时,复用部分 slotSchema 数据 - if ((isPlainObject(data.value) && isNodeSchema(data.value) && data.value?.componentName === 'Slot')) { + if ( + isPlainObject(data.value) && + isNodeSchema(data.value) && + data.value?.componentName === 'Slot' + ) { const value = data.value as IPublicTypeSlotSchema; slotSchema = { componentName: 'Slot', diff --git a/packages/designer/src/document/node/props/props.ts b/packages/designer/src/document/node/props/props.ts index 213592a5de..55ba41b4d8 100644 --- a/packages/designer/src/document/node/props/props.ts +++ b/packages/designer/src/document/node/props/props.ts @@ -1,7 +1,12 @@ -import { computed, makeObservable, obx, action } from '@alilc/lowcode-editor-core'; -import { IPublicTypePropsList, IPublicTypeCompositeValue, IPublicEnumTransformStage, IBaseModelProps } from '@alilc/lowcode-types'; -import type { IPublicTypePropsMap } from '@alilc/lowcode-types'; -import { uniqueId, compatStage } from '@alilc/lowcode-utils'; +import { computed, makeObservable, obx, action } from '@lce/lowcode-editor-core'; +import { + IPublicTypePropsList, + IPublicTypeCompositeValue, + IPublicEnumTransformStage, + IBaseModelProps, +} from '@lce/lowcode-types'; +import type { IPublicTypePropsMap } from '@lce/lowcode-types'; +import { uniqueId, compatStage } from '@lce/lowcode-utils'; import { Prop, UNSET } from './prop'; import type { IProp } from './prop'; import { INode } from '../node'; @@ -27,7 +32,6 @@ export function getOriginalExtraKey(key: string): string { } export interface IPropParent { - readonly props: IProps; readonly owner: INode; @@ -37,8 +41,12 @@ export interface IPropParent { delete(prop: IProp): void; } -export interface IProps extends Omit<IBaseModelProps<IProp>, | 'getExtraProp' | 'getExtraPropValue' | 'setExtraPropValue' | 'node'>, IPropParent { - +export interface IProps + extends Omit< + IBaseModelProps<IProp>, + 'getExtraProp' | 'getExtraPropValue' | 'setExtraPropValue' | 'node' + >, + IPropParent { /** * 获取 props 对应的 node */ @@ -96,7 +104,11 @@ export class Props implements IProps, IPropParent { private purged = false; - constructor(owner: INode, value?: IPublicTypePropsMap | IPublicTypePropsList | null, extras?: ExtrasObject) { + constructor( + owner: INode, + value?: IPublicTypePropsMap | IPublicTypePropsList | null, + extras?: ExtrasObject, + ) { makeObservable(this); this.owner = owner; if (Array.isArray(value)) { diff --git a/packages/designer/src/document/node/transform-stage.ts b/packages/designer/src/document/node/transform-stage.ts index 53b72c1bf0..dd577e45fa 100644 --- a/packages/designer/src/document/node/transform-stage.ts +++ b/packages/designer/src/document/node/transform-stage.ts @@ -1 +1 @@ -export { TransformStage } from '@alilc/lowcode-types'; +export { TransformStage } from '@lce/lowcode-types'; diff --git a/packages/designer/src/document/selection.ts b/packages/designer/src/document/selection.ts index 6147e188d8..93ddf9f695 100644 --- a/packages/designer/src/document/selection.ts +++ b/packages/designer/src/document/selection.ts @@ -1,7 +1,7 @@ -import { obx, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { obx, makeObservable, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; import { INode, comparePosition, PositionNO } from './node/node'; import { DocumentModel } from './document-model'; -import { IPublicModelSelection } from '@alilc/lowcode-types'; +import { IPublicModelSelection } from '@lce/lowcode-types'; export interface ISelection extends Omit<IPublicModelSelection<INode>, 'node'> { containsNode(node: INode, excludeRoot: boolean): boolean; @@ -48,7 +48,7 @@ export class Selection implements ISelection { selectAll(ids: string[]) { const selectIds: string[] = []; - ids.forEach(d => { + ids.forEach((d) => { const node = this.doc.getNode(d); if (node?.canSelect()) { diff --git a/packages/designer/src/icons/clone.tsx b/packages/designer/src/icons/clone.tsx index 261acd2505..875e35c67f 100644 --- a/packages/designer/src/icons/clone.tsx +++ b/packages/designer/src/icons/clone.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconClone(props: IconProps) { return ( diff --git a/packages/designer/src/icons/component.tsx b/packages/designer/src/icons/component.tsx index 914f066254..985dff47a3 100644 --- a/packages/designer/src/icons/component.tsx +++ b/packages/designer/src/icons/component.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconComponent(props: IconProps) { return ( diff --git a/packages/designer/src/icons/container.tsx b/packages/designer/src/icons/container.tsx index 6cb51fd38a..fc07795fe6 100644 --- a/packages/designer/src/icons/container.tsx +++ b/packages/designer/src/icons/container.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconContainer(props: IconProps) { return ( diff --git a/packages/designer/src/icons/hidden.tsx b/packages/designer/src/icons/hidden.tsx index ac316d1808..6d3b97c5f7 100644 --- a/packages/designer/src/icons/hidden.tsx +++ b/packages/designer/src/icons/hidden.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconHidden(props: IconProps) { return ( diff --git a/packages/designer/src/icons/lock.tsx b/packages/designer/src/icons/lock.tsx index f67fac2371..2a8e131d8d 100644 --- a/packages/designer/src/icons/lock.tsx +++ b/packages/designer/src/icons/lock.tsx @@ -1,9 +1,13 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconLock(props: IconProps) { return ( <SVGIcon viewBox="0 0 1024 1024" {...props}> - <path d="M704 480v-160c0-105.6-86.4-192-192-192s-192 86.4-192 192v160H160v416h704V480h-160z m-320-160c0-70.4 57.6-128 128-128s128 57.6 128 128v160h-256v-160z m416 512H224v-288h576v288z" fill="#ffffff" p-id="2680" /> + <path + d="M704 480v-160c0-105.6-86.4-192-192-192s-192 86.4-192 192v160H160v416h704V480h-160z m-320-160c0-70.4 57.6-128 128-128s128 57.6 128 128v160h-256v-160z m416 512H224v-288h576v288z" + fill="#ffffff" + p-id="2680" + /> <path d="M480 768h64v-160h-64z" fill="#ffffff" p-id="2681" /> </SVGIcon> ); diff --git a/packages/designer/src/icons/page.tsx b/packages/designer/src/icons/page.tsx index 07853c4e12..1297d53757 100644 --- a/packages/designer/src/icons/page.tsx +++ b/packages/designer/src/icons/page.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconPage(props: IconProps) { return ( diff --git a/packages/designer/src/icons/remove.tsx b/packages/designer/src/icons/remove.tsx index 42b80f618e..0cee2fbe6c 100644 --- a/packages/designer/src/icons/remove.tsx +++ b/packages/designer/src/icons/remove.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconRemove(props: IconProps) { return ( diff --git a/packages/designer/src/icons/setting.tsx b/packages/designer/src/icons/setting.tsx index 2df18029c3..a038da8da3 100644 --- a/packages/designer/src/icons/setting.tsx +++ b/packages/designer/src/icons/setting.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconSetting(props: IconProps) { return ( diff --git a/packages/designer/src/icons/unlock.tsx b/packages/designer/src/icons/unlock.tsx index cff324920e..0705d77ddb 100644 --- a/packages/designer/src/icons/unlock.tsx +++ b/packages/designer/src/icons/unlock.tsx @@ -1,9 +1,13 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconUnlock(props: IconProps) { return ( <SVGIcon viewBox="0 0 1024 1024" {...props}> - <path d="M384 480v-160c0-70.4 57.6-128 128-128s128 57.6 128 128v64h64v-64c0-105.6-86.4-192-192-192s-192 86.4-192 192v160H160v416h704V480H384z m416 352H224v-288h576v288z" fill="#ffffff" p-id="2813" /> + <path + d="M384 480v-160c0-70.4 57.6-128 128-128s128 57.6 128 128v64h64v-64c0-105.6-86.4-192-192-192s-192 86.4-192 192v160H160v416h704V480H384z m416 352H224v-288h576v288z" + fill="#ffffff" + p-id="2813" + /> <path d="M416 736h192v-64h-192z" fill="#ffffff" p-id="2814" /> </SVGIcon> ); diff --git a/packages/designer/src/locale/index.ts b/packages/designer/src/locale/index.ts index 4cb3b53cfb..848d050322 100644 --- a/packages/designer/src/locale/index.ts +++ b/packages/designer/src/locale/index.ts @@ -1,4 +1,4 @@ -import { createIntl } from '@alilc/lowcode-editor-core'; +import { createIntl } from '@lce/lowcode-editor-core'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; diff --git a/packages/designer/src/plugin/plugin-context.ts b/packages/designer/src/plugin/plugin-context.ts index 7f26a2b4f3..fca3446232 100644 --- a/packages/designer/src/plugin/plugin-context.ts +++ b/packages/designer/src/plugin/plugin-context.ts @@ -1,5 +1,5 @@ /* eslint-disable no-multi-assign */ -import { engineConfig, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { engineConfig, createModuleEventBus } from '@lce/lowcode-editor-core'; import { IPublicApiHotkey, IPublicApiProject, @@ -20,7 +20,7 @@ import { IPublicEnumPluginRegisterLevel, IPublicModelWindow, IPublicApiCommonUI, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { IPluginContextOptions, ILowCodePluginContextApiAssembler, @@ -28,8 +28,9 @@ import { } from './plugin-types'; import { isValidPreferenceKey } from './plugin-utils'; -export default class PluginContext implements - IPublicModelPluginContext, ILowCodePluginContextPrivate { +export default class PluginContext + implements IPublicModelPluginContext, ILowCodePluginContextPrivate +{ hotkey: IPublicApiHotkey; project: IPublicApiProject; skeleton: IPublicApiSkeleton; @@ -50,9 +51,9 @@ export default class PluginContext implements isPluginRegisteredInWorkspace: false; constructor( - options: IPluginContextOptions, - contextApiAssembler: ILowCodePluginContextApiAssembler, - ) { + options: IPluginContextOptions, + contextApiAssembler: ILowCodePluginContextApiAssembler, + ) { const { pluginName = 'anonymous', meta = {} } = options; contextApiAssembler.assembleApis(this, pluginName, meta); this.pluginEvent = createModuleEventBus(pluginName, 200); @@ -62,14 +63,11 @@ export default class PluginContext implements } } - setPreference( - pluginName: string, - preferenceDeclaration: IPublicTypePluginDeclaration, - ): void { + setPreference(pluginName: string, preferenceDeclaration: IPublicTypePluginDeclaration): void { const getPreferenceValue = ( key: string, defaultValue?: IPublicTypePreferenceValueType, - ): IPublicTypePreferenceValueType | undefined => { + ): IPublicTypePreferenceValueType | undefined => { if (!isValidPreferenceKey(key, preferenceDeclaration)) { return undefined; } diff --git a/packages/designer/src/plugin/plugin-manager.ts b/packages/designer/src/plugin/plugin-manager.ts index f6b325dc0d..e15feb706a 100644 --- a/packages/designer/src/plugin/plugin-manager.ts +++ b/packages/designer/src/plugin/plugin-manager.ts @@ -1,5 +1,5 @@ -import { engineConfig } from '@alilc/lowcode-editor-core'; -import { getLogger } from '@alilc/lowcode-utils'; +import { engineConfig } from '@lce/lowcode-editor-core'; +import { getLogger } from '@lce/lowcode-utils'; import { ILowCodePluginRuntime, ILowCodePluginManager, @@ -18,12 +18,30 @@ import { IPublicTypePluginRegisterOptions, IPublicTypePreferenceValueType, IPublicTypePlugin, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; const logger = getLogger({ level: 'warn', bizName: 'designer:pluginManager' }); // 保留的事件前缀 -const RESERVED_EVENT_PREFIX = ['designer', 'editor', 'skeleton', 'renderer', 'render', 'utils', 'plugin', 'engine', 'editor-core', 'engine-core', 'plugins', 'event', 'events', 'log', 'logger', 'ctx', 'context']; +const RESERVED_EVENT_PREFIX = [ + 'designer', + 'editor', + 'skeleton', + 'renderer', + 'render', + 'utils', + 'plugin', + 'engine', + 'editor-core', + 'engine-core', + 'plugins', + 'event', + 'events', + 'log', + 'logger', + 'ctx', + 'context', +]; export class LowCodePluginManager implements ILowCodePluginManager { private plugins: ILowCodePluginRuntime[] = []; @@ -35,7 +53,10 @@ export class LowCodePluginManager implements ILowCodePluginManager { contextApiAssembler: ILowCodePluginContextApiAssembler; - constructor(contextApiAssembler: ILowCodePluginContextApiAssembler, readonly viewName = 'global') { + constructor( + contextApiAssembler: ILowCodePluginContextApiAssembler, + readonly viewName = 'global', + ) { this.contextApiAssembler = contextApiAssembler; } @@ -79,22 +100,28 @@ export class LowCodePluginManager implements ILowCodePluginManager { const isReservedPrefix = RESERVED_EVENT_PREFIX.find((item) => item === eventPrefix); if (isReservedPrefix) { meta.eventPrefix = undefined; - logger.warn(`plugin ${pluginName} is trying to use ${eventPrefix} as event prefix, which is a reserved event prefix, please use another one`); + logger.warn( + `plugin ${pluginName} is trying to use ${eventPrefix} as event prefix, which is a reserved event prefix, please use another one`, + ); } const ctx = this._getLowCodePluginContext({ pluginName, meta }); - const customFilterValidOptions = engineConfig.get('customPluginFilterOptions', filterValidOptions); + const customFilterValidOptions = engineConfig.get( + 'customPluginFilterOptions', + filterValidOptions, + ); const pluginTransducer = engineConfig.get('customPluginTransducer', null); - const newPluginModel = pluginTransducer ? await pluginTransducer(pluginModel, ctx, options) : pluginModel; - const newOptions = customFilterValidOptions(options, newPluginModel.meta?.preferenceDeclaration); + const newPluginModel = pluginTransducer + ? await pluginTransducer(pluginModel, ctx, options) + : pluginModel; + const newOptions = customFilterValidOptions( + options, + newPluginModel.meta?.preferenceDeclaration, + ); const config = newPluginModel(ctx, newOptions); // compat the legacy way to declare pluginName // @ts-ignore pluginName = pluginName || config.name; - invariant( - pluginName, - 'pluginConfigCreator.pluginName required', - config, - ); + invariant(pluginName, 'pluginConfigCreator.pluginName required', config); ctx.setPreference(pluginName, preferenceDeclaration); @@ -119,7 +146,11 @@ export class LowCodePluginManager implements ILowCodePluginManager { const engineVersionExp = engines && engines.lowcodeEngine; if (engineVersionExp && !this.isEngineVersionMatched(engineVersionExp)) { - throw new Error(`plugin ${pluginName} skipped, engine check failed, current engine version is ${engineConfig.get('ENGINE_VERSION')}, meta.engines.lowcodeEngine is ${engineVersionExp}`); + throw new Error( + `plugin ${pluginName} skipped, engine check failed, current engine version is ${engineConfig.get( + 'ENGINE_VERSION', + )}, meta.engines.lowcodeEngine is ${engineVersionExp}`, + ); } const plugin = new LowCodePluginRuntime(pluginName, this, config, meta); @@ -188,7 +219,9 @@ export class LowCodePluginManager implements ILowCodePluginManager { return this.pluginsMap.size; } - getPluginPreference(pluginName: string): Record<string, IPublicTypePreferenceValueType> | null | undefined { + getPluginPreference( + pluginName: string, + ): Record<string, IPublicTypePreferenceValueType> | null | undefined { if (!this.pluginPreference) { return null; } diff --git a/packages/designer/src/plugin/plugin-types.ts b/packages/designer/src/plugin/plugin-types.ts index cfc38866f5..afa9618b29 100644 --- a/packages/designer/src/plugin/plugin-types.ts +++ b/packages/designer/src/plugin/plugin-types.ts @@ -20,7 +20,7 @@ import { IPublicEnumPluginRegisterLevel, IPublicApiCommonUI, IPublicApiCommand, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import PluginContext from './plugin-context'; export type PluginPreference = Map<string, Record<string, IPublicTypePreferenceValueType>>; @@ -44,7 +44,8 @@ interface ILowCodePluginRuntimeExportsAccessor { } // eslint-disable-next-line max-len -export type ILowCodePluginRuntime = ILowCodePluginRuntimeCore & ILowCodePluginRuntimeExportsAccessor; +export type ILowCodePluginRuntime = ILowCodePluginRuntimeCore & + ILowCodePluginRuntimeExportsAccessor; export interface ILowCodePluginContextPrivate { set hotkey(hotkey: IPublicApiHotkey); @@ -84,14 +85,16 @@ export interface ILowCodePluginManagerCore { pluginOptions?: any, options?: IPublicTypePluginRegisterOptions, ): Promise<void>; - init(pluginPreference?: Map<string, Record<string, IPublicTypePreferenceValueType>>): Promise<void>; + init( + pluginPreference?: Map<string, Record<string, IPublicTypePreferenceValueType>>, + ): Promise<void>; get(pluginName: string): ILowCodePluginRuntime | undefined; getAll(): ILowCodePluginRuntime[]; has(pluginName: string): boolean; delete(pluginName: string): any; setDisabled(pluginName: string, flag: boolean): void; dispose(): void; - _getLowCodePluginContext (options: IPluginContextOptions): PluginContext; + _getLowCodePluginContext(options: IPluginContextOptions): PluginContext; } export type ILowCodePluginManager = ILowCodePluginManagerCore & ILowCodePluginManagerPluginAccessor; diff --git a/packages/designer/src/plugin/plugin-utils.ts b/packages/designer/src/plugin/plugin-utils.ts index 7d8ab8db9c..f63918d380 100644 --- a/packages/designer/src/plugin/plugin-utils.ts +++ b/packages/designer/src/plugin/plugin-utils.ts @@ -1,5 +1,5 @@ import { isPlainObject } from 'lodash'; -import { IPublicTypePluginRegisterOptions, IPublicTypePluginDeclaration } from '@alilc/lowcode-types'; +import { IPublicTypePluginRegisterOptions, IPublicTypePluginDeclaration } from '@lce/lowcode-types'; export function isValidPreferenceKey( key: string, @@ -17,10 +17,7 @@ export function isLowCodeRegisterOptions(opts: any): opts is IPublicTypePluginRe return opts && ('autoInit' in opts || 'override' in opts); } -export function filterValidOptions( - opts: any, - preferenceDeclaration: IPublicTypePluginDeclaration, - ) { +export function filterValidOptions(opts: any, preferenceDeclaration: IPublicTypePluginDeclaration) { if (!opts || !isPlainObject(opts)) return opts; const filteredOpts = {} as any; Object.keys(opts).forEach((key) => { @@ -32,4 +29,4 @@ export function filterValidOptions( } }); return filteredOpts; -} \ No newline at end of file +} diff --git a/packages/designer/src/plugin/plugin.ts b/packages/designer/src/plugin/plugin.ts index dd57325fcd..1cc3afa558 100644 --- a/packages/designer/src/plugin/plugin.ts +++ b/packages/designer/src/plugin/plugin.ts @@ -1,12 +1,6 @@ -import { getLogger, Logger } from '@alilc/lowcode-utils'; -import { - ILowCodePluginRuntime, - ILowCodePluginManager, -} from './plugin-types'; -import { - IPublicTypePluginConfig, - IPublicTypePluginMeta, -} from '@alilc/lowcode-types'; +import { getLogger, Logger } from '@lce/lowcode-utils'; +import { ILowCodePluginRuntime, ILowCodePluginManager } from './plugin-types'; +import { IPublicTypePluginConfig, IPublicTypePluginMeta } from '@lce/lowcode-types'; import { invariant } from '../utils'; export class LowCodePluginRuntime implements ILowCodePluginRuntime { diff --git a/packages/designer/src/project/project-view.tsx b/packages/designer/src/project/project-view.tsx index a16d4451a6..4b96423dd1 100644 --- a/packages/designer/src/project/project-view.tsx +++ b/packages/designer/src/project/project-view.tsx @@ -1,5 +1,5 @@ import { Component } from 'react'; -import { observer, engineConfig } from '@alilc/lowcode-editor-core'; +import { observer, engineConfig } from '@lce/lowcode-editor-core'; import { Designer } from '../designer'; import { BuiltinSimulatorHostView } from '../builtin-simulator'; import './project.less'; @@ -8,7 +8,11 @@ export class BuiltinLoading extends Component { render() { return ( <div id="engine-loading-wrapper"> - <img width="154" height="100" src="https://img.alicdn.com/tfs/TB1CmVgayERMeJjy0FcXXc7opXa-308-200.gif" /> + <img + width="154" + height="100" + src="https://img.alicdn.com/tfs/TB1CmVgayERMeJjy0FcXXc7opXa-308-200.gif" + /> </div> ); } diff --git a/packages/designer/src/project/project.ts b/packages/designer/src/project/project.ts index 94913d9fa7..08be796d5c 100644 --- a/packages/designer/src/project/project.ts +++ b/packages/designer/src/project/project.ts @@ -1,41 +1,47 @@ -import { obx, computed, makeObservable, action, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { + obx, + computed, + makeObservable, + action, + IEventBus, + createModuleEventBus, +} from '@lce/lowcode-editor-core'; import { IDesigner } from '../designer'; import { DocumentModel, isDocumentModel } from '../document'; import type { IDocumentModel } from '../document'; -import { IPublicEnumTransformStage } from '@alilc/lowcode-types'; +import { IPublicEnumTransformStage } from '@lce/lowcode-types'; import type { IBaseApiProject, IPublicTypeProjectSchema, IPublicTypeRootSchema, IPublicTypeComponentsMap, IPublicTypeSimulatorRenderer, -} from '@alilc/lowcode-types'; -import { isLowCodeComponentType, isProCodeComponentType } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { isLowCodeComponentType, isProCodeComponentType } from '@lce/lowcode-utils'; import { ISimulatorHost } from '../simulator'; -export interface IProject extends Omit<IBaseApiProject< - IDocumentModel ->, - 'simulatorHost' | - 'importSchema' | - 'exportSchema' | - 'openDocument' | - 'getDocumentById' | - 'getCurrentDocument' | - 'addPropsTransducer' | - 'onRemoveDocument' | - 'onChangeDocument' | - 'onSimulatorHostReady' | - 'onSimulatorRendererReady' | - 'setI18n' | - 'setConfig' | - 'currentDocument' | - 'selection' | - 'documents' | - 'createDocument' | - 'getDocumentByFileName' -> { - +export interface IProject + extends Omit< + IBaseApiProject<IDocumentModel>, + | 'simulatorHost' + | 'importSchema' + | 'exportSchema' + | 'openDocument' + | 'getDocumentById' + | 'getCurrentDocument' + | 'addPropsTransducer' + | 'onRemoveDocument' + | 'onChangeDocument' + | 'onSimulatorHostReady' + | 'onSimulatorRendererReady' + | 'setI18n' + | 'setConfig' + | 'currentDocument' + | 'selection' + | 'documents' + | 'createDocument' + | 'getDocumentByFileName' + > { get designer(): IDesigner; get simulator(): ISimulatorHost | null; @@ -60,9 +66,7 @@ export interface IProject extends Omit<IBaseApiProject< load(schema?: IPublicTypeProjectSchema, autoOpen?: boolean | string): void; - getSchema( - stage?: IPublicEnumTransformStage, - ): IPublicTypeProjectSchema; + getSchema(stage?: IPublicEnumTransformStage): IPublicTypeProjectSchema; getDocument(id: string): IDocumentModel | null; @@ -136,41 +140,48 @@ export class Project implements IProject { private documentsMap = new Map<string, DocumentModel>(); - constructor(readonly designer: IDesigner, schema?: IPublicTypeProjectSchema, readonly viewName = 'global') { + constructor( + readonly designer: IDesigner, + schema?: IPublicTypeProjectSchema, + readonly viewName = 'global', + ) { makeObservable(this); this.load(schema); } private getComponentsMap(): IPublicTypeComponentsMap { - return this.documents.reduce<IPublicTypeComponentsMap>(( - componentsMap: IPublicTypeComponentsMap, - curDoc: IDocumentModel, - ): IPublicTypeComponentsMap => { - const curComponentsMap = curDoc.getComponentsMap(); - if (Array.isArray(curComponentsMap)) { - curComponentsMap.forEach((item) => { - const found = componentsMap.find((eItem) => { - if ( - isProCodeComponentType(eItem) && - isProCodeComponentType(item) && - eItem.package === item.package && - eItem.componentName === item.componentName - ) { - return true; - } else if ( - isLowCodeComponentType(eItem) && - eItem.componentName === item.componentName - ) { - return true; - } - return false; + return this.documents.reduce<IPublicTypeComponentsMap>( + ( + componentsMap: IPublicTypeComponentsMap, + curDoc: IDocumentModel, + ): IPublicTypeComponentsMap => { + const curComponentsMap = curDoc.getComponentsMap(); + if (Array.isArray(curComponentsMap)) { + curComponentsMap.forEach((item) => { + const found = componentsMap.find((eItem) => { + if ( + isProCodeComponentType(eItem) && + isProCodeComponentType(item) && + eItem.package === item.package && + eItem.componentName === item.componentName + ) { + return true; + } else if ( + isLowCodeComponentType(eItem) && + eItem.componentName === item.componentName + ) { + return true; + } + return false; + }); + if (found) return; + componentsMap.push(item); }); - if (found) return; - componentsMap.push(item); - }); - } - return componentsMap; - }, [] as IPublicTypeComponentsMap); + } + return componentsMap; + }, + [] as IPublicTypeComponentsMap, + ); } /** @@ -184,7 +195,7 @@ export class Project implements IProject { componentsMap: this.getComponentsMap(), componentsTree: this.documents .filter((doc) => !doc.isBlank()) - .map((doc) => doc.export(stage) || {} as IPublicTypeRootSchema), + .map((doc) => doc.export(stage) || ({} as IPublicTypeRootSchema)), i18n: this.i18n, }; } @@ -319,7 +330,9 @@ export class Project implements IProject { return doc.open(); } if (typeof doc === 'string' || typeof doc === 'number') { - const got = this.documents.find((item) => item.fileName === String(doc) || String(item.id) === String(doc)); + const got = this.documents.find( + (item) => item.fileName === String(doc) || String(item.id) === String(doc), + ); if (got) { return got.open(); } diff --git a/packages/designer/src/simulator.ts b/packages/designer/src/simulator.ts index 3a63a685b8..4f210945a3 100644 --- a/packages/designer/src/simulator.ts +++ b/packages/designer/src/simulator.ts @@ -1,5 +1,13 @@ import { ComponentType } from 'react'; -import { IPublicTypeComponentMetadata, IPublicTypeNodeSchema, IPublicTypeScrollable, IPublicTypeComponentInstance, IPublicModelSensor, IPublicTypeNodeInstance, IPublicTypePackage } from '@alilc/lowcode-types'; +import { + IPublicTypeComponentMetadata, + IPublicTypeNodeSchema, + IPublicTypeScrollable, + IPublicTypeComponentInstance, + IPublicModelSensor, + IPublicTypeNodeInstance, + IPublicTypePackage, +} from '@lce/lowcode-types'; import { Point, ScrollTarget, ILocateEvent, IDesigner } from './designer'; import { BuiltinSimulatorRenderer } from './builtin-simulator/renderer'; import { INode } from './document'; @@ -9,10 +17,8 @@ export type AutoFit = '100%'; // eslint-disable-next-line no-redeclare export const AutoFit = '100%'; -export interface IScrollable extends IPublicTypeScrollable { -} +export interface IScrollable extends IPublicTypeScrollable {} export interface IViewport extends IScrollable { - /** * 视口大小 */ @@ -164,13 +170,22 @@ export interface ISimulatorHost<P = object> extends IPublicModelSensor<INode> { */ getComponentContext(node: INode): object | null; - getClosestNodeInstance(from: IPublicTypeComponentInstance, specId?: string): IPublicTypeNodeInstance | null; + getClosestNodeInstance( + from: IPublicTypeComponentInstance, + specId?: string, + ): IPublicTypeNodeInstance | null; computeRect(node: INode): DOMRect | null; - computeComponentInstanceRect(instance: IPublicTypeComponentInstance, selector?: string): DOMRect | null; + computeComponentInstanceRect( + instance: IPublicTypeComponentInstance, + selector?: string, + ): DOMRect | null; - findDOMNodes(instance: IPublicTypeComponentInstance, selector?: string): Array<Element | Text> | null; + findDOMNodes( + instance: IPublicTypeComponentInstance, + selector?: string, + ): Array<Element | Text> | null; getDropContainer(e: ILocateEvent): DropContainer | null; diff --git a/packages/designer/src/transducers/index.ts b/packages/designer/src/transducers/index.ts index 48299f999c..c20b6f6d76 100644 --- a/packages/designer/src/transducers/index.ts +++ b/packages/designer/src/transducers/index.ts @@ -1,4 +1,4 @@ -import { IPublicTypeTransformedComponentMetadata as Metadata } from '@alilc/lowcode-types'; +import { IPublicTypeTransformedComponentMetadata as Metadata } from '@lce/lowcode-types'; export function legacyIssues(metadata: Metadata): Metadata { const { devMode } = metadata; diff --git a/packages/designer/src/types/index.ts b/packages/designer/src/types/index.ts index 50fd82bcd6..505a9f9ff2 100644 --- a/packages/designer/src/types/index.ts +++ b/packages/designer/src/types/index.ts @@ -1,4 +1,9 @@ -import { isFormEvent, compatibleLegaoSchema, getNodeSchemaById, isNodeSchema } from '@alilc/lowcode-utils'; +import { + isFormEvent, + compatibleLegaoSchema, + getNodeSchemaById, + isNodeSchema, +} from '@lce/lowcode-utils'; export type NodeRemoveOptions = { suppressRemoveEvent?: boolean; @@ -17,4 +22,4 @@ export enum EDITOR_EVENT { NODE_VISIBLE_CHANGE = 'node.visible.change', } -export type Utils = typeof utils; \ No newline at end of file +export type Utils = typeof utils; diff --git a/packages/designer/tests/bugs/prop-variable-jse.test.ts b/packages/designer/tests/bugs/prop-variable-jse.test.ts index 0f32f0b57d..a5ca262ea1 100644 --- a/packages/designer/tests/bugs/prop-variable-jse.test.ts +++ b/packages/designer/tests/bugs/prop-variable-jse.test.ts @@ -1,6 +1,6 @@ -import { Editor } from '@alilc/lowcode-editor-core'; -import { IPublicEnumTransformStage } from '@alilc/lowcode-types'; -import { isPlainObject, isVariable, isJSBlock } from '@alilc/lowcode-utils'; +import { Editor } from '@lce/lowcode-editor-core'; +import { IPublicEnumTransformStage } from '@lce/lowcode-types'; +import { isPlainObject, isVariable, isJSBlock } from '@lce/lowcode-utils'; import '../fixtures/window'; import { Designer } from '../../src/designer/designer'; import { DocumentModel } from '../../src/document/document-model'; @@ -67,6 +67,6 @@ describe('Node 方法测试', () => { expect(form.getPropValue('dataSource')).toEqual({ type: 'JSExpression', value: 'state.formData', - }) + }); }); }); diff --git a/packages/designer/tests/builtin-simulator/bem-tools/drag-resize-engine.test.ts b/packages/designer/tests/builtin-simulator/bem-tools/drag-resize-engine.test.ts index ccdc4b2b63..650c798d0d 100644 --- a/packages/designer/tests/builtin-simulator/bem-tools/drag-resize-engine.test.ts +++ b/packages/designer/tests/builtin-simulator/bem-tools/drag-resize-engine.test.ts @@ -1,5 +1,5 @@ import '../../fixtures/window'; -import { Editor, globalContext } from '@alilc/lowcode-editor-core'; +import { Editor, globalContext } from '@lce/lowcode-editor-core'; import { Project } from '../../../src/project/project'; import { DocumentModel } from '../../../src/document/document-model'; import { Designer } from '../../../src/designer/designer'; @@ -46,10 +46,9 @@ describe('DragResizeEngine 测试', () => { const offResize = resizeEngine.onResize(resizeMockFn); const offResizeEnd = resizeEngine.onResizeEnd(resizeEndMockFn); const boostedNode = doc.getNode('node_k1ow3cbn'); - const mockBoostFn = jest - .fn((e) => { - return boostedNode; - }); + const mockBoostFn = jest.fn((e) => { + return boostedNode; + }); // do nothing const noop = resizeEngine.from(); @@ -114,10 +113,9 @@ describe('DragResizeEngine 测试', () => { contentDocument: document, }); - const mockBoostFn = jest - .fn((e) => { - return doc.getNode('node_k1ow3cbn'); - }); + const mockBoostFn = jest.fn((e) => { + return doc.getNode('node_k1ow3cbn'); + }); const offFrom = resizeEngine.from(document, 'e', mockBoostFn); diff --git a/packages/designer/tests/builtin-simulator/bem-tools/manager.test.tsx b/packages/designer/tests/builtin-simulator/bem-tools/manager.test.tsx index bed1e27de9..1aaa194136 100644 --- a/packages/designer/tests/builtin-simulator/bem-tools/manager.test.tsx +++ b/packages/designer/tests/builtin-simulator/bem-tools/manager.test.tsx @@ -1,5 +1,5 @@ import '../../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Designer } from '../../../src/designer/designer'; import { BemToolsManager } from '../../../src/builtin-simulator/bem-tools/manager'; import { shellModelFactory } from '../../../../engine/src/modules/shell-model-factory'; @@ -30,14 +30,18 @@ describe('Node 方法测试', () => { it('addBemTools / removeBemTools / getAllBemTools', () => { manager.addBemTools({ name: 't1', - item: (props: any) => { return <div />; }, + item: (props: any) => { + return <div />; + }, }); expect(manager.getAllBemTools().length).toBe(1); expect(() => { manager.addBemTools({ name: 't1', - item: (props: any) => { return <div />; }, + item: (props: any) => { + return <div />; + }, }); }).toThrow(/already exists/); @@ -47,4 +51,4 @@ describe('Node 方法测试', () => { manager.removeBemTools('t1'); expect(manager.getAllBemTools().length).toBe(0); }); -}); \ No newline at end of file +}); diff --git a/packages/designer/tests/builtin-simulator/host.test.ts b/packages/designer/tests/builtin-simulator/host.test.ts index d74c31d42c..1082c3a2e7 100644 --- a/packages/designer/tests/builtin-simulator/host.test.ts +++ b/packages/designer/tests/builtin-simulator/host.test.ts @@ -5,14 +5,10 @@ import { globalContext, Hotkey as InnerHotkey, Setters as InnerSetters, -} from '@alilc/lowcode-editor-core'; -import { Workspace as InnerWorkspace } from '@alilc/lowcode-workspace'; -import { - AssetType, -} from '@alilc/lowcode-utils'; -import { - IPublicEnumDragObjectType, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-editor-core'; +import { Workspace as InnerWorkspace } from '@lce/lowcode-workspace'; +import { AssetType } from '@lce/lowcode-utils'; +import { IPublicEnumDragObjectType } from '@lce/lowcode-types'; import { Project } from '../../src/project/project'; import pageMetadata from '../fixtures/component-metadata/page'; import { Designer } from '../../src/designer/designer'; @@ -22,11 +18,13 @@ import { getMockDocument, getMockWindow, getMockEvent, delayObxTick } from '../u import { BuiltinSimulatorHost } from '../../src/builtin-simulator/host'; import { fireEvent } from '@testing-library/react'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; -import { Setters, Workspace } from '@alilc/lowcode-shell'; -import { ILowCodePluginContextApiAssembler, ILowCodePluginContextPrivate, LowCodePluginManager } from '@alilc/lowcode-designer'; +import { Setters, Workspace } from '@lce/lowcode-shell'; import { - Skeleton as InnerSkeleton, -} from '@alilc/lowcode-editor-skeleton'; + ILowCodePluginContextApiAssembler, + ILowCodePluginContextPrivate, + LowCodePluginManager, +} from '@lce/lowcode-designer'; +import { Skeleton as InnerSkeleton } from '@lce/lowcode-editor-skeleton'; describe('Host 测试', () => { let editor: Editor; @@ -39,7 +37,11 @@ describe('Host 测试', () => { editor = new Editor(); const pluginContextApiAssembler: ILowCodePluginContextApiAssembler = { // eslint-disable-next-line @typescript-eslint/no-unused-vars - assembleApis: (context: ILowCodePluginContextPrivate, pluginName: string, meta: IPublicTypePluginMeta) => { + assembleApis: ( + context: ILowCodePluginContextPrivate, + pluginName: string, + meta: IPublicTypePluginMeta, + ) => { context.project = project; const eventPrefix = meta?.eventPrefix || 'common'; context.workspace = workspace; @@ -50,7 +52,7 @@ describe('Host 测试', () => { const workspace = new Workspace(innerWorkspace); const innerSkeleton = new InnerSkeleton(editor); editor.set('skeleton' as any, innerSkeleton); - editor.set('innerHotkey', new InnerHotkey()) + editor.set('innerHotkey', new InnerHotkey()); editor.set('setters', new Setters(new InnerSetters())); editor.set('innerPlugins' as any, innerPlugins); !globalContext.has(Editor) && globalContext.register(editor, Editor); @@ -219,19 +221,25 @@ describe('Host 测试', () => { }); it('findDOMNodes', () => { - host.connect({ - findDOMNodes: () => { - return null; + host.connect( + { + findDOMNodes: () => { + return null; + }, }, - }, () => {}); + () => {}, + ); expect(host.findDOMNodes()).toBeNull(); const mockElems = [document.createElement('div')]; - host.connect({ - findDOMNodes: () => { - return mockElems; + host.connect( + { + findDOMNodes: () => { + return mockElems; + }, }, - }, () => {}); + () => {}, + ); expect(host.findDOMNodes({})).toBe(mockElems); expect(host.findDOMNodes({}, 'xxx')).toBeNull(); expect(host.findDOMNodes({}, 'div')).toEqual(mockElems); @@ -245,9 +253,12 @@ describe('Host 测试', () => { docId: 'docId', }; }); - host.connect({ - getClosestNodeInstance: mockFn, - }, () => {}); + host.connect( + { + getClosestNodeInstance: mockFn, + }, + () => {}, + ); expect(host.getClosestNodeInstance()).toEqual({ node: {}, nodeId: 'id', @@ -296,8 +307,7 @@ describe('Host 测试', () => { }, }, }; - expect(host.getComponentInstances(mockNode)) - .toEqual([{ comp: true }, { comp2: true }]); + expect(host.getComponentInstances(mockNode)).toEqual([{ comp: true }, { comp2: true }]); const mockInst = { inst: true }; host.getClosestNodeInstance = () => { @@ -305,8 +315,10 @@ describe('Host 测试', () => { instance: mockInst, }; }; - expect(host.getComponentInstances(mockNode, { instance: mockInst })) - .toEqual([{ comp: true }, { comp2: true }]); + expect(host.getComponentInstances(mockNode, { instance: mockInst })).toEqual([ + { comp: true }, + { comp2: true }, + ]); }); it('setNativeSelection / setDraggingState / setCopyState / clearState', () => { @@ -314,12 +326,15 @@ describe('Host 测试', () => { const mockFn2 = jest.fn(); const mockFn3 = jest.fn(); const mockFn4 = jest.fn(); - host.connect({ - setNativeSelection: mockFn1, - setDraggingState: mockFn2, - setCopyState: mockFn3, - clearState: mockFn4, - }, () => {}); + host.connect( + { + setNativeSelection: mockFn1, + setDraggingState: mockFn2, + setCopyState: mockFn3, + clearState: mockFn4, + }, + () => {}, + ); host.setNativeSelection(true); expect(mockFn1).toHaveBeenCalledWith(true); host.setDraggingState(false); @@ -337,11 +352,14 @@ describe('Host 测试', () => { }); it('getComponent', () => { - host.connect({ - getComponent: () => { - return {}; + host.connect( + { + getComponent: () => { + return {}; + }, }, - }, () => {}); + () => {}, + ); expect(host.getComponent()).toEqual({}); expect(host.createComponent()).toBeNull(); expect(host.setSuspense()).toBeFalsy(); @@ -372,30 +390,36 @@ describe('Host 测试', () => { }); }); it('locate,没有 nodes', () => { - expect(host.locate({ - dragObject: { - type: IPublicEnumDragObjectType.Node, - nodes: [], - }, - })).toBeUndefined(); + expect( + host.locate({ + dragObject: { + type: IPublicEnumDragObjectType.Node, + nodes: [], + }, + }), + ).toBeUndefined(); }); it('locate,没有 document', () => { project.removeDocument(doc); - expect(host.locate({ - dragObject: { - type: IPublicEnumDragObjectType.Node, - nodes: [doc.getNode('page')], - }, - })).toBeNull(); + expect( + host.locate({ + dragObject: { + type: IPublicEnumDragObjectType.Node, + nodes: [doc.getNode('page')], + }, + }), + ).toBeNull(); }); it('notFoundComponent', () => { - expect(host.locate({ - dragObject: { - type: IPublicEnumDragObjectType.Node, - nodes: [doc.getNode('form')], - }, - })).toBeUndefined(); - }) + expect( + host.locate({ + dragObject: { + type: IPublicEnumDragObjectType.Node, + nodes: [doc.getNode('form')], + }, + }), + ).toBeUndefined(); + }); it('locate', () => { host.locate({ dragObject: { @@ -432,7 +456,15 @@ describe('Host 测试', () => { host.setupContextMenu(); host.getNodeInstanceFromElement = () => { return { - node: { componentMeta: { componentName: 'Button', getMetadata() { return {} } }, contains() {} }, + node: { + componentMeta: { + componentName: 'Button', + getMetadata() { + return {}; + }, + }, + contains() {}, + }, }; }; const mockFn = jest.fn(); diff --git a/packages/designer/tests/builtin-simulator/renderer.test.tsx b/packages/designer/tests/builtin-simulator/renderer.test.tsx index 776d1c948e..04c90c60d8 100644 --- a/packages/designer/tests/builtin-simulator/renderer.test.tsx +++ b/packages/designer/tests/builtin-simulator/renderer.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import set from 'lodash/set'; import cloneDeep from 'lodash/cloneDeep'; import '../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { Node } from '../../src/document/node/node'; import TestRenderer from 'react-test-renderer'; @@ -13,7 +13,6 @@ import formSchema from '../fixtures/schema/form'; import { getMockRenderer } from '../utils'; import { isSimulatorRenderer } from '../../src/builtin-simulator/renderer'; - describe('renderer 测试', () => { it('renderer', () => { expect(isSimulatorRenderer(getMockRenderer())).toBeTruthy(); diff --git a/packages/designer/tests/builtin-simulator/viewport.test.ts b/packages/designer/tests/builtin-simulator/viewport.test.ts index e9972fc7c3..8241cf8d70 100644 --- a/packages/designer/tests/builtin-simulator/viewport.test.ts +++ b/packages/designer/tests/builtin-simulator/viewport.test.ts @@ -1,13 +1,12 @@ import '../fixtures/window'; import { getMockWindow, getMockElement, delay } from '../utils'; -import { Editor, globalContext } from '@alilc/lowcode-editor-core'; +import { Editor, globalContext } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { DocumentModel } from '../../src/document/document-model'; import Viewport from '../../src/builtin-simulator/viewport'; import { Designer } from '../../src/designer/designer'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; - describe('Viewport 测试', () => { let editor: Editor; let designer: Designer; @@ -117,8 +116,12 @@ describe('Viewport 测试', () => { viewportElem.setHeight(300); expect(viewport.contentHeight).toBe(300 / 2); - expect(() => { viewport.scale = NaN; }).toThrow(); - expect(() => { viewport.scale = -1; }).toThrow(); + expect(() => { + viewport.scale = NaN; + }).toThrow(); + expect(() => { + viewport.scale = -1; + }).toThrow(); }); it('setScrollTarget / scrollTarget / scrolling', async () => { @@ -170,11 +173,23 @@ describe('Viewport 测试', () => { viewport = new Viewport(); viewport.mount(viewportElem); - expect(viewport.toGlobalPoint({ clientX: 100, clientY: 100 })).toEqual({ clientX: 200, clientY: 200 }); - expect(viewport.toLocalPoint({ clientX: 200, clientY: 200 })).toEqual({ clientX: 100, clientY: 100 }); + expect(viewport.toGlobalPoint({ clientX: 100, clientY: 100 })).toEqual({ + clientX: 200, + clientY: 200, + }); + expect(viewport.toLocalPoint({ clientX: 200, clientY: 200 })).toEqual({ + clientX: 100, + clientY: 100, + }); viewport.scale = 2; - expect(viewport.toGlobalPoint({ clientX: 100, clientY: 100 })).toEqual({ clientX: 300, clientY: 300 }); - expect(viewport.toLocalPoint({ clientX: 300, clientY: 300 })).toEqual({ clientX: 100, clientY: 100 }); + expect(viewport.toGlobalPoint({ clientX: 100, clientY: 100 })).toEqual({ + clientX: 300, + clientY: 300, + }); + expect(viewport.toLocalPoint({ clientX: 300, clientY: 300 })).toEqual({ + clientX: 100, + clientY: 100, + }); }); }); diff --git a/packages/designer/tests/designer/builtin-hotkey.test.ts b/packages/designer/tests/designer/builtin-hotkey.test.ts index 9cb068ac19..60fded7bfc 100644 --- a/packages/designer/tests/designer/builtin-hotkey.test.ts +++ b/packages/designer/tests/designer/builtin-hotkey.test.ts @@ -1,18 +1,14 @@ import '../fixtures/window'; -import { - Editor, - globalContext, - Hotkey as InnerHotkey, -} from '@alilc/lowcode-editor-core'; +import { Editor, globalContext, Hotkey as InnerHotkey } from '@lce/lowcode-editor-core'; import { Designer } from '../../src/designer/designer'; import formSchema from '../fixtures/schema/form'; import { fireEvent } from '@testing-library/react'; import { builtinHotkey } from '../../../engine/src/inner-plugins/builtin-hotkey'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; -import { ILowCodePluginContextPrivate, LowCodePluginManager } from '@alilc/lowcode-designer'; -import { IPublicApiPlugins } from '@alilc/lowcode-types'; -import { Logger, Project, Canvas } from '@alilc/lowcode-shell'; -import { Workspace } from '@alilc/lowcode-workspace'; +import { ILowCodePluginContextPrivate, LowCodePluginManager } from '@lce/lowcode-designer'; +import { IPublicApiPlugins } from '@lce/lowcode-types'; +import { Logger, Project, Canvas } from '@lce/lowcode-shell'; +import { Workspace } from '@lce/lowcode-workspace'; const editor = new Editor(); const workspace = new Workspace(); @@ -29,13 +25,13 @@ describe('快捷键测试', () => { const hotkey: any = new InnerHotkey(); const logger = new Logger({ level: 'warn', bizName: 'common' }); const contextApiAssembler = { - assembleApis(context: ILowCodePluginContextPrivate){ + assembleApis(context: ILowCodePluginContextPrivate) { context.plugins = pluginManager as IPublicApiPlugins; context.hotkey = hotkey; context.logger = logger; context.project = project; context.canvas = new Canvas(editor); - } + }, }; pluginManager = new LowCodePluginManager(contextApiAssembler).toProxy(); pluginManager.register(builtinHotkey); @@ -45,7 +41,7 @@ describe('快捷键测试', () => { pluginManager.init().then(() => { resolve({}); }); - }) + }); }); afterAll(() => { pluginManager.dispose(); @@ -138,12 +134,12 @@ describe('快捷键测试', () => { let secondButtonNode = designer.currentDocument?.getNode('node_k1ow3cbp')!; // 等待第一个 session 结束 - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); firstButtonNode.remove(); expect(secondButtonNode.getParent()?.children.size).toBe(1); - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); fireEvent.keyDown(document, { keyCode: 90, metaKey: true }); @@ -158,12 +154,12 @@ describe('快捷键测试', () => { let secondButtonNode = designer.currentDocument?.getNode('node_k1ow3cbp')!; // 等待第一个 session 结束 - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); firstButtonNode.remove(); expect(secondButtonNode.getParent()?.children.size).toBe(1); - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); fireEvent.keyDown(document, { keyCode: 90, metaKey: true }); @@ -171,7 +167,7 @@ describe('快捷键测试', () => { secondButtonNode = designer.currentDocument?.getNode('node_k1ow3cbp')!; expect(secondButtonNode.getParent()?.children.size).toBe(2); - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); fireEvent.keyDown(document, { keyCode: 89, metaKey: true }); @@ -195,7 +191,7 @@ describe('快捷键测试', () => { fireEvent.keyDown(document, { keyCode: 86, metaKey: true }); - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); // clipboard 异步,先注释 // expect(secondButtonNode.getParent()?.children.size).toBe(3); @@ -226,7 +222,6 @@ describe('快捷键测试', () => { expect(secondButtonNode.prevSibling).toBeNull(); }); - describe('非正常分支', () => { it('liveEditing mode', () => { designer.project.mountSimulator({ @@ -392,4 +387,4 @@ describe('快捷键测试', () => { fireEvent.keyDown(document, { keyCode: 46 }); }); }); -}); \ No newline at end of file +}); diff --git a/packages/designer/tests/designer/designer.test.ts b/packages/designer/tests/designer/designer.test.ts index 8bca7d84a1..40f561901f 100644 --- a/packages/designer/tests/designer/designer.test.ts +++ b/packages/designer/tests/designer/designer.test.ts @@ -1,5 +1,5 @@ import '../fixtures/window'; -import { Editor, globalContext, Setters } from '@alilc/lowcode-editor-core'; +import { Editor, globalContext, Setters } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { DocumentModel } from '../../src/document/document-model'; import { Designer } from '../../src/designer/designer'; @@ -11,7 +11,7 @@ import pageMetadata from '../fixtures/component-metadata/page'; import divMetadata from '../fixtures/component-metadata/div'; import { delayObxTick } from '../utils'; import { fireEvent } from '@testing-library/react'; -import { IPublicEnumDragObjectType, IPublicEnumTransformStage } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType, IPublicEnumTransformStage } from '@lce/lowcode-types'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; const mockNode = { @@ -142,9 +142,11 @@ describe('Designer 测试', () => { dragon.boost( { type: IPublicEnumDragObjectType.NodeData, - data: [{ - componentName: 'Button', - }], + data: [ + { + componentName: 'Button', + }, + ], }, new MouseEvent('mousedown', { clientX: 100, clientY: 100 }), ); @@ -192,9 +194,13 @@ describe('Designer 测试', () => { it('addPropsReducer / transformProps', () => { // 没有相应的 reducer - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Init)).toEqual({ num: 1 }); + expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Init)).toEqual({ + num: 1, + }); // props 是数组 - expect(designer.transformProps([{ num: 1 }], mockNode, IPublicEnumTransformStage.Init)).toEqual([{ num: 1 }]); + expect(designer.transformProps([{ num: 1 }], mockNode, IPublicEnumTransformStage.Init)).toEqual( + [{ num: 1 }], + ); designer.addPropsReducer((props, node) => { props.num += 1; @@ -231,17 +237,31 @@ describe('Designer 测试', () => { return props; }, IPublicEnumTransformStage.Upgrade); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Init)).toEqual({ num: 3 }); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Clone)).toEqual({ num: 2 }); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Serilize)).toEqual({ num: 2 }); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Render)).toEqual({ num: 2 }); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Save)).toEqual({ num: 2 }); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Upgrade)).toEqual({ num: 2 }); + expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Init)).toEqual({ + num: 3, + }); + expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Clone)).toEqual({ + num: 2, + }); + expect( + designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Serilize), + ).toEqual({ num: 2 }); + expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Render)).toEqual( + { num: 2 }, + ); + expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Save)).toEqual({ + num: 2, + }); + expect( + designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Upgrade), + ).toEqual({ num: 2 }); designer.addPropsReducer((props, node) => { throw new Error('calculate error'); }, IPublicEnumTransformStage.Upgrade); - expect(designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Upgrade)).toEqual({ num: 2 }); + expect( + designer.transformProps({ num: 1 }, mockNode, IPublicEnumTransformStage.Upgrade), + ).toEqual({ num: 2 }); }); it('setProps', () => { @@ -256,14 +276,18 @@ describe('Designer 测试', () => { editor, shellModelFactory, ...initialProps, - }); + }); expect(designer.simulatorComponent).toEqual({ isSimulatorComp: true }); expect(designer.simulatorProps).toEqual({ designMode: 'design' }); expect(designer.suspensed).toBeTruthy(); expect((designer as any)._componentMetasMap.has('Div')).toBeTruthy(); expect((designer as any)._componentMetasMap.has('Button')).toBeTruthy(); - const { editor: editorFromDesigner, shellModelFactory: shellModelFactoryFromDesigner, ...others } = (designer as any).props; + const { + editor: editorFromDesigner, + shellModelFactory: shellModelFactoryFromDesigner, + ...others + } = (designer as any).props; expect(others).toEqual(initialProps); expect(designer.get('simulatorProps')).toEqual({ designMode: 'design' }); expect(designer.get('suspensed')).toBeTruthy(); @@ -283,7 +307,11 @@ describe('Designer 测试', () => { expect(designer.suspensed).toBeFalsy(); expect((designer as any)._componentMetasMap.has('Button')).toBeTruthy(); expect((designer as any)._componentMetasMap.has('Div')).toBeTruthy(); - const { editor: editorFromDesigner2, shellModelFactory: shellModelFactoryFromDesigner2, ...others2 } = (designer as any).props; + const { + editor: editorFromDesigner2, + shellModelFactory: shellModelFactoryFromDesigner2, + ...others2 + } = (designer as any).props; expect(others2).toEqual(updatedProps); // 第三次设置 props,跟第二次值一样,for 覆盖率测试 @@ -295,7 +323,11 @@ describe('Designer 测试', () => { expect(designer.suspensed).toBeFalsy(); expect((designer as any)._componentMetasMap.has('Button')).toBeTruthy(); expect((designer as any)._componentMetasMap.has('Div')).toBeTruthy(); - const { editor: editorFromDesigner3, shellModelFactory: shellModelFactoryFromDesigner3, ...others3 } = (designer as any).props; + const { + editor: editorFromDesigner3, + shellModelFactory: shellModelFactoryFromDesigner3, + ...others3 + } = (designer as any).props; expect(others3).toEqual(updatedProps); }); @@ -373,13 +405,16 @@ describe('Designer 测试', () => { setupComponents: fn, }); await designer.loadIncrementalAssets({ - components: [{ - componentName: 'Div2', - title: '容器', - docUrl: 'http://gitlab.alibaba-inc.com/vision-components/vc-block/blob/master/README.md', - devMode: 'proCode', - tags: ['布局'], - }], + components: [ + { + componentName: 'Div2', + title: '容器', + docUrl: + 'http://gitlab.alibaba-inc.com/vision-components/vc-block/blob/master/README.md', + devMode: 'proCode', + tags: ['布局'], + }, + ], packages: [], }); diff --git a/packages/designer/tests/designer/dragon.test.ts b/packages/designer/tests/designer/dragon.test.ts index 1041f0425d..510e4f2a7f 100644 --- a/packages/designer/tests/designer/dragon.test.ts +++ b/packages/designer/tests/designer/dragon.test.ts @@ -1,5 +1,5 @@ import '../fixtures/window'; -import { Editor, globalContext } from '@alilc/lowcode-editor-core'; +import { Editor, globalContext } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { DocumentModel } from '../../src/document/document-model'; import { Designer } from '../../src/designer/designer'; @@ -14,7 +14,7 @@ import { isInvalidPoint, isSameAs, } from '../../src/designer/dragon'; -import { IPublicEnumDragObjectType } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType } from '@lce/lowcode-types'; import formSchema from '../fixtures/schema/form'; import { fireEvent } from '@testing-library/react'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; @@ -327,7 +327,9 @@ describe('导出的其他函数', () => { expect(isDragNodeObject({ type: IPublicEnumDragObjectType.Node, nodes: [] })).toBeTruthy(); }); it('isDragNodeDataObject', () => { - expect(isDragNodeDataObject({ type: IPublicEnumDragObjectType.NodeData, data: [] })).toBeTruthy(); + expect( + isDragNodeDataObject({ type: IPublicEnumDragObjectType.NodeData, data: [] }), + ).toBeTruthy(); }); it('isDragAnyObject', () => { expect(isDragAnyObject()).toBeFalsy(); diff --git a/packages/designer/tests/designer/scroller.test.ts b/packages/designer/tests/designer/scroller.test.ts index ff03608b04..4a54bd7511 100644 --- a/packages/designer/tests/designer/scroller.test.ts +++ b/packages/designer/tests/designer/scroller.test.ts @@ -1,12 +1,10 @@ import '../fixtures/window'; -import { Editor, globalContext } from '@alilc/lowcode-editor-core'; +import { Editor, globalContext } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { DocumentModel } from '../../src/document/document-model'; import { ScrollTarget, Scroller } from '../../src/designer/scroller'; import { Designer } from '../../src/designer/designer'; -import { - Dragon, -} from '../../src/designer/dragon'; +import { Dragon } from '../../src/designer/dragon'; import formSchema from '../fixtures/schema/form'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; @@ -51,8 +49,12 @@ describe('Scroller 测试', () => { scrollY = x.top; } }, - get scrollX() { return scrollX; }, - get scrollY() { return scrollY; }, + get scrollX() { + return scrollX; + }, + get scrollY() { + return scrollY; + }, scrollHeight: 1000, scrollWidth: 500, document: {}, @@ -91,7 +93,10 @@ describe('Scroller 测试', () => { it('scrollTarget: ScrollTarget', () => { const win = getMockWindow(); const scrollTarget = new ScrollTarget(win); - const scroller = new Scroller({ scrollTarget, bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 } }); + const scroller = new Scroller({ + scrollTarget, + bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 }, + }); mockRAF(); scroller.scrollTo({ left: 50, top: 50 }); @@ -102,7 +107,10 @@ describe('Scroller 测试', () => { it('scrollTarget: ScrollTarget, same left / top', () => { const win = getMockWindow(); const scrollTarget = new ScrollTarget(win); - const scroller = new Scroller({ scrollTarget, bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 } }); + const scroller = new Scroller({ + scrollTarget, + bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 }, + }); mockRAF(); scrollTarget.scrollTo({ left: 50, top: 50 }); scroller.scrollTo({ left: 50, top: 50 }); @@ -114,7 +122,10 @@ describe('Scroller 测试', () => { it('scrollTarget: Element', () => { const win = getMockWindow(); // const scrollTarget = new ScrollTarget(win); - const scroller = new Scroller({ scrollTarget: win, bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 } }); + const scroller = new Scroller({ + scrollTarget: win, + bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 }, + }); mockRAF(); scroller.scrollTo({ left: 50, top: 50 }); @@ -125,7 +136,10 @@ describe('Scroller 测试', () => { it('scrollTarget: null', () => { const win = getMockWindow(); // const scrollTarget = new ScrollTarget(win); - const scroller = new Scroller({ scrollTarget: null, bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 } }); + const scroller = new Scroller({ + scrollTarget: null, + bounds: { width: 50, height: 50, top: 50, bottom: 50, left: 50, right: 50 }, + }); mockRAF(); scroller.scrollTo({ left: 50, top: 50 }); diff --git a/packages/designer/tests/designer/setting/setting-field.test.ts b/packages/designer/tests/designer/setting/setting-field.test.ts index 53ed2829df..db62406ce1 100644 --- a/packages/designer/tests/designer/setting/setting-field.test.ts +++ b/packages/designer/tests/designer/setting/setting-field.test.ts @@ -1,12 +1,7 @@ // @ts-nocheck import '../../fixtures/window'; -import { - Editor, - Setters as InnerSetters, -} from '@alilc/lowcode-editor-core'; -import { - Setters, -} from '@alilc/lowcode-shell'; +import { Editor, Setters as InnerSetters } from '@lce/lowcode-editor-core'; +import { Setters } from '@lce/lowcode-shell'; import { SettingTopEntry } from '../../../src/designer/setting/setting-top-entry'; import { SettingField } from '../../../src/designer/setting/setting-field'; import { Node } from '../../../src/document/node/node'; @@ -79,7 +74,7 @@ describe('setting-field 测试', () => { }); expect(field.items).toHaveLength(0); expect(field.getItems()).toHaveLength(0); - expect(field.getItems(x => x)).toHaveLength(0); + expect(field.getItems((x) => x)).toHaveLength(0); expect(field.setter.componentName).toBe('MixedSetter'); field.purge(); @@ -110,7 +105,7 @@ describe('setting-field 测试', () => { const objField = settingEntry.get('obj'); expect(objField.items).toHaveLength(3); expect(objField.getItems()).toHaveLength(3); - expect(objField.getItems(x => x.name === 'a')).toHaveLength(1); + expect(objField.getItems((x) => x.name === 'a')).toHaveLength(1); objField.purge(); expect(objField.items).toHaveLength(0); const objAField = settingEntry.get('obj.a'); @@ -155,17 +150,17 @@ describe('setting-field 测试', () => { name: '2', title: 'sub', }); - subArrField.setValue({name: '1'}); + subArrField.setValue({ name: '1' }); expect(subArrField.path).toEqual(['arr', 0]); expect(subArrField02.path).toEqual(['arr', 1]); - subArrField02.setValue({name: '2'}); - expect(subArrField.getValue()).toEqual({name: '1'}); - expect(arrField.getHotValue()).toEqual([{name: '1'}, {name: '2'}]); + subArrField02.setValue({ name: '2' }); + expect(subArrField.getValue()).toEqual({ name: '1' }); + expect(arrField.getHotValue()).toEqual([{ name: '1' }, { name: '2' }]); subArrField.clearValue(); expect(subArrField.getValue()).toBeUndefined(); - expect(arrField.getHotValue()).toEqual([undefined, {name: '2'}]); - subArrField03.setValue({name: '3'}); - expect(arrField.getHotValue()).toEqual([undefined, {name: '2'}, {name: '3'}]); + expect(arrField.getHotValue()).toEqual([undefined, { name: '2' }]); + subArrField03.setValue({ name: '3' }); + expect(arrField.getHotValue()).toEqual([undefined, { name: '2' }, { name: '3' }]); }); it('js expression setValue / setHotValue', () => { @@ -232,10 +227,10 @@ describe('setting-field 测试', () => { const mockFnSubArrField = jest.fn(); const mockFnObjSubField = jest.fn(); - arrField.setValue([{ objSub: "subMock0.Index.0" }]); + arrField.setValue([{ objSub: 'subMock0.Index.0' }]); // 这里需要 setValue 两遍,触发 prop 的 purge 方法,使 purged 为 true,之后的 purge 方法不会正常执行,prop 才能正常缓存,autorun 才能正常执行 // TODO: 该机制后续得研究一下,再确定是否要修改 - arrField.setValue([{ objSub: "subMock0.Index.0" }]); + arrField.setValue([{ objSub: 'subMock0.Index.0' }]); arrField.onEffect(() => { mockFnArrField(arrField.getValue()); @@ -250,32 +245,32 @@ describe('setting-field 测试', () => { await delayObxTick(); expect(mockFnObjSubField).toHaveBeenCalledWith('subMock0.Index.0'); - expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: "subMock0.Index.0" }); - expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: "subMock0.Index.0" }]); + expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: 'subMock0.Index.0' }); + expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: 'subMock0.Index.0' }]); - arrField.setValue([{ objSub: "subMock0.Index.1" }]); + arrField.setValue([{ objSub: 'subMock0.Index.1' }]); await delayObxTick(); expect(mockFnObjSubField).toHaveBeenCalledWith('subMock0.Index.1'); - expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: "subMock0.Index.1" }); - expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: "subMock0.Index.1" }]); + expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: 'subMock0.Index.1' }); + expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: 'subMock0.Index.1' }]); - subArrField.setValue({ objSub: "subMock0.Index.2" }); + subArrField.setValue({ objSub: 'subMock0.Index.2' }); await delayObxTick(); expect(mockFnObjSubField).toHaveBeenCalledWith('subMock0.Index.2'); - expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: "subMock0.Index.2" }); - expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: "subMock0.Index.2" }]); + expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: 'subMock0.Index.2' }); + expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: 'subMock0.Index.2' }]); objSubField.setValue('subMock0.Index.3'); await delayObxTick(); expect(mockFnObjSubField).toHaveBeenCalledWith('subMock0.Index.3'); - expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: "subMock0.Index.3" }); - expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: "subMock0.Index.3" }]); - }) + expect(mockFnSubArrField).toHaveBeenCalledWith({ objSub: 'subMock0.Index.3' }); + expect(mockFnArrField).toHaveBeenCalledWith([{ objSub: 'subMock0.Index.3' }]); + }); }); }); diff --git a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts index 3ece67af76..b70462cec4 100644 --- a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts +++ b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts @@ -1,8 +1,5 @@ import '../../fixtures/window'; -import { - Editor, - Setters as InnerSetters, -} from '@alilc/lowcode-editor-core'; +import { Editor, Setters as InnerSetters } from '@lce/lowcode-editor-core'; import { SettingTopEntry } from '../../../src/designer/setting/setting-top-entry'; import { SettingPropEntry } from '../../../src/designer/setting/setting-prop-entry'; import { Node } from '../../../src/document/node/node'; @@ -48,7 +45,7 @@ describe('setting-prop-entry 测试', () => { type: 'JSExpression', value: 'state.a', mock: 111, - } + }, }, }); mockTopEntry = new SettingTopEntry(editor, [mockNode]); @@ -77,7 +74,9 @@ describe('setting-prop-entry 测试', () => { prop1.extraProps = { getValue: (prop, val) => `prefix ${val}`, // prop 是 shell prop entry - setValue: (prop, val) => { prop.setValue(`modified ${val}`, { disableMutator: true }) }, + setValue: (prop, val) => { + prop.setValue(`modified ${val}`, { disableMutator: true }); + }, defaultValue: 'default', }; @@ -107,7 +106,9 @@ describe('setting-prop-entry 测试', () => { const prop4 = mockTopEntry.getProp('b'); prop4.extraProps = { - getValue: () => { throw 'error'; }, + getValue: () => { + throw 'error'; + }, }; expect(prop4.getValue()).toBe(222); }); diff --git a/packages/designer/tests/designer/setting/setting-top-entry.test.ts b/packages/designer/tests/designer/setting/setting-top-entry.test.ts index 23a42c2afc..be4bc0b209 100644 --- a/packages/designer/tests/designer/setting/setting-top-entry.test.ts +++ b/packages/designer/tests/designer/setting/setting-top-entry.test.ts @@ -1,5 +1,5 @@ import '../../fixtures/window'; -import { Editor, Setters } from '@alilc/lowcode-editor-core'; +import { Editor, Setters } from '@lce/lowcode-editor-core'; import { Node } from '../../../src/document/node/node'; import { Designer } from '../../../src/designer/designer'; import settingSchema from '../../fixtures/schema/setting'; @@ -11,7 +11,7 @@ const editor = new Editor(); describe('setting-top-entry 测试', () => { let designer: Designer; beforeEach(() => { - editor.set('setters', new Setters()) + editor.set('setters', new Setters()); designer = new Designer({ editor, shellModelFactory }); }); afterEach(() => { @@ -93,7 +93,7 @@ describe('setting-top-entry 测试', () => { const { settingEntry } = divNode; // 模拟将第一个配置变成 react funcional component - settingEntry.componentMeta.getMetadata().combined[0].items[0] = props => props.xx; + settingEntry.componentMeta.getMetadata().combined[0].items[0] = (props) => props.xx; settingEntry.setupItems(); }); diff --git a/packages/designer/tests/document/document-model/document-model.test.ts b/packages/designer/tests/document/document-model/document-model.test.ts index b47200cbaf..c42a56026d 100644 --- a/packages/designer/tests/document/document-model/document-model.test.ts +++ b/packages/designer/tests/document/document-model/document-model.test.ts @@ -1,6 +1,6 @@ import '../../fixtures/window'; import { DocumentModel, isDocumentModel, isPageSchema } from '../../../src/document/document-model'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../../src/project/project'; import { Designer } from '../../../src/designer/designer'; import formSchema from '../../fixtures/schema/form'; @@ -239,26 +239,18 @@ describe('document-model 测试', () => { data: { componentName: 'Form' }, }), ).toBeTruthy(); - expect( - doc.checkNesting(doc.getNode('page'), doc.getNode('form')) - ).toBeTruthy(); - expect( - doc.checkNesting(doc.getNode('page'), null) - ).toBeTruthy(); + expect(doc.checkNesting(doc.getNode('page'), doc.getNode('form'))).toBeTruthy(); + expect(doc.checkNesting(doc.getNode('page'), null)).toBeTruthy(); expect( doc.checkNesting(doc.getNode('page'), { type: 'nodedata', data: { componentName: 'Other' }, - }) + }), ).toBeFalsy(); - expect( - doc.checkNestingUp(doc.getNode('page'), { componentName: 'Other' }) - ).toBeFalsy(); + expect(doc.checkNestingUp(doc.getNode('page'), { componentName: 'Other' })).toBeFalsy(); - expect( - doc.checkNestingDown(doc.getNode('page'), { componentName: 'Other' }) - ).toBeTruthy(); + expect(doc.checkNestingDown(doc.getNode('page'), { componentName: 'Other' })).toBeTruthy(); expect(doc.checkNestingUp(doc.getNode('page'), null)).toBeTruthy(); }); @@ -268,15 +260,18 @@ describe('document-model 测试', () => { designer.createComponentMeta(otherMeta); const doc = new DocumentModel(project, formSchema); const comps = doc.getComponentsMap(['Other']); - expect(comps.find(comp => comp.componentName === 'Div')).toEqual( - { componentName: 'Div', package: '@ali/vc-div' } - ); - expect(comps.find(comp => comp.componentName === 'Other')).toEqual( - { componentName: 'Other', package: '@ali/vc-other' } - ); - expect(comps.find(comp => comp.componentName === 'Page')).toEqual( - { componentName: 'Page', devMode: 'lowCode' } - ); + expect(comps.find((comp) => comp.componentName === 'Div')).toEqual({ + componentName: 'Div', + package: '@ali/vc-div', + }); + expect(comps.find((comp) => comp.componentName === 'Other')).toEqual({ + componentName: 'Other', + package: '@ali/vc-other', + }); + expect(comps.find((comp) => comp.componentName === 'Page')).toEqual({ + componentName: 'Page', + devMode: 'lowCode', + }); const comps2 = doc.getComponentsMap(['Div']); }); diff --git a/packages/designer/tests/document/history/history.test.ts b/packages/designer/tests/document/history/history.test.ts index 63af8ecbf3..c7c2168964 100644 --- a/packages/designer/tests/document/history/history.test.ts +++ b/packages/designer/tests/document/history/history.test.ts @@ -1,8 +1,8 @@ import '../../fixtures/window'; -import { mobx, makeAutoObservable, globalContext, Editor } from '@alilc/lowcode-editor-core'; +import { mobx, makeAutoObservable, globalContext, Editor } from '@lce/lowcode-editor-core'; import { History } from '../../../src/document/history'; import { delay } from '../../utils/misc'; -import { Workspace } from '@alilc/lowcode-workspace'; +import { Workspace } from '@lce/lowcode-workspace'; class Node { data: number; @@ -161,64 +161,43 @@ describe('History', () => { // step 1 history.back(); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 1, - JSON.stringify(dataCursor2), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(1, JSON.stringify(dataCursor2)); expect(mockStateFn).toHaveBeenNthCalledWith(1, 7); expect(mockRedoFn).toHaveBeenNthCalledWith(1, dataCursor2); // step 2 history.back(); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 2, - JSON.stringify(dataCursor1), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(2, JSON.stringify(dataCursor1)); expect(mockStateFn).toHaveBeenNthCalledWith(2, 7); expect(mockRedoFn).toHaveBeenNthCalledWith(2, dataCursor1); // step 3 history.back(); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 3, - JSON.stringify(dataCursor0), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(3, JSON.stringify(dataCursor0)); expect(mockStateFn).toHaveBeenNthCalledWith(3, 7 - 4 - 1); expect(mockRedoFn).toHaveBeenNthCalledWith(3, dataCursor0); // step 4 history.forward(); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 4, - JSON.stringify(dataCursor1), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(4, JSON.stringify(dataCursor1)); expect(mockStateFn).toHaveBeenNthCalledWith(4, 7); expect(mockRedoFn).toHaveBeenNthCalledWith(4, dataCursor1); // step 5 history.forward(); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 5, - JSON.stringify(dataCursor2), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(5, JSON.stringify(dataCursor2)); expect(mockStateFn).toHaveBeenNthCalledWith(5, 7); expect(mockRedoFn).toHaveBeenNthCalledWith(5, dataCursor2); // step 6 history.go(3); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 6, - JSON.stringify(dataCursor3), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(6, JSON.stringify(dataCursor3)); expect(mockStateFn).toHaveBeenNthCalledWith(6, 7 - 2); expect(mockRedoFn).toHaveBeenNthCalledWith(6, dataCursor3); // step 7 history.go(0); - expect(mockCursorFn).toHaveBeenNthCalledWith( - 7, - JSON.stringify(dataCursor0), - ); + expect(mockCursorFn).toHaveBeenNthCalledWith(7, JSON.stringify(dataCursor0)); expect(mockStateFn).toHaveBeenNthCalledWith(7, 7 - 4 - 1); expect(mockRedoFn).toHaveBeenNthCalledWith(7, dataCursor0); @@ -316,8 +295,7 @@ describe('History - errors', () => { const data = tree.toObject(); return data; }, - (data) => { - }, + (data) => {}, ); history.back(); @@ -330,8 +308,7 @@ describe('History - errors', () => { const data = tree.toObject(); return data; }, - (data) => { - }, + (data) => {}, ); // @ts-ignore @@ -340,4 +317,4 @@ describe('History - errors', () => { history.forward(); history.savePoint(); }); -}); \ No newline at end of file +}); diff --git a/packages/designer/tests/document/node/modal-nodes-manager.test.ts b/packages/designer/tests/document/node/modal-nodes-manager.test.ts index 3e5dcdb79e..6d053c300f 100644 --- a/packages/designer/tests/document/node/modal-nodes-manager.test.ts +++ b/packages/designer/tests/document/node/modal-nodes-manager.test.ts @@ -1,5 +1,5 @@ import '../../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../../src/project/project'; import { DocumentModel } from '../../../src/document/document-model'; import { Node } from '../../../src/document/node/node'; @@ -109,4 +109,4 @@ describe('其他方法', () => { const node = doc.createNode({ componentName: 'Leaf', children: 'haha' }); expect(getModalNodes(node)).toEqual([]); }); -}); \ No newline at end of file +}); diff --git a/packages/designer/tests/document/node/node-children.test.ts b/packages/designer/tests/document/node/node-children.test.ts index 1aa7e3ccb3..6f15ba50d6 100644 --- a/packages/designer/tests/document/node/node-children.test.ts +++ b/packages/designer/tests/document/node/node-children.test.ts @@ -1,10 +1,8 @@ import '../../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../../src/project/project'; import { DocumentModel } from '../../../src/document/document-model'; -import { - Node, -} from '../../../src/document/node/node'; +import { Node } from '../../../src/document/node/node'; import { Designer } from '../../../src/designer/designer'; import formSchema from '../../fixtures/schema/form'; import divMetadata from '../../fixtures/component-metadata/div'; diff --git a/packages/designer/tests/document/node/node.test.ts b/packages/designer/tests/document/node/node.test.ts index 2695d6c838..2be1016745 100644 --- a/packages/designer/tests/document/node/node.test.ts +++ b/packages/designer/tests/document/node/node.test.ts @@ -1,13 +1,9 @@ // @ts-nocheck import '../../fixtures/window'; import { set } from '../../utils'; -import { - Editor, - globalContext, - Setters as InnerSetters, -} from '@alilc/lowcode-editor-core'; +import { Editor, globalContext, Setters as InnerSetters } from '@lce/lowcode-editor-core'; import { Project } from '../../../src/project/project'; -import { Workspace as InnerWorkspace } from '@alilc/lowcode-workspace'; +import { Workspace as InnerWorkspace } from '@lce/lowcode-workspace'; import { DocumentModel } from '../../../src/document/document-model'; import { isRootNode, @@ -27,8 +23,8 @@ import rootHeaderMetadata from '../../fixtures/component-metadata/root-header'; import rootContentMetadata from '../../fixtures/component-metadata/root-content'; import rootFooterMetadata from '../../fixtures/component-metadata/root-footer'; import { shellModelFactory } from '../../../../engine/src/modules/shell-model-factory'; -import { isNode } from '@alilc/lowcode-utils'; -import { Setters } from '@alilc/lowcode-shell'; +import { isNode } from '@lce/lowcode-utils'; +import { Setters } from '@lce/lowcode-shell'; describe('Node 方法测试', () => { let editor: Editor; @@ -73,7 +69,10 @@ describe('Node 方法测试', () => { // Case 3: When children is array test('initialChildren returns result of initialChildren function when children is null ', () => { const node = new Node(doc, { componentName: 'Button', props: { a: 1 } }); - const childrenArray = [{ id: 1, name: 'Child 1' }, { id: 2, name: 'Child 2' }]; + const childrenArray = [ + { id: 1, name: 'Child 1' }, + { id: 2, name: 'Child 2' }, + ]; const result = node.initialChildren(childrenArray); // 预期结果是一个数组 expect(result).toEqual(childrenArray); @@ -106,8 +105,7 @@ describe('Node 方法测试', () => { expect(result).toEqual([false]); }); - - it('condition group', () => { }); + it('condition group', () => {}); it('getExtraProp / setExtraProp', () => { const firstBtn = doc.getNode('node_k1ow3cbn')!; @@ -420,7 +418,7 @@ describe('Node 方法测试', () => { expect(mockFn).not.toHaveBeenCalled(); }); - it('addSlot / unlinkSlot / removeSlot', () => { }); + it('addSlot / unlinkSlot / removeSlot', () => {}); it('setProps', () => { const firstBtn = doc.getNode('node_k1ow3cbn')!; @@ -536,8 +534,8 @@ describe('Node 方法测试', () => { designer.createComponentMeta(divMetadata); designer.createComponentMeta(formMetadata); const callbacks = form.componentMeta.advanced.callbacks; - const fn1 = callbacks.onNodeAdd = jest.fn(); - const fn2 = callbacks.onNodeRemove = jest.fn(); + const fn1 = (callbacks.onNodeAdd = jest.fn()); + const fn2 = (callbacks.onNodeRemove = jest.fn()); const textField = doc.getNode('node_k1ow3cc9'); form.didDropIn(textField); expect(fn1).toHaveBeenCalledWith(textField.internalToShellNode(), form.internalToShellNode()); @@ -599,7 +597,7 @@ describe('Node 方法测试', () => { expect(comparePosition(firstBtn, firstCard)).toBe(PositionNO.BeforeOrAfter); }); - it('getZLevelTop', () => { }); + it('getZLevelTop', () => {}); it('propsData', () => { expect(new Node(doc, { componentName: 'Leaf' }).propsData).toBeNull(); expect(new Node(doc, { componentName: 'Fragment' }).propsData).toBeNull(); diff --git a/packages/designer/tests/document/node/props/prop.test.ts b/packages/designer/tests/document/node/props/prop.test.ts index ff4147a34a..d775247ba0 100644 --- a/packages/designer/tests/document/node/props/prop.test.ts +++ b/packages/designer/tests/document/node/props/prop.test.ts @@ -1,9 +1,9 @@ import '../../../fixtures/window'; -import { Editor, engineConfig } from '@alilc/lowcode-editor-core'; +import { Editor, engineConfig } from '@lce/lowcode-editor-core'; import { Designer } from '../../../../src/designer/designer'; import { DocumentModel } from '../../../../src/document/document-model'; import { Prop, isProp, isValidArrayIndex } from '../../../../src/document/node/props/prop'; -import { GlobalEvent, IPublicEnumTransformStage } from '@alilc/lowcode-types'; +import { GlobalEvent, IPublicEnumTransformStage } from '@lce/lowcode-types'; import { shellModelFactory } from '../../../../../engine/src/modules/shell-model-factory'; const slotNodeImportMockFn = jest.fn(); @@ -416,7 +416,7 @@ describe('Prop 类测试', () => { expect(prop.get(0).getValue()).toBeTruthy(); // map / list 级联测试 - prop.get('loopArgs.0', true).setValue('newItem');; + prop.get('loopArgs.0', true).setValue('newItem'); expect(prop.get('loopArgs.0').getValue()).toBe('newItem'); }); @@ -502,7 +502,9 @@ describe('Prop 类测试', () => { slotProp.export(); expect(slotProp.export().value[0].componentName).toBe('Button'); - expect(slotProp.export(IPublicEnumTransformStage.Serilize).value[0].componentName).toBe('Button'); + expect(slotProp.export(IPublicEnumTransformStage.Serilize).value[0].componentName).toBe( + 'Button', + ); slotProp.purge(); expect(slotProp.purged).toBeTruthy(); @@ -529,14 +531,14 @@ describe('Prop 类测试', () => { componentName: 'Slot', id: 'node_oclei5rv2e2', props: { - slotName: "content", - slotTitle: "主内容" + slotName: 'content', + slotTitle: '主内容', }, children: [ { componentName: 'Button', - } - ] + }, + ], }, }); @@ -554,7 +556,9 @@ describe('Prop 类测试', () => { expect(slotProp.export()?.name).toBe('content'); // Render - expect(slotProp.export(IPublicEnumTransformStage.Render)?.value.children[0].componentName).toBe('Button'); + expect(slotProp.export(IPublicEnumTransformStage.Render)?.value.children[0].componentName).toBe( + 'Button', + ); expect(slotProp.export(IPublicEnumTransformStage.Render)?.value.componentName).toBe('Slot'); slotProp.purge(); @@ -583,7 +587,7 @@ describe('setValue with event', () => { beforeEach(() => { // Initialize the instance of your class - propInstance = new Prop(mockPropsInst, true, 'stringProp');; + propInstance = new Prop(mockPropsInst, true, 'stringProp'); // Mock necessary methods and properties mockEmitChange = jest.spyOn(propInstance, 'emitChange'); @@ -623,7 +627,10 @@ describe('setValue with event', () => { expect(propInstance.getValue()).toBe(newValue); expect(propInstance.type).toBe('literal'); expect(mockEmitChange).toHaveBeenCalledWith({ oldValue }); - expect(mockEventBusEmit).toHaveBeenCalledWith(GlobalEvent.Node.Prop.InnerChange, expectedPartialPropsInfo); + expect(mockEventBusEmit).toHaveBeenCalledWith( + GlobalEvent.Node.Prop.InnerChange, + expectedPartialPropsInfo, + ); expect(mockEmitPropChange).toHaveBeenCalledWith(expectedPartialPropsInfo); }); @@ -642,7 +649,10 @@ describe('setValue with event', () => { expect(propInstance.getValue()).toEqual(newValue); expect(propInstance.type).toBe('literal'); expect(mockEmitChange).toHaveBeenCalledWith({ oldValue }); - expect(mockEventBusEmit).toHaveBeenCalledWith(GlobalEvent.Node.Prop.InnerChange, expectedPartialPropsInfo); + expect(mockEventBusEmit).toHaveBeenCalledWith( + GlobalEvent.Node.Prop.InnerChange, + expectedPartialPropsInfo, + ); expect(mockEmitPropChange).toHaveBeenCalledWith(expectedPartialPropsInfo); }); @@ -663,7 +673,10 @@ describe('setValue with event', () => { oldValue, newValue: undefined, }); - expect(mockEventBusEmit).toHaveBeenCalledWith(GlobalEvent.Node.Prop.InnerChange, expectedPartialPropsInfo); + expect(mockEventBusEmit).toHaveBeenCalledWith( + GlobalEvent.Node.Prop.InnerChange, + expectedPartialPropsInfo, + ); expect(mockEmitPropChange).toHaveBeenCalledWith(expectedPartialPropsInfo); propInstance.unset(); @@ -688,7 +701,10 @@ describe('setValue with event', () => { oldValue, newValue: undefined, }); - expect(mockEventBusEmit).toHaveBeenCalledWith(GlobalEvent.Node.Prop.InnerChange, expectedPartialPropsInfo); + expect(mockEventBusEmit).toHaveBeenCalledWith( + GlobalEvent.Node.Prop.InnerChange, + expectedPartialPropsInfo, + ); expect(mockEmitPropChange).toHaveBeenCalledWith(expectedPartialPropsInfo); propInstance.remove(); diff --git a/packages/designer/tests/document/node/props/props.test.ts b/packages/designer/tests/document/node/props/props.test.ts index 0b15a00c0e..dcaf73f0d5 100644 --- a/packages/designer/tests/document/node/props/props.test.ts +++ b/packages/designer/tests/document/node/props/props.test.ts @@ -1,7 +1,7 @@ // @ts-nocheck import '../../../fixtures/window'; import { set, delayObxTick } from '../../../utils'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Props, getConvertedExtraKey, @@ -14,7 +14,7 @@ import { Designer } from '../../../../src/designer/designer'; import { Project } from '../../../../src/project/project'; import { DocumentModel } from '../../../../src/document/document-model'; -import { TransformStage } from '@alilc/lowcode-types'; +import { TransformStage } from '@lce/lowcode-types'; const mockOwner = { componentName: 'Page' }; diff --git a/packages/designer/tests/fixtures/component-metadata/abcgroup.ts b/packages/designer/tests/fixtures/component-metadata/abcgroup.ts index 6b9265ef53..abce5577be 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcgroup.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcgroup.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Abc.Group', npm: { @@ -228,8 +228,12 @@ export default { advanced: { isTopFixed: true, callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/abcitem.ts b/packages/designer/tests/fixtures/component-metadata/abcitem.ts index bbccf7119f..4608e4f68e 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcitem.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcitem.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Abc.Item', npm: { @@ -228,8 +228,12 @@ export default { advanced: { isTopFixed: true, callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/abcnode.ts b/packages/designer/tests/fixtures/component-metadata/abcnode.ts index b991042a34..a8cbd629e4 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcnode.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcnode.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Abc.Node', npm: { @@ -228,8 +228,12 @@ export default { advanced: { isTopFixed: true, callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/abcoption.ts b/packages/designer/tests/fixtures/component-metadata/abcoption.ts index 7d9d15a729..2a62a48450 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcoption.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcoption.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Abc.Option', npm: { @@ -228,8 +228,12 @@ export default { advanced: { isTopFixed: true, callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/button.ts b/packages/designer/tests/fixtures/component-metadata/button.ts index 55186a10c4..3d9f151934 100644 --- a/packages/designer/tests/fixtures/component-metadata/button.ts +++ b/packages/designer/tests/fixtures/component-metadata/button.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Button', npm: { @@ -90,7 +90,7 @@ export default { name: 'c', title: 'c', setter: { - componentName: 'ColorSetter' + componentName: 'ColorSetter', }, }, ], @@ -254,7 +254,7 @@ export default { // parentWhitelist: 'Div', // childWhitelist: 'Div', }, - descriptor: 'xTitle' + descriptor: 'xTitle', }, supports: {}, }, diff --git a/packages/designer/tests/fixtures/component-metadata/dialog.ts b/packages/designer/tests/fixtures/component-metadata/dialog.ts index 5445d92a6b..bc638de3c3 100644 --- a/packages/designer/tests/fixtures/component-metadata/dialog.ts +++ b/packages/designer/tests/fixtures/component-metadata/dialog.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Dialog', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/div.ts b/packages/designer/tests/fixtures/component-metadata/div.ts index 96a5f76ba2..71d877bf78 100644 --- a/packages/designer/tests/fixtures/component-metadata/div.ts +++ b/packages/designer/tests/fixtures/component-metadata/div.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -231,8 +231,12 @@ export default { supports: {}, advanced: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div10.ts b/packages/designer/tests/fixtures/component-metadata/div10.ts index 9b7c1c4876..44180a6256 100644 --- a/packages/designer/tests/fixtures/component-metadata/div10.ts +++ b/packages/designer/tests/fixtures/component-metadata/div10.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', title: '容器', diff --git a/packages/designer/tests/fixtures/component-metadata/div2.ts b/packages/designer/tests/fixtures/component-metadata/div2.ts index c9c1be306d..166603b889 100644 --- a/packages/designer/tests/fixtures/component-metadata/div2.ts +++ b/packages/designer/tests/fixtures/component-metadata/div2.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -228,8 +228,12 @@ export default { advanced: { isTopFixed: true, callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div3.ts b/packages/designer/tests/fixtures/component-metadata/div3.ts index ced3947f41..ffb6508cf8 100644 --- a/packages/designer/tests/fixtures/component-metadata/div3.ts +++ b/packages/designer/tests/fixtures/component-metadata/div3.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -225,13 +225,17 @@ export default { nestingRule: { // parentWhitelist: 'Div', // childWhitelist: 'Div', - } + }, }, supports: {}, advanced: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div4.ts b/packages/designer/tests/fixtures/component-metadata/div4.ts index cbe826fdcd..2d3491efcd 100644 --- a/packages/designer/tests/fixtures/component-metadata/div4.ts +++ b/packages/designer/tests/fixtures/component-metadata/div4.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -221,8 +221,12 @@ export default { ], experimental: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div5.ts b/packages/designer/tests/fixtures/component-metadata/div5.ts index 963d7dd86d..cd20bd5f44 100644 --- a/packages/designer/tests/fixtures/component-metadata/div5.ts +++ b/packages/designer/tests/fixtures/component-metadata/div5.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -231,8 +231,12 @@ export default { supports: {}, advanced: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div6.ts b/packages/designer/tests/fixtures/component-metadata/div6.ts index de80a93641..19d99bbd8e 100644 --- a/packages/designer/tests/fixtures/component-metadata/div6.ts +++ b/packages/designer/tests/fixtures/component-metadata/div6.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -232,8 +232,12 @@ export default { }, experimental: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div7.ts b/packages/designer/tests/fixtures/component-metadata/div7.ts index b970aa3a7b..a76dd136c3 100644 --- a/packages/designer/tests/fixtures/component-metadata/div7.ts +++ b/packages/designer/tests/fixtures/component-metadata/div7.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { @@ -224,8 +224,12 @@ export default { supports: {}, advanced: { callbacks: { - onNodeAdd: (dragment, self) => { console.log(dragment); }, - onNodeRemove: (dragment, self) => { console.log(dragment); } + onNodeAdd: (dragment, self) => { + console.log(dragment); + }, + onNodeRemove: (dragment, self) => { + console.log(dragment); + }, }, initials: [ { diff --git a/packages/designer/tests/fixtures/component-metadata/div8.ts b/packages/designer/tests/fixtures/component-metadata/div8.ts index ae04ad287f..f20c3f22c7 100644 --- a/packages/designer/tests/fixtures/component-metadata/div8.ts +++ b/packages/designer/tests/fixtures/component-metadata/div8.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/div9.ts b/packages/designer/tests/fixtures/component-metadata/div9.ts index 2d3640b3bd..bdf37737b9 100644 --- a/packages/designer/tests/fixtures/component-metadata/div9.ts +++ b/packages/designer/tests/fixtures/component-metadata/div9.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', title: '容器', diff --git a/packages/designer/tests/fixtures/component-metadata/form.ts b/packages/designer/tests/fixtures/component-metadata/form.ts index faa6e06085..23a18e35fd 100644 --- a/packages/designer/tests/fixtures/component-metadata/form.ts +++ b/packages/designer/tests/fixtures/component-metadata/form.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Form', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/other.ts b/packages/designer/tests/fixtures/component-metadata/other.ts index adc8659b8c..9145073631 100644 --- a/packages/designer/tests/fixtures/component-metadata/other.ts +++ b/packages/designer/tests/fixtures/component-metadata/other.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Other', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/page.ts b/packages/designer/tests/fixtures/component-metadata/page.ts index 4170378614..23b9ff04f9 100644 --- a/packages/designer/tests/fixtures/component-metadata/page.ts +++ b/packages/designer/tests/fixtures/component-metadata/page.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Page', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/page2.ts b/packages/designer/tests/fixtures/component-metadata/page2.ts index 4170378614..23b9ff04f9 100644 --- a/packages/designer/tests/fixtures/component-metadata/page2.ts +++ b/packages/designer/tests/fixtures/component-metadata/page2.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Page', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-content.ts b/packages/designer/tests/fixtures/component-metadata/root-content.ts index 5546e8b8a1..89dafd4005 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-content.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-content.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'RootContent', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-footer.ts b/packages/designer/tests/fixtures/component-metadata/root-footer.ts index cd3291fb07..ac9828b7c9 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-footer.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-footer.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'RootFooter', npm: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-header.ts b/packages/designer/tests/fixtures/component-metadata/root-header.ts index b2d3dd4ed7..d4bf551a12 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-header.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-header.ts @@ -1,4 +1,4 @@ -import { IPublicTypeComponentMetadata } from "@alilc/lowcode-types"; +import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'RootHeader', npm: { diff --git a/packages/designer/tests/plugin/plugin-manager.test.ts b/packages/designer/tests/plugin/plugin-manager.test.ts index 73915203f0..dd9872f312 100644 --- a/packages/designer/tests/plugin/plugin-manager.test.ts +++ b/packages/designer/tests/plugin/plugin-manager.test.ts @@ -1,7 +1,7 @@ import '../fixtures/window'; -import { Editor, engineConfig } from '@alilc/lowcode-editor-core'; +import { Editor, engineConfig } from '@lce/lowcode-editor-core'; import { LowCodePluginManager } from '../../src/plugin/plugin-manager'; -import { IPublicModelPluginContext, IPublicApiPlugins } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext, IPublicApiPlugins } from '@lce/lowcode-types'; import { ILowCodePluginContextPrivate } from '../../src/plugin/plugin-types'; const editor = new Editor(); @@ -11,10 +11,10 @@ describe('plugin 测试', () => { let pluginManager: IPublicApiPlugins; beforeEach(() => { contextApiAssembler = { - assembleApis(context: ILowCodePluginContextPrivate){ + assembleApis(context: ILowCodePluginContextPrivate) { context.plugins = pluginManager as IPublicApiPlugins; // mock set apis - } + }, }; pluginManager = new LowCodePluginManager(contextApiAssembler).toProxy(); }); diff --git a/packages/designer/tests/project/project-methods.test.ts b/packages/designer/tests/project/project-methods.test.ts index c710b29f13..68ab5b22b8 100644 --- a/packages/designer/tests/project/project-methods.test.ts +++ b/packages/designer/tests/project/project-methods.test.ts @@ -1,5 +1,5 @@ import '../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { DocumentModel } from '../../src/document/document-model'; import { Designer } from '../../src/designer/designer'; @@ -46,37 +46,51 @@ describe.only('Project 方法测试', () => { }); it('load', () => { - project.load({ - componentsTree: [{ - componentName: 'Page', - fileName: 'f1', - }], - }, 'f1'); + project.load( + { + componentsTree: [ + { + componentName: 'Page', + fileName: 'f1', + }, + ], + }, + 'f1', + ); expect(project.currentDocument?.fileName).toBe('f1'); }); it.skip('setSchema', () => { - project.load({ - componentsTree: [{ - componentName: 'Page', - fileName: 'f1', - }], - }, true); + project.load( + { + componentsTree: [ + { + componentName: 'Page', + fileName: 'f1', + }, + ], + }, + true, + ); project.setSchema({ - componentsTree: [{ - componentName: 'Page', - props: { a: 1 }, - }], + componentsTree: [ + { + componentName: 'Page', + props: { a: 1 }, + }, + ], }); expect(project.currentDocument?.rootNode?.propsData).toEqual({ a: 1 }); }); it('open / getDocument / checkExclusive', () => { project.load({ - componentsTree: [{ - componentName: 'Page', - fileName: 'f1', - }], + componentsTree: [ + { + componentName: 'Page', + fileName: 'f1', + }, + ], }); const doc1 = project.createDocument({ componentName: 'Page', diff --git a/packages/designer/tests/project/project.test.ts b/packages/designer/tests/project/project.test.ts index 2066c03985..bae3c634da 100644 --- a/packages/designer/tests/project/project.test.ts +++ b/packages/designer/tests/project/project.test.ts @@ -1,7 +1,7 @@ import set from 'lodash/set'; import cloneDeep from 'lodash/cloneDeep'; import '../fixtures/window'; -import { Editor } from '@alilc/lowcode-editor-core'; +import { Editor } from '@lce/lowcode-editor-core'; import { Project } from '../../src/project/project'; import { Designer } from '../../src/designer/designer'; import formSchema from '../fixtures/schema/form'; @@ -22,7 +22,9 @@ jest.mock('../../src/designer/designer', () => { }, }; }, - transformProps(props) { return props; }, + transformProps(props) { + return props; + }, createSettingEntry: mockCreateSettingEntry, postEvent() {}, }; @@ -44,9 +46,7 @@ describe('schema 生成节点模型测试', () => { it('基本的节点模型初始化,模型导出,初始化传入 schema', () => { const project = new Project(designer, { - componentsTree: [ - formSchema, - ], + componentsTree: [formSchema], }); project.open(); expect(project).toBeTruthy(); @@ -55,13 +55,15 @@ describe('schema 生成节点模型测试', () => { const ids = getIdsFromSchema(formSchema); const expectedNodeCnt = ids.length; expect(nodesMap.size).toBe(expectedNodeCnt); - ids.forEach(id => { - expect(nodesMap.get(id).componentName).toBe(getNodeFromSchemaById(formSchema, id).componentName); + ids.forEach((id) => { + expect(nodesMap.get(id).componentName).toBe( + getNodeFromSchemaById(formSchema, id).componentName, + ); }); const exportSchema = currentDocument?.export(1); expect(getIdsFromSchema(exportSchema).length).toBe(expectedNodeCnt); - nodesMap.forEach(node => { + nodesMap.forEach((node) => { // 触发 getter node.settingEntry; }); @@ -70,9 +72,7 @@ describe('schema 生成节点模型测试', () => { it('onSimulatorReady works', () => { const project = new Project(designer, { - componentsTree: [ - formSchema, - ], + componentsTree: [formSchema], }); project.open(); expect(project).toBeTruthy(); @@ -103,23 +103,26 @@ describe('schema 生成节点模型测试', () => { const project = new Project(designer); expect(project).toBeTruthy(); // trigger autoOpen case - project.load({ - componentsTree: [ - formSchema, - ], - }, true); + project.load( + { + componentsTree: [formSchema], + }, + true, + ); const { currentDocument } = project; const { nodesMap } = currentDocument; const ids = getIdsFromSchema(formSchema); const expectedNodeCnt = ids.length; expect(nodesMap.size).toBe(expectedNodeCnt); - ids.forEach(id => { - expect(nodesMap.get(id).componentName).toBe(getNodeFromSchemaById(formSchema, id).componentName); + ids.forEach((id) => { + expect(nodesMap.get(id).componentName).toBe( + getNodeFromSchemaById(formSchema, id).componentName, + ); }); const exportSchema = currentDocument?.export(1); expect(getIdsFromSchema(exportSchema).length).toBe(expectedNodeCnt); - nodesMap.forEach(node => { + nodesMap.forEach((node) => { // 触发 getter node.settingEntry; }); @@ -129,31 +132,34 @@ describe('schema 生成节点模型测试', () => { const project = new Project(designer); expect(project).toBeTruthy(); // trigger autoOpen case - project.load({ - componentsTree: [ - { - ...formSchema, - fileName: 'demoFile1', + project.load( + { + componentsTree: [ + { + ...formSchema, + fileName: 'demoFile1', + }, + { + ...formSchema, + fileName: 'demoFile2', + }, + ], + config: { + layout: { + props: { + tabBar: { + items: [ + { + path: '/demoFile2', + }, + ], + }, + }, + }, }, - { - ...formSchema, - fileName: 'demoFile2', - } - ], - config: { - layout: { - props: { - tabBar: { - items: [ - { - path: '/demoFile2', - } - ], - } - } - } - } - }, true); + }, + true, + ); const { currentDocument } = project; expect(currentDocument.fileName).toBe('demoFile2'); }); @@ -162,23 +168,25 @@ describe('schema 生成节点模型测试', () => { const project = new Project(designer); expect(project).toBeTruthy(); // trigger autoOpen case - project.load({ - componentsTree: [ - { - ...formSchema, - fileName: 'demoFile1', - }, - { - ...formSchema, - fileName: 'demoFile2', - } - ], - }, 'demoFile2'); + project.load( + { + componentsTree: [ + { + ...formSchema, + fileName: 'demoFile1', + }, + { + ...formSchema, + fileName: 'demoFile2', + }, + ], + }, + 'demoFile2', + ); const { currentDocument } = project; expect(currentDocument.fileName).toBe('demoFile2'); }); - it('setSchema works', () => { const project = new Project(designer); project.open(); @@ -204,13 +212,15 @@ describe('schema 生成节点模型测试', () => { const ids = getIdsFromSchema(formSchema); const expectedNodeCnt = ids.length; expect(nodesMap.size).toBe(expectedNodeCnt); - ids.forEach(id => { - expect(nodesMap.get(id).componentName).toBe(getNodeFromSchemaById(formSchema, id).componentName); + ids.forEach((id) => { + expect(nodesMap.get(id).componentName).toBe( + getNodeFromSchemaById(formSchema, id).componentName, + ); }); const exportSchema = currentDocument?.export(1); expect(getIdsFromSchema(exportSchema).length).toBe(expectedNodeCnt); - nodesMap.forEach(node => { + nodesMap.forEach((node) => { // 触发 getter node.settingEntry; }); @@ -271,11 +281,13 @@ describe('schema 生成节点模型测试', () => { describe('block ❌ | component ❌ | slot ✅', () => { it('基本的节点模型初始化,模型导出,初始化传入 schema', () => { - const formSchemaWithSlot = set(cloneDeep(formSchema), 'children[0].children[0].props.title.type', 'JSSlot'); + const formSchemaWithSlot = set( + cloneDeep(formSchema), + 'children[0].children[0].props.title.type', + 'JSSlot', + ); const project = new Project(designer, { - componentsTree: [ - formSchemaWithSlot, - ], + componentsTree: [formSchemaWithSlot], }); project.open(); expect(project).toBeTruthy(); @@ -290,7 +302,5 @@ describe('schema 生成节点模型测试', () => { }); }); - describe.skip('多 document 测试', () => { - - }); + describe.skip('多 document 测试', () => {}); }); diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 55f6d50c39..4f7f77c5a6 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-editor-core", + "name": "@lce/lowcode-editor-core", "version": "1.3.2", "description": "Core Api for Ali lowCode engine", "license": "MIT", @@ -16,8 +16,8 @@ }, "dependencies": { "@alifd/next": "^1.19.16", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "debug": "^4.1.1", "intl-messageformat": "^9.3.1", diff --git a/packages/editor-core/src/command.ts b/packages/editor-core/src/command.ts index 7facc33d94..18a89db511 100644 --- a/packages/editor-core/src/command.ts +++ b/packages/editor-core/src/command.ts @@ -1,11 +1,25 @@ -import { IPublicApiCommand, IPublicEnumTransitionType, IPublicModelPluginContext, IPublicTypeCommand, IPublicTypeCommandHandlerArgs, IPublicTypeListCommand } from '@alilc/lowcode-types'; -import { checkPropTypes } from '@alilc/lowcode-utils'; -export interface ICommand extends Omit<IPublicApiCommand, 'registerCommand' | 'batchExecuteCommand'> { - registerCommand(command: IPublicTypeCommand, options?: { - commandScope?: string; - }): void; +import { + IPublicApiCommand, + IPublicEnumTransitionType, + IPublicModelPluginContext, + IPublicTypeCommand, + IPublicTypeCommandHandlerArgs, + IPublicTypeListCommand, +} from '@lce/lowcode-types'; +import { checkPropTypes } from '@lce/lowcode-utils'; +export interface ICommand + extends Omit<IPublicApiCommand, 'registerCommand' | 'batchExecuteCommand'> { + registerCommand( + command: IPublicTypeCommand, + options?: { + commandScope?: string; + }, + ): void; - batchExecuteCommand(commands: { name: string; args: IPublicTypeCommandHandlerArgs }[], pluginContext?: IPublicModelPluginContext): void; + batchExecuteCommand( + commands: { name: string; args: IPublicTypeCommandHandlerArgs }[], + pluginContext?: IPublicModelPluginContext, + ): void; } export interface ICommandOptions { @@ -42,7 +56,7 @@ export class Command implements ICommand { if (!command) { throw new Error(`Command '${name}' is not registered.`); } - command.parameters?.forEach(d => { + command.parameters?.forEach((d) => { if (!checkPropTypes(args[d.name], d.name, d.propType, 'command')) { throw new Error(`Command '${name}' arguments ${d.name} is invalid.`); } @@ -51,24 +65,27 @@ export class Command implements ICommand { command.handler(args); } catch (error) { if (this.commandErrors && this.commandErrors.length) { - this.commandErrors.forEach(callback => callback(name, error)); + this.commandErrors.forEach((callback) => callback(name, error)); } else { throw error; } } } - batchExecuteCommand(commands: { name: string; args: IPublicTypeCommandHandlerArgs }[], pluginContext: IPublicModelPluginContext): void { + batchExecuteCommand( + commands: { name: string; args: IPublicTypeCommandHandlerArgs }[], + pluginContext: IPublicModelPluginContext, + ): void { if (!commands || !commands.length) { return; } pluginContext.common.utils.executeTransaction(() => { - commands.forEach(command => this.executeCommand(command.name, command.args)); + commands.forEach((command) => this.executeCommand(command.name, command.args)); }, IPublicEnumTransitionType.REPAINT); } listCommands(): IPublicTypeListCommand[] { - return Array.from(this.commands.values()).map(d => { + return Array.from(this.commands.values()).map((d) => { const result: IPublicTypeListCommand = { name: d.name, }; diff --git a/packages/editor-core/src/config.ts b/packages/editor-core/src/config.ts index c4ff407b9a..0d063b403f 100644 --- a/packages/editor-core/src/config.ts +++ b/packages/editor-core/src/config.ts @@ -1,10 +1,10 @@ import { get as lodashGet } from 'lodash'; -import { isPlainObject } from '@alilc/lowcode-utils'; +import { isPlainObject } from '@lce/lowcode-utils'; import { IPublicTypeEngineOptions, IPublicModelEngineConfig, IPublicModelPreference, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { getLogger } from './utils/logger'; import Preference from './utils/preference'; @@ -55,7 +55,8 @@ const VALID_ENGINE_OPTIONS = { enableStrictPluginMode: { type: 'boolean', default: STRICT_PLUGIN_MODE_DEFAULT, - description: '开启严格插件模式,默认值:STRICT_PLUGIN_MODE_DEFAULT , 严格模式下,插件将无法通过 engineOptions 传递自定义配置项', + description: + '开启严格插件模式,默认值:STRICT_PLUGIN_MODE_DEFAULT , 严格模式下,插件将无法通过 engineOptions 传递自定义配置项', }, enableReactiveContainer: { type: 'boolean', @@ -75,7 +76,8 @@ const VALID_ENGINE_OPTIONS = { customizeIgnoreSelectors: { type: 'function', default: undefined, - description: '定制画布中点击被忽略的 selectors, eg. (defaultIgnoreSelectors: string[], e: MouseEvent) => string[]', + description: + '定制画布中点击被忽略的 selectors, eg. (defaultIgnoreSelectors: string[], e: MouseEvent) => string[]', }, disableDefaultSettingPanel: { type: 'boolean', @@ -171,19 +173,23 @@ const VALID_ENGINE_OPTIONS = { }, }; -const getStrictModeValue = (engineOptions: IPublicTypeEngineOptions, defaultValue: boolean): boolean => { +const getStrictModeValue = ( + engineOptions: IPublicTypeEngineOptions, + defaultValue: boolean, +): boolean => { if (!engineOptions || !isPlainObject(engineOptions)) { return defaultValue; } - if (engineOptions.enableStrictPluginMode === undefined - || engineOptions.enableStrictPluginMode === null) { + if ( + engineOptions.enableStrictPluginMode === undefined || + engineOptions.enableStrictPluginMode === null + ) { return defaultValue; } return engineOptions.enableStrictPluginMode; }; export interface IEngineConfig extends IPublicModelEngineConfig { - /** * if engineOptions.strictPluginMode === true, only accept propertied predefined in EngineOptions. * @@ -202,11 +208,11 @@ export class EngineConfig implements IEngineConfig { private config: { [key: string]: any } = {}; private waits = new Map< - string, - Array<{ - once?: boolean; - resolve: (data: any) => void; - }> + string, + Array<{ + once?: boolean; + resolve: (data: any) => void; + }> >(); /** @@ -278,7 +284,10 @@ export class EngineConfig implements IEngineConfig { if (isValidKey(key)) { this.set(key, (engineOptions as any)[key]); } else { - logger.warn(`failed to config ${key} to engineConfig, only predefined options can be set under strict mode, predefined options: `, VALID_ENGINE_OPTIONS); + logger.warn( + `failed to config ${key} to engineConfig, only predefined options can be set under strict mode, predefined options: `, + VALID_ENGINE_OPTIONS, + ); } }); } else { diff --git a/packages/editor-core/src/di/setter.ts b/packages/editor-core/src/di/setter.ts index 5af2c0230f..f1746c6fd0 100644 --- a/packages/editor-core/src/di/setter.ts +++ b/packages/editor-core/src/di/setter.ts @@ -1,16 +1,24 @@ import { ReactNode } from 'react'; -import { IPublicApiSetters, IPublicModelSettingField, IPublicTypeCustomView, IPublicTypeRegisteredSetter } from '@alilc/lowcode-types'; -import { createContent, isCustomView } from '@alilc/lowcode-utils'; +import { + IPublicApiSetters, + IPublicModelSettingField, + IPublicTypeCustomView, + IPublicTypeRegisteredSetter, +} from '@lce/lowcode-types'; +import { createContent, isCustomView } from '@lce/lowcode-utils'; -const settersMap = new Map<string, IPublicTypeRegisteredSetter & { - type: string; -}>(); +const settersMap = new Map< + string, + IPublicTypeRegisteredSetter & { + type: string; + } +>(); export function registerSetter( typeOrMaps: string | { [key: string]: IPublicTypeCustomView | IPublicTypeRegisteredSetter }, setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter, ) { if (typeof typeOrMaps === 'object') { - Object.keys(typeOrMaps).forEach(type => { + Object.keys(typeOrMaps).forEach((type) => { registerSetter(type, typeOrMaps[type]); }); return; @@ -37,20 +45,24 @@ export function registerSetter( } function getInitialFromSetter(setter: any) { - return setter && ( - setter.initial || setter.Initial - || (setter.type && (setter.type.initial || setter.type.Initial)) - ) || null; // eslint-disable-line + return ( + (setter && + (setter.initial || + setter.Initial || + (setter.type && (setter.type.initial || setter.type.Initial)))) || + null + ); // eslint-disable-line } -export interface ISetters extends IPublicApiSetters { - -} +export interface ISetters extends IPublicApiSetters {} export class Setters implements ISetters { - settersMap = new Map<string, IPublicTypeRegisteredSetter & { - type: string; - }>(); + settersMap = new Map< + string, + IPublicTypeRegisteredSetter & { + type: string; + } + >(); constructor(readonly viewName: string = 'global') {} @@ -63,7 +75,7 @@ export class Setters implements ISetters { setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter, ) => { if (typeof typeOrMaps === 'object') { - Object.keys(typeOrMaps).forEach(type => { + Object.keys(typeOrMaps).forEach((type) => { this.registerSetter(type, typeOrMaps[type]); }); return; @@ -115,4 +127,4 @@ export class Setters implements ISetters { return createContent(setter, props); }; -} \ No newline at end of file +} diff --git a/packages/editor-core/src/editor.ts b/packages/editor-core/src/editor.ts index f31a2a2dda..0a35b9dc49 100644 --- a/packages/editor-core/src/editor.ts +++ b/packages/editor-core/src/editor.ts @@ -13,11 +13,11 @@ import { IPublicTypeComponentDescription, IPublicTypeRemoteComponentDescription, GlobalEvent, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { engineConfig } from './config'; import { globalLocale } from './intl'; import { obx } from './utils'; -import { IPublicTypeAssetsJson, AssetLoader } from '@alilc/lowcode-utils'; +import { IPublicTypeAssetsJson, AssetLoader } from '@lce/lowcode-utils'; import { assetsTransform } from './utils/assets-transform'; EventEmitter.defaultMaxListeners = 100; @@ -68,7 +68,6 @@ export interface IEditor extends IPublicModelEditor { // eslint-disable-next-line no-redeclare export class Editor extends EventEmitter implements IEditor { - /** * Ioc Container */ @@ -105,8 +104,8 @@ export class Editor extends EventEmitter implements IEditor { } get<T = undefined, KeyOrType = any>( - keyOrType: KeyOrType, - ): IPublicTypeEditorGetResult<T, KeyOrType> | undefined { + keyOrType: KeyOrType, + ): IPublicTypeEditorGetResult<T, KeyOrType> | undefined { return this.context.get(keyOrType as any); } @@ -147,59 +146,75 @@ export class Editor extends EventEmitter implements IEditor { // 如果有远程组件描述协议,则自动加载并补充到资产包中,同时出发 designer.incrementalAssetsReady 通知组件面板更新数据 if (remoteComponentDescriptions && remoteComponentDescriptions.length) { await Promise.all( - remoteComponentDescriptions.map(async (component: IPublicTypeRemoteComponentDescription) => { - const { exportName, url, npm } = component; - if (!url || !exportName) { - return; - } - if (!AssetsCache[exportName] || !npm?.version || AssetsCache[exportName].npm?.version !== npm?.version) { - await (new AssetLoader()).load(url); - } - AssetsCache[exportName] = component; - function setAssetsComponent(component: any, extraNpmInfo: any = {}) { - const components = component.components; - assets.componentList = assets.componentList?.concat(component.componentList || []); - if (Array.isArray(components)) { - components.forEach(d => { - assets.components = assets.components.concat({ - npm: { - ...npm, - ...extraNpmInfo, - }, - ...d, - } || []); - }); + remoteComponentDescriptions.map( + async (component: IPublicTypeRemoteComponentDescription) => { + const { exportName, url, npm } = component; + if (!url || !exportName) { return; } - if (component.components) { - assets.components = assets.components.concat({ - npm: { - ...npm, - ...extraNpmInfo, - }, - ...component.components, - } || []); + if ( + !AssetsCache[exportName] || + !npm?.version || + AssetsCache[exportName].npm?.version !== npm?.version + ) { + await new AssetLoader().load(url); } - } - function setArrayAssets(value: any[], preExportName: string = '', preSubName: string = '') { - value.forEach((d: any, i: number) => { - const exportName = [preExportName, i.toString()].filter(d => !!d).join('.'); - const subName = [preSubName, i.toString()].filter(d => !!d).join('.'); - Array.isArray(d) ? setArrayAssets(d, exportName, subName) : setAssetsComponent(d, { - exportName, - subName, + AssetsCache[exportName] = component; + function setAssetsComponent(component: any, extraNpmInfo: any = {}) { + const components = component.components; + assets.componentList = assets.componentList?.concat(component.componentList || []); + if (Array.isArray(components)) { + components.forEach((d) => { + assets.components = assets.components.concat( + { + npm: { + ...npm, + ...extraNpmInfo, + }, + ...d, + } || [], + ); + }); + return; + } + if (component.components) { + assets.components = assets.components.concat( + { + npm: { + ...npm, + ...extraNpmInfo, + }, + ...component.components, + } || [], + ); + } + } + function setArrayAssets( + value: any[], + preExportName: string = '', + preSubName: string = '', + ) { + value.forEach((d: any, i: number) => { + const exportName = [preExportName, i.toString()].filter((d) => !!d).join('.'); + const subName = [preSubName, i.toString()].filter((d) => !!d).join('.'); + Array.isArray(d) + ? setArrayAssets(d, exportName, subName) + : setAssetsComponent(d, { + exportName, + subName, + }); }); - }); - } - if ((window as any)[exportName]) { - if (Array.isArray((window as any)[exportName])) { - setArrayAssets((window as any)[exportName] as any); - } else { - setAssetsComponent((window as any)[exportName] as any); } - } - return (window as any)[exportName]; - }), + if ((window as any)[exportName]) { + if (Array.isArray((window as any)[exportName])) { + setArrayAssets((window as any)[exportName] as any); + } else { + setAssetsComponent((window as any)[exportName] as any); + } + } + return (window as any)[exportName]; + }, + ), ); } } @@ -208,7 +223,9 @@ export class Editor extends EventEmitter implements IEditor { this.notifyGot('assets'); } - onceGot<T = undefined, KeyOrType extends IPublicTypeEditorValueKey = any>(keyOrType: KeyOrType): Promise<IPublicTypeEditorGetResult<T, KeyOrType>> { + onceGot<T = undefined, KeyOrType extends IPublicTypeEditorValueKey = any>( + keyOrType: KeyOrType, + ): Promise<IPublicTypeEditorGetResult<T, KeyOrType>> { const x = this.context.get(keyOrType); if (x !== undefined) { return Promise.resolve(x); @@ -253,7 +270,7 @@ export class Editor extends EventEmitter implements IEditor { const { hooks = [], lifeCycles } = this.config; this.emit('editor.beforeInit'); - const init = (lifeCycles && lifeCycles.init) || ((): void => { }); + const init = (lifeCycles && lifeCycles.init) || ((): void => {}); try { await init(this); @@ -298,7 +315,7 @@ export class Editor extends EventEmitter implements IEditor { registerHooks = (hooks: HookConfig[]) => { this.initHooks(hooks).forEach(({ message, type, handler }) => { if (['on', 'once'].indexOf(type) !== -1) { - this[type]((message as any), handler); + this[type](message as any, handler); } }); }; diff --git a/packages/editor-core/src/event-bus.ts b/packages/editor-core/src/event-bus.ts index ae9d28905b..e3df5607b9 100644 --- a/packages/editor-core/src/event-bus.ts +++ b/packages/editor-core/src/event-bus.ts @@ -1,5 +1,5 @@ -import { IPublicApiEvent } from '@alilc/lowcode-types'; -import { Logger } from '@alilc/lowcode-utils'; +import { IPublicApiEvent } from '@lce/lowcode-types'; +import { Logger } from '@lce/lowcode-utils'; import EventEmitter from 'events'; const logger = new Logger({ level: 'warn', bizName: 'event-bus' }); @@ -106,4 +106,4 @@ export const createModuleEventBus = (moduleName: string, maxListeners?: number): emitter.setMaxListeners(maxListeners); } return new EventBus(emitter, moduleName); -}; \ No newline at end of file +}; diff --git a/packages/editor-core/src/hotkey.ts b/packages/editor-core/src/hotkey.ts index d0dd40cc24..5ba7f3cfb8 100644 --- a/packages/editor-core/src/hotkey.ts +++ b/packages/editor-core/src/hotkey.ts @@ -1,6 +1,11 @@ import { isEqual } from 'lodash'; import { globalContext } from './di'; -import { IPublicTypeHotkeyCallback, IPublicTypeHotkeyCallbackConfig, IPublicTypeHotkeyCallbacks, IPublicApiHotkey } from '@alilc/lowcode-types'; +import { + IPublicTypeHotkeyCallback, + IPublicTypeHotkeyCallbackConfig, + IPublicTypeHotkeyCallbacks, + IPublicApiHotkey, +} from '@lce/lowcode-types'; interface KeyMap { [key: number]: string; @@ -110,7 +115,7 @@ let REVERSE_MAP: CtrlKeyMap; * programatically */ for (let i = 1; i < 20; ++i) { - MAP[111 + i] = `f${ i}`; + MAP[111 + i] = `f${i}`; } /** @@ -314,7 +319,12 @@ function getKeyInfo(combination: string, action?: string): KeyInfo { * if your callback function returns false this will use the jquery * convention - prevent default and stop propogation on the event */ -function fireCallback(callback: IPublicTypeHotkeyCallback, e: KeyboardEvent, combo?: string, sequence?: string): void { +function fireCallback( + callback: IPublicTypeHotkeyCallback, + e: KeyboardEvent, + combo?: string, + sequence?: string, +): void { try { const workspace = globalContext.get('workspace'); const editor = workspace.isActive ? workspace.window?.editor : globalContext.get('editor'); @@ -322,7 +332,9 @@ function fireCallback(callback: IPublicTypeHotkeyCallback, e: KeyboardEvent, com const node = designer?.currentSelection?.getNodes()?.[0]; const npm = node?.componentMeta?.npm; const selected = - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || + node?.componentMeta?.componentName || + ''; if (callback(e, combo) === false) { e.preventDefault(); e.stopPropagation(); @@ -389,10 +401,10 @@ export class Hotkey implements IHotKey { unbind(combos: string[] | string, callback: IPublicTypeHotkeyCallback, action?: string) { const combinations = Array.isArray(combos) ? combos : [combos]; - combinations.forEach(combination => { + combinations.forEach((combination) => { const info: KeyInfo = getKeyInfo(combination, action); const { key, modifiers } = info; - const idx = this.callBacks[key].findIndex(info => { + const idx = this.callBacks[key].findIndex((info) => { return isEqual(info.modifiers, modifiers) && info.callback === callback; }); if (idx !== -1) { @@ -471,9 +483,13 @@ export class Hotkey implements IHotKey { // chrome will not fire a keypress if meta or control is down // safari will fire a keypress if meta or meta+shift is down // firefox will fire a keypress if meta or control is down - if ((isPressEvent(e) && !e.metaKey && !e.ctrlKey) || modifiersMatch(modifiers, callback.modifiers)) { + if ( + (isPressEvent(e) && !e.metaKey && !e.ctrlKey) || + modifiersMatch(modifiers, callback.modifiers) + ) { const deleteCombo = !sequenceName && callback.combo === combination; - const deleteSequence = sequenceName && callback.seq === sequenceName && callback.level === level; + const deleteSequence = + sequenceName && callback.seq === sequenceName && callback.level === level; if (deleteCombo || deleteSequence) { this.callBacks[character].splice(i, 1); } @@ -568,7 +584,12 @@ export class Hotkey implements IHotKey { this.resetTimer = window.setTimeout(this.resetSequences, 1000); } - private bindSequence(combo: string, keys: string[], callback: IPublicTypeHotkeyCallback, action?: string): void { + private bindSequence( + combo: string, + keys: string[], + callback: IPublicTypeHotkeyCallback, + action?: string, + ): void { // const self: any = this; this.sequenceLevels[combo] = 0; const increaseSequence = (nextAction: string) => { @@ -589,7 +610,9 @@ export class Hotkey implements IHotKey { }; for (let i = 0; i < keys.length; ++i) { const isFinal = i + 1 === keys.length; - const wrappedCallback = isFinal ? callbackAndReset : increaseSequence(action || getKeyInfo(keys[i + 1]).action); + const wrappedCallback = isFinal + ? callbackAndReset + : increaseSequence(action || getKeyInfo(keys[i + 1]).action); this.bindSingle(keys[i], wrappedCallback, action, combo, i); } } @@ -623,7 +646,14 @@ export class Hotkey implements IHotKey { this.callBacks[info.key] = this.callBacks[info.key] || []; // remove an existing match if there is one - this.getMatches(info.key, info.modifiers, { type: info.action }, sequenceName, combination, level); + this.getMatches( + info.key, + info.modifiers, + { type: info.action }, + sequenceName, + combination, + level, + ); // add this call back to the array // if it is a sequence put it at the beginning @@ -641,7 +671,11 @@ export class Hotkey implements IHotKey { }); } - private bindMultiple(combinations: string[], callback: IPublicTypeHotkeyCallback, action?: string) { + private bindMultiple( + combinations: string[], + callback: IPublicTypeHotkeyCallback, + action?: string, + ) { for (const item of combinations) { this.bindSingle(item, callback, action); } diff --git a/packages/editor-core/src/intl/global-locale.ts b/packages/editor-core/src/intl/global-locale.ts index fd67bb51f9..84ba0a41dd 100644 --- a/packages/editor-core/src/intl/global-locale.ts +++ b/packages/editor-core/src/intl/global-locale.ts @@ -1,6 +1,6 @@ import { IEventBus, createModuleEventBus } from '../event-bus'; import { obx, computed } from '../utils/obx'; -import { Logger } from '@alilc/lowcode-utils'; +import { Logger } from '@lce/lowcode-utils'; const logger = new Logger({ level: 'warn', bizName: 'globalLocale' }); @@ -72,7 +72,7 @@ class GlobalLocale { // store 3: config from system const { navigator } = window as any; if (navigator.language) { - const lang = (navigator.language as string); + const lang = navigator.language as string; return languageMap[lang] || lang.replace('_', '-'); } else if (navigator.browserLanguage) { const it = navigator.browserLanguage.split('-'); @@ -85,7 +85,9 @@ class GlobalLocale { } } if (!result) { - logger.warn('something when wrong when trying to get locale, use zh-CN as default, please check it out!'); + logger.warn( + 'something when wrong when trying to get locale, use zh-CN as default, please check it out!', + ); result = 'zh-CN'; } this._locale = result; @@ -136,11 +138,7 @@ class GlobalLocale { function getConfig(name: string) { const win: any = window; - return ( - win[name] - || (win.g_config || {})[name] - || (win.pageConfig || {})[name] - ); + return win[name] || (win.g_config || {})[name] || (win.pageConfig || {})[name]; } function hasLocalStorage(obj: any): obj is WindowLocalStorage { diff --git a/packages/editor-core/src/intl/index.ts b/packages/editor-core/src/intl/index.ts index 99e99a4fb9..9e129226cf 100644 --- a/packages/editor-core/src/intl/index.ts +++ b/packages/editor-core/src/intl/index.ts @@ -1,9 +1,9 @@ import { ReactNode, Component, createElement } from 'react'; import { IntlMessageFormat } from 'intl-messageformat'; import { globalLocale } from './global-locale'; -import { isI18nData } from '@alilc/lowcode-utils'; +import { isI18nData } from '@lce/lowcode-utils'; import { observer } from '../utils'; -import { IPublicTypeI18nData } from '@alilc/lowcode-types'; +import { IPublicTypeI18nData } from '@lce/lowcode-types'; function generateTryLocales(locale: string) { const tries = [locale, locale.replace('-', '_')]; @@ -56,7 +56,7 @@ export function shallowIntl(data: any): any { return data; } const maps: any = {}; - Object.keys(data).forEach(key => { + Object.keys(data).forEach((key) => { maps[key] = intl(data[key]); }); return maps; @@ -81,14 +81,12 @@ class IntlElement extends Component<{ data: any; params?: object }> { } } -export function createIntl( - instance: string | object, -): { - intlNode(id: string, params?: object): ReactNode; - intl(id: string, params?: object): string; - getLocale(): string; - setLocale(locale: string): void; - } { +export function createIntl(instance: string | object): { + intlNode(id: string, params?: object): ReactNode; + intl(id: string, params?: object): string; + getLocale(): string; + setLocale(locale: string): void; +} { // TODO: make reactive const data = (() => { const locale = globalLocale.getLocale(); diff --git a/packages/editor-core/src/utils/assets-transform.ts b/packages/editor-core/src/utils/assets-transform.ts index 013338751b..51fa023e18 100644 --- a/packages/editor-core/src/utils/assets-transform.ts +++ b/packages/editor-core/src/utils/assets-transform.ts @@ -1,28 +1,38 @@ /* eslint-disable no-param-reassign */ -import { IPublicTypeAssetsJson, IPublicTypeComponentDescription, IPublicTypePackage, IPublicTypeRemoteComponentDescription } from '@alilc/lowcode-types'; +import { + IPublicTypeAssetsJson, + IPublicTypeComponentDescription, + IPublicTypePackage, + IPublicTypeRemoteComponentDescription, +} from '@lce/lowcode-types'; // TODO: 该转换逻辑未来需要消化掉 export function assetsTransform(assets: IPublicTypeAssetsJson) { const { components, packages } = assets; - const packageMaps = (packages || []).reduce((acc: Record<string, IPublicTypePackage>, cur: IPublicTypePackage) => { - const key = cur.id || cur.package || ''; - acc[key] = cur; - return acc; - }, {} as any); - components.forEach((componentDesc: IPublicTypeComponentDescription | IPublicTypeRemoteComponentDescription) => { - let { devMode, schema, reference } = componentDesc; - if ((devMode as string) === 'lowcode') { - devMode = 'lowCode'; - } else if (devMode === 'proCode') { - devMode = 'proCode'; - } - if (devMode) { - componentDesc.devMode = devMode; - } - if (devMode === 'lowCode' && !schema && reference) { - const referenceId = reference.id || ''; - componentDesc.schema = packageMaps[referenceId].schema; - } - }); + const packageMaps = (packages || []).reduce( + (acc: Record<string, IPublicTypePackage>, cur: IPublicTypePackage) => { + const key = cur.id || cur.package || ''; + acc[key] = cur; + return acc; + }, + {} as any, + ); + components.forEach( + (componentDesc: IPublicTypeComponentDescription | IPublicTypeRemoteComponentDescription) => { + let { devMode, schema, reference } = componentDesc; + if ((devMode as string) === 'lowcode') { + devMode = 'lowCode'; + } else if (devMode === 'proCode') { + devMode = 'proCode'; + } + if (devMode) { + componentDesc.devMode = devMode; + } + if (devMode === 'lowCode' && !schema && reference) { + const referenceId = reference.id || ''; + componentDesc.schema = packageMaps[referenceId].schema; + } + }, + ); return assets; -} \ No newline at end of file +} diff --git a/packages/editor-core/src/utils/logger.ts b/packages/editor-core/src/utils/logger.ts index 212dcddab1..79f36542f5 100644 --- a/packages/editor-core/src/utils/logger.ts +++ b/packages/editor-core/src/utils/logger.ts @@ -1,4 +1,4 @@ -import { Logger, Level } from '@alilc/lowcode-utils'; +import { Logger, Level } from '@lce/lowcode-utils'; export { Logger }; diff --git a/packages/editor-core/src/utils/preference.ts b/packages/editor-core/src/utils/preference.ts index 6f17a8f638..6e03d7c902 100644 --- a/packages/editor-core/src/utils/preference.ts +++ b/packages/editor-core/src/utils/preference.ts @@ -1,6 +1,6 @@ import store from 'store'; import { getLogger } from './logger'; -import { IPublicModelPreference } from '@alilc/lowcode-types'; +import { IPublicModelPreference } from '@lce/lowcode-types'; const logger = getLogger({ level: 'warn', bizName: 'Preference' }); const STORAGE_KEY_PREFIX = 'ale'; @@ -52,4 +52,4 @@ export default class Preference implements IPublicModelPreference { return !(result === undefined || result === null); } -} \ No newline at end of file +} diff --git a/packages/editor-core/src/widgets/tip/help-tips.tsx b/packages/editor-core/src/widgets/tip/help-tips.tsx index ab5f65050e..9229f398fb 100644 --- a/packages/editor-core/src/widgets/tip/help-tips.tsx +++ b/packages/editor-core/src/widgets/tip/help-tips.tsx @@ -1,4 +1,4 @@ -import { IPublicTypeHelpTipConfig, IPublicTypeTipConfig } from '@alilc/lowcode-types'; +import { IPublicTypeHelpTipConfig, IPublicTypeTipConfig } from '@lce/lowcode-types'; import { Tip } from './tip'; import { Icon } from '@alifd/next'; import { IconProps } from '@alifd/next/types/icon'; @@ -37,4 +37,4 @@ export function HelpTip({ <Tip direction={direction}>{help.content}</Tip> </div> ); -} \ No newline at end of file +} diff --git a/packages/editor-core/src/widgets/tip/tip-handler.ts b/packages/editor-core/src/widgets/tip/tip-handler.ts index 63193ea854..b58928feb2 100644 --- a/packages/editor-core/src/widgets/tip/tip-handler.ts +++ b/packages/editor-core/src/widgets/tip/tip-handler.ts @@ -1,4 +1,4 @@ -import { IPublicTypeTipConfig } from '@alilc/lowcode-types'; +import { IPublicTypeTipConfig } from '@lce/lowcode-types'; import { IEventBus, createModuleEventBus } from '../../event-bus'; export interface TipOptions extends IPublicTypeTipConfig { diff --git a/packages/editor-core/src/widgets/tip/tip-item.tsx b/packages/editor-core/src/widgets/tip/tip-item.tsx index c56d747ffa..e12d5d2b26 100644 --- a/packages/editor-core/src/widgets/tip/tip-item.tsx +++ b/packages/editor-core/src/widgets/tip/tip-item.tsx @@ -1,6 +1,6 @@ import { Component } from 'react'; import classNames from 'classnames'; -import { IPublicTypeTipConfig } from '@alilc/lowcode-types'; +import { IPublicTypeTipConfig } from '@lce/lowcode-types'; import { intl } from '../../intl'; import { resolvePosition } from './utils'; import { tipHandler } from './tip-handler'; @@ -106,7 +106,11 @@ export class TipItem extends Component { render() { const tip: IPublicTypeTipConfig = tipHandler.tip || ({} as any); - const className = classNames('lc-tip', tip.className, tip && tip.theme ? `lc-theme-${tip.theme}` : null); + const className = classNames( + 'lc-tip', + tip.className, + tip && tip.theme ? `lc-theme-${tip.theme}` : null, + ); this.originClassName = className; diff --git a/packages/editor-core/src/widgets/tip/tip.tsx b/packages/editor-core/src/widgets/tip/tip.tsx index 92a683baa5..6da3c3b0ab 100644 --- a/packages/editor-core/src/widgets/tip/tip.tsx +++ b/packages/editor-core/src/widgets/tip/tip.tsx @@ -1,6 +1,6 @@ import { Component } from 'react'; -import { IPublicTypeTipConfig } from '@alilc/lowcode-types'; -import { uniqueId } from '@alilc/lowcode-utils'; +import { IPublicTypeTipConfig } from '@lce/lowcode-types'; +import { uniqueId } from '@lce/lowcode-utils'; import { postTip } from './tip-handler'; export class Tip extends Component<IPublicTypeTipConfig> { diff --git a/packages/editor-core/src/widgets/title/index.tsx b/packages/editor-core/src/widgets/title/index.tsx index 7df2676f92..dfafbde31c 100644 --- a/packages/editor-core/src/widgets/title/index.tsx +++ b/packages/editor-core/src/widgets/title/index.tsx @@ -1,7 +1,11 @@ import { Component, isValidElement, ReactNode } from 'react'; import classNames from 'classnames'; -import { createIcon, isI18nData, isTitleConfig } from '@alilc/lowcode-utils'; -import { IPublicTypeI18nData, IPublicTypeTitleConfig, IPublicTypeTitleProps } from '@alilc/lowcode-types'; +import { createIcon, isI18nData, isTitleConfig } from '@lce/lowcode-utils'; +import { + IPublicTypeI18nData, + IPublicTypeTitleConfig, + IPublicTypeTitleProps, +} from '@lce/lowcode-types'; import { intl } from '../../intl'; import { Tip } from '../tip'; import './title.less'; @@ -13,7 +17,7 @@ import './title.less'; * @param keywords 关键字 * @returns 文字片段列表 */ - function splitLabelByKeywords(label: string, keywords: string): string[] { +function splitLabelByKeywords(label: string, keywords: string): string[] { const len = keywords.length; const fragments = []; let str = label; @@ -72,12 +76,12 @@ export class Title extends Component<IPublicTypeTitleProps> { if (match && keywords) { const fragments = splitLabelByKeywords(intlLabel as string, keywords); - labelToRender = fragments.map(f => <span style={{ color: f === keywords ? 'red' : 'inherit' }}>{f}</span>); + labelToRender = fragments.map((f) => ( + <span style={{ color: f === keywords ? 'red' : 'inherit' }}>{f}</span> + )); } - return ( - <span className="lc-title-txt">{labelToRender}</span> - ); + return <span className="lc-title-txt">{labelToRender}</span>; }; render() { diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 63aab7e48b..ed3dcb0216 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-editor-skeleton", + "name": "@lce/lowcode-editor-skeleton", "version": "1.3.2", "description": "alibaba lowcode editor skeleton", "main": "lib/index.js", @@ -19,10 +19,10 @@ ], "dependencies": { "@alifd/next": "^1.20.12", - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "react": "^16.8.1", "react-dom": "^16.8.1" diff --git a/packages/editor-skeleton/src/area.ts b/packages/editor-skeleton/src/area.ts index 8dc711084b..fafd0fc998 100644 --- a/packages/editor-skeleton/src/area.ts +++ b/packages/editor-skeleton/src/area.ts @@ -1,7 +1,7 @@ /* eslint-disable max-len */ -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; -import { Logger } from '@alilc/lowcode-utils'; -import { IPublicTypeWidgetBaseConfig } from '@alilc/lowcode-types'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; +import { Logger } from '@lce/lowcode-utils'; +import { IPublicTypeWidgetBaseConfig } from '@lce/lowcode-types'; import { WidgetContainer } from './widget/widget-container'; import { ISkeleton } from './skeleton'; import { IWidget } from './widget/widget'; @@ -16,7 +16,9 @@ export interface IArea<C, T> { show(): void; } -export class Area<C extends IPublicTypeWidgetBaseConfig = any, T extends IWidget = IWidget> implements IArea<C, T> { +export class Area<C extends IPublicTypeWidgetBaseConfig = any, T extends IWidget = IWidget> + implements IArea<C, T> +{ @obx private _visible = true; @computed get visible() { @@ -37,9 +39,21 @@ export class Area<C extends IPublicTypeWidgetBaseConfig = any, T extends IWidget private lastCurrent: T | null = null; - constructor(readonly skeleton: ISkeleton, readonly name: string, handle: (item: T | C) => T, private exclusive?: boolean, defaultSetCurrent = false) { + constructor( + readonly skeleton: ISkeleton, + readonly name: string, + handle: (item: T | C) => T, + private exclusive?: boolean, + defaultSetCurrent = false, + ) { makeObservable(this); - this.container = skeleton.createContainer(name, handle, exclusive, () => this.visible, defaultSetCurrent); + this.container = skeleton.createContainer( + name, + handle, + exclusive, + () => this.visible, + defaultSetCurrent, + ); } isEmpty(): boolean { diff --git a/packages/editor-skeleton/src/components/field/fields.tsx b/packages/editor-skeleton/src/components/field/fields.tsx index 21ae93eb25..afb2ffa2ae 100644 --- a/packages/editor-skeleton/src/components/field/fields.tsx +++ b/packages/editor-skeleton/src/components/field/fields.tsx @@ -3,13 +3,13 @@ import { Component, ErrorInfo, MouseEvent } from 'react'; import { isObject } from 'lodash'; import classNames from 'classnames'; import { Icon } from '@alifd/next'; -import { Title } from '@alilc/lowcode-editor-core'; -import { IPublicModelEditor, IPublicTypeTitleContent } from '@alilc/lowcode-types'; +import { Title } from '@lce/lowcode-editor-core'; +import { IPublicModelEditor, IPublicTypeTitleContent } from '@lce/lowcode-types'; import { PopupPipe, PopupContext } from '../popup'; import './index.less'; import InlineTip from './inlinetip'; import { intl } from '../../locale'; -import { Logger } from '@alilc/lowcode-utils'; +import { Logger } from '@lce/lowcode-utils'; const logger = new Logger({ level: 'warn', bizName: 'skeleton:field' }); @@ -116,22 +116,37 @@ export class Field extends Component<FieldProps> { getTipContent(propName: string, tip?: any): any { let tipContent = ( <div> - <div>{intl('Attribute: ')}{propName}</div> + <div> + {intl('Attribute: ')} + {propName} + </div> </div> ); if (isObject(tip)) { tipContent = ( <div> - <div>{intl('Attribute: ')}{propName}</div> - <div>{intl('Description: ')}{(tip as any).content}</div> + <div> + {intl('Attribute: ')} + {propName} + </div> + <div> + {intl('Description: ')} + {(tip as any).content} + </div> </div> ); } else if (tip) { tipContent = ( <div> - <div>{intl('Attribute: ')}{propName}</div> - <div>{intl('Description: ')}{tip}</div> + <div> + {intl('Attribute: ')} + {propName} + </div> + <div> + {intl('Description: ')} + {tip} + </div> </div> ); } @@ -167,22 +182,23 @@ export class Field extends Component<FieldProps> { })} id={id} > - { - display !== 'plain' && ( - <div className="lc-field-head" onClick={isAccordion ? this.toggleExpand : undefined}> - <div className="lc-field-title"> - {createValueState(valueState, this.handleClear)} - <Title - title={title || ''} - onClick={this.clickHandler} - /> - <InlineTip position="top">{tipContent}</InlineTip> - </div> - {isAccordion && <Icon className="lc-field-icon" type="arrow-up" size="xs" />} + {display !== 'plain' && ( + <div className="lc-field-head" onClick={isAccordion ? this.toggleExpand : undefined}> + <div className="lc-field-title"> + {createValueState(valueState, this.handleClear)} + <Title title={title || ''} onClick={this.clickHandler} /> + <InlineTip position="top">{tipContent}</InlineTip> </div> - ) - } - <div key="body" ref={(shell) => { this.body = shell; }} className="lc-field-body"> + {isAccordion && <Icon className="lc-field-icon" type="arrow-up" size="xs" />} + </div> + )} + <div + key="body" + ref={(shell) => { + this.body = shell; + }} + className="lc-field-body" + > {children} </div> </div> diff --git a/packages/editor-skeleton/src/components/field/index.ts b/packages/editor-skeleton/src/components/field/index.ts index defe151cf7..cebac20e4a 100644 --- a/packages/editor-skeleton/src/components/field/index.ts +++ b/packages/editor-skeleton/src/components/field/index.ts @@ -1,5 +1,5 @@ import { ReactNode, createElement } from 'react'; -import { IPublicTypeTitleContent } from '@alilc/lowcode-types'; +import { IPublicTypeTitleContent } from '@lce/lowcode-types'; import './index.less'; import { Field, PopupField, EntryField, PlainField } from './fields'; @@ -14,7 +14,11 @@ export interface FieldProps { [extra: string]: any; } -export function createField(props: FieldProps, children: ReactNode, type?: 'accordion' | 'inline' | 'block' | 'plain' | 'popup' | 'entry'): ReactNode { +export function createField( + props: FieldProps, + children: ReactNode, + type?: 'accordion' | 'inline' | 'block' | 'plain' | 'popup' | 'entry', +): ReactNode { if (type === 'popup') { return createElement(PopupField, props, children); } diff --git a/packages/editor-skeleton/src/components/popup/index.tsx b/packages/editor-skeleton/src/components/popup/index.tsx index 1367723a16..e4fca3fb15 100644 --- a/packages/editor-skeleton/src/components/popup/index.tsx +++ b/packages/editor-skeleton/src/components/popup/index.tsx @@ -1,25 +1,24 @@ import { createContext, ReactNode, Component, PureComponent } from 'react'; import { Drawer, ConfigProvider } from '@alifd/next'; -import { uniqueId } from '@alilc/lowcode-utils'; -import { IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { uniqueId } from '@lce/lowcode-utils'; +import { IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; import './style.less'; export interface PopupExtProps { width?: number; hasMask?: boolean; trigger?: ReactNode; - canCloseByOutSideClick?: boolean + canCloseByOutSideClick?: boolean; className?: string; safeNode?: string[]; } -interface PopupProps extends PopupExtProps{ - content?: ReactNode, - title?: ReactNode, - actionKey?: string +interface PopupProps extends PopupExtProps { + content?: ReactNode; + title?: ReactNode; + actionKey?: string; } - export const PopupContext = createContext<PopupPipe>({} as any); export class PopupPipe { @@ -103,9 +102,9 @@ export default class PopupService extends Component<{ } interface StateType extends PopupProps { - visible?: boolean, - offsetX?: number, - pos?: {top: number, height: number} + visible?: boolean; + offsetX?: number; + pos?: { top: number; height: number }; } export class PopupContent extends PureComponent<{ safeId?: string; popupContainer?: string }> { static contextType = PopupContext; @@ -153,7 +152,18 @@ export class PopupContent extends PureComponent<{ safeId?: string; popupContaine }; render() { - const { content, visible, title, actionKey, pos, offsetX, width = 360, hasMask = false, canCloseByOutSideClick = true, safeNode = [] } = this.state; + const { + content, + visible, + title, + actionKey, + pos, + offsetX, + width = 360, + hasMask = false, + canCloseByOutSideClick = true, + safeNode = [], + } = this.state; if (!visible) { return null; } @@ -192,9 +202,7 @@ export class PopupContent extends PureComponent<{ safeId?: string; popupContaine <div className="lc-ballon-title">{title}</div> <div className="lc-ballon-content"> <PopupService actionKey={actionKey} safeId={id} popupContainer={this.popupContainerId}> - <ConfigProvider popupContainer={this.popupContainerId}> - {content} - </ConfigProvider> + <ConfigProvider popupContainer={this.popupContainerId}>{content}</ConfigProvider> </PopupService> </div> <div id={this.popupContainerId} /> diff --git a/packages/editor-skeleton/src/components/settings/main.ts b/packages/editor-skeleton/src/components/settings/main.ts index 6cc672c907..29bc3e38e8 100644 --- a/packages/editor-skeleton/src/components/settings/main.ts +++ b/packages/editor-skeleton/src/components/settings/main.ts @@ -1,5 +1,5 @@ -import { Node, Designer, Selection, SettingTopEntry } from '@alilc/lowcode-designer'; -import { Editor, obx, computed, makeObservable, action, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; +import { Node, Designer, Selection, SettingTopEntry } from '@lce/lowcode-designer'; +import { Editor, obx, computed, makeObservable, action, IEventBus, createModuleEventBus } from '@lce/lowcode-editor-core'; function generateSessionId(nodes: Node[]) { return nodes diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 1561bf8bbe..c7ef8f5b87 100644 --- a/packages/editor-skeleton/src/components/settings/settings-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-pane.tsx @@ -1,9 +1,24 @@ import { Component, MouseEvent, Fragment, ReactNode } from 'react'; -import { shallowIntl, observer, obx, engineConfig, runInAction } from '@alilc/lowcode-editor-core'; -import { createContent, isJSSlot, isSetterConfig, shouldUseVariableSetter } from '@alilc/lowcode-utils'; -import { Skeleton, Stage } from '@alilc/lowcode-editor-skeleton'; -import { IPublicApiSetters, IPublicTypeCustomView, IPublicTypeDynamicProps } from '@alilc/lowcode-types'; -import { ISettingEntry, IComponentMeta, ISettingField, isSettingField, ISettingTopEntry } from '@alilc/lowcode-designer'; +import { shallowIntl, observer, obx, engineConfig, runInAction } from '@lce/lowcode-editor-core'; +import { + createContent, + isJSSlot, + isSetterConfig, + shouldUseVariableSetter, +} from '@lce/lowcode-utils'; +import { Skeleton, Stage } from '@lce/lowcode-editor-skeleton'; +import { + IPublicApiSetters, + IPublicTypeCustomView, + IPublicTypeDynamicProps, +} from '@lce/lowcode-types'; +import { + ISettingEntry, + IComponentMeta, + ISettingField, + isSettingField, + ISettingTopEntry, +} from '@lce/lowcode-designer'; import { createField } from '../field'; import PopupService, { PopupPipe } from '../popup'; import { SkeletonContext } from '../../context'; @@ -25,9 +40,13 @@ function isStandardComponent(componentMeta: IComponentMeta | null) { function isInitialValueNotEmpty(initialValue: any) { if (isJSSlot(initialValue)) { // @ts-ignore visible 为 false 代表默认不展示 - return initialValue.visible !== false && Array.isArray(initialValue.value) && initialValue.value.length > 0; + return ( + initialValue.visible !== false && + Array.isArray(initialValue.value) && + initialValue.value.length > 0 + ); } - return (initialValue !== undefined && initialValue !== null); + return initialValue !== undefined && initialValue !== null; } type SettingFieldViewProps = { field: ISettingField }; @@ -61,7 +80,11 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView stages.add({ type: 'Widget', name: stageName, - content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>, + content: ( + <Fragment> + {field.items.map((item, index) => createSettingFieldView(item, field, index))} + </Fragment> + ), props: { title: field.title, }, @@ -79,7 +102,9 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView const { extraProps } = this.field; const { condition } = extraProps; try { - return typeof condition === 'function' ? condition(this.field.internalToShellField()) !== false : true; + return typeof condition === 'function' + ? condition(this.field.internalToShellField()) !== false + : true; } catch (error) { console.error('exception when condition (hidden) is excuted', error); } @@ -111,9 +136,11 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView const { defaultValue } = extraProps; const { setter } = this.field; - let setterProps: { - setters?: (ReactNode | string)[]; - } & Record<string, unknown> | IPublicTypeDynamicProps = {}; + let setterProps: + | ({ + setters?: (ReactNode | string)[]; + } & Record<string, unknown>) + | IPublicTypeDynamicProps = {}; let setterType: any; let initialValue: any = null; @@ -154,7 +181,8 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView // 根据是否支持变量配置做相应的更改 const supportVariable = this.field.extraProps?.supportVariable; // supportVariableGlobally 只对标准组件生效,vc 需要单独配置 - const supportVariableGlobally = engineConfig.get('supportVariableGlobally', false) && isStandardComponent(componentMeta); + const supportVariableGlobally = + engineConfig.get('supportVariableGlobally', false) && isStandardComponent(componentMeta); const isUseVariableSetter = shouldUseVariableSetter(supportVariable, supportVariableGlobally); if (isUseVariableSetter === false) { return { @@ -172,10 +200,7 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView } else { setterType = 'MixedSetter'; setterProps = { - setters: [ - setter, - 'VariableSetter', - ], + setters: [setter, 'VariableSetter'], }; } return { @@ -191,7 +216,8 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView initDefaultValue() { const { initialValue } = this.setterInfo; - if (this.state?.fromOnChange || + if ( + this.state?.fromOnChange || !isInitialValueNotEmpty(initialValue) || this.ignoreDefaultValue || this.value !== undefined @@ -200,7 +226,10 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView } // 当前 field 没有 value 值时,将 initialValue 写入 field // 之所以用 initialValue,而不是 defaultValue 是为了保持跟 props.onInitial 的逻辑一致 - const _initialValue = typeof initialValue === 'function' ? initialValue(this.field.internalToShellField()) : initialValue; + const _initialValue = + typeof initialValue === 'function' + ? initialValue(this.field.internalToShellField()) + : initialValue; this.field.setValue(_initialValue); } @@ -217,11 +246,7 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView return null; } - const { - setterProps = {}, - setterType, - initialValue = null, - } = this.setterInfo; + const { setterProps = {}, setterType, initialValue = null } = this.setterInfo; const value = this.value; @@ -243,44 +268,47 @@ class SettingFieldView extends Component<SettingFieldViewProps, SettingFieldView ...extraProps, }, !stageName && - this.setters?.createSetterContent(setterType, { - ...shallowIntl(setterProps), - forceInline: extraProps.forceInline, - key: field.id, - // === injection - prop: field.internalToShellField(), // for compatible vision - selected: field.top?.getNode()?.internalToShellNode(), - field: field.internalToShellField(), - // === IO - value, // reaction point - initialValue, - onChange: (value: any) => { - this.setState({ - fromOnChange: true, - // eslint-disable-next-line react/no-unused-state - value, - }); - field.setValue(value, true); - if (onChangeAPI) onChangeAPI(value, field.internalToShellField()); - }, - onInitial: () => { - if (initialValue == null) { - return; - } - const value = typeof initialValue === 'function' ? initialValue(field.internalToShellField()) : initialValue; - this.setState({ - // eslint-disable-next-line react/no-unused-state - value, - }); - field.setValue(value, true); - }, - - removeProp: () => { - if (field.name) { - field.parent.clearPropValue(field.name); - } - }, - }), + this.setters?.createSetterContent(setterType, { + ...shallowIntl(setterProps), + forceInline: extraProps.forceInline, + key: field.id, + // === injection + prop: field.internalToShellField(), // for compatible vision + selected: field.top?.getNode()?.internalToShellNode(), + field: field.internalToShellField(), + // === IO + value, // reaction point + initialValue, + onChange: (value: any) => { + this.setState({ + fromOnChange: true, + // eslint-disable-next-line react/no-unused-state + value, + }); + field.setValue(value, true); + if (onChangeAPI) onChangeAPI(value, field.internalToShellField()); + }, + onInitial: () => { + if (initialValue == null) { + return; + } + const value = + typeof initialValue === 'function' + ? initialValue(field.internalToShellField()) + : initialValue; + this.setState({ + // eslint-disable-next-line react/no-unused-state + value, + }); + field.setValue(value, true); + }, + + removeProp: () => { + if (field.name) { + field.parent.clearPropValue(field.name); + } + }, + }), extraProps.forceInline ? 'plain' : extraProps.display, ); } @@ -311,7 +339,11 @@ class SettingGroupView extends Component<SettingGroupViewProps> { stages.add({ type: 'Widget', name: stageName, - content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>, + content: ( + <Fragment> + {field.items.map((item, index) => createSettingFieldView(item, field, index))} + </Fragment> + ), props: { title: field.title, }, @@ -325,7 +357,10 @@ class SettingGroupView extends Component<SettingGroupViewProps> { const { field } = this.props; const { extraProps } = field; const { condition, display } = extraProps; - const visible = field.isSingle && typeof condition === 'function' ? condition(field.internalToShellField()) !== false : true; + const visible = + field.isSingle && typeof condition === 'function' + ? condition(field.internalToShellField()) !== false + : true; if (!visible) { return null; @@ -349,7 +384,11 @@ class SettingGroupView extends Component<SettingGroupViewProps> { } } -export function createSettingFieldView(field: ISettingField | IPublicTypeCustomView, fieldEntry: ISettingEntry, index?: number) { +export function createSettingFieldView( + field: ISettingField | IPublicTypeCustomView, + fieldEntry: ISettingEntry, + index?: number, +) { if (isSettingField(field)) { if (field.isGroup) { return <SettingGroupView field={field} key={field.id} />; diff --git a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx index 747a2ea1df..a10f3982a3 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -1,14 +1,22 @@ import React, { Component } from 'react'; import { Tab, Breadcrumb } from '@alifd/next'; -import { Title, observer, Editor, obx, globalContext, engineConfig, makeObservable } from '@alilc/lowcode-editor-core'; -import { Node, SettingField, isSettingField, INode } from '@alilc/lowcode-designer'; +import { + Title, + observer, + Editor, + obx, + globalContext, + engineConfig, + makeObservable, +} from '@lce/lowcode-editor-core'; +import { Node, SettingField, isSettingField, INode } from '@lce/lowcode-designer'; import classNames from 'classnames'; import { SettingsMain } from './main'; import { SettingsPane } from './settings-pane'; import { StageBox } from '../stage-box'; import { SkeletonContext } from '../../context'; import { intl } from '../../locale'; -import { createIcon } from '@alilc/lowcode-utils'; +import { createIcon } from '@lce/lowcode-utils'; interface ISettingsPrimaryPaneProps { engineEditor: Editor; @@ -16,7 +24,10 @@ interface ISettingsPrimaryPaneProps { } @observer -export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, { shouldIgnoreRoot: boolean }> { +export class SettingsPrimaryPane extends Component< + ISettingsPrimaryPaneProps, + { shouldIgnoreRoot: boolean } +> { state = { shouldIgnoreRoot: false, }; @@ -93,27 +104,29 @@ export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, { l === 2 ? {} : { - onMouseOver: hoverNode.bind(null, _node, true), - onMouseOut: hoverNode.bind(null, _node, false), - onClick: () => { - if (!_node) { - return; - } - selectNode.call(null, _node); - const getName = (node: any) => { - const npm = node?.componentMeta?.npm; - return [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || - node?.componentMeta?.componentName || - ''; - }; - const selected = getName(current); - const target = getName(_node); - editor?.eventBus.emit('skeleton.settingsPane.Breadcrumb', { - selected, - target, - }); - }, - }; + onMouseOver: hoverNode.bind(null, _node, true), + onMouseOut: hoverNode.bind(null, _node, false), + onClick: () => { + if (!_node) { + return; + } + selectNode.call(null, _node); + const getName = (node: any) => { + const npm = node?.componentMeta?.npm; + return ( + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || + node?.componentMeta?.componentName || + '' + ); + }; + const selected = getName(current); + const target = getName(_node); + editor?.eventBus.emit('skeleton.settingsPane.Breadcrumb', { + selected, + target, + }); + }, + }; items.unshift( <Breadcrumb.Item {...props} key={node.id}> <Title title={node.title} /> @@ -211,14 +224,12 @@ export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, { className="lc-settings-tab-item" title={<Title title={field.title} />} key={field.name} - onClick={ - () => { - editor?.eventBus.emit('skeleton.settingsPane.change', { - name: field.name, - title: field.title, - }); - } - } + onClick={() => { + editor?.eventBus.emit('skeleton.settingsPane.change', { + name: field.name, + title: field.title, + }); + }} > <SkeletonContext.Consumer> {(skeleton) => { @@ -243,7 +254,7 @@ export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, { }); return ( <div className={className}> - { this.renderBreadcrumb() } + {this.renderBreadcrumb()} <Tab activeKey={activeKey} onChange={(tabKey) => { diff --git a/packages/editor-skeleton/src/components/stage-box/stage-box.tsx b/packages/editor-skeleton/src/components/stage-box/stage-box.tsx index 5015853824..3c8b8ead8e 100644 --- a/packages/editor-skeleton/src/components/stage-box/stage-box.tsx +++ b/packages/editor-skeleton/src/components/stage-box/stage-box.tsx @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import StageChain from './stage-chain'; import Stage from './stage'; import { ISkeleton } from '../../skeleton'; @@ -104,8 +104,12 @@ export default class StageBox extends Component<StageBoxProps> { let contentRefer = null; if (refer) { - contentCurrent = <Stage key={stage.getId()} stage={stage} direction={refer.direction} current />; - contentRefer = <Stage key={refer?.stage?.getId()} stage={refer?.stage} direction={refer.direction} />; + contentCurrent = ( + <Stage key={stage.getId()} stage={stage} direction={refer.direction} current /> + ); + contentRefer = ( + <Stage key={refer?.stage?.getId()} stage={refer?.stage} direction={refer.direction} /> + ); } else { contentCurrent = <Stage key={stage.getId()} stage={stage} current />; } @@ -117,12 +121,9 @@ export default class StageBox extends Component<StageBoxProps> { }} className={className} > - <PopupService popupPipe={this.popupPipe}> - {contentRefer} {contentCurrent} - </PopupService> </div> ); diff --git a/packages/editor-skeleton/src/components/stage-box/stage-chain.ts b/packages/editor-skeleton/src/components/stage-box/stage-chain.ts index fe931769fa..17f9063df8 100644 --- a/packages/editor-skeleton/src/components/stage-box/stage-chain.ts +++ b/packages/editor-skeleton/src/components/stage-box/stage-chain.ts @@ -1,5 +1,5 @@ import { Stage as StageWidget } from '../../widget/stage'; -import { createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; +import { createModuleEventBus, IEventBus } from '@lce/lowcode-editor-core'; export default class StageChain { private emitter: IEventBus; diff --git a/packages/editor-skeleton/src/components/stage-box/stage.tsx b/packages/editor-skeleton/src/components/stage-box/stage.tsx index e4b0c0ef12..c6b3a77fac 100644 --- a/packages/editor-skeleton/src/components/stage-box/stage.tsx +++ b/packages/editor-skeleton/src/components/stage-box/stage.tsx @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { IconArrow } from '../../icons/arrow'; import { IconExit } from '../../icons/exit'; import { Stage as StageWidget } from '../../widget/stage'; -import { isTitleConfig } from '@alilc/lowcode-utils'; +import { isTitleConfig } from '@lce/lowcode-utils'; export const StageDefaultProps = { current: false, @@ -78,9 +78,17 @@ export default class Stage extends Component<StageProps> { const stageBacker = stage?.hasBack() ? ( <div className="skeleton-stagebox-stagebacker"> - <IconArrow className="skeleton-stagebox-stage-arrow" size="medium" data-stage-target="stageback" /> + <IconArrow + className="skeleton-stagebox-stage-arrow" + size="medium" + data-stage-target="stageback" + /> <span className="skeleton-stagebox-stage-title">{newTitle}</span> - <IconExit className="skeleton-stagebox-stage-exit" size="medium" data-stage-target="stageexit" /> + <IconExit + className="skeleton-stagebox-stage-exit" + size="medium" + data-stage-target="stageexit" + /> </div> ) : null; diff --git a/packages/editor-skeleton/src/components/widget-views/index.tsx b/packages/editor-skeleton/src/components/widget-views/index.tsx index 7cdff4c014..f646cd99ea 100644 --- a/packages/editor-skeleton/src/components/widget-views/index.tsx +++ b/packages/editor-skeleton/src/components/widget-views/index.tsx @@ -1,6 +1,6 @@ import { Component, ReactElement } from 'react'; import classNames from 'classnames'; -import { Title, observer, HelpTip } from '@alilc/lowcode-editor-core'; +import { Title, observer, HelpTip } from '@lce/lowcode-editor-core'; import { DockProps } from '../../types'; import { PanelDock } from '../../widget/panel-dock'; import { composeTitle } from '../../widget/utils'; @@ -257,7 +257,14 @@ export class TabsPanelView extends Component<{ const contents: ReactElement[] = []; // 如果只有一个标签且 shouldHideSingleTab 为 true,则不显示 Tabs if (this.props.shouldHideSingleTab && container.items.length === 1) { - contents.push(<PanelView key={container.items[0].id} panel={container.items[0]} hideOperationRow hideDragLine />); + contents.push( + <PanelView + key={container.items[0].id} + panel={container.items[0]} + hideOperationRow + hideDragLine + />, + ); } else { container.items.forEach((item: any) => { titles.push(<PanelTitle key={item.id} panel={item} className="lc-tab-title" />); diff --git a/packages/editor-skeleton/src/components/widget-views/panel-operation-row.tsx b/packages/editor-skeleton/src/components/widget-views/panel-operation-row.tsx index 605f4f5705..5b70c2a48c 100644 --- a/packages/editor-skeleton/src/components/widget-views/panel-operation-row.tsx +++ b/packages/editor-skeleton/src/components/widget-views/panel-operation-row.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import { Button, Icon } from '@alifd/next'; -import { action, makeObservable } from '@alilc/lowcode-editor-core'; +import { action, makeObservable } from '@lce/lowcode-editor-core'; import { IconFix } from '../../icons/fix'; import { IconFloat } from '../../icons/float'; import { Panel } from '../../widget/panel'; diff --git a/packages/editor-skeleton/src/icons/arrow.tsx b/packages/editor-skeleton/src/icons/arrow.tsx index 520a993232..bce422cd08 100644 --- a/packages/editor-skeleton/src/icons/arrow.tsx +++ b/packages/editor-skeleton/src/icons/arrow.tsx @@ -1,5 +1,4 @@ - -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconArrow(props: IconProps) { return ( @@ -8,4 +7,4 @@ export function IconArrow(props: IconProps) { </SVGIcon> ); } -IconArrow.displayName = 'Arrow'; \ No newline at end of file +IconArrow.displayName = 'Arrow'; diff --git a/packages/editor-skeleton/src/icons/clear.tsx b/packages/editor-skeleton/src/icons/clear.tsx index ff4287e908..5c089055c9 100644 --- a/packages/editor-skeleton/src/icons/clear.tsx +++ b/packages/editor-skeleton/src/icons/clear.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconClear(props: IconProps) { return ( diff --git a/packages/editor-skeleton/src/icons/convert.tsx b/packages/editor-skeleton/src/icons/convert.tsx index 62a877d330..4545bcc621 100644 --- a/packages/editor-skeleton/src/icons/convert.tsx +++ b/packages/editor-skeleton/src/icons/convert.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconConvert(props: IconProps) { return ( diff --git a/packages/editor-skeleton/src/icons/exit.tsx b/packages/editor-skeleton/src/icons/exit.tsx index bdcc9e513a..67aece7118 100644 --- a/packages/editor-skeleton/src/icons/exit.tsx +++ b/packages/editor-skeleton/src/icons/exit.tsx @@ -1,5 +1,4 @@ - -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconExit(props: IconProps) { return ( @@ -8,4 +7,4 @@ export function IconExit(props: IconProps) { </SVGIcon> ); } -IconExit.displayName = 'Exit'; \ No newline at end of file +IconExit.displayName = 'Exit'; diff --git a/packages/editor-skeleton/src/icons/fix.tsx b/packages/editor-skeleton/src/icons/fix.tsx index 6973c77b43..3bfd155acc 100644 --- a/packages/editor-skeleton/src/icons/fix.tsx +++ b/packages/editor-skeleton/src/icons/fix.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconFix(props: IconProps) { const rect = { diff --git a/packages/editor-skeleton/src/icons/float.tsx b/packages/editor-skeleton/src/icons/float.tsx index afc42036a8..c522524fe1 100644 --- a/packages/editor-skeleton/src/icons/float.tsx +++ b/packages/editor-skeleton/src/icons/float.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconFloat(props: IconProps) { return ( diff --git a/packages/editor-skeleton/src/icons/slot.tsx b/packages/editor-skeleton/src/icons/slot.tsx index de26099de1..f18af13672 100644 --- a/packages/editor-skeleton/src/icons/slot.tsx +++ b/packages/editor-skeleton/src/icons/slot.tsx @@ -1,9 +1,12 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconSlot(props: IconProps) { return ( <SVGIcon viewBox="0 0 1024 1024" {...props}> - <path d="M682.325333 135.509333V204.8H819.2v613.376h-614.741333V204.8h136.874666v-69.290667h-206.165333v752.298667h754.346667V135.509333z" c="Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgQWxpYmFiYSBJbmMu" /> + <path + d="M682.325333 135.509333V204.8H819.2v613.376h-614.741333V204.8h136.874666v-69.290667h-206.165333v752.298667h754.346667V135.509333z" + c="Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgQWxpYmFiYSBJbmMu" + /> <path d="M512 512m-170.325333 0a170.325333 170.325333 0 1 0 340.650666 0 170.325333 170.325333 0 1 0-340.650666 0Z" /> </SVGIcon> ); diff --git a/packages/editor-skeleton/src/icons/variable.tsx b/packages/editor-skeleton/src/icons/variable.tsx index ce2e7a2953..735bc426c9 100644 --- a/packages/editor-skeleton/src/icons/variable.tsx +++ b/packages/editor-skeleton/src/icons/variable.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconVariable(props: IconProps) { return ( diff --git a/packages/editor-skeleton/src/layouts/bottom-area.tsx b/packages/editor-skeleton/src/layouts/bottom-area.tsx index 2981cc5969..6acd5a2243 100644 --- a/packages/editor-skeleton/src/layouts/bottom-area.tsx +++ b/packages/editor-skeleton/src/layouts/bottom-area.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; @@ -12,9 +12,10 @@ export default class BottomArea extends Component<{ area: Area<any, Panel> }> { return null; } return ( - <div className={classNames('lc-bottom-area', { - 'lc-area-visible': area.visible, - })} + <div + className={classNames('lc-bottom-area', { + 'lc-area-visible': area.visible, + })} > <Contents area={area} /> </div> @@ -26,10 +27,6 @@ export default class BottomArea extends Component<{ area: Area<any, Panel> }> { class Contents extends Component<{ area: Area<any, Panel> }> { render() { const { area } = this.props; - return ( - <Fragment> - {area.container.items.map((item) => item.content)} - </Fragment> - ); + return <Fragment>{area.container.items.map((item) => item.content)}</Fragment>; } } diff --git a/packages/editor-skeleton/src/layouts/left-area.tsx b/packages/editor-skeleton/src/layouts/left-area.tsx index d30dcfa863..91d9f07013 100644 --- a/packages/editor-skeleton/src/layouts/left-area.tsx +++ b/packages/editor-skeleton/src/layouts/left-area.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; @observer @@ -11,9 +11,10 @@ export default class LeftArea extends Component<{ area: Area; className?: string return null; } return ( - <div className={classNames(className, { - 'lc-area-visible': area.visible, - })} + <div + className={classNames(className, { + 'lc-area-visible': area.visible, + })} > <Contents area={area} /> </div> @@ -27,18 +28,21 @@ class Contents extends Component<{ area: Area }> { const { area } = this.props; const top: any[] = []; const bottom: any[] = []; - area.container.items.slice().sort((a, b) => { - const index1 = a.config?.index || 0; - const index2 = b.config?.index || 0; - return index1 === index2 ? 0 : (index1 > index2 ? 1 : -1); - }).forEach((item) => { - const content = <div key={`left-area-${item.name}`}>{item.content}</div>; - if (item.align === 'bottom') { - bottom.push(content); - } else { - top.push(content); - } - }); + area.container.items + .slice() + .sort((a, b) => { + const index1 = a.config?.index || 0; + const index2 = b.config?.index || 0; + return index1 === index2 ? 0 : index1 > index2 ? 1 : -1; + }) + .forEach((item) => { + const content = <div key={`left-area-${item.name}`}>{item.content}</div>; + if (item.align === 'bottom') { + bottom.push(content); + } else { + top.push(content); + } + }); return ( <Fragment> <div className="lc-left-area-top">{top}</div> diff --git a/packages/editor-skeleton/src/layouts/left-fixed-pane.tsx b/packages/editor-skeleton/src/layouts/left-fixed-pane.tsx index a56b449079..503dd883b7 100644 --- a/packages/editor-skeleton/src/layouts/left-fixed-pane.tsx +++ b/packages/editor-skeleton/src/layouts/left-fixed-pane.tsx @@ -1,12 +1,14 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; -import { IPublicTypePanelConfig } from '@alilc/lowcode-types'; +import { IPublicTypePanelConfig } from '@lce/lowcode-types'; @observer -export default class LeftFixedPane extends Component<{ area: Area<IPublicTypePanelConfig, Panel> }> { +export default class LeftFixedPane extends Component<{ + area: Area<IPublicTypePanelConfig, Panel>; +}> { componentDidUpdate() { // FIXME: dirty fix, need deep think this.props.area.skeleton.editor.get('designer')?.touchOffsetObserver(); @@ -17,8 +19,8 @@ export default class LeftFixedPane extends Component<{ area: Area<IPublicTypePan const width = area.current?.config.props?.width; const style = width ? { - width, - } + width, + } : undefined; return ( diff --git a/packages/editor-skeleton/src/layouts/left-float-pane.tsx b/packages/editor-skeleton/src/layouts/left-float-pane.tsx index 296f083211..a7bd4db1b3 100644 --- a/packages/editor-skeleton/src/layouts/left-float-pane.tsx +++ b/packages/editor-skeleton/src/layouts/left-float-pane.tsx @@ -1,12 +1,14 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer, Focusable } from '@alilc/lowcode-editor-core'; +import { observer, Focusable } from '@lce/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; -import { IPublicApiProject, IPublicTypePanelConfig } from '@alilc/lowcode-types'; +import { IPublicApiProject, IPublicTypePanelConfig } from '@lce/lowcode-types'; @observer -export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePanelConfig, Panel> }> { +export default class LeftFloatPane extends Component<{ + area: Area<IPublicTypePanelConfig, Panel>; +}> { private dispose?: () => void; private focusing?: Focusable; @@ -21,7 +23,9 @@ export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePan if (e.originalEvent?.target?.classList.contains('insertion')) return; // 假如当前操作 target 祖先节点中有属性 data-keep-visible-while-dragging="true" 代表该 target 所属 panel // 不希望 target 在 panel 范围内拖拽时关闭 panel - const panelElem = e.originalEvent?.target.closest('div[data-keep-visible-while-dragging="true"]'); + const panelElem = e.originalEvent?.target.closest( + 'div[data-keep-visible-while-dragging="true"]', + ); if (panelElem) return; area.setVisible(false); }; @@ -43,7 +47,11 @@ export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePan return true; } // 点击了 iframe 内容,算失焦 - if ((document.querySelector('.lc-simulator-content-frame') as HTMLIFrameElement)?.contentWindow?.document.documentElement.contains(target)) { + if ( + ( + document.querySelector('.lc-simulator-content-frame') as HTMLIFrameElement + )?.contentWindow?.document.documentElement.contains(target) + ) { return false; } if (project?.simulatorHost?.contentWindow?.document.documentElement.contains(target)) { @@ -63,7 +71,7 @@ export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePan } const docks = area.current?.getAssocDocks(); if (docks && docks?.length) { - return docks.some(dock => dock.getDOMNode()?.contains(target)); + return docks.some((dock) => dock.getDOMNode()?.contains(target)); } return false; }, @@ -107,12 +115,16 @@ export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePan const { area } = this.props; const width = area.current?.config.props?.width; - const style = width ? { - width, - } : undefined; + const style = width + ? { + width, + } + : undefined; return ( <div - ref={(ref) => { this.shell = ref; }} + ref={(ref) => { + this.shell = ref; + }} className={classNames('lc-left-float-pane', { 'lc-area-visible': area.visible, })} @@ -128,10 +140,6 @@ export default class LeftFloatPane extends Component<{ area: Area<IPublicTypePan class Contents extends Component<{ area: Area<any, Panel> }> { render() { const { area } = this.props; - return ( - <Fragment> - {area.container.items.map((panel) => panel.content)} - </Fragment> - ); + return <Fragment>{area.container.items.map((panel) => panel.content)}</Fragment>; } } diff --git a/packages/editor-skeleton/src/layouts/main-area.tsx b/packages/editor-skeleton/src/layouts/main-area.tsx index 400d337952..1a91583cb9 100644 --- a/packages/editor-skeleton/src/layouts/main-area.tsx +++ b/packages/editor-skeleton/src/layouts/main-area.tsx @@ -1,6 +1,6 @@ import { Component } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; import { Widget } from '../widget/widget'; diff --git a/packages/editor-skeleton/src/layouts/right-area.tsx b/packages/editor-skeleton/src/layouts/right-area.tsx index f00ae1461a..1d390d9cd9 100644 --- a/packages/editor-skeleton/src/layouts/right-area.tsx +++ b/packages/editor-skeleton/src/layouts/right-area.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; @@ -12,9 +12,10 @@ export default class RightArea extends Component<{ area: Area<any, Panel> }> { return null; } return ( - <div className={classNames('lc-right-area engine-tabpane', { - 'lc-area-visible': area.visible, - })} + <div + className={classNames('lc-right-area engine-tabpane', { + 'lc-area-visible': area.visible, + })} > <Contents area={area} /> </div> @@ -29,16 +30,14 @@ class Contents extends Component<{ area: Area<any, Panel> }> { return ( <Fragment> - { - area.container.items - .slice() - .sort((a, b) => { - const index1 = a.config?.index || 0; - const index2 = b.config?.index || 0; - return index1 === index2 ? 0 : (index1 > index2 ? 1 : -1); - }) - .map((item) => item.content) - } + {area.container.items + .slice() + .sort((a, b) => { + const index1 = a.config?.index || 0; + const index2 = b.config?.index || 0; + return index1 === index2 ? 0 : index1 > index2 ? 1 : -1; + }) + .map((item) => item.content)} </Fragment> ); } diff --git a/packages/editor-skeleton/src/layouts/sub-top-area.tsx b/packages/editor-skeleton/src/layouts/sub-top-area.tsx index cef6aa5b02..167397ca6e 100644 --- a/packages/editor-skeleton/src/layouts/sub-top-area.tsx +++ b/packages/editor-skeleton/src/layouts/sub-top-area.tsx @@ -1,7 +1,7 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; -import { Area } from '@alilc/lowcode-editor-skeleton'; +import { observer } from '@lce/lowcode-editor-core'; +import { Area } from '@lce/lowcode-editor-skeleton'; @observer export default class SubTopArea extends Component<{ area: Area; itemClassName?: string }> { @@ -13,9 +13,10 @@ export default class SubTopArea extends Component<{ area: Area; itemClassName?: } return ( - <div className={classNames('lc-workspace-sub-top-area lc-sub-top-area engine-actionpane', { - 'lc-area-visible': area.visible, - })} + <div + className={classNames('lc-workspace-sub-top-area lc-sub-top-area engine-actionpane', { + 'lc-area-visible': area.visible, + })} > <Contents area={area} itemClassName={itemClassName} /> </div> @@ -30,38 +31,43 @@ class Contents extends Component<{ area: Area; itemClassName?: string }> { const left: any[] = []; const center: any[] = []; const right: any[] = []; - area.container.items.slice().sort((a, b) => { - const index1 = a.config?.index || 0; - const index2 = b.config?.index || 0; - return index1 === index2 ? 0 : (index1 > index2 ? 1 : -1); - }).forEach(item => { - const content = ( - <div className={itemClassName || ''} key={`top-area-${item.name}`}> - {item.content} - </div> - ); - if (item.align === 'center') { - center.push(content); - } else if (item.align === 'left') { - left.push(content); - } else { - right.push(content); - } - }); + area.container.items + .slice() + .sort((a, b) => { + const index1 = a.config?.index || 0; + const index2 = b.config?.index || 0; + return index1 === index2 ? 0 : index1 > index2 ? 1 : -1; + }) + .forEach((item) => { + const content = ( + <div className={itemClassName || ''} key={`top-area-${item.name}`}> + {item.content} + </div> + ); + if (item.align === 'center') { + center.push(content); + } else if (item.align === 'left') { + left.push(content); + } else { + right.push(content); + } + }); let children = []; if (left && left.length) { - children.push(<div className="lc-workspace-sub-top-area-left lc-sub-top-area-left">{left}</div>); + children.push( + <div className="lc-workspace-sub-top-area-left lc-sub-top-area-left">{left}</div>, + ); } if (center && center.length) { - children.push(<div className="lc-workspace-sub-top-area-center lc-sub-top-area-center">{center}</div>); + children.push( + <div className="lc-workspace-sub-top-area-center lc-sub-top-area-center">{center}</div>, + ); } if (right && right.length) { - children.push(<div className="lc-workspace-sub-top-area-right lc-sub-top-area-right">{right}</div>); + children.push( + <div className="lc-workspace-sub-top-area-right lc-sub-top-area-right">{right}</div>, + ); } - return ( - <Fragment> - {children} - </Fragment> - ); + return <Fragment>{children}</Fragment>; } } diff --git a/packages/editor-skeleton/src/layouts/toolbar.tsx b/packages/editor-skeleton/src/layouts/toolbar.tsx index 9b7d1c9b68..9ae8a4b7ac 100644 --- a/packages/editor-skeleton/src/layouts/toolbar.tsx +++ b/packages/editor-skeleton/src/layouts/toolbar.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; @observer diff --git a/packages/editor-skeleton/src/layouts/top-area.tsx b/packages/editor-skeleton/src/layouts/top-area.tsx index f6b84b3e6f..61e42680c5 100644 --- a/packages/editor-skeleton/src/layouts/top-area.tsx +++ b/packages/editor-skeleton/src/layouts/top-area.tsx @@ -1,19 +1,24 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { Area } from '../area'; @observer -export default class TopArea extends Component<{ area: Area; itemClassName?: string; className?: string }> { +export default class TopArea extends Component<{ + area: Area; + itemClassName?: string; + className?: string; +}> { render() { const { area, itemClassName, className } = this.props; if (area.isEmpty()) { return null; } return ( - <div className={classNames(className, 'lc-top-area engine-actionpane', { - 'lc-area-visible': area.visible, - })} + <div + className={classNames(className, 'lc-top-area engine-actionpane', { + 'lc-area-visible': area.visible, + })} > <Contents area={area} itemClassName={itemClassName} /> </div> @@ -28,24 +33,27 @@ class Contents extends Component<{ area: Area; itemClassName?: string }> { const left: any[] = []; const center: any[] = []; const right: any[] = []; - area.container.items.slice().sort((a, b) => { - const index1 = a.config?.index || 0; - const index2 = b.config?.index || 0; - return index1 === index2 ? 0 : (index1 > index2 ? 1 : -1); - }).forEach(item => { - const content = ( - <div className={itemClassName || ''} key={`top-area-${item.name}`}> - {item.content} - </div> - ); - if (item.align === 'center') { - center.push(content); - } else if (item.align === 'left') { - left.push(content); - } else { - right.push(content); - } - }); + area.container.items + .slice() + .sort((a, b) => { + const index1 = a.config?.index || 0; + const index2 = b.config?.index || 0; + return index1 === index2 ? 0 : index1 > index2 ? 1 : -1; + }) + .forEach((item) => { + const content = ( + <div className={itemClassName || ''} key={`top-area-${item.name}`}> + {item.content} + </div> + ); + if (item.align === 'center') { + center.push(content); + } else if (item.align === 'left') { + left.push(content); + } else { + right.push(content); + } + }); return ( <Fragment> <div className="lc-top-area-left">{left}</div> diff --git a/packages/editor-skeleton/src/layouts/workbench.tsx b/packages/editor-skeleton/src/layouts/workbench.tsx index 1e412ed678..a524980a20 100644 --- a/packages/editor-skeleton/src/layouts/workbench.tsx +++ b/packages/editor-skeleton/src/layouts/workbench.tsx @@ -1,5 +1,5 @@ import { Component } from 'react'; -import { TipContainer, observer } from '@alilc/lowcode-editor-core'; +import { TipContainer, observer } from '@lce/lowcode-editor-core'; import classNames from 'classnames'; import { ISkeleton } from '../skeleton'; import TopArea from './top-area'; @@ -12,7 +12,7 @@ import BottomArea from './bottom-area'; import RightArea from './right-area'; import './workbench.less'; import { SkeletonContext } from '../context'; -import { EditorConfig, PluginClassSet } from '@alilc/lowcode-types'; +import { EditorConfig, PluginClassSet } from '@lce/lowcode-types'; @observer export class Workbench extends Component<{ @@ -29,11 +29,7 @@ export class Workbench extends Component<{ } render() { - const { - skeleton, - className, - topAreaItemClassName, - } = this.props; + const { skeleton, className, topAreaItemClassName } = this.props; return ( <div className={classNames('lc-workbench', className)}> <SkeletonContext.Provider value={this.props.skeleton}> diff --git a/packages/editor-skeleton/src/locale/index.ts b/packages/editor-skeleton/src/locale/index.ts index 4cb3b53cfb..848d050322 100644 --- a/packages/editor-skeleton/src/locale/index.ts +++ b/packages/editor-skeleton/src/locale/index.ts @@ -1,4 +1,4 @@ -import { createIntl } from '@alilc/lowcode-editor-core'; +import { createIntl } from '@lce/lowcode-editor-core'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; diff --git a/packages/editor-skeleton/src/register-defaults.ts b/packages/editor-skeleton/src/register-defaults.ts index 573631f78e..245909f319 100644 --- a/packages/editor-skeleton/src/register-defaults.ts +++ b/packages/editor-skeleton/src/register-defaults.ts @@ -1,7 +1,7 @@ import parseJSFunc from './transducers/parse-func'; import parseProps from './transducers/parse-props'; import addonCombine from './transducers/addon-combine'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; export const registerDefaults = (ctx: IPublicModelPluginContext) => { const { material } = ctx; @@ -19,5 +19,4 @@ export const registerDefaults = (ctx: IPublicModelPluginContext) => { }; }; - registerDefaults.pluginName = '___register_defaults___'; diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts index 7ff462391d..728636ef0b 100644 --- a/packages/editor-skeleton/src/skeleton.ts +++ b/packages/editor-skeleton/src/skeleton.ts @@ -1,4 +1,11 @@ -import { action, makeObservable, obx, engineConfig, IEditor, FocusTracker } from '@alilc/lowcode-editor-core'; +import { + action, + makeObservable, + obx, + engineConfig, + IEditor, + FocusTracker, +} from '@lce/lowcode-editor-core'; import { DockConfig, WidgetConfig, @@ -18,7 +25,7 @@ import { PanelDock } from './widget/panel-dock'; import { Dock } from './widget/dock'; import { Stage, StageConfig } from './widget/stage'; import { isValidElement } from 'react'; -import { isPlainObject, uniqueId, Logger } from '@alilc/lowcode-utils'; +import { isPlainObject, uniqueId, Logger } from '@lce/lowcode-utils'; import { Divider } from '@alifd/next'; import { EditorConfig, @@ -29,7 +36,7 @@ import { IPublicApiSkeleton, IPublicTypeConfigTransducer, IPublicTypePanelConfig, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; const logger = new Logger({ level: 'warn', bizName: 'skeleton' }); @@ -44,22 +51,24 @@ export enum SkeletonEvents { WIDGET_ENABLE = 'skeleton.widget.enable', } -export interface ISkeleton extends Omit<IPublicApiSkeleton, - 'showPanel' | - 'hidePanel' | - 'showWidget' | - 'enableWidget' | - 'hideWidget' | - 'disableWidget' | - 'showArea' | - 'onShowPanel' | - 'onHidePanel' | - 'onShowWidget' | - 'onHideWidget' | - 'remove' | - 'hideArea' | - 'add' -> { +export interface ISkeleton + extends Omit< + IPublicApiSkeleton, + | 'showPanel' + | 'hidePanel' + | 'showWidget' + | 'enableWidget' + | 'hideWidget' + | 'disableWidget' + | 'showArea' + | 'onShowPanel' + | 'onHidePanel' + | 'onShowWidget' + | 'onHideWidget' + | 'remove' + | 'hideArea' + | 'add' + > { editor: IEditor; readonly leftArea: Area<DockConfig | PanelDockConfig | DialogDockConfig>; @@ -106,7 +115,10 @@ export interface ISkeleton extends Omit<IPublicApiSkeleton, createPanel(config: IPublicTypePanelConfig): Panel; - add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined; + add( + config: IPublicTypeSkeletonConfig, + extraConfig?: Record<string, any>, + ): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined; } export class Skeleton implements ISkeleton { @@ -264,9 +276,13 @@ export class Skeleton implements ISkeleton { // adjust pinned status when panel shown this.editor.eventBus.on(SkeletonEvents.PANEL_SHOW, (panelName, panel) => { const panelNameKey = `${panelName}-pinned-status-isFloat`; - const isInFloatAreaPreferenceExists = engineConfig.getPreference()?.contains(panelNameKey, 'skeleton'); + const isInFloatAreaPreferenceExists = engineConfig + .getPreference() + ?.contains(panelNameKey, 'skeleton'); if (isInFloatAreaPreferenceExists) { - const isInFloatAreaFromPreference = engineConfig.getPreference()?.get(panelNameKey, 'skeleton'); + const isInFloatAreaFromPreference = engineConfig + .getPreference() + ?.get(panelNameKey, 'skeleton'); const isCurrentInFloatArea = panel?.isChildOfFloatArea(); if (isInFloatAreaFromPreference !== isCurrentInFloatArea) { this.toggleFloatStatus(panel); @@ -385,14 +401,19 @@ export class Skeleton implements ISkeleton { } getWidget(name: string): IWidget | undefined { - return this.widgets.find(widget => widget.name === name); + return this.widgets.find((widget) => widget.name === name); } createPanel(config: IPublicTypePanelConfig) { const parsedConfig = this.parseConfig(config); const panel = new Panel(this, parsedConfig as IPublicTypePanelConfig); this.panels.set(panel.name, panel); - logger.debug(`Panel created with name: ${panel.name} \nconfig:`, config, '\n current panels: ', this.panels); + logger.debug( + `Panel created with name: ${panel.name} \nconfig:`, + config, + '\n current panels: ', + this.panels, + ); return panel; } @@ -451,11 +472,7 @@ export class Skeleton implements ISkeleton { return restConfig; } - registerConfigTransducer( - transducer: IPublicTypeConfigTransducer, - level = 100, - id?: string, - ) { + registerConfigTransducer(transducer: IPublicTypeConfigTransducer, level = 100, id?: string) { transducer.level = level; transducer.id = id; const i = this.configTransducers.findIndex((item) => item.level != null && item.level > level); @@ -470,15 +487,21 @@ export class Skeleton implements ISkeleton { return this.configTransducers; } - add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined { + add( + config: IPublicTypeSkeletonConfig, + extraConfig?: Record<string, any>, + ): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined { const registeredTransducers = this.getRegisteredConfigTransducers(); - const parsedConfig = registeredTransducers.reduce((prevConfig, current) => { - return current(prevConfig); - }, { - ...this.parseConfig(config), - ...extraConfig, - }); + const parsedConfig = registeredTransducers.reduce( + (prevConfig, current) => { + return current(prevConfig); + }, + { + ...this.parseConfig(config), + ...extraConfig, + }, + ); let { area } = parsedConfig; if (!area) { @@ -519,7 +542,7 @@ export class Skeleton implements ISkeleton { case 'stages': return this.stages.add(parsedConfig as StageConfig); default: - // do nothing + // do nothing } } } diff --git a/packages/editor-skeleton/src/transducers/addon-combine.ts b/packages/editor-skeleton/src/transducers/addon-combine.ts index c2bc2dd4c5..1e636bbb15 100644 --- a/packages/editor-skeleton/src/transducers/addon-combine.ts +++ b/packages/editor-skeleton/src/transducers/addon-combine.ts @@ -2,9 +2,9 @@ import { IPublicTypeTransformedComponentMetadata, IPublicTypeFieldConfig, IPublicModelSettingField, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { IconSlot } from '../icons/slot'; -import { getConvertedExtraKey } from '@alilc/lowcode-designer'; +import { getConvertedExtraKey } from '@lce/lowcode-designer'; export default function ( metadata: IPublicTypeTransformedComponentMetadata, @@ -82,14 +82,18 @@ export default function ( eventsDefinition.push({ type: 'lifeCycleEvent', title: '生命周期', - list: supportedLifecycles.map((event: any) => (typeof event === 'string' ? { name: event } : event)), + list: supportedLifecycles.map((event: any) => + typeof event === 'string' ? { name: event } : event, + ), }); } if (supports.events) { eventsDefinition.push({ type: 'events', title: '事件', - list: (supports.events || []).map((event: any) => (typeof event === 'string' ? { name: event } : event)), + list: (supports.events || []).map((event: any) => + typeof event === 'string' ? { name: event } : event, + ), }); } // 通用设置 @@ -334,8 +338,10 @@ export default function ( }, tip: { type: 'i18n', - 'zh-CN': '搭配「条件渲染」或「循环渲染」时使用,和 react 组件中的 key 原理相同,点击查看帮助', - 'en-US': 'Used with 「Conditional Rendering」or「Cycle Rendering」, the same principle as the key in the react component, click to view the help', + 'zh-CN': + '搭配「条件渲染」或「循环渲染」时使用,和 react 组件中的 key 原理相同,点击查看帮助', + 'en-US': + 'Used with 「Conditional Rendering」or「Cycle Rendering」, the same principle as the key in the react component, click to view the help', }, docUrl: 'https://www.yuque.com/lce/doc/qm75w3', }, diff --git a/packages/editor-skeleton/src/transducers/parse-func.ts b/packages/editor-skeleton/src/transducers/parse-func.ts index bc52deec35..381e3928a7 100644 --- a/packages/editor-skeleton/src/transducers/parse-func.ts +++ b/packages/editor-skeleton/src/transducers/parse-func.ts @@ -1,5 +1,5 @@ -import { IPublicTypeTransformedComponentMetadata } from '@alilc/lowcode-types'; -import { isPlainObject, isJSFunction, getLogger } from '@alilc/lowcode-utils'; +import { IPublicTypeTransformedComponentMetadata } from '@lce/lowcode-types'; +import { isPlainObject, isJSFunction, getLogger } from '@lce/lowcode-utils'; const leadingFnRe = /^function/; const leadingFnNameRe = /^\w+\s*\(/; @@ -43,20 +43,22 @@ function transformStringToFunction(str: string) { function parseJSFunc(obj: any, enableAllowedKeys = true) { if (!obj) return; - Object.keys(obj).forEach(key => { + Object.keys(obj).forEach((key) => { const item = obj[key]; if (isJSFunction(item)) { obj[key] = transformStringToFunction(item.value); } else if (Array.isArray(item)) { - item.forEach(o => parseJSFunc(o, enableAllowedKeys)); + item.forEach((o) => parseJSFunc(o, enableAllowedKeys)); } else if (isPlainObject(item)) { parseJSFunc(item, enableAllowedKeys); } }); } -export default function (metadata: IPublicTypeTransformedComponentMetadata): IPublicTypeTransformedComponentMetadata { +export default function ( + metadata: IPublicTypeTransformedComponentMetadata, +): IPublicTypeTransformedComponentMetadata { parseJSFunc(metadata, false); return metadata; -} \ No newline at end of file +} diff --git a/packages/editor-skeleton/src/transducers/parse-props.ts b/packages/editor-skeleton/src/transducers/parse-props.ts index 573d24ac62..d317c4d460 100644 --- a/packages/editor-skeleton/src/transducers/parse-props.ts +++ b/packages/editor-skeleton/src/transducers/parse-props.ts @@ -10,7 +10,7 @@ import { IPublicTypeOneOfType, ConfigureSupportEvent, IPublicModelSettingField, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; function propConfigToFieldConfig(propConfig: IPublicTypePropConfig): IPublicTypeFieldConfig { const { name, description } = propConfig; @@ -65,7 +65,8 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType const dataSource = ((propType as IPublicTypeOneOf).value || []).map((value, index) => { const t = typeof value; return { - label: t === 'string' || t === 'number' || t === 'boolean' ? String(value) : `value ${index}`, + label: + t === 'string' || t === 'number' || t === 'boolean' ? String(value) : `value ${index}`, value, }; }); @@ -93,7 +94,9 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType }; case 'shape': case 'exact': - const items = ((propType as any).value || []).map((item: any) => propConfigToFieldConfig(item)); + const items = ((propType as any).value || []).map((item: any) => + propConfigToFieldConfig(item), + ); return { componentName: 'ObjectSetter', props: { @@ -110,7 +113,11 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType if (initial == null && item.setter && typeof item.setter === 'object') { initial = (item.setter as any).initialValue; } - data[item.name] = initial ? (typeof initial === 'function' ? initial(field) : initial) : null; + data[item.name] = initial + ? typeof initial === 'function' + ? initial(field) + : initial + : null; }); return data; }, @@ -121,7 +128,9 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType componentName: 'ObjectSetter', props: { config: { - extraSetter: propTypeToSetter(typeName === 'objectOf' ? (propType as IPublicTypeObjectOf).value : 'any'), + extraSetter: propTypeToSetter( + typeName === 'objectOf' ? (propType as IPublicTypeObjectOf).value : 'any', + ), }, }, isRequired, @@ -132,7 +141,9 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType return { componentName: 'ArraySetter', props: { - itemSetter: propTypeToSetter(typeName === 'arrayOf' ? (propType as IPublicTypeArrayOf).value : 'any'), + itemSetter: propTypeToSetter( + typeName === 'arrayOf' ? (propType as IPublicTypeArrayOf).value : 'any', + ), }, isRequired, initialValue: [], @@ -157,7 +168,7 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType isRequired, }; default: - // do nothing + // do nothing } return { componentName: 'MixedSetter', @@ -168,7 +179,9 @@ function propTypeToSetter(propType: IPublicTypePropType): IPublicTypeSetterType const EVENT_RE = /^on|after|before[A-Z][\w]*$/; -export default function (metadata: IPublicTypeTransformedComponentMetadata): IPublicTypeTransformedComponentMetadata { +export default function ( + metadata: IPublicTypeTransformedComponentMetadata, +): IPublicTypeTransformedComponentMetadata { const { configure = {} } = metadata; // TODO types后续补充 let extendsProps: any = null; diff --git a/packages/editor-skeleton/src/types.ts b/packages/editor-skeleton/src/types.ts index 8c5f1484a0..628ef4529a 100644 --- a/packages/editor-skeleton/src/types.ts +++ b/packages/editor-skeleton/src/types.ts @@ -6,7 +6,7 @@ import { IPublicTypePanelDockProps, IPublicTypePanelConfigProps, IPublicTypePanelConfig, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { IWidget } from './widget/widget'; export interface WidgetConfig extends IPublicTypeWidgetBaseConfig { @@ -23,8 +23,7 @@ export function isWidgetConfig(obj: any): obj is WidgetConfig { return obj && obj.type === 'Widget'; } -export interface DockProps extends IPublicTypePanelDockProps { -} +export interface DockProps extends IPublicTypePanelDockProps {} export interface DividerConfig extends IPublicTypeWidgetBaseConfig { type: 'Divider'; diff --git a/packages/editor-skeleton/src/widget/dock.ts b/packages/editor-skeleton/src/widget/dock.ts index 20cdd425da..6acd381d36 100644 --- a/packages/editor-skeleton/src/widget/dock.ts +++ b/packages/editor-skeleton/src/widget/dock.ts @@ -1,7 +1,7 @@ import { ReactNode, createElement } from 'react'; -import { makeObservable, obx } from '@alilc/lowcode-editor-core'; -import { uniqueId, createContent } from '@alilc/lowcode-utils'; -import { getEvent } from '@alilc/lowcode-shell'; +import { makeObservable, obx } from '@lce/lowcode-editor-core'; +import { uniqueId, createContent } from '@lce/lowcode-utils'; +import { getEvent } from '@lce/lowcode-shell'; import { DockConfig } from '../types'; import { ISkeleton } from '../skeleton'; import { DockView, WidgetView } from '../components/widget-views'; diff --git a/packages/editor-skeleton/src/widget/panel-dock.ts b/packages/editor-skeleton/src/widget/panel-dock.ts index 896849706a..8913b24a91 100644 --- a/packages/editor-skeleton/src/widget/panel-dock.ts +++ b/packages/editor-skeleton/src/widget/panel-dock.ts @@ -1,5 +1,5 @@ -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; -import { uniqueId } from '@alilc/lowcode-utils'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; +import { uniqueId } from '@lce/lowcode-utils'; import { createElement, ReactNode, ReactInstance } from 'react'; import { ISkeleton } from '../skeleton'; import { PanelDockConfig } from '../types'; diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index 3a1ce3b00b..efabfe1ccc 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -1,9 +1,19 @@ import { createElement, ReactNode } from 'react'; -import { obx, computed, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core'; -import { uniqueId, createContent } from '@alilc/lowcode-utils'; -import { IPublicTypeHelpTipConfig, IPublicTypePanelConfig, IPublicTypeTitleContent } from '@alilc/lowcode-types'; +import { + obx, + computed, + makeObservable, + IEventBus, + createModuleEventBus, +} from '@lce/lowcode-editor-core'; +import { uniqueId, createContent } from '@lce/lowcode-utils'; +import { + IPublicTypeHelpTipConfig, + IPublicTypePanelConfig, + IPublicTypeTitleContent, +} from '@lce/lowcode-types'; import { WidgetContainer } from './widget-container'; -import { getEvent } from '@alilc/lowcode-shell'; +import { getEvent } from '@lce/lowcode-shell'; import { TitledPanelView, TabsPanelView, PanelView } from '../components/widget-views'; import { ISkeleton } from '../skeleton'; import { composeTitle } from './utils'; @@ -217,7 +227,7 @@ export class Panel implements IWidget { } getAssocDocks(): PanelDock[] { - return this.skeleton.widgets.filter(item => { + return this.skeleton.widgets.filter((item) => { return isPanelDock(item) && item.panelName === this.name; }) as any; } diff --git a/packages/editor-skeleton/src/widget/stage.ts b/packages/editor-skeleton/src/widget/stage.ts index 2b177af61f..bbb8d801e4 100644 --- a/packages/editor-skeleton/src/widget/stage.ts +++ b/packages/editor-skeleton/src/widget/stage.ts @@ -1,4 +1,4 @@ -// import { uniqueId } from '@alilc/lowcode-utils'; +// import { uniqueId } from '@lce/lowcode-utils'; import { Widget } from './widget'; import { ISkeleton } from '../skeleton'; import { WidgetConfig } from '../types'; diff --git a/packages/editor-skeleton/src/widget/utils.ts b/packages/editor-skeleton/src/widget/utils.ts index bec41333c8..d303c2d843 100644 --- a/packages/editor-skeleton/src/widget/utils.ts +++ b/packages/editor-skeleton/src/widget/utils.ts @@ -1,8 +1,14 @@ -import { IPublicTypeIconType, IPublicTypeTitleContent, TipContent } from '@alilc/lowcode-types'; -import { isI18nData, isTitleConfig } from '@alilc/lowcode-utils'; +import { IPublicTypeIconType, IPublicTypeTitleContent, TipContent } from '@lce/lowcode-types'; +import { isI18nData, isTitleConfig } from '@lce/lowcode-utils'; import { isValidElement } from 'react'; -export function composeTitle(title?: IPublicTypeTitleContent, icon?: IPublicTypeIconType, tip?: TipContent, tipAsTitle?: boolean, noIcon?: boolean) { +export function composeTitle( + title?: IPublicTypeTitleContent, + icon?: IPublicTypeIconType, + tip?: TipContent, + tipAsTitle?: boolean, + noIcon?: boolean, +) { let _title: IPublicTypeTitleContent | undefined; if (!title) { _title = {}; diff --git a/packages/editor-skeleton/src/widget/widget-container.ts b/packages/editor-skeleton/src/widget/widget-container.ts index 183ff8fe09..f5e78f5e06 100644 --- a/packages/editor-skeleton/src/widget/widget-container.ts +++ b/packages/editor-skeleton/src/widget/widget-container.ts @@ -1,5 +1,5 @@ -import { obx, computed, makeObservable } from '@alilc/lowcode-editor-core'; -import { hasOwnProperty } from '@alilc/lowcode-utils'; +import { obx, computed, makeObservable } from '@lce/lowcode-editor-core'; +import { hasOwnProperty } from '@lce/lowcode-utils'; import { isPanel } from './panel'; export interface WidgetItem { @@ -19,7 +19,7 @@ export class WidgetContainer<T extends WidgetItem = any, G extends WidgetItem = private maps: { [name: string]: T } = {}; - @obx.ref private _current: T & Activeable | null = null; + @obx.ref private _current: (T & Activeable) | null = null; get current() { return this._current; diff --git a/packages/editor-skeleton/src/widget/widget.ts b/packages/editor-skeleton/src/widget/widget.ts index c956738774..12ac8c4e9f 100644 --- a/packages/editor-skeleton/src/widget/widget.ts +++ b/packages/editor-skeleton/src/widget/widget.ts @@ -1,11 +1,11 @@ import { ReactNode, createElement } from 'react'; -import { makeObservable, obx } from '@alilc/lowcode-editor-core'; -import { createContent, uniqueId } from '@alilc/lowcode-utils'; -import { getEvent } from '@alilc/lowcode-shell'; +import { makeObservable, obx } from '@lce/lowcode-editor-core'; +import { createContent, uniqueId } from '@lce/lowcode-utils'; +import { getEvent } from '@lce/lowcode-shell'; import { WidgetConfig } from '../types'; import { ISkeleton } from '../skeleton'; import { WidgetView } from '../components/widget-views'; -import { IPublicTypeTitleContent, IPublicTypeWidgetBaseConfig } from '@alilc/lowcode-types'; +import { IPublicTypeTitleContent, IPublicTypeWidgetBaseConfig } from '@lce/lowcode-types'; export interface IWidget { readonly name: string; diff --git a/packages/engine/README.md b/packages/engine/README.md index 0e1e14bfc9..0be0d809af 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -22,10 +22,10 @@ An enterprise-class low-code technology stack with scale-out design <!-- [![](https://img.shields.io/badge/LowCodeEngine-Check%20Your%20Contribution-orange)](https://opensource.alibaba.com/contribution_leaderboard/details?projectValue=lowcode-engine) --> -[npm-image]: https://img.shields.io/npm/v/@alilc/lowcode-engine.svg?style=flat-square -[npm-url]: http://npmjs.org/package/@alilc/lowcode-engine -[download-image]: https://img.shields.io/npm/dm/@alilc/lowcode-engine.svg?style=flat-square -[download-url]: https://npmjs.org/package/@alilc/lowcode-engine +[npm-image]: https://img.shields.io/npm/v/@lce/lowcode-engine.svg?style=flat-square +[npm-url]: http://npmjs.org/package/@lce/lowcode-engine +[download-image]: https://img.shields.io/npm/dm/@lce/lowcode-engine.svg?style=flat-square +[download-url]: https://npmjs.org/package/@lce/lowcode-engine [help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open [help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 [issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square @@ -60,13 +60,13 @@ The engine fully implements the "LowCodeEngine Basic Construction Protocol Speci ## 🌰 Usage example ```bash -npm install @alilc/lowcode-engine --save-dev +npm install @lce/lowcode-engine --save-dev ``` > **TIPS: Only cdn import is supported, npm package is used to provide code hinting capabilities such as typings** ```ts -import { init, skeleton } from '@alilc/lowcode-engine'; +import { init, skeleton } from '@lce/lowcode-engine'; skeleton.add({ area: 'topArea', @@ -91,8 +91,8 @@ init(document.getElementById('lce')); ```json { "externals": { - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@lce/lowcode-engine": "var window.AliLowCodeEngine", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` @@ -102,29 +102,29 @@ init(document.getElementById('lce')); #### Method 1: alifd cdn ```html -https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +https://alifd.alicdn.com/npm/@lce/lowcode-engine@1.0.18/dist/js/engine-core.js +https://alifd.alicdn.com/npm/@lce/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 2: uipaas cdn ```html -https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js -https://uipaas-assets.com/prod/npm/@alilc/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js +https://uipaas-assets.com/prod/npm/@lce/lowcode-engine/1.0.18/dist/js/engine-core.js +https://uipaas-assets.com/prod/npm/@lce/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 3: unpkg ```html -https://unpkg.com/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +https://unpkg.com/@lce/lowcode-engine@1.0.18/dist/js/engine-core.js +https://unpkg.com/@lce/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 4: jsdelivr ```html -https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@lce/lowcode-engine@1.0.18/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@lce/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` #### Method 5: Use your own cdn diff --git a/packages/engine/build.umd.json b/packages/engine/build.umd.json index f6c189068e..74f3f31110 100644 --- a/packages/engine/build.umd.json +++ b/packages/engine/build.umd.json @@ -15,7 +15,7 @@ "monaco-editor/esm/vs/editor/editor.api": "var window.monaco", "monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco", "@alifd/next": "var Next", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, @@ -32,9 +32,12 @@ "externalNext": "umd" } ], - ["build-plugin-moment-locales", { - "locales": ["zh-cn"] - }], + [ + "build-plugin-moment-locales", + { + "locales": ["zh-cn"] + } + ], "./build.plugin.js" ] } diff --git a/packages/engine/package.json b/packages/engine/package.json index 23b3521213..03d84c5775 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-engine", + "name": "@lce/lowcode-engine", "version": "1.3.2", "description": "An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系", "main": "lib/engine-core.js", @@ -19,16 +19,16 @@ "license": "MIT", "dependencies": { "@alifd/next": "^1.19.12", - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-editor-skeleton": "1.3.2", - "@alilc/lowcode-engine-ext": "^1.0.0", - "@alilc/lowcode-plugin-command": "1.3.2", - "@alilc/lowcode-plugin-designer": "1.3.2", - "@alilc/lowcode-plugin-outline-pane": "1.3.2", - "@alilc/lowcode-shell": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", - "@alilc/lowcode-workspace": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-editor-skeleton": "1.3.2", + "@lce/lowcode-engine-ext": "^1.0.0", + "@lce/lowcode-plugin-command": "1.3.2", + "@lce/lowcode-plugin-designer": "1.3.2", + "@lce/lowcode-plugin-outline-pane": "1.3.2", + "@lce/lowcode-shell": "1.3.2", + "@lce/lowcode-utils": "1.3.2", + "@lce/lowcode-workspace": "1.3.2", "react": "^16.8.1", "react-dom": "^16.8.1" }, diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index 4dffa628bd..4d61ad1b6a 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -11,7 +11,7 @@ import { Hotkey as InnerHotkey, IEditor, Command as InnerCommand, -} from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-editor-core'; import { IPublicTypeEngineOptions, IPublicModelDocumentModel, @@ -21,7 +21,7 @@ import { IPublicApiWorkspace, IPublicEnumPluginRegisterLevel, IPublicModelPluginContext, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { Designer, LowCodePluginManager, @@ -29,16 +29,13 @@ import { ILowCodePluginContextApiAssembler, PluginPreference, IDesigner, -} from '@alilc/lowcode-designer'; -import { - Skeleton as InnerSkeleton, - registerDefaults, -} from '@alilc/lowcode-editor-skeleton'; +} from '@lce/lowcode-designer'; +import { Skeleton as InnerSkeleton, registerDefaults } from '@lce/lowcode-editor-skeleton'; import { Workspace as InnerWorkspace, Workbench as WorkSpaceWorkbench, IWorkspace, -} from '@alilc/lowcode-workspace'; +} from '@lce/lowcode-workspace'; import { Hotkey, @@ -55,8 +52,8 @@ import { Config, CommonUI, Command, -} from '@alilc/lowcode-shell'; -import { isPlainObject } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-shell'; +import { isPlainObject } from '@lce/lowcode-utils'; import './modules/live-editing'; import * as classes from './modules/classes'; import symbols from './modules/symbols'; @@ -66,14 +63,18 @@ import { defaultPanelRegistry } from './inner-plugins/default-panel-registry'; import { shellModelFactory } from './modules/shell-model-factory'; import { builtinHotkey } from './inner-plugins/builtin-hotkey'; import { defaultContextMenu } from './inner-plugins/default-context-menu'; -import { CommandPlugin } from '@alilc/lowcode-plugin-command'; -import { OutlinePlugin } from '@alilc/lowcode-plugin-outline-pane'; +import { CommandPlugin } from '@lce/lowcode-plugin-command'; +import { OutlinePlugin } from '@lce/lowcode-plugin-outline-pane'; export * from './modules/skeleton-types'; export * from './modules/designer-types'; export * from './modules/lowcode-types'; -async function registryInnerPlugin(designer: IDesigner, editor: IEditor, plugins: IPublicApiPlugins): Promise<IPublicTypeDisposable> { +async function registryInnerPlugin( + designer: IDesigner, + editor: IEditor, + plugins: IPublicApiPlugins, +): Promise<IPublicTypeDisposable> { // 注册一批内置插件 const componentMetaParserPlugin = componentMetaParser(designer); const defaultPanelRegistryPlugin = defaultPanelRegistry(editor); @@ -139,7 +140,11 @@ let plugins: Plugins; const pluginContextApiAssembler: ILowCodePluginContextApiAssembler = { // eslint-disable-next-line @typescript-eslint/no-unused-vars - assembleApis: (context: ILowCodePluginContextPrivate, pluginName: string, meta: IPublicTypePluginMeta) => { + assembleApis: ( + context: ILowCodePluginContextPrivate, + pluginName: string, + meta: IPublicTypePluginMeta, + ) => { context.hotkey = hotkey; context.project = project; context.skeleton = new Skeleton(innerSkeleton, pluginName, false); @@ -219,7 +224,7 @@ export async function init( container?: HTMLElement, options?: IPublicTypeEngineOptions, pluginPreference?: PluginPreference, - ) { +) { await destroy(); let engineOptions = null; if (isPlainObject(container)) { @@ -275,7 +280,7 @@ export async function destroy() { // remove all documents const { documents } = project; if (Array.isArray(documents) && documents.length > 0) { - documents.forEach(((doc: IPublicModelDocumentModel) => project.removeDocument(doc))); + documents.forEach((doc: IPublicModelDocumentModel) => project.removeDocument(doc)); } // TODO: delete plugins except for core plugins diff --git a/packages/engine/src/inner-plugins/builtin-hotkey.ts b/packages/engine/src/inner-plugins/builtin-hotkey.ts index 1a1f3a9c44..4b9f6714f7 100644 --- a/packages/engine/src/inner-plugins/builtin-hotkey.ts +++ b/packages/engine/src/inner-plugins/builtin-hotkey.ts @@ -1,5 +1,5 @@ /* eslint-disable max-len */ -import { isFormEvent, isNodeSchema, isNode } from '@alilc/lowcode-utils'; +import { isFormEvent, isNodeSchema, isNode } from '@lce/lowcode-utils'; import { IPublicModelPluginContext, IPublicEnumTransformStage, @@ -8,7 +8,7 @@ import { IPublicTypeNodeData, IPublicEnumDragObjectType, IPublicTypeDragNodeObject, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; function insertChild( container: IPublicModelNode, @@ -21,7 +21,7 @@ function insertChild( } let node = null; if (isNode(child)) { - node = (child as IPublicModelNode); + node = child as IPublicModelNode; container.children?.insert(node, at); } else { node = container.document?.createNode(child) || null; @@ -99,7 +99,11 @@ function getSuitableInsertion( } /* istanbul ignore next */ -function getNextForSelect(next: IPublicModelNode | null, head?: any, parent?: IPublicModelNode | null): any { +function getNextForSelect( + next: IPublicModelNode | null, + head?: any, + parent?: IPublicModelNode | null, +): any { if (next) { if (!head) { return next; @@ -130,7 +134,11 @@ function getNextForSelect(next: IPublicModelNode | null, head?: any, parent?: IP } /* istanbul ignore next */ -function getPrevForSelect(prev: IPublicModelNode | null, head?: any, parent?: IPublicModelNode | null): any { +function getPrevForSelect( + prev: IPublicModelNode | null, + head?: any, + parent?: IPublicModelNode | null, +): any { if (prev) { let ret; if (!head && prev.isContainerNode) { @@ -160,7 +168,11 @@ function getPrevForSelect(prev: IPublicModelNode | null, head?: any, parent?: IP return null; } -function getSuitablePlaceForNode(targetNode: IPublicModelNode, node: IPublicModelNode, ref: any): any { +function getSuitablePlaceForNode( + targetNode: IPublicModelNode, + node: IPublicModelNode, + ref: any, +): any { const { document } = targetNode; if (!document) { return null; @@ -292,7 +304,9 @@ export const builtinHotkey = (ctx: IPublicModelPluginContext) => { } const componentsMap = {}; - const componentsTree = selected.map((item) => item?.exportSchema(IPublicEnumTransformStage.Clone)); + const componentsTree = selected.map((item) => + item?.exportSchema(IPublicEnumTransformStage.Clone), + ); // FIXME: clear node.id diff --git a/packages/engine/src/inner-plugins/component-meta-parser.ts b/packages/engine/src/inner-plugins/component-meta-parser.ts index d0fbb4300f..cbc25c7656 100644 --- a/packages/engine/src/inner-plugins/component-meta-parser.ts +++ b/packages/engine/src/inner-plugins/component-meta-parser.ts @@ -1,4 +1,4 @@ -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; export const componentMetaParser = (designer: any) => { const fun = (ctx: IPublicModelPluginContext) => { diff --git a/packages/engine/src/inner-plugins/default-context-menu.ts b/packages/engine/src/inner-plugins/default-context-menu.ts index 81978d9209..b4167d804c 100644 --- a/packages/engine/src/inner-plugins/default-context-menu.ts +++ b/packages/engine/src/inner-plugins/default-context-menu.ts @@ -6,8 +6,8 @@ import { IPublicModelPluginContext, IPublicTypeDragNodeDataObject, IPublicTypeNodeSchema, -} from '@alilc/lowcode-types'; -import { isProjectSchema } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { isProjectSchema } from '@lce/lowcode-utils'; import { Message } from '@alifd/next'; import { intl } from '../locale'; @@ -28,9 +28,7 @@ async function getClipboardText(): Promise<IPublicTypeNodeSchema[]> { resolve(data.componentsTree); } else { Message.error(intl('NotValidNodeData')); - reject( - new Error(intl('NotValidNodeData')), - ); + reject(new Error(intl('NotValidNodeData'))); } } catch (error) { Message.error(intl('NotValidNodeData')); @@ -137,7 +135,13 @@ export const defaultContextMenu = (ctx: IPublicModelPluginContext) => { return doc?.checkNesting(parent, dragNodeObject); }); if (canAddNodes.length === 0) { - Message.error(`${nodeSchema.map(d => utilsIntl(d.title || d.componentName)).join(',')}等组件无法放置到${utilsIntl(parent.title || parent.componentName as any)}内`); + Message.error( + `${nodeSchema + .map((d) => utilsIntl(d.title || d.componentName)) + .join(',')}等组件无法放置到${utilsIntl( + parent.title || (parent.componentName as any), + )}内`, + ); return; } const nodes: IPublicModelNode[] = []; @@ -185,7 +189,13 @@ export const defaultContextMenu = (ctx: IPublicModelPluginContext) => { return doc?.checkNesting(node, dragNodeObject); }); if (canAddNodes.length === 0) { - Message.error(`${nodeSchema.map(d => utilsIntl(d.title || d.componentName)).join(',')}等组件无法放置到${utilsIntl(node.title || node.componentName as any)}内`); + Message.error( + `${nodeSchema + .map((d) => utilsIntl(d.title || d.componentName)) + .join(',')}等组件无法放置到${utilsIntl( + node.title || (node.componentName as any), + )}内`, + ); return; } diff --git a/packages/engine/src/inner-plugins/default-panel-registry.tsx b/packages/engine/src/inner-plugins/default-panel-registry.tsx index b5f538d44c..36653cac09 100644 --- a/packages/engine/src/inner-plugins/default-panel-registry.tsx +++ b/packages/engine/src/inner-plugins/default-panel-registry.tsx @@ -1,6 +1,6 @@ -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; -import { SettingsPrimaryPane } from '@alilc/lowcode-editor-skeleton'; -import DesignerPlugin from '@alilc/lowcode-plugin-designer'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { SettingsPrimaryPane } from '@lce/lowcode-editor-skeleton'; +import DesignerPlugin from '@lce/lowcode-plugin-designer'; // 注册默认的面板 export const defaultPanelRegistry = (editor: any) => { @@ -12,19 +12,14 @@ export const defaultPanelRegistry = (editor: any) => { area: 'mainArea', name: 'designer', type: 'Widget', - content: <DesignerPlugin - engineConfig={config} - engineEditor={editor} - />, + content: <DesignerPlugin engineConfig={config} engineEditor={editor} />, }); if (!config.get('disableDefaultSettingPanel')) { skeleton.add({ area: 'rightArea', name: 'settingsPane', type: 'Panel', - content: <SettingsPrimaryPane - engineEditor={editor} - />, + content: <SettingsPrimaryPane engineEditor={editor} />, props: { ignoreRoot: true, }, diff --git a/packages/engine/src/inner-plugins/setter-registry.ts b/packages/engine/src/inner-plugins/setter-registry.ts index 9d7fe4fccf..6ca9ae3ab9 100644 --- a/packages/engine/src/inner-plugins/setter-registry.ts +++ b/packages/engine/src/inner-plugins/setter-registry.ts @@ -1,4 +1,4 @@ -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; // 注册默认的 setters export const setterRegistry = (ctx: IPublicModelPluginContext) => { @@ -6,7 +6,7 @@ export const setterRegistry = (ctx: IPublicModelPluginContext) => { init() { const { config } = ctx; if (config.get('disableDefaultSetters')) return; - const builtinSetters = require('@alilc/lowcode-engine-ext')?.setters; + const builtinSetters = require('@lce/lowcode-engine-ext')?.setters; if (builtinSetters) { ctx.setters.registerSetter(builtinSetters); } diff --git a/packages/engine/src/locale/index.ts b/packages/engine/src/locale/index.ts index ca89840b05..d34f69208a 100644 --- a/packages/engine/src/locale/index.ts +++ b/packages/engine/src/locale/index.ts @@ -1,4 +1,4 @@ -import { createIntl } from '@alilc/lowcode-editor-core'; +import { createIntl } from '@lce/lowcode-editor-core'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; diff --git a/packages/engine/src/modules/classes.ts b/packages/engine/src/modules/classes.ts index 3b7627deb0..cfa61ee7e4 100644 --- a/packages/engine/src/modules/classes.ts +++ b/packages/engine/src/modules/classes.ts @@ -11,6 +11,5 @@ export { Prop, SimulatorHost, SkeletonItem, -} from '@alilc/lowcode-shell'; -export { Node as InnerNode } from '@alilc/lowcode-designer'; - +} from '@lce/lowcode-shell'; +export { Node as InnerNode } from '@lce/lowcode-designer'; diff --git a/packages/engine/src/modules/designer-types.ts b/packages/engine/src/modules/designer-types.ts index a0ee79952c..90308c4102 100644 --- a/packages/engine/src/modules/designer-types.ts +++ b/packages/engine/src/modules/designer-types.ts @@ -1,4 +1,4 @@ -import * as designerCabin from '@alilc/lowcode-designer'; +import * as designerCabin from '@lce/lowcode-designer'; // 这样做的目的是为了去除 Node / DocumentModel 等的值属性,仅保留类型属性 export type Node = designerCabin.Node; @@ -9,4 +9,4 @@ export type SaveHandler = designerCabin.SaveHandler; export type ComponentMeta = designerCabin.ComponentMeta; export type SettingField = designerCabin.SettingField; export type ILowCodePluginManager = designerCabin.ILowCodePluginManager; -export type PluginPreference = designerCabin.PluginPreference; \ No newline at end of file +export type PluginPreference = designerCabin.PluginPreference; diff --git a/packages/engine/src/modules/live-editing.ts b/packages/engine/src/modules/live-editing.ts index f1f32b88f7..a403166a0d 100644 --- a/packages/engine/src/modules/live-editing.ts +++ b/packages/engine/src/modules/live-editing.ts @@ -1,5 +1,5 @@ -import { EditingTarget, Node as DocNode, SaveHandler, LiveEditing } from '@alilc/lowcode-designer'; -import { isJSExpression } from '@alilc/lowcode-utils'; +import { EditingTarget, Node as DocNode, SaveHandler, LiveEditing } from '@lce/lowcode-designer'; +import { isJSExpression } from '@lce/lowcode-utils'; function getText(node: DocNode, prop: string) { const p = node.getProp(prop, false); diff --git a/packages/engine/src/modules/lowcode-types.ts b/packages/engine/src/modules/lowcode-types.ts index 50618bd31d..0bb5224196 100644 --- a/packages/engine/src/modules/lowcode-types.ts +++ b/packages/engine/src/modules/lowcode-types.ts @@ -1 +1 @@ -export type { IPublicTypeNodeSchema } from '@alilc/lowcode-types'; \ No newline at end of file +export type { IPublicTypeNodeSchema } from '@lce/lowcode-types'; diff --git a/packages/engine/src/modules/shell-model-factory.ts b/packages/engine/src/modules/shell-model-factory.ts index 4271d126a3..57bcdca905 100644 --- a/packages/engine/src/modules/shell-model-factory.ts +++ b/packages/engine/src/modules/shell-model-factory.ts @@ -1,13 +1,7 @@ -import { - INode, - ISettingField, -} from '@alilc/lowcode-designer'; -import { IShellModelFactory, IPublicModelNode } from '@alilc/lowcode-types'; +import { INode, ISettingField } from '@lce/lowcode-designer'; +import { IShellModelFactory, IPublicModelNode } from '@lce/lowcode-types'; import { IPublicModelSettingField } from '../../../types/src/shell/model/setting-field'; -import { - Node, - SettingField, -} from '@alilc/lowcode-shell'; +import { Node, SettingField } from '@lce/lowcode-shell'; class ShellModelFactory implements IShellModelFactory { createNode(node: INode | null | undefined): IPublicModelNode | null { return Node.create(node); @@ -16,4 +10,4 @@ class ShellModelFactory implements IShellModelFactory { return SettingField.create(prop); } } -export const shellModelFactory = new ShellModelFactory(); \ No newline at end of file +export const shellModelFactory = new ShellModelFactory(); diff --git a/packages/engine/src/modules/skeleton-types.ts b/packages/engine/src/modules/skeleton-types.ts index 8cce1c08cc..b289a50069 100644 --- a/packages/engine/src/modules/skeleton-types.ts +++ b/packages/engine/src/modules/skeleton-types.ts @@ -1,3 +1,3 @@ -import { IPublicTypeWidgetBaseConfig as innerIWidgetBaseConfig } from '@alilc/lowcode-types'; +import { IPublicTypeWidgetBaseConfig as innerIWidgetBaseConfig } from '@lce/lowcode-types'; export type IWidgetBaseConfig = innerIWidgetBaseConfig; diff --git a/packages/engine/src/modules/symbols.ts b/packages/engine/src/modules/symbols.ts index 55c70e5dcb..23cff0aa9e 100644 --- a/packages/engine/src/modules/symbols.ts +++ b/packages/engine/src/modules/symbols.ts @@ -15,7 +15,7 @@ import { editorCabinSymbol, skeletonCabinSymbol, simulatorRenderSymbol, -} from '@alilc/lowcode-shell'; +} from '@lce/lowcode-shell'; export default { projectSymbol, diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json index f1956cf527..57fcb68b17 100644 --- a/packages/ignitor/build.json +++ b/packages/ignitor/build.json @@ -16,15 +16,13 @@ "prop-types": "var window.PropTypes", "@alifd/next": "var window.Next", "rax": "var window.Rax", - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@lce/lowcode-engine": "var window.AliLowCodeEngine", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, "plugins": [ - [ - "build-plugin-react-app" - ], + ["build-plugin-react-app"], [ "build-plugin-fusion", { @@ -35,9 +33,7 @@ [ "build-plugin-moment-locales", { - "locales": [ - "zh-cn" - ] + "locales": ["zh-cn"] } ], "./build.plugin.js" diff --git a/packages/ignitor/package.json b/packages/ignitor/package.json index 0b109a7ad7..29c891fb22 100644 --- a/packages/ignitor/package.json +++ b/packages/ignitor/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-ignitor", + "name": "@lce/lowcode-ignitor", "version": "1.3.2", "description": "点火器,bootstrap lce project", "main": "lib/index.js", diff --git a/packages/plugin-command/__tests__/node-command.test.ts b/packages/plugin-command/__tests__/node-command.test.ts index 2e9d21b35e..c491fbbe71 100644 --- a/packages/plugin-command/__tests__/node-command.test.ts +++ b/packages/plugin-command/__tests__/node-command.test.ts @@ -1,9 +1,10 @@ -import { checkPropTypes } from '@alilc/lowcode-utils/src/check-prop-types'; +import { checkPropTypes } from '@lce/lowcode-utils/src/check-prop-types'; import { nodeSchemaPropType } from '../src/node-command'; describe('nodeSchemaPropType', () => { const componentName = 'NodeComponent'; - const getPropType = (name: string) => nodeSchemaPropType.value.find(d => d.name === name)?.propType; + const getPropType = (name: string) => + nodeSchemaPropType.value.find((d) => d.name === name)?.propType; it('should validate the id as a string', () => { const validId = 'node1'; @@ -17,10 +18,26 @@ describe('nodeSchemaPropType', () => { it('should validate the componentName as a string', () => { const validComponentName = 'Button'; const invalidComponentName = false; // Not a string - expect(checkPropTypes(validComponentName, 'componentName', getPropType('componentName'), componentName)).toBe(true); - expect(checkPropTypes(invalidComponentName, 'componentName', getPropType('componentName'), componentName)).toBe(false); + expect( + checkPropTypes( + validComponentName, + 'componentName', + getPropType('componentName'), + componentName, + ), + ).toBe(true); + expect( + checkPropTypes( + invalidComponentName, + 'componentName', + getPropType('componentName'), + componentName, + ), + ).toBe(false); // isRequired - expect(checkPropTypes(undefined, 'componentName', getPropType('componentName'), componentName)).toBe(false); + expect( + checkPropTypes(undefined, 'componentName', getPropType('componentName'), componentName), + ).toBe(false); }); it('should validate the props as an object', () => { @@ -48,15 +65,23 @@ describe('nodeSchemaPropType', () => { it('should validate the condition as a bool', () => { const validCondition = true; const invalidCondition = 'Not a bool'; // Not a boolean - expect(checkPropTypes(validCondition, 'condition', getPropType('condition'), componentName)).toBe(true); - expect(checkPropTypes(invalidCondition, 'condition', getPropType('condition'), componentName)).toBe(false); + expect( + checkPropTypes(validCondition, 'condition', getPropType('condition'), componentName), + ).toBe(true); + expect( + checkPropTypes(invalidCondition, 'condition', getPropType('condition'), componentName), + ).toBe(false); }); it('should validate the condition as a JSExpression', () => { const validCondition = { type: 'JSExpression', value: '1 + 1 === 2' }; const invalidCondition = { type: 'JSExpression', value: 123 }; // Not a string - expect(checkPropTypes(validCondition, 'condition', getPropType('condition'), componentName)).toBe(true); - expect(checkPropTypes(invalidCondition, 'condition', getPropType('condition'), componentName)).toBe(false); + expect( + checkPropTypes(validCondition, 'condition', getPropType('condition'), componentName), + ).toBe(true); + expect( + checkPropTypes(invalidCondition, 'condition', getPropType('condition'), componentName), + ).toBe(false); }); it('should validate the loop as an array', () => { @@ -76,32 +101,54 @@ describe('nodeSchemaPropType', () => { it('should validate the loopArgs as an array', () => { const validLoopArgs = ['item']; const invalidLoopArgs = 'Not an array'; // Not an array - expect(checkPropTypes(validLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe(true); - expect(checkPropTypes(invalidLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe(false); + expect(checkPropTypes(validLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe( + true, + ); + expect( + checkPropTypes(invalidLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName), + ).toBe(false); }); it('should validate the loopArgs as a JSExpression', () => { const validLoopArgs = { type: 'JSExpression', value: 'item' }; const invalidLoopArgs = { type: 'JSExpression', value: 123 }; // Not a string - const validLoopArgs2 = [{ type: 'JSExpression', value: 'item' }, { type: 'JSExpression', value: 'index' }]; - expect(checkPropTypes(validLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe(true); - expect(checkPropTypes(invalidLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe(false); - expect(checkPropTypes(validLoopArgs2, 'loopArgs', getPropType('loopArgs'), componentName)).toBe(true); + const validLoopArgs2 = [ + { type: 'JSExpression', value: 'item' }, + { type: 'JSExpression', value: 'index' }, + ]; + expect(checkPropTypes(validLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName)).toBe( + true, + ); + expect( + checkPropTypes(invalidLoopArgs, 'loopArgs', getPropType('loopArgs'), componentName), + ).toBe(false); + expect(checkPropTypes(validLoopArgs2, 'loopArgs', getPropType('loopArgs'), componentName)).toBe( + true, + ); }); it('should validate the children as an array', () => { - const validChildren = [{ - id: 'child1', - componentName: 'Button', - }, { - id: 'child2', - componentName: 'Button', - }]; + const validChildren = [ + { + id: 'child1', + componentName: 'Button', + }, + { + id: 'child2', + componentName: 'Button', + }, + ]; const invalidChildren = 'Not an array'; // Not an array const invalidChildren2 = [{}]; // Not an valid array - expect(checkPropTypes(invalidChildren, 'children', getPropType('children'), componentName)).toBe(false); - expect(checkPropTypes(validChildren, 'children', getPropType('children'), componentName)).toBe(true); - expect(checkPropTypes(invalidChildren2, 'children', getPropType('children'), componentName)).toBe(false); + expect( + checkPropTypes(invalidChildren, 'children', getPropType('children'), componentName), + ).toBe(false); + expect(checkPropTypes(validChildren, 'children', getPropType('children'), componentName)).toBe( + true, + ); + expect( + checkPropTypes(invalidChildren2, 'children', getPropType('children'), componentName), + ).toBe(false); }); afterEach(() => { diff --git a/packages/plugin-command/package.json b/packages/plugin-command/package.json index 4f53e69e36..cc5bccb725 100644 --- a/packages/plugin-command/package.json +++ b/packages/plugin-command/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-plugin-command", + "name": "@lce/lowcode-plugin-command", "version": "1.3.2", "description": "> TODO: description", "author": "liujuping <liujup@foxmail.com>", @@ -30,8 +30,8 @@ "url": "https://github.com/alibaba/lowcode-engine/issues" }, "dependencies": { - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2" + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2" }, "devDependencies": { "@alib/build-scripts": "^0.1.18" diff --git a/packages/plugin-command/src/history-command.ts b/packages/plugin-command/src/history-command.ts index ea7e491bce..e91bd2e860 100644 --- a/packages/plugin-command/src/history-command.ts +++ b/packages/plugin-command/src/history-command.ts @@ -1,4 +1,4 @@ -import { IPublicModelPluginContext, IPublicTypePlugin } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext, IPublicTypePlugin } from '@lce/lowcode-types'; export const historyCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) => { const { command, project } = ctx; diff --git a/packages/plugin-command/src/index.ts b/packages/plugin-command/src/index.ts index fa6f32b32d..ace82d720c 100644 --- a/packages/plugin-command/src/index.ts +++ b/packages/plugin-command/src/index.ts @@ -1,4 +1,4 @@ -import { IPublicModelPluginContext, IPublicTypePlugin } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext, IPublicTypePlugin } from '@lce/lowcode-types'; import { nodeCommand } from './node-command'; import { historyCommand } from './history-command'; @@ -22,4 +22,4 @@ CommandPlugin.meta = { commandScope: 'common', }; -export default CommandPlugin; \ No newline at end of file +export default CommandPlugin; diff --git a/packages/plugin-command/src/node-command.ts b/packages/plugin-command/src/node-command.ts index eeda1d1688..f7e1b1f512 100644 --- a/packages/plugin-command/src/node-command.ts +++ b/packages/plugin-command/src/node-command.ts @@ -1,5 +1,10 @@ -import { IPublicModelPluginContext, IPublicTypeNodeSchema, IPublicTypePlugin, IPublicTypePropType } from '@alilc/lowcode-types'; -import { isNodeSchema } from '@alilc/lowcode-utils'; +import { + IPublicModelPluginContext, + IPublicTypeNodeSchema, + IPublicTypePlugin, + IPublicTypePropType, +} from '@lce/lowcode-types'; +import { isNodeSchema } from '@lce/lowcode-utils'; const sampleNodeSchema: IPublicTypePropType = { type: 'shape', @@ -234,11 +239,7 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = nodeSchema: IPublicTypeNodeSchema; index: number; }) => { - const { - parentNodeId, - nodeSchema, - index, - } = param; + const { parentNodeId, nodeSchema, index } = param; const { project } = ctx; const parentNode = project.currentDocument?.getNodeById(parentNodeId); if (!parentNode) { @@ -281,16 +282,8 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = command.registerCommand({ name: 'move', description: 'Move a node to another node.', - handler(param: { - nodeId: string; - targetNodeId: string; - index: number; - }) { - const { - nodeId, - targetNodeId, - index = 0, - } = param; + handler(param: { nodeId: string; targetNodeId: string; index: number }) { + const { nodeId, targetNodeId, index = 0 } = param; if (!nodeId) { throw new Error('Invalid node id.'); @@ -349,12 +342,8 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = command.registerCommand({ name: 'remove', description: 'Remove a node from the canvas.', - handler(param: { - nodeId: string; - }) { - const { - nodeId, - } = param; + handler(param: { nodeId: string }) { + const { nodeId } = param; const node = project.currentDocument?.getNodeById(nodeId); if (!node) { @@ -375,14 +364,8 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = command.registerCommand({ name: 'update', description: 'Update a node.', - handler(param: { - nodeId: string; - nodeSchema: IPublicTypeNodeSchema; - }) { - const { - nodeId, - nodeSchema, - } = param; + handler(param: { nodeId: string; nodeSchema: IPublicTypeNodeSchema }) { + const { nodeId, nodeSchema } = param; const node = project.currentDocument?.getNodeById(nodeId); if (!node) { @@ -412,21 +395,15 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = command.registerCommand({ name: 'updateProps', description: 'Update the properties of a node.', - handler(param: { - nodeId: string; - props: Record<string, any>; - }) { - const { - nodeId, - props, - } = param; + handler(param: { nodeId: string; props: Record<string, any> }) { + const { nodeId, props } = param; const node = project.currentDocument?.getNodeById(nodeId); if (!node) { throw new Error(`Can not find node '${nodeId}'.`); } - Object.keys(props).forEach(key => { + Object.keys(props).forEach((key) => { node.setPropValue(key, props[key]); }); }, @@ -447,21 +424,15 @@ export const nodeCommand: IPublicTypePlugin = (ctx: IPublicModelPluginContext) = command.registerCommand({ name: 'removeProps', description: 'Remove the properties of a node.', - handler(param: { - nodeId: string; - propNames: string[]; - }) { - const { - nodeId, - propNames, - } = param; + handler(param: { nodeId: string; propNames: string[] }) { + const { nodeId, propNames } = param; const node = project.currentDocument?.getNodeById(nodeId); if (!node) { throw new Error(`Can not find node '${nodeId}'.`); } - propNames.forEach(key => { + propNames.forEach((key) => { node.props?.getProp(key)?.remove(); }); }, @@ -494,4 +465,3 @@ nodeCommand.pluginName = '___node_command___'; nodeCommand.meta = { commandScope: 'node', }; - diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json index ac25097c78..9d8be798dd 100644 --- a/packages/plugin-designer/package.json +++ b/packages/plugin-designer/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-plugin-designer", + "name": "@lce/lowcode-plugin-designer", "version": "1.3.2", "description": "alibaba lowcode editor designer plugin", "files": [ @@ -18,9 +18,9 @@ ], "author": "xiayang.xy", "dependencies": { - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "react": "^16.8.1", "react-dom": "^16.8.1" }, diff --git a/packages/plugin-designer/src/index.tsx b/packages/plugin-designer/src/index.tsx index 51b81ff9d0..3af3ffa807 100644 --- a/packages/plugin-designer/src/index.tsx +++ b/packages/plugin-designer/src/index.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; -import { Editor, engineConfig } from '@alilc/lowcode-editor-core'; -import { DesignerView, Designer } from '@alilc/lowcode-designer'; -import { Asset, getLogger } from '@alilc/lowcode-utils'; +import { Editor, engineConfig } from '@lce/lowcode-editor-core'; +import { DesignerView, Designer } from '@lce/lowcode-designer'; +import { Asset, getLogger } from '@lce/lowcode-utils'; import './index.scss'; const logger = getLogger({ level: 'warn', bizName: 'plugin:plugin-designer' }); @@ -58,7 +58,8 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP const deviceClassName = engineConfig.get('deviceClassName') || editor.get('deviceClassName'); const simulatorUrl = engineConfig.get('simulatorUrl') || editor.get('simulatorUrl'); // @TODO setupAssets 里设置 requestHandlersMap 不太合适 - const requestHandlersMap = engineConfig.get('requestHandlersMap') || editor.get('requestHandlersMap'); + const requestHandlersMap = + engineConfig.get('requestHandlersMap') || editor.get('requestHandlersMap'); if (!this._mounted) { return; } diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json index f50f71cbfe..2bd507fb4b 100644 --- a/packages/plugin-outline-pane/package.json +++ b/packages/plugin-outline-pane/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-plugin-outline-pane", + "name": "@lce/lowcode-plugin-outline-pane", "version": "1.3.2", "description": "Outline pane for Ali lowCode engine", "files": [ @@ -13,8 +13,8 @@ }, "dependencies": { "@alifd/next": "^1.19.16", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "react": "^16", "react-dom": "^16.7.0", diff --git a/packages/plugin-outline-pane/src/controllers/pane-controller.ts b/packages/plugin-outline-pane/src/controllers/pane-controller.ts index 6a9ae7c40c..25c68b6937 100644 --- a/packages/plugin-outline-pane/src/controllers/pane-controller.ts +++ b/packages/plugin-outline-pane/src/controllers/pane-controller.ts @@ -5,7 +5,7 @@ import { isDragNodeObject, isDragAnyObject, isLocationChildrenDetail, -} from '@alilc/lowcode-utils'; +} from '@lce/lowcode-utils'; import { IPublicModelDragObject, IPublicTypeScrollable, @@ -17,7 +17,7 @@ import { IPublicModelScroller, IPublicModelScrollTarget, IPublicModelLocateEvent, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import TreeNode from './tree-node'; import { IndentTrack } from '../helper/indent-track'; import DwellTimer from '../helper/dwell-timer'; @@ -175,7 +175,12 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy const originLoc = document?.dropLocation; const componentMeta = e.dragObject?.nodes ? e.dragObject.nodes[0].componentMeta : null; - if (e.dragObject?.type === 'node' && componentMeta && componentMeta.isModal && document?.focusNode) { + if ( + e.dragObject?.type === 'node' && + componentMeta && + componentMeta.isModal && + document?.focusNode + ) { return canvas.createLocation({ target: document?.focusNode, detail: { @@ -188,9 +193,12 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy }); } - if (originLoc - && ((pos && pos === 'unchanged') || (irect && globalY >= irect.top && globalY <= irect.bottom)) - && dragObject) { + if ( + originLoc && + ((pos && pos === 'unchanged') || + (irect && globalY >= irect.top && globalY <= irect.bottom)) && + dragObject + ) { const loc = originLoc.clone(e); const indented = this.indentTrack.getIndentParent(originLoc, loc); if (indented) { @@ -219,7 +227,7 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy } else { this.dwell.reset(); } - // FIXME: recreate new location + // FIXME: recreate new location } else if ((originLoc.detail as IPublicTypeLocationChildrenDetail).near) { (originLoc.detail as IPublicTypeLocationChildrenDetail).near = undefined; this.dwell.reset(); @@ -286,7 +294,12 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy return false; } const rect = this._shell.getBoundingClientRect(); - return e.globalY >= rect.top && e.globalY <= rect.bottom && e.globalX >= rect.left && e.globalX <= rect.right; + return ( + e.globalY >= rect.top && + e.globalY <= rect.bottom && + e.globalX >= rect.left && + e.globalX <= rect.right + ); } /** @@ -325,7 +338,9 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy if (!rect) { if (tryTimes < 3) { - this.tryScrollAgain = requestIdleCallback(() => this.scrollToNode(treeNode, detail, tryTimes + 1)); + this.tryScrollAgain = requestIdleCallback(() => + this.scrollToNode(treeNode, detail, tryTimes + 1), + ); } return; } @@ -333,7 +348,10 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy const { height, top, bottom } = this.bounds; if (rect.top < top || rect.bottom > bottom) { const opt: any = {}; - opt.top = Math.min(rect.top + rect.height / 2 + scrollTop - top - height / 2, scrollHeight - height); + opt.top = Math.min( + rect.top + rect.height / 2 + scrollTop - top - height / 2, + scrollHeight - height, + ); if (rect.height >= height) { opt.top = Math.min(scrollTop + rect.top - top, opt.top); } @@ -347,7 +365,12 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy /** -------------------- ITreeBoard end -------------------- */ - private getNear(treeNode: TreeNode, e: IPublicModelLocateEvent, originalIndex?: number, originalRect?: DOMRect) { + private getNear( + treeNode: TreeNode, + e: IPublicModelLocateEvent, + originalIndex?: number, + originalRect?: DOMRect, + ) { const { canvas, project } = this.pluginContext; const document = project.getCurrentDocument(); const { globalY, dragObject } = e; @@ -419,7 +442,9 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy index, valid: document?.checkNesting(node.parent!, dragObject as any), near: { node, pos: 'before' }, - focus: checkRecursion(focusNode, dragObject) ? { type: 'node', node: focusNode } : undefined, + focus: checkRecursion(focusNode, dragObject) + ? { type: 'node', node: focusNode } + : undefined, }, }); } @@ -446,12 +471,17 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy index: (index || 0) + 1, valid: document?.checkNesting(node.parent!, dragObject as any), near: { node, pos: 'after' }, - focus: checkRecursion(focusNode, dragObject) ? { type: 'node', node: focusNode } : undefined, + focus: checkRecursion(focusNode, dragObject) + ? { type: 'node', node: focusNode } + : undefined, }, }); } - private drillLocate(treeNode: TreeNode, e: IPublicModelLocateEvent): IPublicModelDropLocation | null { + private drillLocate( + treeNode: TreeNode, + e: IPublicModelLocateEvent, + ): IPublicModelDropLocation | null { const { canvas, project } = this.pluginContext; const document = project.getCurrentDocument(); const { dragObject, globalY } = e; @@ -615,25 +645,34 @@ export class PaneController implements IPublicModelSensor, ITreeBoard, IPublicTy if (!this._shell) { return undefined; } - return this._shell.querySelector(`.tree-node[data-id="${treeNode.nodeId}"]`)?.getBoundingClientRect(); + return this._shell + .querySelector(`.tree-node[data-id="${treeNode.nodeId}"]`) + ?.getBoundingClientRect(); } private getTreeTitleRect(treeNode: TreeNode): DOMRect | undefined { if (!this._shell) { return undefined; } - return this._shell.querySelector(`.tree-node-title[data-id="${treeNode.nodeId}"]`)?.getBoundingClientRect(); + return this._shell + .querySelector(`.tree-node-title[data-id="${treeNode.nodeId}"]`) + ?.getBoundingClientRect(); } private getTreeSlotsRect(treeNode: TreeNode): DOMRect | undefined { if (!this._shell) { return undefined; } - return this._shell.querySelector(`.tree-node-slots[data-id="${treeNode.nodeId}"]`)?.getBoundingClientRect(); + return this._shell + .querySelector(`.tree-node-slots[data-id="${treeNode.nodeId}"]`) + ?.getBoundingClientRect(); } } -function checkRecursion(parent: IPublicModelNode | undefined | null, dragObject: IPublicModelDragObject): boolean { +function checkRecursion( + parent: IPublicModelNode | undefined | null, + dragObject: IPublicModelDragObject, +): boolean { if (!parent) { return false; } diff --git a/packages/plugin-outline-pane/src/controllers/tree-master.ts b/packages/plugin-outline-pane/src/controllers/tree-master.ts index f86ce3deca..4980c70fb9 100644 --- a/packages/plugin-outline-pane/src/controllers/tree-master.ts +++ b/packages/plugin-outline-pane/src/controllers/tree-master.ts @@ -1,5 +1,11 @@ -import { isLocationChildrenDetail } from '@alilc/lowcode-utils'; -import { IPublicModelPluginContext, IPublicTypeActiveTarget, IPublicModelNode, IPublicTypeDisposable, IPublicEnumPluginRegisterLevel } from '@alilc/lowcode-types'; +import { isLocationChildrenDetail } from '@lce/lowcode-utils'; +import { + IPublicModelPluginContext, + IPublicTypeActiveTarget, + IPublicModelNode, + IPublicTypeDisposable, + IPublicEnumPluginRegisterLevel, +} from '@lce/lowcode-types'; import TreeNode from './tree-node'; import { Tree } from './tree'; import EventEmitter from 'events'; @@ -33,9 +39,12 @@ export class TreeMaster { event = new EventEmitter(); - constructor(pluginContext: IPublicModelPluginContext, readonly options: { - extraTitle?: string; - }) { + constructor( + pluginContext: IPublicModelPluginContext, + readonly options: { + extraTitle?: string; + }, + ) { this.setPluginContext(pluginContext); const { workspace } = this.pluginContext; this.initEvent(); @@ -79,7 +88,7 @@ export class TreeMaster { } private disposeEvent() { - this.disposeEvents.forEach(d => { + this.disposeEvents.forEach((d) => { d && d(); }); } @@ -90,7 +99,7 @@ export class TreeMaster { const setExpandByActiveTracker = (target: IPublicTypeActiveTarget) => { const { node, detail } = target; const tree = this.currentTree; - if (!tree/* || node.document !== tree.document */) { + if (!tree /* || node.document !== tree.document */) { return; } const treeNode = tree.getTreeNode(node); @@ -121,14 +130,15 @@ export class TreeMaster { } const npm = n?.componentMeta?.npm; return ( - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || n?.componentMeta?.componentName + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || + n?.componentMeta?.componentName ); }) .join('&'), time: (endTime - startTime).toFixed(2), }); }), - project.onRemoveDocument((data: {id: string}) => { + project.onRemoveDocument((data: { id: string }) => { const { id } = data; this.treeMap.delete(id); }), diff --git a/packages/plugin-outline-pane/src/controllers/tree-node.ts b/packages/plugin-outline-pane/src/controllers/tree-node.ts index 34d06fee0b..93b4dbe59a 100644 --- a/packages/plugin-outline-pane/src/controllers/tree-node.ts +++ b/packages/plugin-outline-pane/src/controllers/tree-node.ts @@ -3,8 +3,8 @@ import { IPublicTypeLocationChildrenDetail, IPublicModelNode, IPublicTypeDisposable, -} from '@alilc/lowcode-types'; -import { isI18nData, isLocationChildrenDetail, uniqueId } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { isI18nData, isLocationChildrenDetail, uniqueId } from '@lce/lowcode-utils'; import EventEmitter from 'events'; import { Tree } from './tree'; import { IOutlinePanelPluginContext } from './tree-master'; @@ -83,7 +83,9 @@ export default class TreeNode { */ get dropDetail(): IPublicTypeLocationChildrenDetail | undefined | null { const loc = this.pluginContext.project.getCurrentDocument()?.dropLocation; - return loc && this.isResponseDropping() && isLocationChildrenDetail(loc.detail) ? loc.detail : null; + return loc && this.isResponseDropping() && isLocationChildrenDetail(loc.detail) + ? loc.detail + : null; } get depth(): number { @@ -92,7 +94,7 @@ export default class TreeNode { get detecting() { const doc = this.pluginContext.project.currentDocument; - return !!(doc?.isDetectingNode(this.node)); + return !!doc?.isDetectingNode(this.node); } get hidden(): boolean { @@ -260,7 +262,9 @@ export default class TreeNode { return false; } return ( - isLocationChildrenDetail(loc.detail) && loc.detail.focus?.type === 'node' && loc.detail?.focus?.node.id === this.nodeId + isLocationChildrenDetail(loc.detail) && + loc.detail.focus?.type === 'node' && + loc.detail?.focus?.node.id === this.nodeId ); } diff --git a/packages/plugin-outline-pane/src/controllers/tree.ts b/packages/plugin-outline-pane/src/controllers/tree.ts index ca5a43c554..70cb7d6947 100644 --- a/packages/plugin-outline-pane/src/controllers/tree.ts +++ b/packages/plugin-outline-pane/src/controllers/tree.ts @@ -1,5 +1,5 @@ import TreeNode from './tree-node'; -import { IPublicModelNode, IPublicTypePropChangeOptions } from '@alilc/lowcode-types'; +import { IPublicModelNode, IPublicTypePropChangeOptions } from '@lce/lowcode-types'; import { IOutlinePanelPluginContext, TreeMaster } from './tree-master'; export class Tree { @@ -24,7 +24,7 @@ export class Tree { const doc = this.pluginContext.project.currentDocument; this.id = doc?.id; - doc?.onChangeNodeChildren((info: {node: IPublicModelNode }) => { + doc?.onChangeNodeChildren((info: { node: IPublicModelNode }) => { const { node } = info; const treeNode = this.getTreeNodeById(node.id); treeNode?.notifyExpandableChanged(); diff --git a/packages/plugin-outline-pane/src/helper/dwell-timer.ts b/packages/plugin-outline-pane/src/helper/dwell-timer.ts index c35dc0d117..3a57a7f1e3 100644 --- a/packages/plugin-outline-pane/src/helper/dwell-timer.ts +++ b/packages/plugin-outline-pane/src/helper/dwell-timer.ts @@ -1,6 +1,9 @@ -import { isLocationChildrenDetail } from '@alilc/lowcode-utils'; -import { IPublicModelNode, IPublicModelDropLocation, IPublicModelLocateEvent } from '@alilc/lowcode-types'; - +import { isLocationChildrenDetail } from '@lce/lowcode-utils'; +import { + IPublicModelNode, + IPublicModelDropLocation, + IPublicModelLocateEvent, +} from '@lce/lowcode-types'; /** * 停留检查计时器 @@ -16,7 +19,10 @@ export default class DwellTimer { private timeout = 500; - constructor(decide: (node: IPublicModelNode, event: IPublicModelLocateEvent) => void, timeout = 500) { + constructor( + decide: (node: IPublicModelNode, event: IPublicModelLocateEvent) => void, + timeout = 500, + ) { this.decide = decide; this.timeout = timeout; } diff --git a/packages/plugin-outline-pane/src/helper/indent-track.ts b/packages/plugin-outline-pane/src/helper/indent-track.ts index a9965bf291..39aebf22d4 100644 --- a/packages/plugin-outline-pane/src/helper/indent-track.ts +++ b/packages/plugin-outline-pane/src/helper/indent-track.ts @@ -1,6 +1,5 @@ -import { isLocationChildrenDetail } from '@alilc/lowcode-utils'; -import { IPublicModelDropLocation, IPublicModelNode } from '@alilc/lowcode-types'; - +import { isLocationChildrenDetail } from '@lce/lowcode-utils'; +import { IPublicModelDropLocation, IPublicModelNode } from '@lce/lowcode-types'; const IndentSensitive = 15; export class IndentTrack { @@ -11,7 +10,10 @@ export class IndentTrack { } // eslint-disable-next-line max-len - getIndentParent(lastLoc: IPublicModelDropLocation, loc: IPublicModelDropLocation): [IPublicModelNode, number | undefined] | null { + getIndentParent( + lastLoc: IPublicModelDropLocation, + loc: IPublicModelDropLocation, + ): [IPublicModelNode, number | undefined] | null { if ( lastLoc.target !== loc.target || !isLocationChildrenDetail(lastLoc.detail) || diff --git a/packages/plugin-outline-pane/src/icons/arrow-right.tsx b/packages/plugin-outline-pane/src/icons/arrow-right.tsx index 0a1418746b..bf83d14d33 100644 --- a/packages/plugin-outline-pane/src/icons/arrow-right.tsx +++ b/packages/plugin-outline-pane/src/icons/arrow-right.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconArrowRight(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/cond.tsx b/packages/plugin-outline-pane/src/icons/cond.tsx index 7423b41396..c994b704db 100644 --- a/packages/plugin-outline-pane/src/icons/cond.tsx +++ b/packages/plugin-outline-pane/src/icons/cond.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconCond(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/delete.tsx b/packages/plugin-outline-pane/src/icons/delete.tsx index 1f93600196..838e3c1bac 100644 --- a/packages/plugin-outline-pane/src/icons/delete.tsx +++ b/packages/plugin-outline-pane/src/icons/delete.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconDelete(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/eye-close.tsx b/packages/plugin-outline-pane/src/icons/eye-close.tsx index e6e35f3264..ce98f7e120 100644 --- a/packages/plugin-outline-pane/src/icons/eye-close.tsx +++ b/packages/plugin-outline-pane/src/icons/eye-close.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconEyeClose(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/eye.tsx b/packages/plugin-outline-pane/src/icons/eye.tsx index fd1fbad4a6..ff0d7a1808 100644 --- a/packages/plugin-outline-pane/src/icons/eye.tsx +++ b/packages/plugin-outline-pane/src/icons/eye.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconEye(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/filter.tsx b/packages/plugin-outline-pane/src/icons/filter.tsx index 11e2f719d0..386c2f1b92 100644 --- a/packages/plugin-outline-pane/src/icons/filter.tsx +++ b/packages/plugin-outline-pane/src/icons/filter.tsx @@ -1,9 +1,13 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconFilter(props: IconProps) { return ( <SVGIcon viewBox="0 0 1024 1024" {...props}> - <path d="M911.457097 168.557714a35.986286 35.986286 0 0 1-8.009143 40.009143L621.73824 490.276571V914.285714c0 14.848-9.142857 28.013714-22.272 33.718857A42.349714 42.349714 0 0 1 585.166811 950.857143a34.084571 34.084571 0 0 1-25.709714-10.861714l-146.285714-146.285715A36.425143 36.425143 0 0 1 402.309669 768v-277.723429L120.599954 208.566857a35.986286 35.986286 0 0 1-8.009143-40.009143C118.295954 155.428571 131.461669 146.285714 146.309669 146.285714h731.428571c14.848 0 28.013714 9.142857 33.718857 22.272z" fill="#666" p-id="2025" /> + <path + d="M911.457097 168.557714a35.986286 35.986286 0 0 1-8.009143 40.009143L621.73824 490.276571V914.285714c0 14.848-9.142857 28.013714-22.272 33.718857A42.349714 42.349714 0 0 1 585.166811 950.857143a34.084571 34.084571 0 0 1-25.709714-10.861714l-146.285714-146.285715A36.425143 36.425143 0 0 1 402.309669 768v-277.723429L120.599954 208.566857a35.986286 35.986286 0 0 1-8.009143-40.009143C118.295954 155.428571 131.461669 146.285714 146.309669 146.285714h731.428571c14.848 0 28.013714 9.142857 33.718857 22.272z" + fill="#666" + p-id="2025" + /> </SVGIcon> ); } diff --git a/packages/plugin-outline-pane/src/icons/lock.tsx b/packages/plugin-outline-pane/src/icons/lock.tsx index f5ead19c40..2c4d63d82c 100644 --- a/packages/plugin-outline-pane/src/icons/lock.tsx +++ b/packages/plugin-outline-pane/src/icons/lock.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconLock(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/loop.tsx b/packages/plugin-outline-pane/src/icons/loop.tsx index f128dd4605..16b34488e2 100644 --- a/packages/plugin-outline-pane/src/icons/loop.tsx +++ b/packages/plugin-outline-pane/src/icons/loop.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconLoop(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/outline.tsx b/packages/plugin-outline-pane/src/icons/outline.tsx index a3b7654e1e..47f88b0378 100644 --- a/packages/plugin-outline-pane/src/icons/outline.tsx +++ b/packages/plugin-outline-pane/src/icons/outline.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconOutline(props: IconProps) { return ( @@ -9,4 +9,3 @@ export function IconOutline(props: IconProps) { } IconOutline.displayName = 'IconOutline'; - diff --git a/packages/plugin-outline-pane/src/icons/radio-active.tsx b/packages/plugin-outline-pane/src/icons/radio-active.tsx index dcd4e938dc..86a5b79a70 100644 --- a/packages/plugin-outline-pane/src/icons/radio-active.tsx +++ b/packages/plugin-outline-pane/src/icons/radio-active.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconRadioActive(props: IconProps) { return ( @@ -9,4 +9,3 @@ export function IconRadioActive(props: IconProps) { } IconRadioActive.displayName = 'IconRadioActive'; - diff --git a/packages/plugin-outline-pane/src/icons/radio.tsx b/packages/plugin-outline-pane/src/icons/radio.tsx index 9bb8fdf6f2..1fa9e85343 100644 --- a/packages/plugin-outline-pane/src/icons/radio.tsx +++ b/packages/plugin-outline-pane/src/icons/radio.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconRadio(props: IconProps) { return ( @@ -9,4 +9,3 @@ export function IconRadio(props: IconProps) { } IconRadio.displayName = 'IconRadio'; - diff --git a/packages/plugin-outline-pane/src/icons/setting.tsx b/packages/plugin-outline-pane/src/icons/setting.tsx index a42b0ee013..4678178e6b 100644 --- a/packages/plugin-outline-pane/src/icons/setting.tsx +++ b/packages/plugin-outline-pane/src/icons/setting.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconSetting(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/icons/unlock.tsx b/packages/plugin-outline-pane/src/icons/unlock.tsx index 1f651210f1..8b8f0bda09 100644 --- a/packages/plugin-outline-pane/src/icons/unlock.tsx +++ b/packages/plugin-outline-pane/src/icons/unlock.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@lce/lowcode-utils'; export function IconUnlock(props: IconProps) { return ( diff --git a/packages/plugin-outline-pane/src/index.tsx b/packages/plugin-outline-pane/src/index.tsx index 822c503f27..63ba5a1f61 100644 --- a/packages/plugin-outline-pane/src/index.tsx +++ b/packages/plugin-outline-pane/src/index.tsx @@ -1,6 +1,6 @@ import { Pane } from './views/pane'; import { IconOutline } from './icons/outline'; -import { IPublicModelPluginContext, IPublicModelDocumentModel } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext, IPublicModelDocumentModel } from '@lce/lowcode-types'; import { MasterPaneName, BackupPaneName } from './helper/consts'; import { TreeMaster } from './controllers/tree-master'; import { PaneController } from './controllers/pane-controller'; diff --git a/packages/plugin-outline-pane/src/views/pane.tsx b/packages/plugin-outline-pane/src/views/pane.tsx index 4b807ca180..5e91fa6135 100644 --- a/packages/plugin-outline-pane/src/views/pane.tsx +++ b/packages/plugin-outline-pane/src/views/pane.tsx @@ -6,15 +6,18 @@ import './style.less'; import Filter from './filter'; import { TreeMaster } from '../controllers/tree-master'; import { Tree } from '../controllers/tree'; -import { IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicTypeDisposable } from '@lce/lowcode-types'; -export class Pane extends PureComponent<{ - treeMaster: TreeMaster; - controller: PaneController; - hideFilter?: boolean; -}, { - tree: Tree | null; -}> { +export class Pane extends PureComponent< + { + treeMaster: TreeMaster; + controller: PaneController; + hideFilter?: boolean; + }, + { + tree: Tree | null; + } +> { private controller; private simulatorRendererReadyDispose: IPublicTypeDisposable; @@ -28,9 +31,14 @@ export class Pane extends PureComponent<{ this.state = { tree: treeMaster.currentTree, }; - this.simulatorRendererReadyDispose = this.props.treeMaster.pluginContext?.project?.onSimulatorRendererReady(this.changeTree); - this.changeDocumentDispose = this.props.treeMaster.pluginContext?.project?.onChangeDocument(this.changeTree); - this.removeDocumentDispose = this.props.treeMaster.pluginContext?.project?.onRemoveDocument(this.changeTree); + this.simulatorRendererReadyDispose = + this.props.treeMaster.pluginContext?.project?.onSimulatorRendererReady(this.changeTree); + this.changeDocumentDispose = this.props.treeMaster.pluginContext?.project?.onChangeDocument( + this.changeTree, + ); + this.removeDocumentDispose = this.props.treeMaster.pluginContext?.project?.onRemoveDocument( + this.changeTree, + ); } changeTree = () => { @@ -67,8 +75,13 @@ export class Pane extends PureComponent<{ return ( <div className="lc-outline-pane"> - { !this.props.hideFilter && <Filter tree={tree} /> } - <div ref={(shell) => this.controller.mount(shell)} className={`lc-outline-tree-container ${ this.props.hideFilter ? 'lc-hidden-outline-filter' : '' }`}> + {!this.props.hideFilter && <Filter tree={tree} />} + <div + ref={(shell) => this.controller.mount(shell)} + className={`lc-outline-tree-container ${ + this.props.hideFilter ? 'lc-hidden-outline-filter' : '' + }`} + > <TreeView key={tree.id} tree={tree} /> </div> </div> diff --git a/packages/plugin-outline-pane/src/views/tree-branches.tsx b/packages/plugin-outline-pane/src/views/tree-branches.tsx index 41bd694812..45bf957dc9 100644 --- a/packages/plugin-outline-pane/src/views/tree-branches.tsx +++ b/packages/plugin-outline-pane/src/views/tree-branches.tsx @@ -2,7 +2,11 @@ import { PureComponent } from 'react'; import classNames from 'classnames'; import TreeNode from '../controllers/tree-node'; import TreeNodeView from './tree-node'; -import { IPublicModelExclusiveGroup, IPublicTypeDisposable, IPublicTypeLocationChildrenDetail } from '@alilc/lowcode-types'; +import { + IPublicModelExclusiveGroup, + IPublicTypeDisposable, + IPublicTypeLocationChildrenDetail, +} from '@lce/lowcode-types'; export default class TreeBranches extends PureComponent<{ treeNode: TreeNode; @@ -49,9 +53,7 @@ export default class TreeBranches extends PureComponent<{ return ( <div className="tree-node-branches"> - { - !isModal && <TreeNodeSlots treeNode={treeNode} /> - } + {!isModal && <TreeNodeSlots treeNode={treeNode} />} <TreeNodeChildren treeNode={treeNode} isModal={isModal || false} @@ -68,11 +70,14 @@ interface ITreeNodeChildrenState { keywords: string | null; dropDetail: IPublicTypeLocationChildrenDetail | undefined | null; } -class TreeNodeChildren extends PureComponent<{ +class TreeNodeChildren extends PureComponent< + { treeNode: TreeNode; isModal?: boolean; treeChildren: TreeNode[] | null; - }, ITreeNodeChildrenState> { + }, + ITreeNodeChildrenState +> { state: ITreeNodeChildrenState = { filterWorking: false, matchSelf: false, @@ -96,18 +101,16 @@ class TreeNodeChildren extends PureComponent<{ filterWorking: newFilterWorking, matchSelf: newMatchChild, keywords: newKeywords, - } = treeNode.filterReult; + } = treeNode.filterReult; this.setState({ filterWorking: newFilterWorking, matchSelf: newMatchChild, keywords: newKeywords, }); }); - this.offLocationChanged = project.currentDocument?.onDropLocationChanged( - () => { - this.setState({ dropDetail: treeNode.dropDetail }); - }, - ); + this.offLocationChanged = project.currentDocument?.onDropLocationChanged(() => { + this.setState({ dropDetail: treeNode.dropDetail }); + }); } componentWillUnmount(): void { this.offLocationChanged && this.offLocationChanged(); @@ -124,7 +127,11 @@ class TreeNodeChildren extends PureComponent<{ const endGroup = () => { if (groupContents.length > 0) { children.push( - <div key={currentGrp.id} className="condition-group-container" data-id={currentGrp.firstNode?.id}> + <div + key={currentGrp.id} + className="condition-group-container" + data-id={currentGrp.firstNode?.id} + > <div className="condition-group-title"> {/* @ts-ignore */} <Title @@ -188,8 +195,8 @@ class TreeNodeChildren extends PureComponent<{ } class TreeNodeSlots extends PureComponent<{ - treeNode: TreeNode; - }> { + treeNode: TreeNode; +}> { render() { const { treeNode } = this.props; if (!treeNode.hasSlots()) { @@ -205,9 +212,11 @@ class TreeNodeSlots extends PureComponent<{ > <div className="tree-node-slots-title"> {/* @ts-ignore */} - <Title title={{ type: 'i18n', intl: this.props.treeNode.pluginContext.intlNode('Slots') }} /> + <Title + title={{ type: 'i18n', intl: this.props.treeNode.pluginContext.intlNode('Slots') }} + /> </div> - {treeNode.slots.map(tnode => ( + {treeNode.slots.map((tnode) => ( <TreeNodeView key={tnode.nodeId} treeNode={tnode} /> ))} </div> diff --git a/packages/plugin-outline-pane/src/views/tree-node.tsx b/packages/plugin-outline-pane/src/views/tree-node.tsx index 11bd95d12f..04c4ce2a43 100644 --- a/packages/plugin-outline-pane/src/views/tree-node.tsx +++ b/packages/plugin-outline-pane/src/views/tree-node.tsx @@ -4,20 +4,21 @@ import TreeNode from '../controllers/tree-node'; import TreeTitle from './tree-title'; import TreeBranches from './tree-branches'; import { IconEyeClose } from '../icons/eye-close'; -import { IPublicModelModalNodesManager, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicModelModalNodesManager, IPublicTypeDisposable } from '@lce/lowcode-types'; import { IOutlinePanelPluginContext } from '../controllers/tree-master'; -class ModalTreeNodeView extends PureComponent<{ - treeNode: TreeNode; -}, { - treeChildren: TreeNode[] | null; -}> { +class ModalTreeNodeView extends PureComponent< + { + treeNode: TreeNode; + }, + { + treeChildren: TreeNode[] | null; + } +> { private modalNodesManager: IPublicModelModalNodesManager | undefined | null; readonly pluginContext: IOutlinePanelPluginContext; - constructor(props: { - treeNode: TreeNode; - }) { + constructor(props: { treeNode: TreeNode }) { super(props); // 模态管理对象 @@ -145,9 +146,9 @@ export default class TreeNodeView extends PureComponent<{ const doc = project.currentDocument; - treeNode.onExpandedChanged(((expanded: boolean) => { + treeNode.onExpandedChanged((expanded: boolean) => { this.setState({ expanded }); - })); + }); treeNode.onHiddenChanged((hidden: boolean) => { this.setState({ hidden }); }); @@ -161,8 +162,16 @@ export default class TreeNodeView extends PureComponent<{ }); }); treeNode.onFilterResultChanged(() => { - const { filterWorking: newFilterWorking, matchChild: newMatchChild, matchSelf: newMatchSelf } = treeNode.filterReult; - this.setState({ filterWorking: newFilterWorking, matchChild: newMatchChild, matchSelf: newMatchSelf }); + const { + filterWorking: newFilterWorking, + matchChild: newMatchChild, + matchSelf: newMatchSelf, + } = treeNode.filterReult; + this.setState({ + filterWorking: newFilterWorking, + matchChild: newMatchChild, + matchSelf: newMatchSelf, + }); }); this.eventOffCallbacks.push( doc?.onDropLocationChanged(() => { @@ -233,10 +242,7 @@ export default class TreeNodeView extends PureComponent<{ return null; } return ( - <div - className={className} - data-id={treeNode.nodeId} - > + <div className={className} data-id={treeNode.nodeId}> <TreeTitle treeNode={treeNode} isModal={isModal} @@ -245,11 +251,7 @@ export default class TreeNodeView extends PureComponent<{ locked={this.state.locked} expandable={this.state.expandable} /> - {shouldShowModalTreeNode && - <ModalTreeNodeView - treeNode={treeNode} - /> - } + {shouldShowModalTreeNode && <ModalTreeNodeView treeNode={treeNode} />} <TreeBranches treeNode={treeNode} isModal={false} diff --git a/packages/plugin-outline-pane/src/views/tree-title.tsx b/packages/plugin-outline-pane/src/views/tree-title.tsx index f822bd644b..8dadc8e44c 100644 --- a/packages/plugin-outline-pane/src/views/tree-title.tsx +++ b/packages/plugin-outline-pane/src/views/tree-title.tsx @@ -1,15 +1,34 @@ import { KeyboardEvent, FocusEvent, Fragment, PureComponent } from 'react'; import classNames from 'classnames'; -import { createIcon } from '@alilc/lowcode-utils'; -import { IPublicApiEvent } from '@alilc/lowcode-types'; +import { createIcon } from '@lce/lowcode-utils'; +import { IPublicApiEvent } from '@lce/lowcode-types'; import TreeNode from '../controllers/tree-node'; -import { IconLock, IconUnlock, IconArrowRight, IconEyeClose, IconEye, IconCond, IconLoop, IconRadioActive, IconRadio, IconSetting, IconDelete } from '../icons'; +import { + IconLock, + IconUnlock, + IconArrowRight, + IconEyeClose, + IconEye, + IconCond, + IconLoop, + IconRadioActive, + IconRadio, + IconSetting, + IconDelete, +} from '../icons'; -function emitOutlineEvent(event: IPublicApiEvent, type: string, treeNode: TreeNode, rest?: Record<string, unknown>) { +function emitOutlineEvent( + event: IPublicApiEvent, + type: string, + treeNode: TreeNode, + rest?: Record<string, unknown>, +) { const node = treeNode?.node; const npm = node?.componentMeta?.npm; const selected = - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || + node?.componentMeta?.componentName || + ''; event.emit(`outlinePane.${type}`, { selected, ...rest, @@ -107,8 +126,16 @@ export default class TreeTitle extends PureComponent<{ }); }); treeNode.onFilterResultChanged(() => { - const { filterWorking: newFilterWorking, keywords: newKeywords, matchSelf: newMatchSelf } = treeNode.filterReult; - this.setState({ filterWorking: newFilterWorking, keywords: newKeywords, matchSelf: newMatchSelf }); + const { + filterWorking: newFilterWorking, + keywords: newKeywords, + matchSelf: newMatchSelf, + } = treeNode.filterReult; + this.setState({ + filterWorking: newFilterWorking, + keywords: newKeywords, + matchSelf: newMatchSelf, + }); }); } deleteClick = () => { @@ -123,7 +150,9 @@ export default class TreeTitle extends PureComponent<{ const isCNode = !treeNode.isRoot(); const { node } = treeNode; const { componentMeta } = node; - const availableActions = componentMeta ? componentMeta.availableActions.map((availableAction) => availableAction.name) : []; + const availableActions = componentMeta + ? componentMeta.availableActions.map((availableAction) => availableAction.name) + : []; const isNodeParent = node.isParentalNode; const isContainer = node.isContainerNode; let style: any; @@ -142,7 +171,12 @@ export default class TreeTitle extends PureComponent<{ const couldLock = availableActions.includes('lock'); const couldUnlock = availableActions.includes('unlock'); const shouldShowHideBtn = isCNode && isNodeParent && !isModal && couldHide; - const shouldShowLockBtn = config.get('enableCanvasLock', false) && isContainer && isCNode && isNodeParent && ((couldLock && !node.isLocked) || (couldUnlock && node.isLocked)); + const shouldShowLockBtn = + config.get('enableCanvasLock', false) && + isContainer && + isCNode && + isNodeParent && + ((couldLock && !node.isLocked) || (couldUnlock && node.isLocked)); const shouldEditBtn = isCNode && isNodeParent; const shouldDeleteBtn = isCNode && isNodeParent && node?.canPerformAction('remove'); return ( @@ -165,22 +199,30 @@ export default class TreeTitle extends PureComponent<{ }} > {isModal && this.state.visible && ( - <div onClick={() => { - node.document?.modalNodesManager?.setInvisible(node); - }} + <div + onClick={() => { + node.document?.modalNodesManager?.setInvisible(node); + }} > <IconRadioActive className="tree-node-modal-radio-active" /> </div> )} {isModal && !this.state.visible && ( - <div onClick={() => { - node.document?.modalNodesManager?.setVisible(node); - }} + <div + onClick={() => { + node.document?.modalNodesManager?.setVisible(node); + }} > <IconRadio className="tree-node-modal-radio" /> </div> )} - {isCNode && <ExpandBtn expandable={this.props.expandable} expanded={this.props.expanded} treeNode={treeNode} />} + {isCNode && ( + <ExpandBtn + expandable={this.props.expandable} + expanded={this.props.expanded} + treeNode={treeNode} + /> + )} <div className="tree-node-icon">{createIcon(treeNode.icon)}</div> <div className="tree-node-title-label"> {editing ? ( @@ -243,10 +285,7 @@ class DeleteBtn extends PureComponent<{ const { intl, common } = this.props.treeNode.pluginContext; const { Tip } = common.editorCabin; return ( - <div - className="tree-node-delete-btn" - onClick={this.props.onClick} - > + <div className="tree-node-delete-btn" onClick={this.props.onClick}> <IconDelete /> {/* @ts-ignore */} <Tip>{intl('Delete')}</Tip> @@ -263,10 +302,7 @@ class RenameBtn extends PureComponent<{ const { intl, common } = this.props.treeNode.pluginContext; const { Tip } = common.editorCabin; return ( - <div - className="tree-node-rename-btn" - onClick={this.props.onClick} - > + <div className="tree-node-rename-btn" onClick={this.props.onClick}> <IconSetting /> {/* @ts-ignore */} <Tip>{intl('Rename')}</Tip> @@ -291,7 +327,7 @@ class LockBtn extends PureComponent<{ treeNode.setLocked(!locked); }} > - {locked ? <IconUnlock /> : <IconLock /> } + {locked ? <IconUnlock /> : <IconLock />} {/* @ts-ignore */} <Tip>{locked ? intl('Unlock') : intl('Lock')}</Tip> </div> @@ -299,12 +335,15 @@ class LockBtn extends PureComponent<{ } } -class HideBtn extends PureComponent<{ - treeNode: TreeNode; - hidden: boolean; -}, { - hidden: boolean; -}> { +class HideBtn extends PureComponent< + { + treeNode: TreeNode; + hidden: boolean; + }, + { + hidden: boolean; + } +> { render() { const { treeNode, hidden } = this.props; const { intl, common } = treeNode.pluginContext; @@ -343,7 +382,11 @@ class ExpandBtn extends PureComponent<{ if (expanded) { e.stopPropagation(); } - emitOutlineEvent(treeNode.pluginContext.event, expanded ? 'collapse' : 'expand', treeNode); + emitOutlineEvent( + treeNode.pluginContext.event, + expanded ? 'collapse' : 'expand', + treeNode, + ); treeNode.setExpanded(!expanded); }} > diff --git a/packages/plugin-outline-pane/src/views/tree.tsx b/packages/plugin-outline-pane/src/views/tree.tsx index 8428ec944c..734cea794d 100644 --- a/packages/plugin-outline-pane/src/views/tree.tsx +++ b/packages/plugin-outline-pane/src/views/tree.tsx @@ -1,8 +1,8 @@ import { MouseEvent as ReactMouseEvent, PureComponent } from 'react'; -import { isFormEvent, canClickNode, isShaken } from '@alilc/lowcode-utils'; +import { isFormEvent, canClickNode, isShaken } from '@lce/lowcode-utils'; import { Tree } from '../controllers/tree'; import TreeNodeView from './tree-node'; -import { IPublicEnumDragObjectType, IPublicModelNode } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType, IPublicModelNode } from '@lce/lowcode-types'; import TreeNode from '../controllers/tree-node'; function getTreeNodeIdByEvent(e: ReactMouseEvent, stop: Element): null | string { @@ -202,18 +202,16 @@ export default class TreeView extends PureComponent<{ return ( <div className="lc-outline-tree" - ref={(shell) => { this.shell = shell; }} + ref={(shell) => { + this.shell = shell; + }} onMouseDownCapture={this.onMouseDown} onMouseOver={this.onMouseOver} onClick={this.onClick} onDoubleClick={this.onDoubleClick} onMouseLeave={this.onMouseLeave} > - <TreeNodeView - key={this.state.root?.id} - treeNode={this.state.root} - isRootNode - /> + <TreeNodeView key={this.state.root?.id} treeNode={this.state.root} isRootNode /> </div> ); } diff --git a/packages/react-renderer/demo/compose.md b/packages/react-renderer/demo/compose.md index b828cd6041..b001a10e27 100644 --- a/packages/react-renderer/demo/compose.md +++ b/packages/react-renderer/demo/compose.md @@ -3,10 +3,10 @@ title: 复杂组件 order: 2 --- -````jsx +```jsx import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import schema from './schemas/compose'; import components from './config/components/index'; import utils from './config/utils'; @@ -23,7 +23,7 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} /> </div> @@ -31,7 +31,5 @@ class Demo extends PureComponent { } } -ReactDOM.render(( - <Demo /> -), mountNode); -```` +ReactDOM.render(<Demo />, mountNode); +``` diff --git a/packages/react-renderer/demo/dataSource.md b/packages/react-renderer/demo/dataSource.md index 5ec00ae8b9..deae96fe1d 100644 --- a/packages/react-renderer/demo/dataSource.md +++ b/packages/react-renderer/demo/dataSource.md @@ -3,10 +3,10 @@ title: 数据源使用 order: 4 --- -````jsx +```jsx import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import schema from './schemas/dataSource'; import components from './config/components/index'; import utils from './config/utils'; @@ -23,7 +23,7 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} /> </div> @@ -31,7 +31,5 @@ class Demo extends PureComponent { } } -ReactDOM.render(( - <Demo /> -), mountNode); -```` +ReactDOM.render(<Demo />, mountNode); +``` diff --git a/packages/react-renderer/demo/i18n.md b/packages/react-renderer/demo/i18n.md index bbea036d19..cc9f26bb6c 100644 --- a/packages/react-renderer/demo/i18n.md +++ b/packages/react-renderer/demo/i18n.md @@ -3,10 +3,10 @@ title: 国际化 order: 5 --- -````jsx +```jsx import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import schema from './schemas/i18n'; import components from './config/components/index'; import utils from './config/utils'; @@ -23,12 +23,12 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} locale="zh-CN" messages={{ - "hello": "你好", - "china": "中国" + hello: '你好', + china: '中国', }} /> </div> @@ -36,7 +36,5 @@ class Demo extends PureComponent { } } -ReactDOM.render(( - <Demo /> -), mountNode); -```` +ReactDOM.render(<Demo />, mountNode); +``` diff --git a/packages/react-renderer/demo/list.md b/packages/react-renderer/demo/list.md index d0e34ee685..2dd638f451 100644 --- a/packages/react-renderer/demo/list.md +++ b/packages/react-renderer/demo/list.md @@ -3,10 +3,10 @@ title: 列表 order: 1 --- -````jsx +```jsx import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import schema from './schemas/list'; import components from './config/components/index'; import utils from './config/utils'; @@ -23,7 +23,7 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} /> </div> @@ -31,7 +31,5 @@ class Demo extends PureComponent { } } -ReactDOM.render(( - <Demo /> -), mountNode); -```` +ReactDOM.render(<Demo />, mountNode); +``` diff --git a/packages/react-renderer/demo/table.md b/packages/react-renderer/demo/table.md index 3c7cb307ca..e990e1ee7e 100644 --- a/packages/react-renderer/demo/table.md +++ b/packages/react-renderer/demo/table.md @@ -3,10 +3,10 @@ title: 表格 order: 1 --- -````jsx +```jsx import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import ReactRenderer from '@alilc/lowcode-react-renderer'; +import ReactRenderer from '@lce/lowcode-react-renderer'; import schema from './schemas/table'; import components from './config/components/index'; import utils from './config/utils'; @@ -23,7 +23,7 @@ class Demo extends PureComponent { components={components} appHelper={{ utils, - constants + constants, }} /> </div> @@ -31,7 +31,5 @@ class Demo extends PureComponent { } } -ReactDOM.render(( - <Demo /> -), mountNode); -```` +ReactDOM.render(<Demo />, mountNode); +``` diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index 625801bc25..d45aa5ec4d 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-react-renderer", + "name": "@lce/lowcode-react-renderer", "version": "1.3.2", "description": "react renderer for ali lowcode engine", "main": "lib/index.js", @@ -22,7 +22,7 @@ ], "dependencies": { "@alifd/next": "^1.21.16", - "@alilc/lowcode-renderer-core": "1.3.2" + "@lce/lowcode-renderer-core": "1.3.2" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", diff --git a/packages/react-renderer/src/index.ts b/packages/react-renderer/src/index.ts index d4df733192..ee1886fb99 100644 --- a/packages/react-renderer/src/index.ts +++ b/packages/react-renderer/src/index.ts @@ -1,4 +1,12 @@ -import React, { Component, PureComponent, createElement, createContext, forwardRef, ReactInstance, ContextType } from 'react'; +import React, { + Component, + PureComponent, + createElement, + createContext, + forwardRef, + ReactInstance, + ContextType, +} from 'react'; import ReactDOM from 'react-dom'; import { adapter, @@ -9,7 +17,7 @@ import { tempRendererFactory, rendererFactory, types, -} from '@alilc/lowcode-renderer-core'; +} from '@lce/lowcode-renderer-core'; import ConfigProvider from '@alifd/next/lib/config-provider'; window.React = React; @@ -42,10 +50,7 @@ function factory(): types.IRenderComponent { context: ContextType<any>; - setState: ( - state: types.IRendererState, - callback?: () => void, - ) => void; + setState: (state: types.IRendererState, callback?: () => void) => void; forceUpdate: (callback?: () => void) => void; diff --git a/packages/react-simulator-renderer/build.umd.json b/packages/react-simulator-renderer/build.umd.json index 1052bb0765..b2f73337c0 100644 --- a/packages/react-simulator-renderer/build.umd.json +++ b/packages/react-simulator-renderer/build.umd.json @@ -10,7 +10,7 @@ "react-dom": "var window.ReactDOM", "prop-types": "var window.PropTypes", "@alifd/next": "var Next", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json index 3c3950a124..b3736bf987 100644 --- a/packages/react-simulator-renderer/package.json +++ b/packages/react-simulator-renderer/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-react-simulator-renderer", + "name": "@lce/lowcode-react-simulator-renderer", "version": "1.3.2", "description": "react simulator renderer for alibaba lowcode designer", "main": "lib/index.js", @@ -17,10 +17,10 @@ "test:cov": "build-scripts test --config build.test.json --jest-coverage" }, "dependencies": { - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-react-renderer": "1.3.2", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-react-renderer": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "mobx": "^6.3.0", "mobx-react": "^7.2.0", diff --git a/packages/react-simulator-renderer/src/host.ts b/packages/react-simulator-renderer/src/host.ts index c5cf2e3e1c..07d98c85e6 100644 --- a/packages/react-simulator-renderer/src/host.ts +++ b/packages/react-simulator-renderer/src/host.ts @@ -1,4 +1,4 @@ // NOTE: 仅做类型标注,切勿做其它用途 -import { BuiltinSimulatorHost } from '@alilc/lowcode-designer'; +import { BuiltinSimulatorHost } from '@lce/lowcode-designer'; export const host: BuiltinSimulatorHost = (window as any).LCSimulatorHost; diff --git a/packages/react-simulator-renderer/src/renderer-view.tsx b/packages/react-simulator-renderer/src/renderer-view.tsx index aa1683cd22..ca5910f478 100644 --- a/packages/react-simulator-renderer/src/renderer-view.tsx +++ b/packages/react-simulator-renderer/src/renderer-view.tsx @@ -1,11 +1,11 @@ import { ReactInstance, Fragment, Component, createElement } from 'react'; import { Router, Route, Switch } from 'react-router'; import cn from 'classnames'; -import { Node } from '@alilc/lowcode-designer'; -import LowCodeRenderer from '@alilc/lowcode-react-renderer'; +import { Node } from '@lce/lowcode-designer'; +import LowCodeRenderer from '@lce/lowcode-react-renderer'; import { observer } from 'mobx-react'; -import { getClosestNode, isFromVC, isReactComponent } from '@alilc/lowcode-utils'; -import { GlobalEvent } from '@alilc/lowcode-types'; +import { getClosestNode, isFromVC, isReactComponent } from '@lce/lowcode-utils'; +import { GlobalEvent } from '@lce/lowcode-types'; import { SimulatorRendererContainer, DocumentInstance } from './renderer'; import { host } from './host'; import { isRendererDetached } from './utils/misc'; @@ -14,7 +14,11 @@ import { createIntl } from './locale'; // patch cloneElement avoid lost keyProps const originCloneElement = window.React.cloneElement; -(window as any).React.cloneElement = (child: any, { _leaf, ...props }: any = {}, ...rest: any[]) => { +(window as any).React.cloneElement = ( + child: any, + { _leaf, ...props }: any = {}, + ...rest: any[] +) => { if (child.ref && props.ref) { const dRef = props.ref; const cRef = child.ref; @@ -46,7 +50,9 @@ const originCloneElement = window.React.cloneElement; return originCloneElement(child, props, ...rest); }; -export default class SimulatorRendererView extends Component<{ rendererContainer: SimulatorRendererContainer }> { +export default class SimulatorRendererView extends Component<{ + rendererContainer: SimulatorRendererContainer; +}> { render() { const { rendererContainer } = this.props; return ( @@ -70,7 +76,13 @@ export class Routes extends Component<{ rendererContainer: SimulatorRendererCont <Route path={instance.path} key={instance.id} - render={(routeProps) => <Renderer documentInstance={instance} rendererContainer={rendererContainer} {...routeProps} />} + render={(routeProps) => ( + <Renderer + documentInstance={instance} + rendererContainer={rendererContainer} + {...routeProps} + /> + )} /> ); })} @@ -106,7 +118,11 @@ class Layout extends Component<{ rendererContainer: SimulatorRendererContainer } if (layout) { const { Component, props, componentName } = layout; if (Component) { - return <Component key="layout" props={props}>{children}</Component>; + return ( + <Component key="layout" props={props}> + {children} + </Component> + ); } if (componentName && rendererContainer.getComponent(componentName)) { return createElement( @@ -219,7 +235,10 @@ class Renderer extends Component<{ defaultPlaceholder = intl('Locked elements and child elements cannot be edited'); } children = ( - <div className={cn('lc-container-placeholder', { 'lc-container-locked': !!lockedNode })} style={viewProps.placeholderStyle}> + <div + className={cn('lc-container-placeholder', { 'lc-container-locked': !!lockedNode })} + style={viewProps.placeholderStyle} + > {viewProps.placeholder || defaultPlaceholder} </div> ); @@ -255,7 +274,13 @@ class Renderer extends Component<{ return createElement( getDeviceView(Component, device, designMode), viewProps, - leaf?.isContainer() ? (children == null ? [] : Array.isArray(children) ? children : [children]) : children, + leaf?.isContainer() + ? children == null + ? [] + : Array.isArray(children) + ? children + : [children] + : children, ); }} __host={host} diff --git a/packages/react-simulator-renderer/src/renderer.ts b/packages/react-simulator-renderer/src/renderer.ts index 20f6e18c0b..7c464c5506 100644 --- a/packages/react-simulator-renderer/src/renderer.ts +++ b/packages/react-simulator-renderer/src/renderer.ts @@ -16,11 +16,16 @@ import { isPlainObject, AssetLoader, getProjectUtils, -} from '@alilc/lowcode-utils'; -import { IPublicTypeComponentSchema, IPublicEnumTransformStage, IPublicTypeNodeInstance, IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +} from '@lce/lowcode-utils'; +import { + IPublicTypeComponentSchema, + IPublicEnumTransformStage, + IPublicTypeNodeInstance, + IPublicTypeProjectSchema, +} from '@lce/lowcode-types'; // just use types -import { BuiltinSimulatorRenderer, Component, IDocumentModel, INode } from '@alilc/lowcode-designer'; -import LowCodeRenderer from '@alilc/lowcode-react-renderer'; +import { BuiltinSimulatorRenderer, Component, IDocumentModel, INode } from '@lce/lowcode-designer'; +import LowCodeRenderer from '@lce/lowcode-react-renderer'; import { createMemoryHistory, MemoryHistory } from 'history'; import Slot from './builtin-components/slot'; import Leaf from './builtin-components/leaf'; @@ -170,15 +175,14 @@ export class DocumentInstance { host.setInstance(this.document.id, id, instances); } - mountContext() { - } + mountContext() {} getNode(id: string): INode | null { return this.document.getNode(id); } dispose() { - this.disposeFunctions.forEach(fn => fn()); + this.disposeFunctions.forEach((fn) => fn()); this.instancesMap = new Map(); } } @@ -252,51 +256,57 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer { makeObservable(this); this.autoRender = host.autoRender; - this.disposeFunctions.push(host.connect(this, () => { - // sync layout config - this._layout = host.project.get('config').layout; - - // todo: split with others, not all should recompute - if (this._libraryMap !== host.libraryMap - || this._componentsMap !== host.designer.componentsMap) { - this._libraryMap = host.libraryMap || {}; - this._componentsMap = host.designer.componentsMap; - this.buildComponents(); - } + this.disposeFunctions.push( + host.connect(this, () => { + // sync layout config + this._layout = host.project.get('config').layout; + + // todo: split with others, not all should recompute + if ( + this._libraryMap !== host.libraryMap || + this._componentsMap !== host.designer.componentsMap + ) { + this._libraryMap = host.libraryMap || {}; + this._componentsMap = host.designer.componentsMap; + this.buildComponents(); + } - // sync designMode - this._designMode = host.designMode; + // sync designMode + this._designMode = host.designMode; - this._locale = host.locale; + this._locale = host.locale; - // sync requestHandlersMap - this._requestHandlersMap = host.requestHandlersMap; + // sync requestHandlersMap + this._requestHandlersMap = host.requestHandlersMap; - // sync device - this._device = host.device; - })); + // sync device + this._device = host.device; + }), + ); const documentInstanceMap = new Map<string, DocumentInstance>(); let initialEntry = '/'; let firstRun = true; - this.disposeFunctions.push(host.autorun(() => { - this._documentInstances = host.project.documents.map((doc) => { - let inst = documentInstanceMap.get(doc.id); - if (!inst) { - inst = new DocumentInstance(this, doc); - documentInstanceMap.set(doc.id, inst); + this.disposeFunctions.push( + host.autorun(() => { + this._documentInstances = host.project.documents.map((doc) => { + let inst = documentInstanceMap.get(doc.id); + if (!inst) { + inst = new DocumentInstance(this, doc); + documentInstanceMap.set(doc.id, inst); + } + return inst; + }); + const path = host.project.currentDocument + ? documentInstanceMap.get(host.project.currentDocument.id)!.path + : '/'; + if (firstRun) { + initialEntry = path; + firstRun = false; + } else if (this.history.location.pathname !== path) { + this.history.replace(path); } - return inst; - }); - const path = host.project.currentDocument - ? documentInstanceMap.get(host.project.currentDocument.id)!.path - : '/'; - if (firstRun) { - initialEntry = path; - firstRun = false; - } else if (this.history.location.pathname !== path) { - this.history.replace(path); - } - })); + }), + ); const history = createMemoryHistory({ initialEntries: [initialEntry], }); @@ -361,10 +371,10 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer { private buildComponents() { this._components = buildComponents( - this._libraryMap, - this._componentsMap, - this.createComponent.bind(this), - ); + this._libraryMap, + this._componentsMap, + this.createComponent.bind(this), + ); this._components = { ...builtinComponents, ...this._components, @@ -402,7 +412,10 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer { } } - getClosestNodeInstance(from: ReactInstance, nodeId?: string): IPublicTypeNodeInstance<ReactInstance> | null { + getClosestNodeInstance( + from: ReactInstance, + nodeId?: string, + ): IPublicTypeNodeInstance<ReactInstance> | null { return getClosestNodeInstance(from, nodeId); } @@ -550,9 +563,10 @@ function cacheReactKey(el: Element): Element { return el; } // react17 采用 __reactFiber 开头 - REACT_KEY = Object.keys(el).find( - (key) => key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$'), - ) || ''; + REACT_KEY = + Object.keys(el).find( + (key) => key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$'), + ) || ''; if (!REACT_KEY && (el as HTMLElement).parentElement) { return cacheReactKey((el as HTMLElement).parentElement!); } @@ -563,9 +577,9 @@ const SYMBOL_VNID = Symbol('_LCNodeId'); const SYMBOL_VDID = Symbol('_LCDocId'); function getClosestNodeInstance( - from: ReactInstance, - specId?: string, - ): IPublicTypeNodeInstance<ReactInstance> | null { + from: ReactInstance, + specId?: string, +): IPublicTypeNodeInstance<ReactInstance> | null { let el: any = from; if (el) { if (isElement(el)) { @@ -595,7 +609,10 @@ function getClosestNodeInstance( return null; } -function getNodeInstance(fiberNode: any, specId?: string): IPublicTypeNodeInstance<ReactInstance> | null { +function getNodeInstance( + fiberNode: any, + specId?: string, +): IPublicTypeNodeInstance<ReactInstance> | null { const instance = fiberNode?.stateNode; if (instance && SYMBOL_VNID in instance) { const nodeId = instance[SYMBOL_VNID]; diff --git a/packages/react-simulator-renderer/src/utils/get-client-rects.ts b/packages/react-simulator-renderer/src/utils/get-client-rects.ts index dd13aba81e..ed82c923cd 100644 --- a/packages/react-simulator-renderer/src/utils/get-client-rects.ts +++ b/packages/react-simulator-renderer/src/utils/get-client-rects.ts @@ -1,4 +1,4 @@ -import { isElement } from '@alilc/lowcode-utils'; +import { isElement } from '@lce/lowcode-utils'; // a range for test TextNode clientRect const cycleRange = document.createRange(); diff --git a/packages/react-simulator-renderer/src/utils/react-find-dom-nodes.ts b/packages/react-simulator-renderer/src/utils/react-find-dom-nodes.ts index d7af90346f..c3be79f9a6 100644 --- a/packages/react-simulator-renderer/src/utils/react-find-dom-nodes.ts +++ b/packages/react-simulator-renderer/src/utils/react-find-dom-nodes.ts @@ -1,6 +1,6 @@ import { ReactInstance } from 'react'; import { findDOMNode } from 'react-dom'; -import { isElement } from '@alilc/lowcode-utils'; +import { isElement } from '@lce/lowcode-utils'; import { isDOMNode } from './is-dom-node'; export const getReactInternalFiber = (el: any) => { diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index 199eac1cac..8b44f32224 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-renderer-core", + "name": "@lce/lowcode-renderer-core", "version": "1.3.2", "description": "renderer core", "license": "MIT", @@ -16,8 +16,8 @@ }, "dependencies": { "@alilc/lowcode-datasource-engine": "^1.0.0", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "debug": "^4.1.1", "fetch-jsonp": "^1.1.3", @@ -32,7 +32,7 @@ "devDependencies": { "@alib/build-scripts": "^0.1.18", "@alifd/next": "^1.26.0", - "@alilc/lowcode-designer": "1.3.2", + "@lce/lowcode-designer": "1.3.2", "@babel/plugin-transform-typescript": "^7.16.8", "@testing-library/react": "^11.2.2", "@types/classnames": "^2.2.11", diff --git a/packages/renderer-core/src/hoc/index.tsx b/packages/renderer-core/src/hoc/index.tsx index 4851ea486f..f77403e007 100644 --- a/packages/renderer-core/src/hoc/index.tsx +++ b/packages/renderer-core/src/hoc/index.tsx @@ -1,4 +1,4 @@ -import { cloneEnumerableProperty } from '@alilc/lowcode-utils'; +import { cloneEnumerableProperty } from '@lce/lowcode-utils'; import adapter from '../adapter'; import { IBaseRendererInstance, IRendererProps } from '../types'; diff --git a/packages/renderer-core/src/hoc/leaf.tsx b/packages/renderer-core/src/hoc/leaf.tsx index 2bb3c0b368..32de33b40a 100644 --- a/packages/renderer-core/src/hoc/leaf.tsx +++ b/packages/renderer-core/src/hoc/leaf.tsx @@ -1,6 +1,11 @@ -import { INode, IPublicTypePropChangeOptions } from '@alilc/lowcode-designer'; -import { GlobalEvent, IPublicEnumTransformStage, IPublicTypeNodeSchema, IPublicTypeEngineOptions } from '@alilc/lowcode-types'; -import { isReactComponent, cloneEnumerableProperty } from '@alilc/lowcode-utils'; +import { INode, IPublicTypePropChangeOptions } from '@lce/lowcode-designer'; +import { + GlobalEvent, + IPublicEnumTransformStage, + IPublicTypeNodeSchema, + IPublicTypeEngineOptions, +} from '@lce/lowcode-types'; +import { isReactComponent, cloneEnumerableProperty } from '@lce/lowcode-utils'; import { debounce } from '../utils/common'; import adapter from '../adapter'; import * as types from '../types/index'; @@ -40,7 +45,10 @@ export interface IComponentHoc { hoc: IComponentConstruct; } -export type IComponentConstruct = (Comp: types.IBaseRenderComponent, info: IComponentHocInfo) => types.IGeneralConstructor; +export type IComponentConstruct = ( + Comp: types.IBaseRenderComponent, + info: IComponentHocInfo, +) => types.IGeneralConstructor; interface IProps { _leaf: INode | undefined; @@ -66,7 +74,6 @@ enum RerenderType { // 缓存 Leaf 层组件,防止重新渲染问题 class LeafCache { - /** 组件缓存 */ component = new Map(); @@ -82,24 +89,15 @@ class LeafCache { ref = new Map(); - constructor(public documentId: string, public device: string) { - } + constructor(public documentId: string, public device: string) {} } let cache: LeafCache; /** 部分没有渲染的 node 节点进行兜底处理 or 渲染方式没有渲染 LeafWrapper */ -function initRerenderEvent({ - schema, - __debug, - container, - getNode, -}: any) { +function initRerenderEvent({ schema, __debug, container, getNode }: any) { const leaf = getNode?.(schema.id); - if (!leaf - || cache.event.get(schema.id)?.clear - || leaf === cache.event.get(schema.id) - ) { + if (!leaf || cache.event.get(schema.id)?.clear || leaf === cache.event.get(schema.id)) { return; } cache.event.get(schema.id)?.dispose.forEach((disposeFn: any) => disposeFn && disposeFn()); @@ -114,21 +112,27 @@ function initRerenderEvent({ if (!container.autoRepaintNode) { return; } - __debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onPropsChange make rerender`); + __debug( + `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onPropsChange make rerender`, + ); debounceRerender(); }), leaf?.onChildrenChange?.(() => { if (!container.autoRepaintNode) { return; } - __debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onChildrenChange make rerender`); + __debug( + `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onChildrenChange make rerender`, + ); debounceRerender(); }) as Function, leaf?.onVisibleChange?.(() => { if (!container.autoRepaintNode) { return; } - __debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onVisibleChange make rerender`); + __debug( + `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onVisibleChange make rerender`, + ); debounceRerender(); }), ], @@ -148,12 +152,10 @@ function clearRerenderEvent(id: string): void { } // 给每个组件包裹一个 HOC Leaf,支持组件内部属性变化,自响应渲染 -export function leafWrapper(Comp: types.IBaseRenderComponent, { - schema, - baseRenderer, - componentInfo, - scope, -}: IComponentHocInfo) { +export function leafWrapper( + Comp: types.IBaseRenderComponent, + { schema, baseRenderer, componentInfo, scope }: IComponentHocInfo, +) { const { __debug, __getComponentProps: getProps, @@ -171,13 +173,18 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { const runtime = adapter.getRuntime(); const { forwardRef, createElement } = runtime; const Component = runtime.Component as types.IGeneralConstructor< - IComponentHocProps, IComponentHocState + IComponentHocProps, + IComponentHocState >; const componentCacheId = schema.id; - if (!cache || (curDocumentId && curDocumentId !== cache.documentId) || (curDevice && curDevice !== cache.device)) { - cache?.event.forEach(event => { + if ( + !cache || + (curDocumentId && curDocumentId !== cache.documentId) || + (curDevice && curDevice !== cache.device) + ) { + cache?.event.forEach((event) => { event.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn()); }); cache = new LeafCache(curDocumentId, curDevice); @@ -194,7 +201,11 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { getNode, }); - if (curDocumentId && cache.component.has(componentCacheId) && (cache.component.get(componentCacheId).Comp === Comp)) { + if ( + curDocumentId && + cache.component.has(componentCacheId) && + cache.component.get(componentCacheId).Comp === Comp + ) { return cache.component.get(componentCacheId).LeafWrapper; } @@ -209,7 +220,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { static displayName = schema.componentName; - disposeFunctions: Array<((() => void) | Function)> = []; + disposeFunctions: Array<(() => void) | Function> = []; __component_tag = 'leafWrapper'; @@ -244,7 +255,9 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { constructor(props: IProps, context: any) { super(props, context); // 监听以下事件,当变化时更新自己 - __debug(`${schema.componentName}[${this.props.componentId}] leaf render in SimulatorRendererView`); + __debug( + `${schema.componentName}[${this.props.componentId}] leaf render in SimulatorRendererView`, + ); clearRerenderEvent(componentCacheId); this.curEventLeaf = this.leaf; @@ -266,7 +279,8 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { } const endTime = Date.now(); const nodeCount = host?.designer?.currentDocument?.getNodeCount?.(); - const componentName = this.recordInfo.node?.componentName || this.leaf?.componentName || 'UnknownComponent'; + const componentName = + this.recordInfo.node?.componentName || this.leaf?.componentName || 'UnknownComponent'; editor?.eventBus.emit(GlobalEvent.Node.Rerender, { componentName, time: endTime - this.recordInfo.startTime, @@ -297,10 +311,8 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { } getDefaultState(nextProps: any) { - const { - hidden = false, - condition = true, - } = nextProps.__inner__ || this.leaf?.export?.(IPublicEnumTransformStage.Render) || {}; + const { hidden = false, condition = true } = + nextProps.__inner__ || this.leaf?.export?.(IPublicEnumTransformStage.Render) || {}; return { nodeChildren: null, childrenInState: false, @@ -348,7 +360,9 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { container?.rerender(); return; } - __debug(`${this.leaf?.componentName}(${this.props.componentId}) need render, make its minimalRenderUnit ${renderUnitInfo.minimalUnitName}(${renderUnitInfo.minimalUnitId})`); + __debug( + `${this.leaf?.componentName}(${this.props.componentId}) need render, make its minimalRenderUnit ${renderUnitInfo.minimalUnitName}(${renderUnitInfo.minimalUnitId})`, + ); ref.makeUnitRender(); } @@ -400,20 +414,14 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { this.curEventLeaf = _leaf; } - const { - visible, - ...resetState - } = this.getDefaultState(nextProps); + const { visible, ...resetState } = this.getDefaultState(nextProps); this.setState(resetState); } /** 监听参数变化 */ initOnPropsChangeEvent(leaf = this.leaf): void { const handlePropsChange = debounce((propChangeInfo: IPublicTypePropChangeOptions) => { - const { - key, - newValue = null, - } = propChangeInfo; + const { key, newValue = null } = propChangeInfo; const node = leaf; if (key === '___condition___') { @@ -439,21 +447,36 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { this.beforeRender(RerenderType.PropsChanged); const { state } = this; const { nodeCacheProps } = state; - const nodeProps = getProps(node?.export?.(IPublicEnumTransformStage.Render) as IPublicTypeNodeSchema, scope, Comp, componentInfo); - if (key && !(key in nodeProps) && (key in this.props)) { + const nodeProps = getProps( + node?.export?.(IPublicEnumTransformStage.Render) as IPublicTypeNodeSchema, + scope, + Comp, + componentInfo, + ); + if (key && !(key in nodeProps) && key in this.props) { // 当 key 在 this.props 中时,且不存在在计算值中,需要用 newValue 覆盖掉 this.props 的取值 nodeCacheProps[key] = newValue; } - __debug(`${leaf?.componentName}[${this.props.componentId}] component trigger onPropsChange!`, nodeProps, nodeCacheProps, key, newValue); - this.setState('children' in nodeProps ? { - nodeChildren: nodeProps.children, - nodeProps, - childrenInState: true, - nodeCacheProps, - } : { + __debug( + `${leaf?.componentName}[${this.props.componentId}] component trigger onPropsChange!`, nodeProps, nodeCacheProps, - }); + key, + newValue, + ); + this.setState( + 'children' in nodeProps + ? { + nodeChildren: nodeProps.children, + nodeProps, + childrenInState: true, + nodeCacheProps, + } + : { + nodeProps, + nodeCacheProps, + }, + ); this.judgeMiniUnitRender(); }); @@ -479,7 +502,9 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { return; } - __debug(`${leaf?.componentName}[${this.props.componentId}] component trigger onVisibleChange(${flag}) event`); + __debug( + `${leaf?.componentName}[${this.props.componentId}] component trigger onVisibleChange(${flag}) event`, + ); this.beforeRender(RerenderType.VisibleChanged); this.setState({ visible: flag, @@ -498,16 +523,20 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { if (!this.autoRepaintNode) { return; } - const { - type, - node, - } = param || {}; + const { type, node } = param || {}; this.beforeRender(`${RerenderType.ChildChanged}-${type}`, node); // TODO: 缓存同级其他元素的 children。 // 缓存二级 children Next 查询筛选组件有问题 // 缓存一级 children Next Tab 组件有问题 - const nextChild = getChildren(leaf?.export?.(IPublicEnumTransformStage.Render) as types.ISchema, scope, Comp); - __debug(`${schema.componentName}[${this.props.componentId}] component trigger onChildrenChange event`, nextChild); + const nextChild = getChildren( + leaf?.export?.(IPublicEnumTransformStage.Render) as types.ISchema, + scope, + Comp, + ); + __debug( + `${schema.componentName}[${this.props.componentId}] component trigger onChildrenChange event`, + nextChild, + ); this.setState({ nodeChildren: nextChild, childrenInState: true, @@ -518,7 +547,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { } componentWillUnmount() { - this.disposeFunctions.forEach(fn => fn()); + this.disposeFunctions.forEach((fn) => fn()); } get hasChildren(): boolean { @@ -556,10 +585,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { return null; } - const { - forwardedRef, - ...rest - } = this.props; + const { forwardedRef, ...rest } = this.props; const compProps = { ...rest, @@ -597,4 +623,4 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, { }); return LeafWrapper; -} \ No newline at end of file +} diff --git a/packages/renderer-core/src/renderer/base.tsx b/packages/renderer-core/src/renderer/base.tsx index d240095604..f07767209f 100644 --- a/packages/renderer-core/src/renderer/base.tsx +++ b/packages/renderer-core/src/renderer/base.tsx @@ -3,8 +3,13 @@ /* eslint-disable react/prop-types */ import classnames from 'classnames'; import { create as createDataSourceEngine } from '@alilc/lowcode-datasource-engine/interpret'; -import { IPublicTypeNodeSchema, IPublicTypeNodeData, IPublicTypeJSONValue, IPublicTypeCompositeValue } from '@alilc/lowcode-types'; -import { checkPropTypes, isI18nData, isJSExpression, isJSFunction } from '@alilc/lowcode-utils'; +import { + IPublicTypeNodeSchema, + IPublicTypeNodeData, + IPublicTypeJSONValue, + IPublicTypeCompositeValue, +} from '@lce/lowcode-types'; +import { checkPropTypes, isI18nData, isJSExpression, isJSFunction } from '@lce/lowcode-utils'; import adapter from '../adapter'; import divFactory from '../components/Div'; import visualDomFactory from '../components/VisualDom'; @@ -28,7 +33,14 @@ import { isVariable, isJSSlot, } from '../utils'; -import { IBaseRendererProps, INodeInfo, IBaseRenderComponent, IBaseRendererContext, IRendererAppHelper, DataSource } from '../types'; +import { + IBaseRendererProps, + INodeInfo, + IBaseRenderComponent, + IBaseRendererContext, + IRendererAppHelper, + DataSource, +} from '../types'; import { compWrapper } from '../hoc'; import { IComponentConstruct, leafWrapper } from '../hoc/leaf'; import logger from '../utils/logger'; @@ -38,7 +50,13 @@ import isUseLoop from '../utils/is-use-loop'; * execute method in schema.lifeCycles with context * @PRIVATE */ -export function executeLifeCycleMethod(context: any, schema: IPublicTypeNodeSchema, method: string, args: any, thisRequiredInJSE: boolean | undefined): any { +export function executeLifeCycleMethod( + context: any, + schema: IPublicTypeNodeSchema, + method: string, + args: any, + thisRequiredInJSE: boolean | undefined, +): any { if (!context || !isSchema(schema) || !method) { return; } @@ -51,7 +69,9 @@ export function executeLifeCycleMethod(context: any, schema: IPublicTypeNodeSche // TODO: cache if (isJSExpression(fn) || isJSFunction(fn)) { - fn = thisRequiredInJSE ? parseThisRequiredExpression(fn, context) : parseExpression(fn, context); + fn = thisRequiredInJSE + ? parseThisRequiredExpression(fn, context) + : parseExpression(fn, context); } if (typeof fn !== 'function') { @@ -159,7 +179,12 @@ export default function baseRendererFactory(): IBaseRenderComponent { super(props, context); this.context = context; this.__parseExpression = (str: string, self: any) => { - return parseExpression({ str, self, thisRequired: props?.thisRequiredInJSE, logScope: props.componentName }); + return parseExpression({ + str, + self, + thisRequired: props?.thisRequiredInJSE, + logScope: props.componentName, + }); }; this.__beforeInit(props); this.__init(props); @@ -168,7 +193,7 @@ export default function baseRendererFactory(): IBaseRenderComponent { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - __beforeInit(_props: IBaseRendererProps) { } + __beforeInit(_props: IBaseRendererProps) {} __init(props: IBaseRendererProps) { this.__compScopes = {}; @@ -178,10 +203,16 @@ export default function baseRendererFactory(): IBaseRenderComponent { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - __afterInit(_props: IBaseRendererProps) { } + __afterInit(_props: IBaseRendererProps) {} static getDerivedStateFromProps(props: IBaseRendererProps, state: any) { - const result = executeLifeCycleMethod(this, props?.__schema, 'getDerivedStateFromProps', [props, state], props.thisRequiredInJSE); + const result = executeLifeCycleMethod( + this, + props?.__schema, + 'getDerivedStateFromProps', + [props, state], + props.thisRequiredInJSE, + ); return result === undefined ? null : result; } @@ -211,23 +242,25 @@ export default function baseRendererFactory(): IBaseRenderComponent { logger.warn(args); } - reloadDataSource = () => new Promise((resolve, reject) => { - this.__debug('reload data source'); - if (!this.__dataHelper) { - return resolve({}); - } - this.__dataHelper.getInitData() - .then((res: any) => { - if (isEmpty(res)) { - this.forceUpdate(); - return resolve({}); - } - this.setState(res, resolve as () => void); - }) - .catch((err: Error) => { - reject(err); - }); - }); + reloadDataSource = () => + new Promise((resolve, reject) => { + this.__debug('reload data source'); + if (!this.__dataHelper) { + return resolve({}); + } + this.__dataHelper + .getInitData() + .then((res: any) => { + if (isEmpty(res)) { + this.forceUpdate(); + return resolve({}); + } + this.setState(res, resolve as () => void); + }) + .catch((err: Error) => { + reject(err); + }); + }); shouldComponentUpdate() { if (this.props.getSchemaChangedSymbol?.() && this.props.__container?.rerender) { @@ -313,46 +346,53 @@ export default function baseRendererFactory(): IBaseRenderComponent { const dataSource = schema.dataSource || defaultDataSource; // requestHandlersMap 存在才走数据源引擎方案 // TODO: 下面if else 抽成独立函数 - const useDataSourceEngine = !!(props.__appHelper?.requestHandlersMap); + const useDataSourceEngine = !!props.__appHelper?.requestHandlersMap; if (useDataSourceEngine) { this.__dataHelper = { updateConfig: (updateDataSource: any) => { const { dataSourceMap, reloadDataSource } = createDataSourceEngine( updateDataSource ?? {}, this, - props.__appHelper.requestHandlersMap ? { requestHandlersMap: props.__appHelper.requestHandlersMap } : undefined, + props.__appHelper.requestHandlersMap + ? { requestHandlersMap: props.__appHelper.requestHandlersMap } + : undefined, ); - this.reloadDataSource = () => new Promise((resolve) => { - this.__debug('reload data source'); - reloadDataSource().then(() => { - resolve({}); + this.reloadDataSource = () => + new Promise((resolve) => { + this.__debug('reload data source'); + reloadDataSource().then(() => { + resolve({}); + }); }); - }); return dataSourceMap; }, }; this.dataSourceMap = this.__dataHelper.updateConfig(dataSource); } else { const appHelper = props.__appHelper; - this.__dataHelper = new DataHelper(this, dataSource, appHelper, (config: any) => this.__parseData(config)); + this.__dataHelper = new DataHelper(this, dataSource, appHelper, (config: any) => + this.__parseData(config), + ); this.dataSourceMap = this.__dataHelper.dataSourceMap; - this.reloadDataSource = () => new Promise((resolve, reject) => { - this.__debug('reload data source'); - if (!this.__dataHelper) { - return resolve({}); - } - this.__dataHelper.getInitData() - .then((res: any) => { - if (isEmpty(res)) { - return resolve({}); - } - this.setState(res, resolve as () => void); - }) - .catch((err: Error) => { - reject(err); - }); - }); + this.reloadDataSource = () => + new Promise((resolve, reject) => { + this.__debug('reload data source'); + if (!this.__dataHelper) { + return resolve({}); + } + this.__dataHelper + .getInitData() + .then((res: any) => { + if (isEmpty(res)) { + return resolve({}); + } + this.setState(res, resolve as () => void); + }) + .catch((err: Error) => { + reject(err); + }); + }); } }; @@ -369,7 +409,9 @@ export default function baseRendererFactory(): IBaseRenderComponent { this.setLocale = (loc: string) => { const setLocaleFn = this.appHelper?.utils?.i18n?.setLocale; if (!setLocaleFn || typeof setLocaleFn !== 'function') { - logger.warn('initI18nAPIs Failed, i18n only works when appHelper.utils.i18n.setLocale() exists'); + logger.warn( + 'initI18nAPIs Failed, i18n only works when appHelper.utils.i18n.setLocale() exists', + ); return undefined; } return setLocaleFn(loc); @@ -444,10 +486,10 @@ export default function baseRendererFactory(): IBaseRenderComponent { if (!Comp) { this.__debug(`${__schema.componentName} is invalid!`); } - const parentNodeInfo = ({ + const parentNodeInfo = { schema: __schema, Comp: this.__getHOCWrappedComponent(Comp, __schema, scope), - } as INodeInfo); + } as INodeInfo; return this.__createVirtualDom(_children, scope, parentNodeInfo); }; @@ -458,7 +500,12 @@ export default function baseRendererFactory(): IBaseRenderComponent { * @param parentInfo 父组件的信息,包含schema和Comp * @param idx 为循环渲染的循环Index */ - __createVirtualDom = (originalSchema: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined, originalScope: any, parentInfo: INodeInfo, idx: string | number = ''): any => { + __createVirtualDom = ( + originalSchema: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined, + originalScope: any, + parentInfo: INodeInfo, + idx: string | number = '', + ): any => { if (originalSchema === null || originalSchema === undefined) { return null; } @@ -494,7 +541,14 @@ export default function baseRendererFactory(): IBaseRenderComponent { if (schema.length === 1) { return this.__createVirtualDom(schema[0], scope, parentInfo); } - return schema.map((item, idy) => this.__createVirtualDom(item, scope, parentInfo, (item as IPublicTypeNodeSchema)?.__ctx?.lceKey ? '' : String(idy))); + return schema.map((item, idy) => + this.__createVirtualDom( + item, + scope, + parentInfo, + (item as IPublicTypeNodeSchema)?.__ctx?.lceKey ? '' : String(idy), + ), + ); } // @ts-expect-error 如果直接转换好了,可以返回 @@ -504,12 +558,17 @@ export default function baseRendererFactory(): IBaseRenderComponent { const _children = getSchemaChildren(schema); if (!schema.componentName) { - logger.error('The componentName in the schema is invalid, please check the schema: ', schema); + logger.error( + 'The componentName in the schema is invalid, please check the schema: ', + schema, + ); return; } // 解析占位组件 if (schema.componentName === 'Fragment' && _children) { - const tarChildren = isJSExpression(_children) ? this.__parseExpression(_children, scope) : _children; + const tarChildren = isJSExpression(_children) + ? this.__parseExpression(_children, scope) + : _children; return this.__createVirtualDom(tarChildren, scope, parentInfo); } @@ -522,19 +581,24 @@ export default function baseRendererFactory(): IBaseRenderComponent { if (!isSchema(schema)) { return null; } - let Comp = components[schema.componentName] || this.props.__container?.components?.[schema.componentName]; + let Comp = + components[schema.componentName] || + this.props.__container?.components?.[schema.componentName]; // 容器类组件的上下文通过props传递,避免context传递带来的嵌套问题 const otherProps: any = isFileSchema(schema) ? { - __schema: schema, - __appHelper: appHelper, - __components: components, - } + __schema: schema, + __appHelper: appHelper, + __components: components, + } : {}; if (!Comp) { - logger.error(`${schema.componentName} component is not found in components list! component list is:`, components || this.props.__container?.components); + logger.error( + `${schema.componentName} component is not found in components list! component list is:`, + components || this.props.__container?.components, + ); return engine.createElement( engine.getNotFoundComponent(), { @@ -565,7 +629,8 @@ export default function baseRendererFactory(): IBaseRenderComponent { ); } } - const condition = schema.condition == null ? true : this.__parseData(schema.condition, scope); + const condition = + schema.condition == null ? true : this.__parseData(schema.condition, scope); // DesignMode 为 design 情况下,需要进入 leaf Hoc,进行相关事件注册 const displayInHook = this.__designModeIsDesign; @@ -608,10 +673,11 @@ export default function baseRendererFactory(): IBaseRenderComponent { otherProps.__tag = Math.random(); } const componentInfo: any = {}; - const props: any = this.__getComponentProps(schema, scope, Comp, { - ...componentInfo, - props: transformArrayToMap(componentInfo.props, 'name'), - }) || {}; + const props: any = + this.__getComponentProps(schema, scope, Comp, { + ...componentInfo, + props: transformArrayToMap(componentInfo.props, 'name'), + }) || {}; this.__componentHOCs.forEach((ComponentConstruct: IComponentConstruct) => { Comp = ComponentConstruct(Comp, { @@ -639,7 +705,9 @@ export default function baseRendererFactory(): IBaseRenderComponent { if (!isFileSchema(schema)) { engine.props?.onCompGetCtx(schema, scope); } - props.key = props.key || `${schema.__ctx.lceKey}_${schema.__ctx.idx || 0}_${idx !== undefined ? idx : ''}`; + props.key = + props.key || + `${schema.__ctx.lceKey}_${schema.__ctx.idx || 0}_${idx !== undefined ? idx : ''}`; } else if ((typeof idx === 'number' || typeof idx === 'string') && !props.key) { // 仅当循环场景走这里 props.key = idx; @@ -657,10 +725,14 @@ export default function baseRendererFactory(): IBaseRenderComponent { // 对于overlay,dialog等组件为了使其在设计模式下显示,外层需要增加一个div容器 if (OVERLAY_LIST.includes(schema.componentName)) { const { ref, ...overlayProps } = otherProps; - return createElement(Div, { - ref, - __designMode: engine.props.designMode, - }, renderComp({ ...props, ...overlayProps })); + return createElement( + Div, + { + ref, + __designMode: engine.props.designMode, + }, + renderComp({ ...props, ...overlayProps }), + ); } // 虚拟dom显示 if (componentInfo?.parentRule) { @@ -710,7 +782,12 @@ export default function baseRendererFactory(): IBaseRenderComponent { return [compWrapper]; } - __getSchemaChildrenVirtualDom = (schema: IPublicTypeNodeSchema | undefined, scope: any, Comp: any, condition = true) => { + __getSchemaChildrenVirtualDom = ( + schema: IPublicTypeNodeSchema | undefined, + scope: any, + Comp: any, + condition = true, + ) => { let children = condition ? getSchemaChildren(schema) : null; // @todo 补完这里的 Element 定义 @承虎 @@ -740,21 +817,33 @@ export default function baseRendererFactory(): IBaseRenderComponent { return null; }; - __getComponentProps = (schema: IPublicTypeNodeSchema | undefined, scope: any, Comp: any, componentInfo?: any) => { + __getComponentProps = ( + schema: IPublicTypeNodeSchema | undefined, + scope: any, + Comp: any, + componentInfo?: any, + ) => { if (!schema) { return {}; } - return this.__parseProps(schema?.props, scope, '', { - schema, - Comp, - componentInfo: { - ...(componentInfo || {}), - props: transformArrayToMap((componentInfo || {}).props, 'name'), - }, - }) || {}; + return ( + this.__parseProps(schema?.props, scope, '', { + schema, + Comp, + componentInfo: { + ...(componentInfo || {}), + props: transformArrayToMap((componentInfo || {}).props, 'name'), + }, + }) || {} + ); }; - __createLoopVirtualDom = (schema: IPublicTypeNodeSchema, scope: any, parentInfo: INodeInfo, idx: number | string) => { + __createLoopVirtualDom = ( + schema: IPublicTypeNodeSchema, + scope: any, + parentInfo: INodeInfo, + idx: number | string, + ) => { if (isFileSchema(schema)) { logger.warn('file type not support Loop'); return null; @@ -809,7 +898,7 @@ export default function baseRendererFactory(): IBaseRenderComponent { const parseReactNode = (data: any, params: any) => { if (isEmpty(params)) { - const virtualDom = this.__createVirtualDom(data, scope, ({ schema, Comp } as INodeInfo)); + const virtualDom = this.__createVirtualDom(data, scope, { schema, Comp } as INodeInfo); return checkProps(virtualDom); } return checkProps((...argValues: any[]) => { @@ -824,7 +913,7 @@ export default function baseRendererFactory(): IBaseRenderComponent { }); } args.__proto__ = scope; - return scope.__createVirtualDom(data, args, ({ schema, Comp } as INodeInfo)); + return scope.__createVirtualDom(data, args, { schema, Comp } as INodeInfo); }); }; @@ -836,7 +925,8 @@ export default function baseRendererFactory(): IBaseRenderComponent { } } - const handleI18nData = (innerProps: any) => innerProps[innerProps.use || (this.getLocale && this.getLocale()) || 'zh-CN']; + const handleI18nData = (innerProps: any) => + innerProps[innerProps.use || (this.getLocale && this.getLocale()) || 'zh-CN']; // @LEGACY 兼容老平台设计态 i18n 数据 if (isI18nData(props)) { @@ -869,12 +959,14 @@ export default function baseRendererFactory(): IBaseRenderComponent { // 兼容通过componentInfo判断的情况 if (isSchema(props)) { - const isReactNodeFunction = !!(propInfo?.type === 'ReactNode' && propInfo?.props?.type === 'function'); + const isReactNodeFunction = !!( + propInfo?.type === 'ReactNode' && propInfo?.props?.type === 'function' + ); const isMixinReactNodeFunction = !!( - propInfo?.type === 'Mixin' - && propInfo?.props?.types?.indexOf('ReactNode') > -1 - && propInfo?.props?.reactNodeProps?.type === 'function' + propInfo?.type === 'Mixin' && + propInfo?.props?.types?.indexOf('ReactNode') > -1 && + propInfo?.props?.reactNodeProps?.type === 'function' ); let params = null; @@ -883,13 +975,14 @@ export default function baseRendererFactory(): IBaseRenderComponent { } else if (isMixinReactNodeFunction) { params = propInfo?.props?.reactNodeProps?.params; } - return parseReactNode( - props, - params, - ); + return parseReactNode(props, params); } if (Array.isArray(props)) { - return checkProps(props.map((item, idx) => this.__parseProps(item, scope, path ? `${path}.${idx}` : `${idx}`, info))); + return checkProps( + props.map((item, idx) => + this.__parseProps(item, scope, path ? `${path}.${idx}` : `${idx}`, info), + ), + ); } if (typeof props === 'function') { return checkProps(props.bind(scope)); @@ -922,7 +1015,9 @@ export default function baseRendererFactory(): IBaseRenderComponent { return this.__instanceMap[filedId]; } - __debug = (...args: any[]) => { logger.debug(...args); }; + __debug = (...args: any[]) => { + logger.debug(...args); + }; __renderContextProvider = (customProps?: object, children?: any) => { return createElement(AppContext.Provider, { @@ -981,7 +1076,11 @@ export default function baseRendererFactory(): IBaseRenderComponent { ...data, ...this.props, ref: this.__getRef, - className: classnames(getFileCssName(__schema?.fileName), className, this.props.className), + className: classnames( + getFileCssName(__schema?.fileName), + className, + this.props.className, + ), __id: __schema?.id, ...otherProps, }, @@ -993,18 +1092,33 @@ export default function baseRendererFactory(): IBaseRenderComponent { __renderContent(children: any) { const { __schema } = this.props; const parsedProps = this.__parseData(__schema.props); - const className = classnames(`lce-${this.__namespace}`, getFileCssName(__schema.fileName), parsedProps.className, this.props.className); - const style = { ...(parsedProps.style || {}), ...(typeof this.props.style === 'object' ? this.props.style : {}) }; + const className = classnames( + `lce-${this.__namespace}`, + getFileCssName(__schema.fileName), + parsedProps.className, + this.props.className, + ); + const style = { + ...(parsedProps.style || {}), + ...(typeof this.props.style === 'object' ? this.props.style : {}), + }; const id = this.props.id || parsedProps.id; - return createElement('div', { - ref: this.__getRef, - className, - id, - style, - }, children); + return createElement( + 'div', + { + ref: this.__getRef, + className, + id, + style, + }, + children, + ); } - __checkSchema = (schema: IPublicTypeNodeSchema | undefined, originalExtraComponents: string | string[] = []) => { + __checkSchema = ( + schema: IPublicTypeNodeSchema | undefined, + originalExtraComponents: string | string[] = [], + ) => { let extraComponents = originalExtraComponents; if (typeof extraComponents === 'string') { extraComponents = [extraComponents]; diff --git a/packages/renderer-core/src/renderer/page.tsx b/packages/renderer-core/src/renderer/page.tsx index 16d55e01be..c79fa019ea 100644 --- a/packages/renderer-core/src/renderer/page.tsx +++ b/packages/renderer-core/src/renderer/page.tsx @@ -1,4 +1,4 @@ -import { getLogger } from '@alilc/lowcode-utils'; +import { getLogger } from '@lce/lowcode-utils'; import baseRendererFactory from './base'; import { IBaseRendererProps, IBaseRenderComponent } from '../types'; diff --git a/packages/renderer-core/src/renderer/renderer.tsx b/packages/renderer-core/src/renderer/renderer.tsx index 300b1cd164..3fdc1e01e4 100644 --- a/packages/renderer-core/src/renderer/renderer.tsx +++ b/packages/renderer-core/src/renderer/renderer.tsx @@ -5,7 +5,7 @@ import { isFileSchema, isEmpty } from '../utils'; import baseRendererFactory from './base'; import divFactory from '../components/Div'; import { IRenderComponent, IRendererProps, IRendererState } from '../types'; -import { IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@alilc/lowcode-types'; +import { IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@lce/lowcode-types'; import logger from '../utils/logger'; export default function rendererFactory(): IRenderComponent { @@ -21,29 +21,44 @@ export default function rendererFactory(): IRenderComponent { class FaultComponent extends PureComponent<IPublicTypeNodeSchema | any> { render() { - logger.error(`%c${this.props.componentName || ''} 组件渲染异常, 异常原因: ${this.props.error?.message || this.props.error || '未知'}`, 'color: #ff0000;'); - return createElement(Div, { - style: { - width: '100%', - height: '50px', - lineHeight: '50px', - textAlign: 'center', - fontSize: '15px', - color: '#ff0000', - border: '2px solid #ff0000', + logger.error( + `%c${this.props.componentName || ''} 组件渲染异常, 异常原因: ${ + this.props.error?.message || this.props.error || '未知' + }`, + 'color: #ff0000;', + ); + return createElement( + Div, + { + style: { + width: '100%', + height: '50px', + lineHeight: '50px', + textAlign: 'center', + fontSize: '15px', + color: '#ff0000', + border: '2px solid #ff0000', + }, }, - }, `${this.props.componentName || ''} 组件渲染异常,请查看控制台日志`); + `${this.props.componentName || ''} 组件渲染异常,请查看控制台日志`, + ); } } - class NotFoundComponent extends PureComponent<{ - componentName: string; - } & IRendererProps> { + class NotFoundComponent extends PureComponent< + { + componentName: string; + } & IRendererProps + > { render() { if (this.props.enableStrictNotFoundMode) { return `${this.props.componentName || ''} Component Not Found`; } - return createElement(Div, this.props, this.props.children || `${this.props.componentName || ''} Component Not Found`); + return createElement( + Div, + this.props, + this.props.children || `${this.props.componentName || ''} Component Not Found`, + ); } } @@ -60,8 +75,8 @@ export default function rendererFactory(): IRenderComponent { designMode: '', suspended: false, schema: {} as IPublicTypeRootSchema, - onCompGetRef: () => { }, - onCompGetCtx: () => { }, + onCompGetRef: () => {}, + onCompGetCtx: () => {}, thisRequiredInJSE: true, }; @@ -142,7 +157,10 @@ export default function rendererFactory(): IRenderComponent { } // 兼容乐高区块模板 if (schema.componentName !== 'Div' && !isFileSchema(schema)) { - logger.error('The root component name needs to be one of Page、Block、Component, please check the schema: ', schema); + logger.error( + 'The root component name needs to be one of Page、Block、Component, please check the schema: ', + schema, + ); return '模型结构异常'; } debug('entry.render'); @@ -157,24 +175,32 @@ export default function rendererFactory(): IRenderComponent { } if (Comp) { - return createElement(AppContext.Provider, { - value: { - appHelper, - components: allComponents, - engine: this, + return createElement( + AppContext.Provider, + { + value: { + appHelper, + components: allComponents, + engine: this, + }, }, - }, createElement(ConfigProvider, { - device: this.props.device, - locale: this.props.locale, - }, createElement(Comp, { - key: schema.__ctx && `${schema.__ctx.lceKey}_${schema.__ctx.idx || '0'}`, - ref: this.__getRef, - __appHelper: appHelper, - __components: allComponents, - __schema: schema, - __designMode: designMode, - ...this.props, - }))); + createElement( + ConfigProvider, + { + device: this.props.device, + locale: this.props.locale, + }, + createElement(Comp, { + key: schema.__ctx && `${schema.__ctx.lceKey}_${schema.__ctx.idx || '0'}`, + ref: this.__getRef, + __appHelper: appHelper, + __components: allComponents, + __schema: schema, + __designMode: designMode, + ...this.props, + }), + ), + ); } return null; } diff --git a/packages/renderer-core/src/types/index.ts b/packages/renderer-core/src/types/index.ts index afbec272ab..50923081a3 100644 --- a/packages/renderer-core/src/types/index.ts +++ b/packages/renderer-core/src/types/index.ts @@ -1,6 +1,11 @@ import type { ComponentLifecycle, CSSProperties } from 'react'; -import { BuiltinSimulatorHost, BuiltinSimulatorRenderer } from '@alilc/lowcode-designer'; -import { RequestHandler, IPublicTypeNodeSchema, IPublicTypeRootSchema, IPublicTypeJSONObject } from '@alilc/lowcode-types'; +import { BuiltinSimulatorHost, BuiltinSimulatorRenderer } from '@lce/lowcode-designer'; +import { + RequestHandler, + IPublicTypeNodeSchema, + IPublicTypeRootSchema, + IPublicTypeJSONObject, +} from '@lce/lowcode-types'; export type ISchema = IPublicTypeNodeSchema | IPublicTypeRootSchema; @@ -13,8 +18,10 @@ interface IGeneralComponent<P = {}, S = {}, SS = any> extends ComponentLifecycle refs: Record<string, any>; context: any; setState<K extends keyof S>( - state: ((prevState: Readonly<S>, props: Readonly<P>) => (Pick<S, K> | S | null)) | (Pick<S, K> | S | null), - callback?: () => void + state: + | ((prevState: Readonly<S>, props: Readonly<P>) => Pick<S, K> | S | null) + | (Pick<S, K> | S | null), + callback?: () => void, ): void; forceUpdate(callback?: () => void): void; render(): any; @@ -23,9 +30,11 @@ interface IGeneralComponent<P = {}, S = {}, SS = any> extends ComponentLifecycle export type IGeneralConstructor< T = { [key: string]: any; - }, S = { + }, + S = { [key: string]: any; - }, D = any + }, + D = any, > = new <TT = T, SS = S, DD = D>(props: TT, context: any) => IGeneralComponent<TT, SS, DD>; /** @@ -60,7 +69,6 @@ export interface ILocationLike { } export type IRendererAppHelper = Partial<{ - /** 全局公共函数 */ utils: Record<string, any>; @@ -83,9 +91,12 @@ export type IRendererAppHelper = Partial<{ addons: Record<string, any>; /** @experimental 内部使用 */ - requestHandlersMap: Record<string, RequestHandler<{ - data: unknown; - }>>; + requestHandlersMap: Record< + string, + RequestHandler<{ + data: unknown; + }> + >; }>; /** @@ -94,7 +105,6 @@ export type IRendererAppHelper = Partial<{ * @see @todo @承虎 */ export interface IRendererProps { - /** 符合低代码搭建协议的数据 */ schema: IPublicTypeRootSchema | IPublicTypeNodeSchema; @@ -281,44 +291,48 @@ export type IBaseRendererInstance = IGeneralComponent< IBaseRendererProps, Record<string, any>, any -> - & { - reloadDataSource(): Promise<any>; - __beforeInit(props: IBaseRendererProps): void; - __init(props: IBaseRendererProps): void; - __afterInit(props: IBaseRendererProps): void; - __executeLifeCycleMethod(method: string, args?: any[]): void; - __bindCustomMethods(props: IBaseRendererProps): void; - __generateCtx(ctx: Record<string, any>): void; - __parseData(data: any, ctx?: any): any; - __initDataSource(props: IBaseRendererProps): void; - __render(): void; - __getRef(ref: any): void; - __getSchemaChildrenVirtualDom( - schema: IPublicTypeNodeSchema | undefined, - Comp: any, - nodeChildrenMap?: any - ): any; - __getComponentProps(schema: IPublicTypeNodeSchema | undefined, scope: any, Comp: any, componentInfo?: any): any; - __createDom(): any; - __createVirtualDom(schema: any, self: any, parentInfo: INodeInfo, idx: string | number): any; - __createLoopVirtualDom(schema: any, self: any, parentInfo: INodeInfo, idx: number | string): any; - __parseProps(props: any, self: any, path: string, info: INodeInfo): any; - __initDebug?(): void; - __debug(...args: any[]): void; - __renderContextProvider(customProps?: object, children?: any): any; - __renderContextConsumer(children: any): any; - __renderContent(children: any): any; - __checkSchema(schema: IPublicTypeNodeSchema | undefined, extraComponents?: string | string[]): any; - __renderComp(Comp: any, ctxProps: object): any; - $(filedId: string, instance?: any): any; - }; +> & { + reloadDataSource(): Promise<any>; + __beforeInit(props: IBaseRendererProps): void; + __init(props: IBaseRendererProps): void; + __afterInit(props: IBaseRendererProps): void; + __executeLifeCycleMethod(method: string, args?: any[]): void; + __bindCustomMethods(props: IBaseRendererProps): void; + __generateCtx(ctx: Record<string, any>): void; + __parseData(data: any, ctx?: any): any; + __initDataSource(props: IBaseRendererProps): void; + __render(): void; + __getRef(ref: any): void; + __getSchemaChildrenVirtualDom( + schema: IPublicTypeNodeSchema | undefined, + Comp: any, + nodeChildrenMap?: any, + ): any; + __getComponentProps( + schema: IPublicTypeNodeSchema | undefined, + scope: any, + Comp: any, + componentInfo?: any, + ): any; + __createDom(): any; + __createVirtualDom(schema: any, self: any, parentInfo: INodeInfo, idx: string | number): any; + __createLoopVirtualDom(schema: any, self: any, parentInfo: INodeInfo, idx: number | string): any; + __parseProps(props: any, self: any, path: string, info: INodeInfo): any; + __initDebug?(): void; + __debug(...args: any[]): void; + __renderContextProvider(customProps?: object, children?: any): any; + __renderContextConsumer(children: any): any; + __renderContent(children: any): any; + __checkSchema( + schema: IPublicTypeNodeSchema | undefined, + extraComponents?: string | string[], + ): any; + __renderComp(Comp: any, ctxProps: object): any; + $(filedId: string, instance?: any): any; +}; export interface IBaseRenderComponent { - new( - props: IBaseRendererProps, - context: any - ): IBaseRendererInstance; + new (props: IBaseRendererProps, context: any): IBaseRendererInstance; } export interface IRenderComponent { @@ -326,7 +340,7 @@ export interface IRenderComponent { defaultProps: IRendererProps; findDOMNode: (...args: any) => any; - new(props: IRendererProps, context: any): IGeneralComponent<IRendererProps, IRendererState> & { + new (props: IRendererProps, context: any): IGeneralComponent<IRendererProps, IRendererState> & { [x: string]: any; __getRef: (ref: any) => void; componentDidMount(): Promise<void> | void; diff --git a/packages/renderer-core/src/utils/common.ts b/packages/renderer-core/src/utils/common.ts index 0462d358a7..fa7d208ae4 100644 --- a/packages/renderer-core/src/utils/common.ts +++ b/packages/renderer-core/src/utils/common.ts @@ -1,15 +1,26 @@ /* eslint-disable no-console */ /* eslint-disable no-new-func */ import logger from './logger'; -import { IPublicTypeRootSchema, IPublicTypeNodeSchema, IPublicTypeJSSlot } from '@alilc/lowcode-types'; -import { isI18nData, isJSExpression } from '@alilc/lowcode-utils'; +import { + IPublicTypeRootSchema, + IPublicTypeNodeSchema, + IPublicTypeJSSlot, +} from '@lce/lowcode-types'; +import { isI18nData, isJSExpression } from '@lce/lowcode-utils'; import { isEmpty } from 'lodash'; import IntlMessageFormat from 'intl-messageformat'; import pkg from '../../package.json'; (window as any).sdkVersion = pkg.version; -export { pick, isEqualWith as deepEqual, cloneDeep as clone, isEmpty, throttle, debounce } from 'lodash'; +export { + pick, + isEqualWith as deepEqual, + cloneDeep as clone, + isEmpty, + throttle, + debounce, +} from 'lodash'; const EXPRESSION_TYPE = { JSEXPRESSION: 'JSExpression', @@ -43,7 +54,7 @@ export function isSchema(schema: any): schema is IPublicTypeNodeSchema { if (isJSExpression(props)) { return true; } - return (typeof schema.props === 'object' && !Array.isArray(props)); + return typeof schema.props === 'object' && !Array.isArray(props); }; return !!(schema.componentName && isValidProps(schema.props)); } @@ -82,7 +93,7 @@ export function getFileCssName(fileName: string) { return; } const name = fileName.replace(/([A-Z])/g, '-$1').toLowerCase(); - return (`lce-${name}`) + return `lce-${name}` .split('-') .filter((p) => !!p) .join('-'); @@ -134,7 +145,12 @@ export function getValue(obj: any, path: string, defaultValue = {}) { * @param {*} locale 国际化标识,例如 zh-CN、en-US * @param {*} messages 国际化语言包 */ -export function getI18n(key: string, values = {}, locale = 'zh-CN', messages: Record<string, any> = {}) { +export function getI18n( + key: string, + values = {}, + locale = 'zh-CN', + messages: Record<string, any> = {}, +) { if (!messages || !messages[locale] || !messages[locale][key]) { return ''; } @@ -150,7 +166,12 @@ export function canAcceptsRef(Comp: any) { const hasSymbol = typeof Symbol === 'function' && Symbol.for; const REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; // eslint-disable-next-line max-len - return Comp?.$$typeof === REACT_FORWARD_REF_TYPE || Comp?.prototype?.isReactComponent || Comp?.prototype?.setState || Comp._forwardRef; + return ( + Comp?.$$typeof === REACT_FORWARD_REF_TYPE || + Comp?.prototype?.isReactComponent || + Comp?.prototype?.setState || + Comp._forwardRef + ); } /** @@ -202,7 +223,10 @@ export function transformStringToFunction(str: string) { */ function parseExpression(options: { - str: any; self: any; thisRequired?: boolean; logScope?: string; + str: any; + self: any; + thisRequired?: boolean; + logScope?: string; }): any; function parseExpression(str: any, self: any, thisRequired?: boolean): any; function parseExpression(a: any, b?: any, c = false) { @@ -244,9 +268,7 @@ function parseExpression(a: any, b?: any, c = false) { } } -export { - parseExpression, -}; +export { parseExpression }; export function parseThisRequiredExpression(str: any, self: any) { return parseExpression(str, self, true); @@ -291,10 +313,13 @@ export function isVariable(obj: any) { * @param self context */ export function parseI18n(i18nInfo: any, self: any) { - return parseExpression({ - type: EXPRESSION_TYPE.JSEXPRESSION, - value: `this.i18n('${i18nInfo.key}')`, - }, self); + return parseExpression( + { + type: EXPRESSION_TYPE.JSEXPRESSION, + value: `this.i18n('${i18nInfo.key}')`, + }, + self, + ); } /** @@ -304,7 +329,12 @@ export function parseI18n(i18nInfo: any, self: any) { * @param context */ export function forEach(targetObj: any, fn: any, context?: any) { - if (!targetObj || Array.isArray(targetObj) || isString(targetObj) || typeof targetObj !== 'object') { + if ( + !targetObj || + Array.isArray(targetObj) || + isString(targetObj) || + typeof targetObj !== 'object' + ) { return; } diff --git a/packages/renderer-core/src/utils/data-helper.ts b/packages/renderer-core/src/utils/data-helper.ts index 41bcb9bfa0..73cc2176bb 100644 --- a/packages/renderer-core/src/utils/data-helper.ts +++ b/packages/renderer-core/src/utils/data-helper.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ /* eslint-disable max-len */ /* eslint-disable object-curly-newline */ -import { isJSFunction } from '@alilc/lowcode-utils'; +import { isJSFunction } from '@lce/lowcode-utils'; import { transformArrayToMap, transformStringToFunction } from './common'; import { jsonp, request, get, post } from './request'; import logger from './logger'; @@ -40,7 +40,10 @@ export function doRequest(type: DataSourceType, options: any) { } } - logger.log(`Engine default dataSource does not support type:[${type}] dataSource request!`, options); + logger.log( + `Engine default dataSource does not support type:[${type}] dataSource request!`, + options, + ); } // TODO: according to protocol, we should implement errorHandler/shouldFetch/willFetch/requestHandler and isSync controll. @@ -200,9 +203,9 @@ export class DataHelper { Array.isArray(options.params) || Array.isArray(params) ? params || options.params : { - ...options.params, - ...params, - }, + ...options.params, + ...params, + }, headers: { ...options.headers, ...headers, @@ -211,22 +214,22 @@ export class DataHelper { }, }, ]) - .then((res: any) => { - try { - callbackFn && callbackFn(res && res[id]); - } catch (e) { - logger.error('load请求回调函数报错', e); - } - return res && res[id]; - }) - .catch((err) => { - try { - callbackFn && callbackFn(null, err); - } catch (e) { - logger.error('load请求回调函数报错', e); - } - return err; - }); + .then((res: any) => { + try { + callbackFn && callbackFn(res && res[id]); + } catch (e) { + logger.error('load请求回调函数报错', e); + } + return res && res[id]; + }) + .catch((err) => { + try { + callbackFn && callbackFn(null, err); + } catch (e) { + logger.error('load请求回调函数报错', e); + } + return err; + }); } asyncDataHandler(asyncDataList: any[]) { @@ -270,11 +273,13 @@ export class DataHelper { doFetch(type, options); }); }), - ).then(() => { - resolve(res); - }).catch((e) => { - reject(e); - }); + ) + .then(() => { + resolve(res); + }) + .catch((e) => { + reject(e); + }); }); } diff --git a/packages/renderer-core/src/utils/is-use-loop.ts b/packages/renderer-core/src/utils/is-use-loop.ts index b6d67a802a..3336affd36 100644 --- a/packages/renderer-core/src/utils/is-use-loop.ts +++ b/packages/renderer-core/src/utils/is-use-loop.ts @@ -1,9 +1,12 @@ -import { IPublicTypeJSExpression } from '@alilc/lowcode-types'; -import { isJSExpression } from '@alilc/lowcode-utils'; +import { IPublicTypeJSExpression } from '@lce/lowcode-types'; +import { isJSExpression } from '@lce/lowcode-utils'; // 1.渲染模式下,loop 是数组,则按照数组长度渲染组件 // 2.设计模式下,loop 需要长度大于 0,按照循环模式渲染,防止无法设计的情况 -export default function isUseLoop(loop: null | any[] | IPublicTypeJSExpression, isDesignMode: boolean): boolean { +export default function isUseLoop( + loop: null | any[] | IPublicTypeJSExpression, + isDesignMode: boolean, +): boolean { if (isJSExpression(loop)) { return true; } diff --git a/packages/renderer-core/src/utils/logger.ts b/packages/renderer-core/src/utils/logger.ts index 5b7a276eb6..1bc6aa70b4 100644 --- a/packages/renderer-core/src/utils/logger.ts +++ b/packages/renderer-core/src/utils/logger.ts @@ -1,3 +1,3 @@ -import { Logger } from '@alilc/lowcode-utils'; +import { Logger } from '@lce/lowcode-utils'; -export default new Logger({ level: 'warn', bizName: 'renderer' }); \ No newline at end of file +export default new Logger({ level: 'warn', bizName: 'renderer' }); diff --git a/packages/shell/package.json b/packages/shell/package.json index c2b62e2270..2183116054 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-shell", + "name": "@lce/lowcode-shell", "version": "1.3.2", "description": "Shell Layer for AliLowCodeEngine", "main": "lib/index.js", @@ -13,12 +13,12 @@ }, "license": "MIT", "dependencies": { - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-editor-skeleton": "1.3.2", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", - "@alilc/lowcode-workspace": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-editor-skeleton": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", + "@lce/lowcode-workspace": "1.3.2", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", diff --git a/packages/shell/src/api/canvas.ts b/packages/shell/src/api/canvas.ts index 48acbc487a..a8c487af52 100644 --- a/packages/shell/src/api/canvas.ts +++ b/packages/shell/src/api/canvas.ts @@ -9,11 +9,8 @@ import { IPublicModelDragon, IPublicModelActiveTracker, IPublicModelClipboard, -} from '@alilc/lowcode-types'; -import { - ScrollTarget as InnerScrollTarget, - IDesigner, -} from '@alilc/lowcode-designer'; +} from '@lce/lowcode-types'; +import { ScrollTarget as InnerScrollTarget, IDesigner } from '@lce/lowcode-designer'; import { editorSymbol, designerSymbol, nodeSymbol } from '../symbols'; import { Dragon as ShellDragon, @@ -67,10 +64,12 @@ export class Canvas implements IPublicApiCanvas { * 创建插入位置,考虑放到 dragon 中 */ createLocation(locationData: IPublicTypeLocationData): IPublicModelDropLocation { - return new DropLocation(this[designerSymbol].createLocation({ - ...locationData, - target: (locationData.target as any)[nodeSymbol], - })); + return new DropLocation( + this[designerSymbol].createLocation({ + ...locationData, + target: (locationData.target as any)[nodeSymbol], + }), + ); } /** diff --git a/packages/shell/src/api/command.ts b/packages/shell/src/api/command.ts index ebab4a9ff5..551ec157dd 100644 --- a/packages/shell/src/api/command.ts +++ b/packages/shell/src/api/command.ts @@ -1,6 +1,12 @@ -import { IPublicApiCommand, IPublicModelPluginContext, IPublicTypeCommand, IPublicTypeCommandHandlerArgs, IPublicTypeListCommand } from '@alilc/lowcode-types'; +import { + IPublicApiCommand, + IPublicModelPluginContext, + IPublicTypeCommand, + IPublicTypeCommandHandlerArgs, + IPublicTypeListCommand, +} from '@lce/lowcode-types'; import { commandSymbol, pluginContextSymbol } from '../symbols'; -import { ICommand, ICommandOptions } from '@alilc/lowcode-editor-core'; +import { ICommand, ICommandOptions } from '@lce/lowcode-editor-core'; const optionsSymbol = Symbol('options'); const commandScopeSet = new Set<string>(); @@ -10,7 +16,11 @@ export class Command implements IPublicApiCommand { [optionsSymbol]?: ICommandOptions; [pluginContextSymbol]?: IPublicModelPluginContext; - constructor(innerCommand: ICommand, pluginContext?: IPublicModelPluginContext, options?: ICommandOptions) { + constructor( + innerCommand: ICommand, + pluginContext?: IPublicModelPluginContext, + options?: ICommandOptions, + ) { this[commandSymbol] = innerCommand; this[optionsSymbol] = options; this[pluginContextSymbol] = pluginContext; diff --git a/packages/shell/src/api/common.tsx b/packages/shell/src/api/common.tsx index 8ce07153ad..e8fa01b716 100644 --- a/packages/shell/src/api/common.tsx +++ b/packages/shell/src/api/common.tsx @@ -1,4 +1,12 @@ -import { editorSymbol, skeletonSymbol, designerCabinSymbol, designerSymbol, settingFieldSymbol, editorCabinSymbol, skeletonCabinSymbol } from '../symbols'; +import { + editorSymbol, + skeletonSymbol, + designerCabinSymbol, + designerSymbol, + settingFieldSymbol, + editorCabinSymbol, + skeletonCabinSymbol, +} from '../symbols'; import { isFormEvent as innerIsFormEvent, compatibleLegaoSchema as innerCompatibleLegaoSchema, @@ -12,7 +20,7 @@ import { isNode as innerIsNode, isSettingField, isSettingField as innerIsSettingField, -} from '@alilc/lowcode-utils'; +} from '@lce/lowcode-utils'; import { IPublicTypeNodeSchema, IPublicEnumTransitionType, @@ -27,7 +35,7 @@ import { IPublicModelDragon, IPublicModelSettingField, IPublicTypeI18nData, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { SettingField as InnerSettingField, LiveEditing as InnerLiveEditing, @@ -42,7 +50,7 @@ import { Node as InnerNode, LowCodePluginManager as InnerLowCodePluginManager, DesignerView as InnerDesignerView, -} from '@alilc/lowcode-designer'; +} from '@lce/lowcode-designer'; import { Skeleton as InnerSkeleton, createSettingFieldView as innerCreateSettingFieldView, @@ -51,7 +59,7 @@ import { Workbench as InnerWorkbench, SettingsPrimaryPane as InnerSettingsPrimaryPane, registerDefaults as InnerRegisterDefaults, -} from '@alilc/lowcode-editor-skeleton'; +} from '@lce/lowcode-editor-skeleton'; import { Editor, Title as InnerTitle, @@ -70,7 +78,7 @@ import { runInAction as innerRunInAction, engineConfig as innerEngineConfig, globalContext, -} from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-editor-core'; import { Dragon as ShellDragon } from '../model'; import { ReactNode } from 'react'; @@ -113,7 +121,7 @@ class DesignerCabin implements IPublicApiCommonDesignerCabin { /** * 是否是 SettingField 实例 - * @deprecated use same function from @alilc/lowcode-utils directly + * @deprecated use same function from @lce/lowcode-utilsirectly */ isSettingField(obj: any): boolean { return isSettingField(obj); @@ -122,7 +130,7 @@ class DesignerCabin implements IPublicApiCommonDesignerCabin { /** * 转换类型枚举对象,包含 init / upgrade / render 等类型 * [参考](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/transform-stage.ts) - * @deprecated use { TransformStage } from '@alilc/lowcode-types' instead + * @deprecated use { TransformStage } from '@lce/lowcode-types' instead */ get TransformStage() { return InnerTransitionStage; @@ -211,7 +219,7 @@ class SkeletonCabin implements IPublicApiCommonSkeletonCabin { /** * @deprecated */ - get PopupPipe(): any { + get PopupPipe(): any { return InnerPopupPipe; } } @@ -233,9 +241,9 @@ class Utils implements IPublicApiCommonUtils { } getNodeSchemaById( - schema: IPublicTypeNodeSchema, - nodeId: string, - ): IPublicTypeNodeSchema | undefined { + schema: IPublicTypeNodeSchema, + nodeId: string, + ): IPublicTypeNodeSchema | undefined { return innerGetNodeSchemaById(schema, nodeId); } @@ -248,18 +256,18 @@ class Utils implements IPublicApiCommonUtils { } executeTransaction( - fn: () => void, - type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT, - ): void { + fn: () => void, + type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT, + ): void { transactionManager.executeTransaction(fn, type); } createIntl(instance: string | object): { - intlNode(id: string, params?: object): ReactNode; - intl(id: string, params?: object): string; - getLocale(): string; - setLocale(locale: string): void; - } { + intlNode(id: string, params?: object): ReactNode; + intl(id: string, params?: object): string; + getLocale(): string; + setLocale(locale: string): void; + } { return innerCreateIntl(instance); } @@ -458,11 +466,11 @@ export class Common implements IPublicApiCommon { /** * 历史原因导致此处设计不合理,慎用。 * this load of crap will be removed in some future versions, don`t use it. - * @deprecated use { TransformStage } from '@alilc/lowcode-types' instead + * @deprecated use { TransformStage } from '@lce/lowcode-types' instead */ get objects(): any { return { TransformStage: InnerTransitionStage, }; } -} \ No newline at end of file +} diff --git a/packages/shell/src/api/commonUI.tsx b/packages/shell/src/api/commonUI.tsx index 69dd104b2a..1dfd999e9c 100644 --- a/packages/shell/src/api/commonUI.tsx +++ b/packages/shell/src/api/commonUI.tsx @@ -1,11 +1,38 @@ -import { IPublicApiCommonUI, IPublicModelPluginContext, IPublicTypeContextMenuAction } from '@alilc/lowcode-types'; import { - HelpTip, - IEditor, - Tip as InnerTip, - Title as InnerTitle, - } from '@alilc/lowcode-editor-core'; -import { Balloon, Breadcrumb, Button, Card, Checkbox, DatePicker, Dialog, Dropdown, Form, Icon, Input, Loading, Message, Overlay, Pagination, Radio, Search, Select, SplitButton, Step, Switch, Tab, Table, Tree, TreeSelect, Upload, Divider } from '@alifd/next'; + IPublicApiCommonUI, + IPublicModelPluginContext, + IPublicTypeContextMenuAction, +} from '@lce/lowcode-types'; +import { HelpTip, IEditor, Tip as InnerTip, Title as InnerTitle } from '@lce/lowcode-editor-core'; +import { + Balloon, + Breadcrumb, + Button, + Card, + Checkbox, + DatePicker, + Dialog, + Dropdown, + Form, + Icon, + Input, + Loading, + Message, + Overlay, + Pagination, + Radio, + Search, + Select, + SplitButton, + Step, + Switch, + Tab, + Table, + Tree, + TreeSelect, + Upload, + Divider, +} from '@alifd/next'; import { ContextMenu } from '../components/context-menu'; import { editorSymbol } from '../symbols'; import { ReactElement } from 'react'; @@ -52,12 +79,16 @@ export class CommonUI implements IPublicApiCommonUI { this[editorSymbol] = editor; const innerContextMenu = (props: any) => { - const pluginContext: IPublicModelPluginContext = editor.get('pluginContext') as IPublicModelPluginContext; + const pluginContext: IPublicModelPluginContext = editor.get( + 'pluginContext', + ) as IPublicModelPluginContext; return <ContextMenu {...props} pluginContext={pluginContext} />; }; innerContextMenu.create = (menus: IPublicTypeContextMenuAction[], event: MouseEvent) => { - const pluginContext: IPublicModelPluginContext = editor.get('pluginContext') as IPublicModelPluginContext; + const pluginContext: IPublicModelPluginContext = editor.get( + 'pluginContext', + ) as IPublicModelPluginContext; return ContextMenu.create(pluginContext, menus, event); }; diff --git a/packages/shell/src/api/config.ts b/packages/shell/src/api/config.ts index d841208780..a7784b6821 100644 --- a/packages/shell/src/api/config.ts +++ b/packages/shell/src/api/config.ts @@ -1,6 +1,10 @@ -import { IPublicModelEngineConfig, IPublicModelPreference, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { + IPublicModelEngineConfig, + IPublicModelPreference, + IPublicTypeDisposable, +} from '@lce/lowcode-types'; import { configSymbol } from '../symbols'; -import { IEngineConfig } from '@alilc/lowcode-editor-core'; +import { IEngineConfig } from '@lce/lowcode-editor-core'; export class Config implements IPublicModelEngineConfig { private readonly [configSymbol]: IEngineConfig; diff --git a/packages/shell/src/api/event.ts b/packages/shell/src/api/event.ts index f2adca98c1..fe62f80c51 100644 --- a/packages/shell/src/api/event.ts +++ b/packages/shell/src/api/event.ts @@ -1,6 +1,6 @@ -import { IEditor, IEventBus } from '@alilc/lowcode-editor-core'; -import { getLogger, isPluginEventName } from '@alilc/lowcode-utils'; -import { IPublicApiEvent, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IEditor, IEventBus } from '@lce/lowcode-editor-core'; +import { getLogger, isPluginEventName } from '@lce/lowcode-utils'; +import { IPublicApiEvent, IPublicTypeDisposable } from '@lce/lowcode-types'; const logger = getLogger({ level: 'warn', bizName: 'shell-event' }); @@ -31,7 +31,9 @@ export class Event implements IPublicApiEvent { if (isPluginEventName(event)) { return this[eventBusSymbol].on(event, listener); } else { - logger.warn(`fail to monitor on event ${event}, event should have a prefix like 'somePrefix:eventName'`); + logger.warn( + `fail to monitor on event ${event}, event should have a prefix like 'somePrefix:eventName'`, + ); return () => {}; } } @@ -45,7 +47,9 @@ export class Event implements IPublicApiEvent { if (isPluginEventName(event)) { return this[eventBusSymbol].prependListener(event, listener); } else { - logger.warn(`fail to prependListener event ${event}, event should have a prefix like 'somePrefix:eventName'`); + logger.warn( + `fail to prependListener event ${event}, event should have a prefix like 'somePrefix:eventName'`, + ); return () => {}; } } diff --git a/packages/shell/src/api/hotkey.ts b/packages/shell/src/api/hotkey.ts index 4e65844ceb..ab734027e1 100644 --- a/packages/shell/src/api/hotkey.ts +++ b/packages/shell/src/api/hotkey.ts @@ -1,6 +1,11 @@ -import { globalContext, Hotkey as InnerHotkey } from '@alilc/lowcode-editor-core'; +import { globalContext, Hotkey as InnerHotkey } from '@lce/lowcode-editor-core'; import { hotkeySymbol } from '../symbols'; -import { IPublicTypeDisposable, IPublicTypeHotkeyCallback, IPublicTypeHotkeyCallbacks, IPublicApiHotkey } from '@alilc/lowcode-types'; +import { + IPublicTypeDisposable, + IPublicTypeHotkeyCallback, + IPublicTypeHotkeyCallbacks, + IPublicApiHotkey, +} from '@lce/lowcode-types'; const innerHotkeySymbol = Symbol('innerHotkey'); @@ -41,13 +46,13 @@ export class Hotkey implements IPublicApiHotkey { * @returns */ bind( - combos: string[] | string, - callback: IPublicTypeHotkeyCallback, - action?: string, - ): IPublicTypeDisposable { + combos: string[] | string, + callback: IPublicTypeHotkeyCallback, + action?: string, + ): IPublicTypeDisposable { this[hotkeySymbol].bind(combos, callback, action); return () => { this[hotkeySymbol].unbind(combos, callback, action); }; } -} \ No newline at end of file +} diff --git a/packages/shell/src/api/logger.ts b/packages/shell/src/api/logger.ts index 54fee7a660..e9aff907b0 100644 --- a/packages/shell/src/api/logger.ts +++ b/packages/shell/src/api/logger.ts @@ -1,6 +1,5 @@ - -import { getLogger } from '@alilc/lowcode-utils'; -import { IPublicApiLogger, ILoggerOptions } from '@alilc/lowcode-types'; +import { getLogger } from '@lce/lowcode-utils'; +import { IPublicApiLogger, ILoggerOptions } from '@lce/lowcode-types'; const innerLoggerSymbol = Symbol('logger'); @@ -45,4 +44,4 @@ export class Logger implements IPublicApiLogger { log(...args: any | any[]): void { this[innerLoggerSymbol].log(...args); } -} \ No newline at end of file +} diff --git a/packages/shell/src/api/material.ts b/packages/shell/src/api/material.ts index 284b88fbbf..5336be7e29 100644 --- a/packages/shell/src/api/material.ts +++ b/packages/shell/src/api/material.ts @@ -1,9 +1,6 @@ -import { globalContext } from '@alilc/lowcode-editor-core'; -import { - IDesigner, - isComponentMeta, -} from '@alilc/lowcode-designer'; -import { IPublicTypeAssetsJson, getLogger } from '@alilc/lowcode-utils'; +import { globalContext } from '@lce/lowcode-editor-core'; +import { IDesigner, isComponentMeta } from '@lce/lowcode-designer'; +import { IPublicTypeAssetsJson, getLogger } from '@lce/lowcode-utils'; import { IPublicTypeComponentAction, IPublicTypeComponentMetadata, @@ -15,8 +12,8 @@ import { IPublicTypeDisposable, IPublicTypeContextMenuAction, IPublicTypeContextMenuItem, -} from '@alilc/lowcode-types'; -import { Workspace as InnerWorkspace } from '@alilc/lowcode-workspace'; +} from '@lce/lowcode-types'; +import { Workspace as InnerWorkspace } from '@lce/lowcode-workspace'; import { editorSymbol, designerSymbol } from '../symbols'; import { ComponentMeta as ShellComponentMeta } from '../model'; import { ComponentType } from 'react'; @@ -176,9 +173,9 @@ export class Material implements IPublicApiMaterial { * @param handle */ modifyBuiltinComponentAction( - actionName: string, - handle: (action: IPublicTypeComponentAction) => void, - ) { + actionName: string, + handle: (action: IPublicTypeComponentAction) => void, + ) { this[designerSymbol].componentActions.modifyBuiltinComponentAction(actionName, handle); } @@ -195,7 +192,7 @@ export class Material implements IPublicApiMaterial { ]; return () => { - dispose.forEach(d => d && d()); + dispose.forEach((d) => d && d()); }; } @@ -207,7 +204,9 @@ export class Material implements IPublicApiMaterial { this[designerSymbol].contextMenuActions.removeMenuAction(name); } - adjustContextMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]) { + adjustContextMenuLayout( + fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[], + ) { this[designerSymbol].contextMenuActions.adjustMenuLayout(fn); } } diff --git a/packages/shell/src/api/plugins.ts b/packages/shell/src/api/plugins.ts index b6f5e63717..5640bfbb19 100644 --- a/packages/shell/src/api/plugins.ts +++ b/packages/shell/src/api/plugins.ts @@ -1,14 +1,12 @@ -import { - ILowCodePluginManager, -} from '@alilc/lowcode-designer'; -import { globalContext } from '@alilc/lowcode-editor-core'; +import { ILowCodePluginManager } from '@lce/lowcode-designer'; +import { globalContext } from '@lce/lowcode-editor-core'; import { IPublicApiPlugins, IPublicModelPluginInstance, IPublicTypePlugin, IPublicTypePluginRegisterOptions, IPublicTypePreferenceValueType, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { PluginInstance as ShellPluginInstance } from '../model'; import { pluginsSymbol } from '../symbols'; @@ -44,8 +42,8 @@ export class Plugins implements IPublicApiPlugins { } getPluginPreference( - pluginName: string, - ): Record<string, IPublicTypePreferenceValueType> | null | undefined { + pluginName: string, + ): Record<string, IPublicTypePreferenceValueType> | null | undefined { return this[pluginsSymbol].getPluginPreference(pluginName); } diff --git a/packages/shell/src/api/project.ts b/packages/shell/src/api/project.ts index f005d0af0c..c4431e9bcf 100644 --- a/packages/shell/src/api/project.ts +++ b/packages/shell/src/api/project.ts @@ -1,8 +1,5 @@ -import { - BuiltinSimulatorHost, - IProject as InnerProject, -} from '@alilc/lowcode-designer'; -import { globalContext } from '@alilc/lowcode-editor-core'; +import { BuiltinSimulatorHost, IProject as InnerProject } from '@lce/lowcode-designer'; +import { globalContext } from '@lce/lowcode-editor-core'; import { IPublicTypeRootSchema, IPublicTypeProjectSchema, @@ -14,11 +11,11 @@ import { IPublicEnumTransformStage, IPublicTypeDisposable, IPublicTypeAppConfig, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { DocumentModel as ShellDocumentModel } from '../model'; import { SimulatorHost } from './simulator-host'; import { editorSymbol, projectSymbol, simulatorHostSymbol, documentSymbol } from '../symbols'; -import { getLogger } from '@alilc/lowcode-utils'; +import { getLogger } from '@lce/lowcode-utils'; const logger = getLogger({ level: 'warn', bizName: 'shell-project' }); @@ -74,7 +71,9 @@ export class Project implements IPublicApiProject { * 获取模拟器的 host */ get simulatorHost(): IPublicApiSimulatorHost | null { - return SimulatorHost.create(this[projectSymbol].simulator as any || this[simulatorHostSymbol]); + return SimulatorHost.create( + (this[projectSymbol].simulator as any) || this[simulatorHostSymbol], + ); } /** @@ -164,9 +163,9 @@ export class Project implements IPublicApiProject { * @param stage */ addPropsTransducer( - transducer: IPublicTypePropsTransducer, - stage: IPublicEnumTransformStage, - ): void { + transducer: IPublicTypePropsTransducer, + stage: IPublicEnumTransformStage, + ): void { this[projectSymbol].designer.addPropsReducer(transducer, stage); } @@ -175,11 +174,10 @@ export class Project implements IPublicApiProject { * @param fn * @returns */ - onRemoveDocument(fn: (data: { id: string}) => void): IPublicTypeDisposable { - return this[editorSymbol].eventBus.on( - 'designer.document.remove', - (data: { id: string }) => fn(data), - ); + onRemoveDocument(fn: (data: { id: string }) => void): IPublicTypeDisposable { + return this[editorSymbol].eventBus.on('designer.document.remove', (data: { id: string }) => + fn(data), + ); } /** diff --git a/packages/shell/src/api/setters.ts b/packages/shell/src/api/setters.ts index b7f2d40ecf..9d6496f192 100644 --- a/packages/shell/src/api/setters.ts +++ b/packages/shell/src/api/setters.ts @@ -1,7 +1,11 @@ -import { IPublicTypeCustomView, IPublicApiSetters, IPublicTypeRegisteredSetter } from '@alilc/lowcode-types'; -import { ISetters, globalContext, untracked } from '@alilc/lowcode-editor-core'; +import { + IPublicTypeCustomView, + IPublicApiSetters, + IPublicTypeRegisteredSetter, +} from '@lce/lowcode-types'; +import { ISetters, globalContext, untracked } from '@lce/lowcode-editor-core'; import { ReactNode } from 'react'; -import { getLogger } from '@alilc/lowcode-utils'; +import { getLogger } from '@lce/lowcode-utils'; const innerSettersSymbol = Symbol('setters'); const settersSymbol = Symbol('setters'); @@ -47,9 +51,12 @@ export class Setters implements IPublicApiSetters { * 获取已注册的所有 settersMap * @returns */ - getSettersMap = (): Map<string, IPublicTypeRegisteredSetter & { - type: string; - }> => { + getSettersMap = (): Map< + string, + IPublicTypeRegisteredSetter & { + type: string; + } + > => { return this[settersSymbol].getSettersMap(); }; diff --git a/packages/shell/src/api/simulator-host.ts b/packages/shell/src/api/simulator-host.ts index 663ba0c668..f56c51d754 100644 --- a/packages/shell/src/api/simulator-host.ts +++ b/packages/shell/src/api/simulator-host.ts @@ -1,8 +1,10 @@ -import { - BuiltinSimulatorHost, -} from '@alilc/lowcode-designer'; +import { BuiltinSimulatorHost } from '@lce/lowcode-designer'; import { simulatorHostSymbol, nodeSymbol } from '../symbols'; -import { IPublicApiSimulatorHost, IPublicModelNode, IPublicModelSimulatorRender } from '@alilc/lowcode-types'; +import { + IPublicApiSimulatorHost, + IPublicModelNode, + IPublicModelSimulatorRender, +} from '@lce/lowcode-types'; import { SimulatorRender } from '../model/simulator-render'; export class SimulatorHost implements IPublicApiSimulatorHost { diff --git a/packages/shell/src/api/skeleton.ts b/packages/shell/src/api/skeleton.ts index c61edf95d0..74b307f342 100644 --- a/packages/shell/src/api/skeleton.ts +++ b/packages/shell/src/api/skeleton.ts @@ -1,11 +1,15 @@ -import { globalContext } from '@alilc/lowcode-editor-core'; -import { - ISkeleton, - SkeletonEvents, -} from '@alilc/lowcode-editor-skeleton'; +import { globalContext } from '@lce/lowcode-editor-core'; +import { ISkeleton, SkeletonEvents } from '@lce/lowcode-editor-skeleton'; import { skeletonSymbol } from '../symbols'; -import { IPublicApiSkeleton, IPublicModelSkeletonItem, IPublicTypeConfigTransducer, IPublicTypeDisposable, IPublicTypeSkeletonConfig, IPublicTypeWidgetConfigArea } from '@alilc/lowcode-types'; -import { getLogger } from '@alilc/lowcode-utils'; +import { + IPublicApiSkeleton, + IPublicModelSkeletonItem, + IPublicTypeConfigTransducer, + IPublicTypeDisposable, + IPublicTypeSkeletonConfig, + IPublicTypeWidgetConfigArea, +} from '@lce/lowcode-types'; +import { getLogger } from '@lce/lowcode-utils'; import { SkeletonItem } from '../model/skeleton-item'; const innerSkeletonSymbol = Symbol('skeleton'); @@ -32,11 +36,7 @@ export class Skeleton implements IPublicApiSkeleton { return this[innerSkeletonSymbol]; } - constructor( - skeleton: ISkeleton, - pluginName: string, - readonly workspaceMode: boolean = false, - ) { + constructor(skeleton: ISkeleton, pluginName: string, readonly workspaceMode: boolean = false) { this[innerSkeletonSymbol] = skeleton; this.pluginName = pluginName; } @@ -47,7 +47,10 @@ export class Skeleton implements IPublicApiSkeleton { * @param extraConfig * @returns */ - add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IPublicModelSkeletonItem | undefined { + add( + config: IPublicTypeSkeletonConfig, + extraConfig?: Record<string, any>, + ): IPublicModelSkeletonItem | undefined { const configWithName = { ...config, pluginName: this.pluginName, @@ -73,7 +76,9 @@ export class Skeleton implements IPublicApiSkeleton { } getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] { - return this[skeletonSymbol][normalizeArea(areaName)].container.items?.map(d => new SkeletonItem(d)); + return this[skeletonSymbol][normalizeArea(areaName)].container.items?.map( + (d) => new SkeletonItem(d), + ); } getPanel(name: string) { @@ -154,7 +159,9 @@ export class Skeleton implements IPublicApiSkeleton { * @param listener * @returns */ - onShowPanel(listener: (paneName: string, panel: IPublicModelSkeletonItem) => void): IPublicTypeDisposable { + onShowPanel( + listener: (paneName: string, panel: IPublicModelSkeletonItem) => void, + ): IPublicTypeDisposable { const { editor } = this[skeletonSymbol]; editor.eventBus.on(SkeletonEvents.PANEL_SHOW, (name: any, panel: any) => { listener(name, new SkeletonItem(panel)); @@ -222,7 +229,19 @@ export class Skeleton implements IPublicApiSkeleton { } } -function normalizeArea(area: IPublicTypeWidgetConfigArea | undefined): 'leftArea' | 'rightArea' | 'topArea' | 'toolbar' | 'mainArea' | 'bottomArea' | 'leftFixedArea' | 'leftFloatArea' | 'stages' | 'subTopArea' { +function normalizeArea( + area: IPublicTypeWidgetConfigArea | undefined, +): + | 'leftArea' + | 'rightArea' + | 'topArea' + | 'toolbar' + | 'mainArea' + | 'bottomArea' + | 'leftFixedArea' + | 'leftFloatArea' + | 'stages' + | 'subTopArea' { switch (area) { case 'leftArea': case 'left': diff --git a/packages/shell/src/api/workspace.ts b/packages/shell/src/api/workspace.ts index f5bc79009f..e3ef34003a 100644 --- a/packages/shell/src/api/workspace.ts +++ b/packages/shell/src/api/workspace.ts @@ -1,5 +1,10 @@ -import { IPublicApiWorkspace, IPublicResourceList, IPublicTypeDisposable, IPublicTypeResourceType } from '@alilc/lowcode-types'; -import { IWorkspace } from '@alilc/lowcode-workspace'; +import { + IPublicApiWorkspace, + IPublicResourceList, + IPublicTypeDisposable, + IPublicTypeResourceType, +} from '@lce/lowcode-types'; +import { IWorkspace } from '@lce/lowcode-workspace'; import { resourceSymbol, workspaceSymbol } from '../symbols'; import { Resource as ShellResource, Window as ShellWindow } from '../model'; import { Plugins } from './plugins'; @@ -38,21 +43,16 @@ export class Workspace implements IPublicApiWorkspace { get resourceTypeList() { return Array.from(this[workspaceSymbol].resourceTypeMap.values()).map((d) => { const { name: resourceName, type: resourceType } = d; - const { - description, - editorViews, - } = d.resourceTypeModel({} as any, {}); + const { description, editorViews } = d.resourceTypeModel({} as any, {}); return { resourceName, resourceType, description, - editorViews: editorViews.map(d => ( - { - viewName: d.viewName, - viewType: d.viewType || 'editor', - } - )), + editorViews: editorViews.map((d) => ({ + viewName: d.viewName, + viewType: d.viewType || 'editor', + })), }; }); } @@ -67,9 +67,18 @@ export class Workspace implements IPublicApiWorkspace { async openEditorWindow(): Promise<void> { if (typeof arguments[0] === 'string') { - await this[workspaceSymbol].openEditorWindow(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); + await this[workspaceSymbol].openEditorWindow( + arguments[0], + arguments[1], + arguments[2], + arguments[3], + arguments[4], + ); } else { - await this[workspaceSymbol].openEditorWindowByResource(arguments[0]?.[resourceSymbol], arguments[1]); + await this[workspaceSymbol].openEditorWindowByResource( + arguments[0]?.[resourceSymbol], + arguments[1], + ); } } diff --git a/packages/shell/src/components/context-menu.tsx b/packages/shell/src/components/context-menu.tsx index 8c7ab446ba..2ac9e735a3 100644 --- a/packages/shell/src/components/context-menu.tsx +++ b/packages/shell/src/components/context-menu.tsx @@ -1,66 +1,79 @@ -import { createContextMenu, parseContextMenuAsReactNode, parseContextMenuProperties } from '@alilc/lowcode-utils'; -import { engineConfig } from '@alilc/lowcode-editor-core'; -import { IPublicModelPluginContext, IPublicTypeContextMenuAction } from '@alilc/lowcode-types'; +import { + createContextMenu, + parseContextMenuAsReactNode, + parseContextMenuProperties, +} from '@lce/lowcode-utils'; +import { engineConfig } from '@lce/lowcode-editor-core'; +import { IPublicModelPluginContext, IPublicTypeContextMenuAction } from '@lce/lowcode-types'; import React, { useCallback } from 'react'; -export function ContextMenu({ children, menus, pluginContext }: { +export function ContextMenu({ + children, + menus, + pluginContext, +}: { menus: IPublicTypeContextMenuAction[]; children: React.ReactElement[] | React.ReactElement; pluginContext: IPublicModelPluginContext; }): React.ReactElement<any, string | React.JSXElementConstructor<any>> { - const handleContextMenu = useCallback((event: React.MouseEvent) => { - event.preventDefault(); - event.stopPropagation(); + const handleContextMenu = useCallback( + (event: React.MouseEvent) => { + event.preventDefault(); + event.stopPropagation(); - let destroyFn: Function | undefined; - const destroy = () => { - destroyFn?.(); - }; - const children: React.ReactNode[] = parseContextMenuAsReactNode(parseContextMenuProperties(menus, { - destroy, - pluginContext, - }), { pluginContext }); + let destroyFn: Function | undefined; + const destroy = () => { + destroyFn?.(); + }; + const children: React.ReactNode[] = parseContextMenuAsReactNode( + parseContextMenuProperties(menus, { + destroy, + pluginContext, + }), + { pluginContext }, + ); - if (!children?.length) { - return; - } + if (!children?.length) { + return; + } - destroyFn = createContextMenu(children, { event }); - }, [menus]); + destroyFn = createContextMenu(children, { event }); + }, + [menus], + ); if (!engineConfig.get('enableContextMenu')) { - return ( - <>{ children }</> - ); + return <>{children}</>; } if (!menus) { - return ( - <>{ children }</> - ); + return <>{children}</>; } // 克隆 children 并添加 onContextMenu 事件处理器 const childrenWithContextMenu = React.Children.map(children, (child) => - React.cloneElement( - child, - { onContextMenu: handleContextMenu }, - )); - - return ( - <>{childrenWithContextMenu}</> + React.cloneElement(child, { onContextMenu: handleContextMenu }), ); + + return <>{childrenWithContextMenu}</>; } -ContextMenu.create = (pluginContext: IPublicModelPluginContext, menus: IPublicTypeContextMenuAction[], event: MouseEvent) => { +ContextMenu.create = ( + pluginContext: IPublicModelPluginContext, + menus: IPublicTypeContextMenuAction[], + event: MouseEvent, +) => { event.preventDefault(); event.stopPropagation(); - const children: React.ReactNode[] = parseContextMenuAsReactNode(parseContextMenuProperties(menus, { - pluginContext, - }), { - pluginContext, - }); + const children: React.ReactNode[] = parseContextMenuAsReactNode( + parseContextMenuProperties(menus, { + pluginContext, + }), + { + pluginContext, + }, + ); if (!children?.length) { return; @@ -69,4 +82,4 @@ ContextMenu.create = (pluginContext: IPublicModelPluginContext, menus: IPublicTy return createContextMenu(children, { event, }); -}; \ No newline at end of file +}; diff --git a/packages/shell/src/model/active-tracker.ts b/packages/shell/src/model/active-tracker.ts index 32d4c04eb9..b8b1bdfad6 100644 --- a/packages/shell/src/model/active-tracker.ts +++ b/packages/shell/src/model/active-tracker.ts @@ -1,5 +1,9 @@ -import { IPublicModelActiveTracker, IPublicModelNode, IPublicTypeActiveTarget } from '@alilc/lowcode-types'; -import { IActiveTracker as InnerActiveTracker, ActiveTarget } from '@alilc/lowcode-designer'; +import { + IPublicModelActiveTracker, + IPublicModelNode, + IPublicTypeActiveTarget, +} from '@lce/lowcode-types'; +import { IActiveTracker as InnerActiveTracker, ActiveTarget } from '@lce/lowcode-designer'; import { Node as ShellNode } from './node'; import { nodeSymbol } from '../symbols'; @@ -47,4 +51,4 @@ export class ActiveTracker implements IPublicModelActiveTracker { track(node: IPublicModelNode) { this[activeTrackerSymbol].track((node as any)[nodeSymbol]); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/clipboard.ts b/packages/shell/src/model/clipboard.ts index 9c4b309450..735023c8cc 100644 --- a/packages/shell/src/model/clipboard.ts +++ b/packages/shell/src/model/clipboard.ts @@ -1,6 +1,6 @@ -import { IPublicModelClipboard } from '@alilc/lowcode-types'; +import { IPublicModelClipboard } from '@lce/lowcode-types'; import { clipboardSymbol } from '../symbols'; -import { IClipboard, clipboard } from '@alilc/lowcode-designer'; +import { IClipboard, clipboard } from '@lce/lowcode-designer'; export class Clipboard implements IPublicModelClipboard { private readonly [clipboardSymbol]: IClipboard; @@ -14,9 +14,9 @@ export class Clipboard implements IPublicModelClipboard { } waitPasteData( - keyboardEvent: KeyboardEvent, - cb: (data: any, clipboardEvent: ClipboardEvent) => void, - ): void { + keyboardEvent: KeyboardEvent, + cb: (data: any, clipboardEvent: ClipboardEvent) => void, + ): void { this[clipboardSymbol].waitPasteData(keyboardEvent, cb); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/component-meta.ts b/packages/shell/src/model/component-meta.ts index 448f0584ee..19c53b5f91 100644 --- a/packages/shell/src/model/component-meta.ts +++ b/packages/shell/src/model/component-meta.ts @@ -1,8 +1,16 @@ +import { IComponentMeta as InnerComponentMeta, INode } from '@lce/lowcode-designer'; import { - IComponentMeta as InnerComponentMeta, - INode, -} from '@alilc/lowcode-designer'; -import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicModelComponentMeta, IPublicTypeI18nData, IPublicTypeIconType, IPublicTypeNpmInfo, IPublicTypeTransformedComponentMetadata, IPublicModelNode, IPublicTypeAdvanced, IPublicTypeFieldConfig } from '@alilc/lowcode-types'; + IPublicTypeNodeData, + IPublicTypeNodeSchema, + IPublicModelComponentMeta, + IPublicTypeI18nData, + IPublicTypeIconType, + IPublicTypeNpmInfo, + IPublicTypeTransformedComponentMetadata, + IPublicModelNode, + IPublicTypeAdvanced, + IPublicTypeFieldConfig, +} from '@lce/lowcode-types'; import { componentMetaSymbol, nodeSymbol } from '../symbols'; import { ReactElement } from 'react'; @@ -130,14 +138,14 @@ export class ComponentMeta implements IPublicModelComponentMeta { * @returns */ checkNestingDown( - my: IPublicModelNode | IPublicTypeNodeData, - target: IPublicTypeNodeSchema | IPublicModelNode | IPublicTypeNodeSchema[], - ) { + my: IPublicModelNode | IPublicTypeNodeData, + target: IPublicTypeNodeSchema | IPublicModelNode | IPublicTypeNodeSchema[], + ) { const curNode = (my as any)?.isNode ? (my as any)[nodeSymbol] : my; return this[componentMetaSymbol].checkNestingDown( - curNode as any, - (target as any)[nodeSymbol] || target, - ); + curNode as any, + (target as any)[nodeSymbol] || target, + ); } refreshMetadata(): void { diff --git a/packages/shell/src/model/condition-group.ts b/packages/shell/src/model/condition-group.ts index e2dd316edc..a15cfce7fa 100644 --- a/packages/shell/src/model/condition-group.ts +++ b/packages/shell/src/model/condition-group.ts @@ -1,5 +1,5 @@ -import type { IExclusiveGroup } from '@alilc/lowcode-designer'; -import { IPublicModelExclusiveGroup, IPublicModelNode } from '@alilc/lowcode-types'; +import type { IExclusiveGroup } from '@lce/lowcode-designer'; +import { IPublicModelExclusiveGroup, IPublicModelNode } from '@lce/lowcode-types'; import { conditionGroupSymbol, nodeSymbol } from '../symbols'; import { Node } from './node'; @@ -23,7 +23,9 @@ export class ConditionGroup implements IPublicModelExclusiveGroup { } setVisible(node: IPublicModelNode) { - this[conditionGroupSymbol]?.setVisible((node as any)[nodeSymbol] ? (node as any)[nodeSymbol] : node); + this[conditionGroupSymbol]?.setVisible( + (node as any)[nodeSymbol] ? (node as any)[nodeSymbol] : node, + ); } static create(conditionGroup: IExclusiveGroup | null) { diff --git a/packages/shell/src/model/detecting.ts b/packages/shell/src/model/detecting.ts index 7ce0fe1e5c..913fc71b14 100644 --- a/packages/shell/src/model/detecting.ts +++ b/packages/shell/src/model/detecting.ts @@ -3,9 +3,9 @@ import { Detecting as InnerDetecting, IDocumentModel as InnerDocumentModel, INode as InnerNode, -} from '@alilc/lowcode-designer'; +} from '@lce/lowcode-designer'; import { documentSymbol, detectingSymbol } from '../symbols'; -import { IPublicModelDetecting, IPublicModelNode, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicModelDetecting, IPublicModelNode, IPublicTypeDisposable } from '@lce/lowcode-types'; export class Detecting implements IPublicModelDetecting { private readonly [documentSymbol]: InnerDocumentModel; @@ -60,4 +60,4 @@ export class Detecting implements IPublicModelDetecting { }; return this[detectingSymbol].onDetectingChange(innerFn); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/document-model.ts b/packages/shell/src/model/document-model.ts index bd0ccaf75e..120dddff30 100644 --- a/packages/shell/src/model/document-model.ts +++ b/packages/shell/src/model/document-model.ts @@ -1,7 +1,4 @@ -import { - IDocumentModel as InnerDocumentModel, - INode as InnerNode, -} from '@alilc/lowcode-designer'; +import { IDocumentModel as InnerDocumentModel, INode as InnerNode } from '@lce/lowcode-designer'; import { IPublicEnumTransformStage, IPublicTypeRootSchema, @@ -22,8 +19,8 @@ import { IPublicTypeDisposable, IPublicModelEditor, IPublicTypeNodeSchema, -} from '@alilc/lowcode-types'; -import { isDragNodeObject } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { isDragNodeObject } from '@lce/lowcode-utils'; import { Node as ShellNode } from './node'; import { Selection as ShellSelection } from './selection'; import { Detecting as ShellDetecting } from './detecting'; @@ -108,10 +105,10 @@ export class DocumentModel implements IPublicModelDocumentModel { set focusNode(node: IPublicModelNode | null) { this._focusNode = node; - this[editorSymbol].eventBus.emit( - 'shell.document.focusNodeChanged', - { document: this, focusNode: node }, - ); + this[editorSymbol].eventBus.emit('shell.document.focusNodeChanged', { + document: this, + focusNode: node, + }); } /** @@ -164,7 +161,9 @@ export class DocumentModel implements IPublicModelDocumentModel { * @param stage * @returns */ - exportSchema(stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Render): IPublicTypeRootSchema | undefined { + exportSchema( + stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Render, + ): IPublicTypeRootSchema | undefined { return this[documentSymbol].export(stage); } @@ -224,14 +223,14 @@ export class DocumentModel implements IPublicModelDocumentModel { * @returns boolean 是否可以放置 */ checkNesting( - dropTarget: IPublicModelNode, - dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject, - ): boolean { + dropTarget: IPublicModelNode, + dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject, + ): boolean { let innerDragObject = dragObject; if (isDragNodeObject(dragObject)) { innerDragObject.nodes = innerDragObject.nodes?.map( - (node: IPublicModelNode) => ((node as any)[nodeSymbol] || node), - ); + (node: IPublicModelNode) => (node as any)[nodeSymbol] || node, + ); } return this[documentSymbol].checkNesting( ((dropTarget as any)[nodeSymbol] || dropTarget) as any, @@ -252,9 +251,7 @@ export class DocumentModel implements IPublicModelDocumentModel { * 当前 document 新增节点事件,此时节点已经挂载到 document 上 */ onMountNode(fn: (payload: { node: IPublicModelNode }) => void): IPublicTypeDisposable { - return this[documentSymbol].onMountNode(({ - node, - }) => { + return this[documentSymbol].onMountNode(({ node }) => { fn({ node: ShellNode.create(node)! }); }); } @@ -290,7 +287,9 @@ export class DocumentModel implements IPublicModelDocumentModel { * 当前 document 的节点显隐状态变更事件 * @param fn */ - onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): IPublicTypeDisposable { + onChangeNodeVisible( + fn: (node: IPublicModelNode, visible: boolean) => void, + ): IPublicTypeDisposable { return this[documentSymbol].onChangeNodeVisible((node: InnerNode, visible: boolean) => { fn(ShellNode.create(node)!, visible); }); @@ -301,15 +300,17 @@ export class DocumentModel implements IPublicModelDocumentModel { * @param fn */ onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable { - return this[documentSymbol].onChangeNodeChildren((info?: IPublicTypeOnChangeOptions<InnerNode>) => { - if (!info) { - return; - } - fn({ - type: info.type, - node: ShellNode.create(info.node)!, - }); - }); + return this[documentSymbol].onChangeNodeChildren( + (info?: IPublicTypeOnChangeOptions<InnerNode>) => { + if (!info) { + return; + } + fn({ + type: info.type, + node: ShellNode.create(info.node)!, + }); + }, + ); } /** @@ -326,16 +327,10 @@ export class DocumentModel implements IPublicModelDocumentModel { node: ShellNode.create(info.node as any)!, }); }; - this[editorSymbol].on( - GlobalEvent.Node.Prop.InnerChange, - callback, - ); + this[editorSymbol].on(GlobalEvent.Node.Prop.InnerChange, callback); return () => { - this[editorSymbol].off( - GlobalEvent.Node.Prop.InnerChange, - callback, - ); + this[editorSymbol].off(GlobalEvent.Node.Prop.InnerChange, callback); }; } @@ -357,25 +352,19 @@ export class DocumentModel implements IPublicModelDocumentModel { if (!fn) { return () => {}; } - return this[editorSymbol].eventBus.on( - 'shell.document.focusNodeChanged', - (payload) => { - const { document, focusNode } = payload; - fn(document, focusNode); - }, - ); + return this[editorSymbol].eventBus.on('shell.document.focusNodeChanged', (payload) => { + const { document, focusNode } = payload; + fn(document, focusNode); + }); } onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable { if (!fn) { return () => {}; } - return this[editorSymbol].eventBus.on( - 'document.dropLocation.changed', - (payload) => { - const { document } = payload; - fn(document); - }, - ); + return this[editorSymbol].eventBus.on('document.dropLocation.changed', (payload) => { + const { document } = payload; + fn(document); + }); } } diff --git a/packages/shell/src/model/drag-object.ts b/packages/shell/src/model/drag-object.ts index 064680fdee..5caec8a2ad 100644 --- a/packages/shell/src/model/drag-object.ts +++ b/packages/shell/src/model/drag-object.ts @@ -1,5 +1,10 @@ import { dragObjectSymbol } from '../symbols'; -import { IPublicModelDragObject, IPublicModelDragObject as InnerDragObject, IPublicTypeDragNodeDataObject, IPublicTypeNodeSchema } from '@alilc/lowcode-types'; +import { + IPublicModelDragObject, + IPublicModelDragObject as InnerDragObject, + IPublicTypeDragNodeDataObject, + IPublicTypeNodeSchema, +} from '@lce/lowcode-types'; import { Node } from './node'; export class DragObject implements IPublicModelDragObject { @@ -31,4 +36,4 @@ export class DragObject implements IPublicModelDragObject { get data(): IPublicTypeNodeSchema | IPublicTypeNodeSchema[] { return (this[dragObjectSymbol] as IPublicTypeDragNodeDataObject).data; } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/dragon.ts b/packages/shell/src/model/dragon.ts index 7f2492e7ea..2672c7e9f1 100644 --- a/packages/shell/src/model/dragon.ts +++ b/packages/shell/src/model/dragon.ts @@ -1,12 +1,8 @@ -import { - IDragon, - ILocateEvent as InnerLocateEvent, - INode, -} from '@alilc/lowcode-designer'; +import { IDragon, ILocateEvent as InnerLocateEvent, INode } from '@lce/lowcode-designer'; import { dragonSymbol, nodeSymbol } from '../symbols'; import LocateEvent from './locate-event'; import { DragObject } from './drag-object'; -import { globalContext } from '@alilc/lowcode-editor-core'; +import { globalContext } from '@lce/lowcode-editor-core'; import { IPublicModelDragon, IPublicModelLocateEvent, @@ -14,7 +10,7 @@ import { IPublicTypeDragNodeDataObject, IPublicModelNode, IPublicTypeDragObject, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; export const innerDragonSymbol = Symbol('innerDragonSymbol'); @@ -40,10 +36,7 @@ export class Dragon implements IPublicModelDragon { return designer.dragon; } - static create( - dragon: IDragon | null, - workspaceMode: boolean, - ): IPublicModelDragon | null { + static create(dragon: IDragon | null, workspaceMode: boolean): IPublicModelDragon | null { if (!dragon) { return null; } @@ -105,13 +98,21 @@ export class Dragon implements IPublicModelDragon { * @param dragObject 拖拽对象 * @param boostEvent 拖拽初始时事件 */ - boost(dragObject: IPublicTypeDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: IPublicModelNode & { - [nodeSymbol]: INode; - }): void { - return this[dragonSymbol].boost({ - ...dragObject, - nodes: dragObject.nodes.map((node: any) => node[nodeSymbol]), - }, boostEvent, fromRglNode?.[nodeSymbol]); + boost( + dragObject: IPublicTypeDragObject, + boostEvent: MouseEvent | DragEvent, + fromRglNode?: IPublicModelNode & { + [nodeSymbol]: INode; + }, + ): void { + return this[dragonSymbol].boost( + { + ...dragObject, + nodes: dragObject.nodes.map((node: any) => node[nodeSymbol]), + }, + boostEvent, + fromRglNode?.[nodeSymbol], + ); } /** diff --git a/packages/shell/src/model/drop-location.ts b/packages/shell/src/model/drop-location.ts index f38e74a07a..74ed82d7a3 100644 --- a/packages/shell/src/model/drop-location.ts +++ b/packages/shell/src/model/drop-location.ts @@ -1,9 +1,11 @@ -import { - IDropLocation as InnerDropLocation, -} from '@alilc/lowcode-designer'; +import { IDropLocation as InnerDropLocation } from '@lce/lowcode-designer'; import { dropLocationSymbol } from '../symbols'; import { Node as ShellNode } from './node'; -import { IPublicModelDropLocation, IPublicTypeLocationDetail, IPublicModelLocateEvent } from '@alilc/lowcode-types'; +import { + IPublicModelDropLocation, + IPublicTypeLocationDetail, + IPublicModelLocateEvent, +} from '@lce/lowcode-types'; export class DropLocation implements IPublicModelDropLocation { private readonly [dropLocationSymbol]: InnerDropLocation; diff --git a/packages/shell/src/model/editor-view.ts b/packages/shell/src/model/editor-view.ts index 92d1a57726..437f9a37e9 100644 --- a/packages/shell/src/model/editor-view.ts +++ b/packages/shell/src/model/editor-view.ts @@ -1,6 +1,6 @@ import { editorViewSymbol, pluginContextSymbol } from '../symbols'; -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; -import { IViewContext } from '@alilc/lowcode-workspace'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { IViewContext } from '@lce/lowcode-workspace'; export class EditorView { [editorViewSymbol]: IViewContext; diff --git a/packages/shell/src/model/history.ts b/packages/shell/src/model/history.ts index ddc567aeef..b62e45e521 100644 --- a/packages/shell/src/model/history.ts +++ b/packages/shell/src/model/history.ts @@ -1,6 +1,9 @@ -import type { IDocumentModel as InnerDocumentModel, IHistory as InnerHistory } from '@alilc/lowcode-designer'; +import type { + IDocumentModel as InnerDocumentModel, + IHistory as InnerHistory, +} from '@lce/lowcode-designer'; import { historySymbol, documentSymbol } from '../symbols'; -import { IPublicModelHistory, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicModelHistory, IPublicTypeDisposable } from '@lce/lowcode-types'; export class History implements IPublicModelHistory { private readonly [documentSymbol]: InnerDocumentModel; diff --git a/packages/shell/src/model/locate-event.ts b/packages/shell/src/model/locate-event.ts index 20451f9462..9770eb2b13 100644 --- a/packages/shell/src/model/locate-event.ts +++ b/packages/shell/src/model/locate-event.ts @@ -1,7 +1,7 @@ -import { ILocateEvent } from '@alilc/lowcode-designer'; +import { ILocateEvent } from '@lce/lowcode-designer'; import { locateEventSymbol } from '../symbols'; import { DragObject } from './drag-object'; -import { IPublicModelLocateEvent, IPublicModelDragObject } from '@alilc/lowcode-types'; +import { IPublicModelLocateEvent, IPublicModelDragObject } from '@lce/lowcode-types'; export default class LocateEvent implements IPublicModelLocateEvent { private readonly [locateEventSymbol]: ILocateEvent; @@ -48,4 +48,4 @@ export default class LocateEvent implements IPublicModelLocateEvent { get dragObject(): IPublicModelDragObject | null { return DragObject.create(this[locateEventSymbol].dragObject); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/modal-nodes-manager.ts b/packages/shell/src/model/modal-nodes-manager.ts index b1e27596f2..80c9c29f99 100644 --- a/packages/shell/src/model/modal-nodes-manager.ts +++ b/packages/shell/src/model/modal-nodes-manager.ts @@ -1,8 +1,8 @@ import { IModalNodesManager as InnerModalNodesManager, INode as InnerNode, -} from '@alilc/lowcode-designer'; -import { IPublicModelModalNodesManager, IPublicModelNode } from '@alilc/lowcode-types'; +} from '@lce/lowcode-designer'; +import { IPublicModelModalNodesManager, IPublicModelNode } from '@lce/lowcode-types'; import { Node as ShellNode } from './node'; import { nodeSymbol, modalNodesManagerSymbol } from '../symbols'; @@ -70,7 +70,7 @@ export class ModalNodesManager implements IPublicModelModalNodesManager { * 设置指定节点为不可见态 * @param node Node */ - setInvisible(node: IPublicModelNode): void { + setInvisible(node: IPublicModelNode): void { this[modalNodesManagerSymbol].setInvisible((node as any)[nodeSymbol]); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/node-children.ts b/packages/shell/src/model/node-children.ts index b6d52e86fe..39b238e436 100644 --- a/packages/shell/src/model/node-children.ts +++ b/packages/shell/src/model/node-children.ts @@ -1,5 +1,10 @@ -import { INode as InnerNode, INodeChildren } from '@alilc/lowcode-designer'; -import { IPublicTypeNodeData, IPublicEnumTransformStage, IPublicModelNodeChildren, IPublicModelNode } from '@alilc/lowcode-types'; +import { INode as InnerNode, INodeChildren } from '@lce/lowcode-designer'; +import { + IPublicTypeNodeData, + IPublicEnumTransformStage, + IPublicModelNodeChildren, + IPublicModelNode, +} from '@lce/lowcode-types'; import { Node as ShellNode } from './node'; import { nodeSymbol, nodeChildrenSymbol } from '../symbols'; @@ -133,7 +138,7 @@ export class NodeChildren implements IPublicModelNodeChildren { * 类似数组的 reverse */ reverse(): IPublicModelNode[] { - return this[nodeChildrenSymbol].reverse().map(d => { + return this[nodeChildrenSymbol].reverse().map((d) => { return ShellNode.create(d)!; }); } diff --git a/packages/shell/src/model/node.ts b/packages/shell/src/model/node.ts index 29d24232eb..1b7ac9d214 100644 --- a/packages/shell/src/model/node.ts +++ b/packages/shell/src/model/node.ts @@ -1,7 +1,4 @@ -import { - IDocumentModel as InnerDocumentModel, - INode as InnerNode, -} from '@alilc/lowcode-designer'; +import { IDocumentModel as InnerDocumentModel, INode as InnerNode } from '@lce/lowcode-designer'; import { IPublicTypeCompositeValue, IPublicTypeNodeSchema, @@ -18,7 +15,7 @@ import { IPublicTypePropsList, IPublicModelSettingTopEntry, IPublicModelExclusiveGroup, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { Prop as ShellProp } from './prop'; import { Props as ShellProps } from './props'; import { DocumentModel as ShellDocumentModel } from './document-model'; @@ -518,9 +515,9 @@ export class Node implements IPublicModelNode { * @returns */ exportSchema( - stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Render, - options?: any, - ): IPublicTypeNodeSchema { + stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Render, + options?: any, + ): IPublicTypeNodeSchema { return this[nodeSymbol].export(stage, options); } @@ -531,15 +528,15 @@ export class Node implements IPublicModelNode { * @param useMutator */ insertBefore( - node: IPublicModelNode, - ref?: IPublicModelNode | undefined, - useMutator?: boolean, - ): void { + node: IPublicModelNode, + ref?: IPublicModelNode | undefined, + useMutator?: boolean, + ): void { this[nodeSymbol].insertBefore( - (node as any)[nodeSymbol] || node, - (ref as any)?.[nodeSymbol], - useMutator, - ); + (node as any)[nodeSymbol] || node, + (ref as any)?.[nodeSymbol], + useMutator, + ); } /** @@ -549,15 +546,15 @@ export class Node implements IPublicModelNode { * @param useMutator */ insertAfter( - node: IPublicModelNode, - ref?: IPublicModelNode | undefined, - useMutator?: boolean, - ): void { + node: IPublicModelNode, + ref?: IPublicModelNode | undefined, + useMutator?: boolean, + ): void { this[nodeSymbol].insertAfter( - (node as any)[nodeSymbol] || node, - (ref as any)?.[nodeSymbol], - useMutator, - ); + (node as any)[nodeSymbol] || node, + (ref as any)?.[nodeSymbol], + useMutator, + ); } /** @@ -657,14 +654,8 @@ export class Node implements IPublicModelNode { } getRGL() { - const { - isContainerNode, - isEmptyNode, - isRGLContainerNode, - isRGLNode, - isRGL, - rglNode, - } = this[nodeSymbol].getRGL(); + const { isContainerNode, isEmptyNode, isRGLContainerNode, isRGLNode, isRGL, rglNode } = + this[nodeSymbol].getRGL(); return { isContainerNode, diff --git a/packages/shell/src/model/plugin-instance.ts b/packages/shell/src/model/plugin-instance.ts index 156ec7579c..24b199bf5d 100644 --- a/packages/shell/src/model/plugin-instance.ts +++ b/packages/shell/src/model/plugin-instance.ts @@ -1,5 +1,5 @@ -import { ILowCodePluginRuntime } from '@alilc/lowcode-designer'; -import { IPublicModelPluginInstance } from '@alilc/lowcode-types'; +import { ILowCodePluginRuntime } from '@lce/lowcode-designer'; +import { IPublicModelPluginInstance } from '@lce/lowcode-types'; import { pluginInstanceSymbol } from '../symbols'; export class PluginInstance implements IPublicModelPluginInstance { diff --git a/packages/shell/src/model/prop.ts b/packages/shell/src/model/prop.ts index 8d4ca7842e..cec0e31032 100644 --- a/packages/shell/src/model/prop.ts +++ b/packages/shell/src/model/prop.ts @@ -1,5 +1,10 @@ -import { IProp as InnerProp } from '@alilc/lowcode-designer'; -import { IPublicTypeCompositeValue, IPublicEnumTransformStage, IPublicModelProp, IPublicModelNode } from '@alilc/lowcode-types'; +import { IProp as InnerProp } from '@lce/lowcode-designer'; +import { + IPublicTypeCompositeValue, + IPublicEnumTransformStage, + IPublicModelProp, + IPublicModelNode, +} from '@lce/lowcode-types'; import { propSymbol } from '../symbols'; import { Node as ShellNode } from './node'; @@ -91,4 +96,4 @@ export class Prop implements IPublicModelProp { exportSchema(stage: IPublicEnumTransformStage = IPublicEnumTransformStage.Render) { return this[propSymbol].export(stage); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/props.ts b/packages/shell/src/model/props.ts index 86a9a2142b..738af1e1ed 100644 --- a/packages/shell/src/model/props.ts +++ b/packages/shell/src/model/props.ts @@ -1,5 +1,10 @@ -import { IProps as InnerProps, getConvertedExtraKey } from '@alilc/lowcode-designer'; -import { IPublicTypeCompositeValue, IPublicModelProps, IPublicModelNode, IPublicModelProp } from '@alilc/lowcode-types'; +import { IProps as InnerProps, getConvertedExtraKey } from '@lce/lowcode-designer'; +import { + IPublicTypeCompositeValue, + IPublicModelProps, + IPublicModelNode, + IPublicModelProp, +} from '@lce/lowcode-types'; import { propsSymbol } from '../symbols'; import { Node as ShellNode } from './node'; import { Prop as ShellProp } from './prop'; @@ -115,4 +120,4 @@ export class Props implements IPublicModelProps { add(value: IPublicTypeCompositeValue, key?: string | number | undefined): any { return this[propsSymbol].add(value, key); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/resource.ts b/packages/shell/src/model/resource.ts index 29a385b993..f2a904bca5 100644 --- a/packages/shell/src/model/resource.ts +++ b/packages/shell/src/model/resource.ts @@ -1,5 +1,5 @@ -import { IPublicModelResource } from '@alilc/lowcode-types'; -import { IResource } from '@alilc/lowcode-workspace'; +import { IPublicModelResource } from '@lce/lowcode-types'; +import { IResource } from '@lce/lowcode-workspace'; import { resourceSymbol } from '../symbols'; export class Resource implements IPublicModelResource { @@ -52,4 +52,4 @@ export class Resource implements IPublicModelResource { get viewName() { return this[resourceSymbol].viewName; } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/selection.ts b/packages/shell/src/model/selection.ts index 073083a650..15bf9660ad 100644 --- a/packages/shell/src/model/selection.ts +++ b/packages/shell/src/model/selection.ts @@ -2,10 +2,10 @@ import { IDocumentModel as InnerDocumentModel, INode as InnerNode, ISelection, -} from '@alilc/lowcode-designer'; +} from '@lce/lowcode-designer'; import { Node as ShellNode } from './node'; import { selectionSymbol } from '../symbols'; -import { IPublicModelSelection, IPublicModelNode, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicModelSelection, IPublicModelNode, IPublicTypeDisposable } from '@lce/lowcode-types'; export class Selection implements IPublicModelSelection { private readonly [selectionSymbol]: ISelection; diff --git a/packages/shell/src/model/setting-field.ts b/packages/shell/src/model/setting-field.ts index ffc97ccc8f..d63d9bfa8a 100644 --- a/packages/shell/src/model/setting-field.ts +++ b/packages/shell/src/model/setting-field.ts @@ -1,4 +1,4 @@ -import { ISettingField, isSettingField } from '@alilc/lowcode-designer'; +import { ISettingField, isSettingField } from '@lce/lowcode-designer'; import { IPublicTypeCompositeValue, IPublicTypeFieldConfig, @@ -11,12 +11,12 @@ import { IPublicTypeSetValueOptions, IPublicModelSettingField, IPublicTypeDisposable, -} from '@alilc/lowcode-types'; +} from '@lce/lowcode-types'; import { settingFieldSymbol } from '../symbols'; import { Node as ShellNode } from './node'; import { SettingTopEntry, SettingTopEntry as ShellSettingTopEntry } from './setting-top-entry'; import { ComponentMeta as ShellComponentMeta } from './component-meta'; -import { isCustomView } from '@alilc/lowcode-utils'; +import { isCustomView } from '@lce/lowcode-utils'; export class SettingField implements IPublicModelSettingField { private readonly [settingFieldSymbol]: ISettingField; diff --git a/packages/shell/src/model/setting-top-entry.ts b/packages/shell/src/model/setting-top-entry.ts index 8afed43a50..0ab579a079 100644 --- a/packages/shell/src/model/setting-top-entry.ts +++ b/packages/shell/src/model/setting-top-entry.ts @@ -1,7 +1,11 @@ -import { ISettingTopEntry } from '@alilc/lowcode-designer'; +import { ISettingTopEntry } from '@lce/lowcode-designer'; import { settingTopEntrySymbol } from '../symbols'; import { Node as ShellNode } from './node'; -import { IPublicModelSettingTopEntry, IPublicModelNode, IPublicModelSettingField } from '@alilc/lowcode-types'; +import { + IPublicModelSettingTopEntry, + IPublicModelNode, + IPublicModelSettingField, +} from '@lce/lowcode-types'; import { SettingField } from './setting-field'; export class SettingTopEntry implements IPublicModelSettingTopEntry { @@ -59,4 +63,4 @@ export class SettingTopEntry implements IPublicModelSettingTopEntry { clearPropValue(propName: string | number) { this[settingTopEntrySymbol].clearPropValue(propName); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/simulator-render.ts b/packages/shell/src/model/simulator-render.ts index f6ae47996c..8108ddced1 100644 --- a/packages/shell/src/model/simulator-render.ts +++ b/packages/shell/src/model/simulator-render.ts @@ -1,6 +1,6 @@ -import { IPublicModelSimulatorRender } from '@alilc/lowcode-types'; +import { IPublicModelSimulatorRender } from '@lce/lowcode-types'; import { simulatorRenderSymbol } from '../symbols'; -import { BuiltinSimulatorRenderer } from '@alilc/lowcode-designer'; +import { BuiltinSimulatorRenderer } from '@lce/lowcode-designer'; export class SimulatorRender implements IPublicModelSimulatorRender { private readonly [simulatorRenderSymbol]: BuiltinSimulatorRenderer; @@ -20,4 +20,4 @@ export class SimulatorRender implements IPublicModelSimulatorRender { rerender() { return this[simulatorRenderSymbol].rerender(); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/skeleton-item.ts b/packages/shell/src/model/skeleton-item.ts index 7f1224c0d9..feac98f5cc 100644 --- a/packages/shell/src/model/skeleton-item.ts +++ b/packages/shell/src/model/skeleton-item.ts @@ -1,6 +1,6 @@ import { skeletonItemSymbol } from '../symbols'; -import { IPublicModelSkeletonItem } from '@alilc/lowcode-types'; -import { Dock, IWidget, Panel, PanelDock, Stage, Widget } from '@alilc/lowcode-editor-skeleton'; +import { IPublicModelSkeletonItem } from '@lce/lowcode-types'; +import { Dock, IWidget, Panel, PanelDock, Stage, Widget } from '@lce/lowcode-editor-skeleton'; export class SkeletonItem implements IPublicModelSkeletonItem { private [skeletonItemSymbol]: IWidget | Widget | Panel | Stage | Dock | PanelDock; @@ -36,4 +36,4 @@ export class SkeletonItem implements IPublicModelSkeletonItem { toggle() { this[skeletonItemSymbol].toggle(); } -} \ No newline at end of file +} diff --git a/packages/shell/src/model/window.ts b/packages/shell/src/model/window.ts index 1bc84e661c..34fbd86416 100644 --- a/packages/shell/src/model/window.ts +++ b/packages/shell/src/model/window.ts @@ -1,6 +1,10 @@ import { windowSymbol } from '../symbols'; -import { IPublicModelResource, IPublicModelWindow, IPublicTypeDisposable } from '@alilc/lowcode-types'; -import { IEditorWindow } from '@alilc/lowcode-workspace'; +import { + IPublicModelResource, + IPublicModelWindow, + IPublicTypeDisposable, +} from '@lce/lowcode-types'; +import { IEditorWindow } from '@lce/lowcode-workspace'; import { Resource as ShellResource } from './resource'; import { EditorView } from './editor-view'; @@ -55,6 +59,8 @@ export class Window implements IPublicModelWindow { } get editorViews() { - return Array.from(this[windowSymbol].editorViews.values()).map(d => new EditorView(d).toProxy() as any); + return Array.from(this[windowSymbol].editorViews.values()).map( + (d) => new EditorView(d).toProxy() as any, + ); } } diff --git a/packages/types/package.json b/packages/types/package.json index 5651d427d4..86b78941af 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-types", + "name": "@lce/lowcode-types", "version": "1.3.2", "description": "Types for Ali lowCode engine", "files": [ diff --git a/packages/types/src/deprecated/isActionContentObject.ts b/packages/types/src/deprecated/isActionContentObject.ts index 88a8e57d2e..ca5765e8c3 100644 --- a/packages/types/src/deprecated/isActionContentObject.ts +++ b/packages/types/src/deprecated/isActionContentObject.ts @@ -1,8 +1,10 @@ import { IPublicTypeActionContentObject } from '../shell'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ -export function isActionContentObject(obj: any): obj is IPublicTypeActionContentObject { +export function isActionContentObject( + obj: any, +): obj is IPublicTypeActionContentObject { return obj && typeof obj === 'object'; } diff --git a/packages/types/src/deprecated/isCustomView.ts b/packages/types/src/deprecated/isCustomView.ts index 159490e550..c0bc9811d6 100644 --- a/packages/types/src/deprecated/isCustomView.ts +++ b/packages/types/src/deprecated/isCustomView.ts @@ -3,7 +3,7 @@ import { isReactComponent } from './isReactComponent'; import { IPublicTypeCustomView } from '../shell/type/custom-view'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isCustomView(obj: any): obj is IPublicTypeCustomView { return obj && (isValidElement(obj) || isReactComponent(obj)); diff --git a/packages/types/src/deprecated/isDOMText.ts b/packages/types/src/deprecated/isDOMText.ts index 4ddc91320f..756671c4a9 100644 --- a/packages/types/src/deprecated/isDOMText.ts +++ b/packages/types/src/deprecated/isDOMText.ts @@ -1,7 +1,7 @@ import { IPublicTypeDOMText } from '../shell/type/dom-text'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isDOMText(data: any): data is IPublicTypeDOMText { return typeof data === 'string'; diff --git a/packages/types/src/deprecated/isDynamicSetter.ts b/packages/types/src/deprecated/isDynamicSetter.ts index 55532d258d..c3941444ad 100644 --- a/packages/types/src/deprecated/isDynamicSetter.ts +++ b/packages/types/src/deprecated/isDynamicSetter.ts @@ -2,7 +2,7 @@ import { isReactClass } from './isReactClass'; import { IPublicTypeDynamicSetter } from '../shell/type/dynamic-setter'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isDynamicSetter(obj: any): obj is IPublicTypeDynamicSetter { return obj && typeof obj === 'function' && !isReactClass(obj); diff --git a/packages/types/src/deprecated/isI18nData.ts b/packages/types/src/deprecated/isI18nData.ts index 4767ccd373..26f4599e83 100644 --- a/packages/types/src/deprecated/isI18nData.ts +++ b/packages/types/src/deprecated/isI18nData.ts @@ -1,6 +1,5 @@ - /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isI18nData(obj: any): boolean { return obj && obj.type === 'i18n'; diff --git a/packages/types/src/deprecated/isJSBlock.ts b/packages/types/src/deprecated/isJSBlock.ts index 6f92e2fcf1..34b0c817ab 100644 --- a/packages/types/src/deprecated/isJSBlock.ts +++ b/packages/types/src/deprecated/isJSBlock.ts @@ -1,7 +1,7 @@ import { IPublicTypeJSBlock } from '../shell/type/value-type'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isJSBlock(data: any): data is IPublicTypeJSBlock { return data && data.type === 'JSBlock'; diff --git a/packages/types/src/deprecated/isJSExpression.ts b/packages/types/src/deprecated/isJSExpression.ts index f722d55293..c7cd2b3a17 100644 --- a/packages/types/src/deprecated/isJSExpression.ts +++ b/packages/types/src/deprecated/isJSExpression.ts @@ -1,7 +1,7 @@ import { IPublicTypeJSExpression } from '../shell/type/value-type'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isJSExpression(data: any): data is IPublicTypeJSExpression { return data && data.type === 'JSExpression' && data.extType !== 'function'; diff --git a/packages/types/src/deprecated/isJSFunction.ts b/packages/types/src/deprecated/isJSFunction.ts index 40ab4f52dc..82ed76a7a1 100644 --- a/packages/types/src/deprecated/isJSFunction.ts +++ b/packages/types/src/deprecated/isJSFunction.ts @@ -1,7 +1,7 @@ import { IPublicTypeJSFunction } from '../shell/type/value-type'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isJSFunction(x: any): x is IPublicTypeJSFunction { return typeof x === 'object' && x && x.type === 'JSFunction'; diff --git a/packages/types/src/deprecated/isJSSlot.ts b/packages/types/src/deprecated/isJSSlot.ts index 7cba651958..88f0b49903 100644 --- a/packages/types/src/deprecated/isJSSlot.ts +++ b/packages/types/src/deprecated/isJSSlot.ts @@ -1,7 +1,7 @@ import { IPublicTypeJSSlot } from '../shell/type/value-type'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isJSSlot(data: any): data is IPublicTypeJSSlot { return data && data.type === 'JSSlot'; diff --git a/packages/types/src/deprecated/isLowCodeComponentType.ts b/packages/types/src/deprecated/isLowCodeComponentType.ts index c14c85f1eb..df0a1ade55 100644 --- a/packages/types/src/deprecated/isLowCodeComponentType.ts +++ b/packages/types/src/deprecated/isLowCodeComponentType.ts @@ -1,9 +1,14 @@ import { isProCodeComponentType } from './isProCodeComponentType'; -import { IPublicTypeComponentMap, IPublicTypeLowCodeComponent } from '../shell/type/npm'; +import { + IPublicTypeComponentMap, + IPublicTypeLowCodeComponent, +} from '../shell/type/npm'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ -export function isLowCodeComponentType(desc: IPublicTypeComponentMap): desc is IPublicTypeLowCodeComponent { +export function isLowCodeComponentType( + desc: IPublicTypeComponentMap, +): desc is IPublicTypeLowCodeComponent { return !isProCodeComponentType(desc); } diff --git a/packages/types/src/deprecated/isNodeSchema.ts b/packages/types/src/deprecated/isNodeSchema.ts index cab4dc46e1..af64ad313f 100644 --- a/packages/types/src/deprecated/isNodeSchema.ts +++ b/packages/types/src/deprecated/isNodeSchema.ts @@ -1,7 +1,7 @@ import { IPublicTypeNodeSchema } from '../shell'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isNodeSchema(data: any): data is IPublicTypeNodeSchema { return data && data.componentName; diff --git a/packages/types/src/deprecated/isPlainObject.ts b/packages/types/src/deprecated/isPlainObject.ts index 549f497360..4c6ad4e1ef 100644 --- a/packages/types/src/deprecated/isPlainObject.ts +++ b/packages/types/src/deprecated/isPlainObject.ts @@ -1,10 +1,14 @@ /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isPlainObject(value: any): value is Record<string, unknown> { if (typeof value !== 'object') { return false; } const proto = Object.getPrototypeOf(value); - return proto === Object.prototype || proto === null || Object.getPrototypeOf(proto) === null; + return ( + proto === Object.prototype || + proto === null || + Object.getPrototypeOf(proto) === null + ); } diff --git a/packages/types/src/deprecated/isProCodeComponentType.ts b/packages/types/src/deprecated/isProCodeComponentType.ts index 40e8e977f9..95ced8b625 100644 --- a/packages/types/src/deprecated/isProCodeComponentType.ts +++ b/packages/types/src/deprecated/isProCodeComponentType.ts @@ -1,8 +1,13 @@ -import { IPublicTypeComponentMap, IPublicTypeProCodeComponent } from '../shell/type/npm'; +import { + IPublicTypeComponentMap, + IPublicTypeProCodeComponent, +} from '../shell/type/npm'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ -export function isProCodeComponentType(desc: IPublicTypeComponentMap): desc is IPublicTypeProCodeComponent { +export function isProCodeComponentType( + desc: IPublicTypeComponentMap, +): desc is IPublicTypeProCodeComponent { return 'package' in desc; } diff --git a/packages/types/src/deprecated/isProjectSchema.ts b/packages/types/src/deprecated/isProjectSchema.ts index 1622fa8466..5aa63aac5c 100644 --- a/packages/types/src/deprecated/isProjectSchema.ts +++ b/packages/types/src/deprecated/isProjectSchema.ts @@ -1,5 +1,5 @@ /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isProjectSchema(data: any): boolean { return data && data.componentsTree; diff --git a/packages/types/src/deprecated/isReactClass.ts b/packages/types/src/deprecated/isReactClass.ts index 846c522d7b..e8287cdc37 100644 --- a/packages/types/src/deprecated/isReactClass.ts +++ b/packages/types/src/deprecated/isReactClass.ts @@ -1,8 +1,12 @@ import { ComponentClass, Component } from 'react'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isReactClass(obj: any): obj is ComponentClass<any> { - return obj && obj.prototype && (obj.prototype.isReactComponent || obj.prototype instanceof Component); + return ( + obj && + obj.prototype && + (obj.prototype.isReactComponent || obj.prototype instanceof Component) + ); } diff --git a/packages/types/src/deprecated/isReactComponent.ts b/packages/types/src/deprecated/isReactComponent.ts index 1ed04427f3..5677582eb2 100644 --- a/packages/types/src/deprecated/isReactComponent.ts +++ b/packages/types/src/deprecated/isReactComponent.ts @@ -2,7 +2,7 @@ import { ComponentType } from 'react'; import { isReactClass } from './isReactClass'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isReactComponent(obj: any): obj is ComponentType<any> { return obj && (isReactClass(obj) || typeof obj === 'function'); diff --git a/packages/types/src/deprecated/isSetterConfig.ts b/packages/types/src/deprecated/isSetterConfig.ts index bf0d77e115..fb0bf8ccf8 100644 --- a/packages/types/src/deprecated/isSetterConfig.ts +++ b/packages/types/src/deprecated/isSetterConfig.ts @@ -2,8 +2,13 @@ import { IPublicTypeSetterConfig } from '../shell/type/setter-config'; import { isCustomView } from './isCustomView'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isSetterConfig(obj: any): obj is IPublicTypeSetterConfig { - return obj && typeof obj === 'object' && 'componentName' in obj && !isCustomView(obj); + return ( + obj && + typeof obj === 'object' && + 'componentName' in obj && + !isCustomView(obj) + ); } diff --git a/packages/types/src/deprecated/isTitleConfig.ts b/packages/types/src/deprecated/isTitleConfig.ts index 9ee38c9c25..7100a46e88 100644 --- a/packages/types/src/deprecated/isTitleConfig.ts +++ b/packages/types/src/deprecated/isTitleConfig.ts @@ -3,7 +3,7 @@ import { isPlainObject } from './isPlainObject'; import { IPublicTypeTitleConfig } from '../shell/type/title-config'; /** - * @deprecated use same function from '@alilc/lowcode-utils' instead + * @deprecated use same function from '@lce/lowcode-utils' instead */ export function isTitleConfig(obj: any): obj is IPublicTypeTitleConfig { return isPlainObject(obj) && !isI18nData(obj); diff --git a/packages/types/src/shell/api/material.ts b/packages/types/src/shell/api/material.ts index 89b2b39ad1..706adc3343 100644 --- a/packages/types/src/shell/api/material.ts +++ b/packages/types/src/shell/api/material.ts @@ -1,14 +1,23 @@ -import { IPublicTypeAssetsJson, IPublicTypeMetadataTransducer, IPublicTypeComponentAction, IPublicTypeNpmInfo, IPublicTypeDisposable, IPublicTypeContextMenuAction, IPublicTypeContextMenuItem } from '../type'; +import { + IPublicTypeAssetsJson, + IPublicTypeMetadataTransducer, + IPublicTypeComponentAction, + IPublicTypeNpmInfo, + IPublicTypeDisposable, + IPublicTypeContextMenuAction, + IPublicTypeContextMenuItem, +} from '../type'; import { IPublicModelComponentMeta } from '../model'; import { ComponentType } from 'react'; export interface IPublicApiMaterial { - /** * 获取组件 map 结构 * get map of components */ - get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType<any> | object } ; + get componentsMap(): { + [key: string]: IPublicTypeNpmInfo | ComponentType<any> | object; + }; /** * 设置「资产包」结构 @@ -43,7 +52,7 @@ export interface IPublicApiMaterial { registerMetadataTransducer( transducer: IPublicTypeMetadataTransducer, level?: number, - id?: string | undefined + id?: string | undefined, ): void; /** @@ -81,8 +90,8 @@ export interface IPublicApiMaterial { * @param action * @example * ```ts - * import { plugins } from '@alilc/lowcode-engine'; - * import { IPublicModelPluginContext } from '@alilc/lowcode-types'; + * import { plugins } from '@lce/lowcode-engine'; + * import { IPublicModelPluginContext } from '@lce/lowcode-types'; * * const removeCopyAction = (ctx: IPublicModelPluginContext) => { * return { @@ -112,9 +121,9 @@ export interface IPublicApiMaterial { * @param handle */ modifyBuiltinComponentAction( - actionName: string, - handle: (action: IPublicTypeComponentAction) => void, - ): void; + actionName: string, + handle: (action: IPublicTypeComponentAction) => void, + ): void; /** * 监听 assets 变化的事件 @@ -145,5 +154,7 @@ export interface IPublicApiMaterial { * 调整右键菜单项布局 * @param actions */ - adjustContextMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]): void; + adjustContextMenuLayout( + fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[], + ): void; } diff --git a/packages/types/src/shell/api/workspace.ts b/packages/types/src/shell/api/workspace.ts index b6e7d84cb7..52863d98b6 100644 --- a/packages/types/src/shell/api/workspace.ts +++ b/packages/types/src/shell/api/workspace.ts @@ -1,5 +1,12 @@ import { IPublicModelWindow } from '../model'; -import { IPublicApiPlugins, IPublicApiSkeleton, IPublicModelResource, IPublicResourceList, IPublicTypeDisposable, IPublicTypeResourceType } from '@alilc/lowcode-types'; +import { + IPublicApiPlugins, + IPublicApiSkeleton, + IPublicModelResource, + IPublicResourceList, + IPublicTypeDisposable, + IPublicTypeResourceType, +} from '@lce/lowcode-types'; export interface IPublicApiWorkspace< Plugins = IPublicApiPlugins, @@ -7,7 +14,6 @@ export interface IPublicApiWorkspace< ModelWindow = IPublicModelWindow, Resource = IPublicModelResource, > { - /** 是否启用 workspace 模式 */ isActive: boolean; @@ -28,7 +34,9 @@ export interface IPublicApiWorkspace< setResourceList(resourceList: IPublicResourceList): void; /** 资源树列表更新事件 */ - onResourceListChange(fn: (resourceList: IPublicResourceList) => void): IPublicTypeDisposable; + onResourceListChange( + fn: (resourceList: IPublicResourceList) => void, + ): IPublicTypeDisposable; /** 注册资源 */ registerResourceType(resourceTypeModel: IPublicTypeResourceType): void; @@ -37,7 +45,13 @@ export interface IPublicApiWorkspace< * 打开视图窗口 * @deprecated */ - openEditorWindow(resourceName: string, id: string, extra: Object, viewName?: string, sleep?: boolean): Promise<void>; + openEditorWindow( + resourceName: string, + id: string, + extra: Object, + viewName?: string, + sleep?: boolean, + ): Promise<void>; /** 打开视图窗口 */ openEditorWindow(resource: Resource, sleep?: boolean): Promise<void>; @@ -76,4 +90,4 @@ export interface IPublicApiWorkspace< * @since v1.1.7 */ onWindowRendererReady(fn: () => void): IPublicTypeDisposable; -} \ No newline at end of file +} diff --git a/packages/types/src/shell/model/document-model.ts b/packages/types/src/shell/model/document-model.ts index 4c9344eb48..d7fb101c81 100644 --- a/packages/types/src/shell/model/document-model.ts +++ b/packages/types/src/shell/model/document-model.ts @@ -1,8 +1,25 @@ -import { IPublicTypeRootSchema, IPublicTypeDragNodeDataObject, IPublicTypeDragNodeObject, IPublicTypePropChangeOptions, IPublicTypeDisposable } from '../type'; +import { + IPublicTypeRootSchema, + IPublicTypeDragNodeDataObject, + IPublicTypeDragNodeObject, + IPublicTypePropChangeOptions, + IPublicTypeDisposable, +} from '../type'; import { IPublicEnumTransformStage } from '../enum'; import { IPublicApiProject } from '../api'; -import { IPublicModelDropLocation, IPublicModelDetecting, IPublicModelNode, IPublicModelSelection, IPublicModelHistory, IPublicModelModalNodesManager } from './'; -import { IPublicTypeNodeData, IPublicTypeNodeSchema, IPublicTypeOnChangeOptions } from '@alilc/lowcode-types'; +import { + IPublicModelDropLocation, + IPublicModelDetecting, + IPublicModelNode, + IPublicModelSelection, + IPublicModelHistory, + IPublicModelModalNodesManager, +} from './'; +import { + IPublicTypeNodeData, + IPublicTypeNodeSchema, + IPublicTypeOnChangeOptions, +} from '@lce/lowcode-types'; export interface IPublicModelDocumentModel< Selection = IPublicModelSelection, @@ -10,13 +27,12 @@ export interface IPublicModelDocumentModel< Node = IPublicModelNode, DropLocation = IPublicModelDropLocation, ModalNodesManager = IPublicModelModalNodesManager, - Project = IPublicApiProject + Project = IPublicApiProject, > { - /** - * 节点选中区模型实例 - * instance of selection - */ + * 节点选中区模型实例 + * instance of selection + */ selection: Selection; /** @@ -89,7 +105,9 @@ export interface IPublicModelDocumentModel< * @param stage * @returns */ - exportSchema(stage: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined; + exportSchema( + stage: IPublicEnumTransformStage, + ): IPublicTypeRootSchema | undefined; /** * 插入节点 @@ -99,7 +117,7 @@ export interface IPublicModelDocumentModel< parent: Node, thing: Node | IPublicTypeNodeData, at?: number | null | undefined, - copy?: boolean | undefined + copy?: boolean | undefined, ): Node | null; /** @@ -134,7 +152,7 @@ export interface IPublicModelDocumentModel< */ checkNesting( dropTarget: Node, - dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject + dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject, ): boolean; /** @@ -173,26 +191,34 @@ export interface IPublicModelDocumentModel< * set callback for event on visibility changed for certain node * @param fn */ - onChangeNodeVisible(fn: (node: Node, visible: boolean) => void): IPublicTypeDisposable; + onChangeNodeVisible( + fn: (node: Node, visible: boolean) => void, + ): IPublicTypeDisposable; /** * 当前 document 的节点 children 变更事件 * @param fn */ - onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions<Node>) => void): IPublicTypeDisposable; + onChangeNodeChildren( + fn: (info: IPublicTypeOnChangeOptions<Node>) => void, + ): IPublicTypeDisposable; /** * 当前 document 节点属性修改事件 * @param fn */ - onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions<Node>) => void): IPublicTypeDisposable; + onChangeNodeProp( + fn: (info: IPublicTypePropChangeOptions<Node>) => void, + ): IPublicTypeDisposable; /** * import schema event * @param fn * @since v1.0.15 */ - onImportSchema(fn: (schema: IPublicTypeRootSchema) => void): IPublicTypeDisposable; + onImportSchema( + fn: (schema: IPublicTypeRootSchema) => void, + ): IPublicTypeDisposable; /** * 判断是否当前节点处于被探测状态 @@ -232,5 +258,7 @@ export interface IPublicModelDocumentModel< * @param fn * @since v1.1.0 */ - onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable; + onDropLocationChanged( + fn: (doc: IPublicModelDocumentModel) => void, + ): IPublicTypeDisposable; } diff --git a/packages/utils/package.json b/packages/utils/package.json index 60605d81e7..0f774a28ea 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-utils", + "name": "@lce/lowcode-utils", "version": "1.3.2", "description": "Utils for Ali lowCode engine", "files": [ @@ -14,7 +14,7 @@ }, "dependencies": { "@alifd/next": "^1.19.16", - "@alilc/lowcode-types": "1.3.2", + "@lce/lowcode-types": "1.3.2", "lodash": "^4.17.21", "mobx": "^6.3.0", "prop-types": "^15.8.1", diff --git a/packages/utils/src/asset.ts b/packages/utils/src/asset.ts index 3400f965b4..195a92f091 100644 --- a/packages/utils/src/asset.ts +++ b/packages/utils/src/asset.ts @@ -1,12 +1,24 @@ -import { AssetType, AssetLevels, AssetLevel } from '@alilc/lowcode-types'; -import type { AssetItem, Asset, AssetList, AssetBundle, IPublicTypeAssetsJson } from '@alilc/lowcode-types'; +import { AssetType, AssetLevels, AssetLevel } from '@lce/lowcode-types'; +import type { + AssetItem, + Asset, + AssetList, + AssetBundle, + IPublicTypeAssetsJson, +} from '@lce/lowcode-types'; import { isCSSUrl } from './is-css-url'; import { createDefer } from './create-defer'; import { load, evaluate } from './script'; // API 向下兼容 -export { AssetType, AssetLevels, AssetLevel } from '@alilc/lowcode-types'; -export type { AssetItem, Asset, AssetList, AssetBundle, IPublicTypeAssetsJson } from '@alilc/lowcode-types'; +export { AssetType, AssetLevels, AssetLevel } from '@lce/lowcode-types'; +export type { + AssetItem, + Asset, + AssetList, + AssetBundle, + IPublicTypeAssetsJson, +} from '@lce/lowcode-types'; export function isAssetItem(obj: any): obj is AssetItem { return obj && obj.type; @@ -17,9 +29,9 @@ export function isAssetBundle(obj: any): obj is AssetBundle { } export function assetBundle( - assets?: Asset | AssetList | null, - level?: AssetLevel, - ): AssetBundle | null { + assets?: Asset | AssetList | null, + level?: AssetLevel, +): AssetBundle | null { if (!assets) { return null; } @@ -38,7 +50,12 @@ urls: [ "view1.js mobile|pc", "view2.js <device selector>" ] */ -export function assetItem(type: AssetType, content?: string | null, level?: AssetLevel, id?: string): AssetItem | null { +export function assetItem( + type: AssetType, + content?: string | null, + level?: AssetLevel, + id?: string, +): AssetItem | null { if (!content) { return null; } @@ -50,7 +67,10 @@ export function assetItem(type: AssetType, content?: string | null, level?: Asse }; } -export function mergeAssets(assets: IPublicTypeAssetsJson, incrementalAssets: IPublicTypeAssetsJson): IPublicTypeAssetsJson { +export function mergeAssets( + assets: IPublicTypeAssetsJson, + incrementalAssets: IPublicTypeAssetsJson, +): IPublicTypeAssetsJson { if (incrementalAssets.packages) { assets.packages = [...(assets.packages || []), ...incrementalAssets.packages]; } @@ -65,7 +85,11 @@ export function mergeAssets(assets: IPublicTypeAssetsJson, incrementalAssets: IP return assets; } -function mergeAssetsComponentList(assets: IPublicTypeAssetsJson, incrementalAssets: IPublicTypeAssetsJson, listName: keyof IPublicTypeAssetsJson): void { +function mergeAssetsComponentList( + assets: IPublicTypeAssetsJson, + incrementalAssets: IPublicTypeAssetsJson, + listName: keyof IPublicTypeAssetsJson, +): void { if (incrementalAssets[listName]) { if (assets[listName]) { // 根据title进行合并 @@ -131,7 +155,10 @@ export class StylePoint { element.setAttribute('data-id', this.id); } element.appendChild(document.createTextNode(content)); - document.head.insertBefore(element, this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null); + document.head.insertBefore( + element, + this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null, + ); document.head.removeChild(this.placeholder); this.placeholder = element; } @@ -162,7 +189,10 @@ export class StylePoint { if (this.id) { element.setAttribute('data-id', this.id); } - document.head.insertBefore(element, this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null); + document.head.insertBefore( + element, + this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null, + ); document.head.removeChild(this.placeholder); this.placeholder = element; return i.promise(); @@ -175,7 +205,12 @@ function parseAssetList(scripts: any, styles: any, assets: AssetList, level?: As } } -function parseAsset(scripts: any, styles: any, asset: Asset | undefined | null, level?: AssetLevel) { +function parseAsset( + scripts: any, + styles: any, + asset: Asset | undefined | null, + level?: AssetLevel, +) { if (!asset) { return; } @@ -219,7 +254,7 @@ export class AssetLoader { async load(asset: Asset) { const styles: any = {}; const scripts: any = {}; - AssetLevels.forEach(lv => { + AssetLevels.forEach((lv) => { styles[lv] = []; scripts[lv] = []; }); @@ -237,12 +272,23 @@ export class AssetLoader { scripts[AssetLevel.App], ); await Promise.all( - styleQueue.map(({ content, level, type, id }) => this.loadStyle(content, level!, type === AssetType.CSSUrl, id)), + styleQueue.map(({ content, level, type, id }) => + this.loadStyle(content, level!, type === AssetType.CSSUrl, id), + ), + ); + await Promise.all( + scriptQueue.map(({ content, type, scriptType }) => + this.loadScript(content, type === AssetType.JSUrl, scriptType), + ), ); - await Promise.all(scriptQueue.map(({ content, type, scriptType }) => this.loadScript(content, type === AssetType.JSUrl, scriptType))); } - private loadStyle(content: string | undefined | null, level: AssetLevel, isUrl?: boolean, id?: string) { + private loadStyle( + content: string | undefined | null, + level: AssetLevel, + isUrl?: boolean, + id?: string, + ) { if (!content) { return; } diff --git a/packages/utils/src/build-components.ts b/packages/utils/src/build-components.ts index 909248524f..f7321cd007 100644 --- a/packages/utils/src/build-components.ts +++ b/packages/utils/src/build-components.ts @@ -1,5 +1,9 @@ import { ComponentType, forwardRef, createElement, FunctionComponent } from 'react'; -import { IPublicTypeNpmInfo, IPublicTypeComponentSchema, IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { + IPublicTypeNpmInfo, + IPublicTypeComponentSchema, + IPublicTypeProjectSchema, +} from '@lce/lowcode-types'; import { isESModule } from './is-es-module'; import { isReactComponent, acceptsRef, wrapReactClass } from './is-react'; import { isObject } from './is-object'; @@ -92,12 +96,20 @@ function isMixinComponent(components: any) { return false; } - return Object.keys(components).some(componentName => isReactComponent(components[componentName])); + return Object.keys(components).some((componentName) => + isReactComponent(components[componentName]), + ); } -export function buildComponents(libraryMap: LibraryMap, - componentsMap: { [componentName: string]: IPublicTypeNpmInfo | ComponentType<any> | IPublicTypeComponentSchema }, - createComponent: (schema: IPublicTypeProjectSchema<IPublicTypeComponentSchema>) => Component | null) { +export function buildComponents( + libraryMap: LibraryMap, + componentsMap: { + [componentName: string]: IPublicTypeNpmInfo | ComponentType<any> | IPublicTypeComponentSchema; + }, + createComponent: ( + schema: IPublicTypeProjectSchema<IPublicTypeComponentSchema>, + ) => Component | null, +) { const components: any = {}; Object.keys(componentsMap).forEach((componentName) => { let component = componentsMap[componentName]; @@ -150,14 +162,17 @@ interface LibrayMap { interface ProjectUtils { [packageName: string]: any; } -export function getProjectUtils(librayMap: LibrayMap, utilsMetadata: UtilsMetadata[]): ProjectUtils { +export function getProjectUtils( + librayMap: LibrayMap, + utilsMetadata: UtilsMetadata[], +): ProjectUtils { const projectUtils: ProjectUtils = {}; if (utilsMetadata) { - utilsMetadata.forEach(meta => { + utilsMetadata.forEach((meta) => { if (librayMap[meta?.npm?.package]) { const lib = accessLibrary(librayMap[meta?.npm.package]); if (lib?.destructuring) { - Object.keys(lib).forEach(name => { + Object.keys(lib).forEach((name) => { if (name === 'destructuring') return; projectUtils[name] = lib[name]; }); @@ -168,4 +183,4 @@ export function getProjectUtils(librayMap: LibrayMap, utilsMetadata: UtilsMetada }); } return projectUtils; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-prop-types.ts b/packages/utils/src/check-prop-types.ts index dc9ce31ed5..e8fa893a06 100644 --- a/packages/utils/src/check-prop-types.ts +++ b/packages/utils/src/check-prop-types.ts @@ -1,7 +1,7 @@ import * as ReactIs from 'react-is'; import { default as ReactPropTypesSecret } from 'prop-types/lib/ReactPropTypesSecret'; import { default as factoryWithTypeCheckers } from 'prop-types/factoryWithTypeCheckers'; -import { IPublicTypePropType } from '@alilc/lowcode-types'; +import { IPublicTypePropType } from '@lce/lowcode-types'; import { isRequiredPropType } from './check-types/is-required-prop-type'; import { Logger } from './logger'; @@ -27,13 +27,17 @@ export function transformPropTypesRuleToString(rule: IPublicTypePropType | strin case 'oneOf': return `PropTypes.oneOf([${value.map((item: any) => `"${item}"`).join(',')}])`; case 'oneOfType': - return `PropTypes.oneOfType([${value.map((item: any) => transformPropTypesRuleToString(item)).join(', ')}])`; + return `PropTypes.oneOfType([${value + .map((item: any) => transformPropTypesRuleToString(item)) + .join(', ')}])`; case 'arrayOf': case 'objectOf': return `PropTypes.${type}(${transformPropTypesRuleToString(value)})`; case 'shape': case 'exact': - return `PropTypes.${type}({${value.map((item: any) => `${item.name}: ${transformPropTypesRuleToString(item.propType)}`).join(',')}})`; + return `PropTypes.${type}({${value + .map((item: any) => `${item.name}: ${transformPropTypesRuleToString(item.propType)}`) + .join(',')}})`; default: logger.error(`Unknown prop type: ${type}`); } @@ -41,15 +45,28 @@ export function transformPropTypesRuleToString(rule: IPublicTypePropType | strin return 'PropTypes.any'; } -export function checkPropTypes(value: any, name: string, rule: any, componentName: string): boolean { +export function checkPropTypes( + value: any, + name: string, + rule: any, + componentName: string, +): boolean { let ruleFunction = rule; if (typeof rule === 'object') { // eslint-disable-next-line no-new-func - ruleFunction = new Function(`"use strict"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString(rule)}`)(PropTypes2); + ruleFunction = new Function( + `"use strict"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString( + rule, + )}`, + )(PropTypes2); } if (typeof rule === 'string') { // eslint-disable-next-line no-new-func - ruleFunction = new Function(`"use strict"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString(rule)}`)(PropTypes2); + ruleFunction = new Function( + `"use strict"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString( + rule, + )}`, + )(PropTypes2); } if (!ruleFunction || typeof ruleFunction !== 'function') { logger.warn('checkPropTypes should have a function type rule argument'); diff --git a/packages/utils/src/check-types/index.ts b/packages/utils/src/check-types/index.ts index 507259b2c5..06d668d001 100644 --- a/packages/utils/src/check-types/index.ts +++ b/packages/utils/src/check-types/index.ts @@ -1,4 +1,4 @@ -// 此模块存放 @alilc/lowcode-types 中类型相关判断工具 +// 此模块存放 @lce/lowcode-types 中类型相关判断工具 export * from './is-action-content-object'; export * from './is-custom-view'; export * from './is-dom-text'; @@ -25,4 +25,4 @@ export * from './is-lowcode-component-type'; export * from './is-lowcode-project-schema'; export * from './is-component-schema'; export * from './is-basic-prop-type'; -export * from './is-required-prop-type'; \ No newline at end of file +export * from './is-required-prop-type'; diff --git a/packages/utils/src/check-types/is-action-content-object.ts b/packages/utils/src/check-types/is-action-content-object.ts index 8fe31b5bd7..84c4b7b7a1 100644 --- a/packages/utils/src/check-types/is-action-content-object.ts +++ b/packages/utils/src/check-types/is-action-content-object.ts @@ -1,4 +1,4 @@ -import { IPublicTypeActionContentObject } from '@alilc/lowcode-types'; +import { IPublicTypeActionContentObject } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isActionContentObject(obj: any): obj is IPublicTypeActionContentObject { diff --git a/packages/utils/src/check-types/is-basic-prop-type.ts b/packages/utils/src/check-types/is-basic-prop-type.ts index fd3b1b1dcb..05bb47f326 100644 --- a/packages/utils/src/check-types/is-basic-prop-type.ts +++ b/packages/utils/src/check-types/is-basic-prop-type.ts @@ -1,8 +1,8 @@ -import { IPublicTypeBasicType, IPublicTypePropType } from '@alilc/lowcode-types'; +import { IPublicTypeBasicType, IPublicTypePropType } from '@lce/lowcode-types'; export function isBasicPropType(propType: IPublicTypePropType): propType is IPublicTypeBasicType { if (!propType) { return false; } return typeof propType === 'string'; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-component-schema.ts b/packages/utils/src/check-types/is-component-schema.ts index 508d153b93..c172a6ae0e 100644 --- a/packages/utils/src/check-types/is-component-schema.ts +++ b/packages/utils/src/check-types/is-component-schema.ts @@ -1,8 +1,8 @@ -import { IPublicTypeComponentSchema } from "@alilc/lowcode-types"; +import { IPublicTypeComponentSchema } from '@lce/lowcode-types'; export function isComponentSchema(schema: any): schema is IPublicTypeComponentSchema { if (typeof schema === 'object') { return schema.componentName === 'Component'; } - return false + return false; } diff --git a/packages/utils/src/check-types/is-custom-view.ts b/packages/utils/src/check-types/is-custom-view.ts index 4cf921d9c5..7a73965c1f 100644 --- a/packages/utils/src/check-types/is-custom-view.ts +++ b/packages/utils/src/check-types/is-custom-view.ts @@ -1,6 +1,6 @@ import { isValidElement } from 'react'; import { isReactComponent } from '../is-react'; -import { IPublicTypeCustomView } from '@alilc/lowcode-types'; +import { IPublicTypeCustomView } from '@lce/lowcode-types'; export function isCustomView(obj: any): obj is IPublicTypeCustomView { if (!obj) { diff --git a/packages/utils/src/check-types/is-drag-any-object.ts b/packages/utils/src/check-types/is-drag-any-object.ts index 8711b4e333..4a2d64f1f0 100644 --- a/packages/utils/src/check-types/is-drag-any-object.ts +++ b/packages/utils/src/check-types/is-drag-any-object.ts @@ -1,9 +1,11 @@ -import { IPublicEnumDragObjectType } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isDragAnyObject(obj: any): boolean { if (!isObject(obj)) { return false; } - return obj.type !== IPublicEnumDragObjectType.NodeData && obj.type !== IPublicEnumDragObjectType.Node; -} \ No newline at end of file + return ( + obj.type !== IPublicEnumDragObjectType.NodeData && obj.type !== IPublicEnumDragObjectType.Node + ); +} diff --git a/packages/utils/src/check-types/is-drag-node-data-object.ts b/packages/utils/src/check-types/is-drag-node-data-object.ts index aa62f5b1c9..1785e22019 100644 --- a/packages/utils/src/check-types/is-drag-node-data-object.ts +++ b/packages/utils/src/check-types/is-drag-node-data-object.ts @@ -1,4 +1,4 @@ -import { IPublicEnumDragObjectType, IPublicTypeDragNodeDataObject } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType, IPublicTypeDragNodeDataObject } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataObject { @@ -6,4 +6,4 @@ export function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataOb return false; } return obj.type === IPublicEnumDragObjectType.NodeData; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-drag-node-object.ts b/packages/utils/src/check-types/is-drag-node-object.ts index 3a29ec967f..c3c8a6fb03 100644 --- a/packages/utils/src/check-types/is-drag-node-object.ts +++ b/packages/utils/src/check-types/is-drag-node-object.ts @@ -1,9 +1,15 @@ -import { IPublicEnumDragObjectType, IPublicModelNode, IPublicTypeDragNodeObject } from '@alilc/lowcode-types'; +import { + IPublicEnumDragObjectType, + IPublicModelNode, + IPublicTypeDragNodeObject, +} from '@lce/lowcode-types'; import { isObject } from '../is-object'; -export function isDragNodeObject<Node = IPublicModelNode>(obj: any): obj is IPublicTypeDragNodeObject<Node> { +export function isDragNodeObject<Node = IPublicModelNode>( + obj: any, +): obj is IPublicTypeDragNodeObject<Node> { if (!isObject(obj)) { return false; } return obj.type === IPublicEnumDragObjectType.Node; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-dynamic-setter.ts b/packages/utils/src/check-types/is-dynamic-setter.ts index 35f8ff3892..2feb9e5077 100644 --- a/packages/utils/src/check-types/is-dynamic-setter.ts +++ b/packages/utils/src/check-types/is-dynamic-setter.ts @@ -1,6 +1,6 @@ import { isFunction } from '../is-function'; import { isReactClass } from '../is-react'; -import { IPublicTypeDynamicSetter } from '@alilc/lowcode-types'; +import { IPublicTypeDynamicSetter } from '@lce/lowcode-types'; export function isDynamicSetter(obj: any): obj is IPublicTypeDynamicSetter { if (!isFunction(obj)) { diff --git a/packages/utils/src/check-types/is-i18n-data.ts b/packages/utils/src/check-types/is-i18n-data.ts index 793295d240..350055fe57 100644 --- a/packages/utils/src/check-types/is-i18n-data.ts +++ b/packages/utils/src/check-types/is-i18n-data.ts @@ -1,4 +1,4 @@ -import { IPublicTypeI18nData } from '@alilc/lowcode-types'; +import { IPublicTypeI18nData } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isI18nData(obj: any): obj is IPublicTypeI18nData { diff --git a/packages/utils/src/check-types/is-isfunction.ts b/packages/utils/src/check-types/is-isfunction.ts index 64b8676637..ffaa48ae21 100644 --- a/packages/utils/src/check-types/is-isfunction.ts +++ b/packages/utils/src/check-types/is-isfunction.ts @@ -1,4 +1,4 @@ -import { IPublicTypeJSFunction } from '@alilc/lowcode-types'; +import { IPublicTypeJSFunction } from '@lce/lowcode-types'; import { isObject } from '../is-object'; interface InnerJsFunction { diff --git a/packages/utils/src/check-types/is-jsblock.ts b/packages/utils/src/check-types/is-jsblock.ts index 858f5c09cd..4332448621 100644 --- a/packages/utils/src/check-types/is-jsblock.ts +++ b/packages/utils/src/check-types/is-jsblock.ts @@ -1,4 +1,4 @@ -import { IPublicTypeJSBlock } from '@alilc/lowcode-types'; +import { IPublicTypeJSBlock } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isJSBlock(data: any): data is IPublicTypeJSBlock { diff --git a/packages/utils/src/check-types/is-jsexpression.ts b/packages/utils/src/check-types/is-jsexpression.ts index 16b8f4ac2a..676e640f53 100644 --- a/packages/utils/src/check-types/is-jsexpression.ts +++ b/packages/utils/src/check-types/is-jsexpression.ts @@ -1,4 +1,4 @@ -import { IPublicTypeJSExpression } from '@alilc/lowcode-types'; +import { IPublicTypeJSExpression } from '@lce/lowcode-types'; import { isObject } from '../is-object'; /** diff --git a/packages/utils/src/check-types/is-jsslot.ts b/packages/utils/src/check-types/is-jsslot.ts index 1fb1d819d7..0b89aad036 100644 --- a/packages/utils/src/check-types/is-jsslot.ts +++ b/packages/utils/src/check-types/is-jsslot.ts @@ -1,4 +1,4 @@ -import { IPublicTypeJSSlot } from '@alilc/lowcode-types'; +import { IPublicTypeJSSlot } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isJSSlot(data: any): data is IPublicTypeJSSlot { diff --git a/packages/utils/src/check-types/is-location-children-detail.ts b/packages/utils/src/check-types/is-location-children-detail.ts index cc093c4e4a..d3c88fcd6f 100644 --- a/packages/utils/src/check-types/is-location-children-detail.ts +++ b/packages/utils/src/check-types/is-location-children-detail.ts @@ -1,4 +1,7 @@ -import { IPublicTypeLocationChildrenDetail, IPublicTypeLocationDetailType } from '@alilc/lowcode-types'; +import { + IPublicTypeLocationChildrenDetail, + IPublicTypeLocationDetailType, +} from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isLocationChildrenDetail(obj: any): obj is IPublicTypeLocationChildrenDetail { @@ -6,4 +9,4 @@ export function isLocationChildrenDetail(obj: any): obj is IPublicTypeLocationCh return false; } return obj.type === IPublicTypeLocationDetailType.Children; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-location-data.ts b/packages/utils/src/check-types/is-location-data.ts index dabd493fa8..552d758e29 100644 --- a/packages/utils/src/check-types/is-location-data.ts +++ b/packages/utils/src/check-types/is-location-data.ts @@ -1,4 +1,4 @@ -import { IPublicTypeLocationData } from '@alilc/lowcode-types'; +import { IPublicTypeLocationData } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isLocationData(obj: any): obj is IPublicTypeLocationData { @@ -6,4 +6,4 @@ export function isLocationData(obj: any): obj is IPublicTypeLocationData { return false; } return 'target' in obj && 'detail' in obj; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-lowcode-component-type.ts b/packages/utils/src/check-types/is-lowcode-component-type.ts index ce19c23e87..1ed24068ca 100644 --- a/packages/utils/src/check-types/is-lowcode-component-type.ts +++ b/packages/utils/src/check-types/is-lowcode-component-type.ts @@ -1,7 +1,8 @@ import { isProCodeComponentType } from './is-procode-component-type'; -import { IPublicTypeComponentMap, IPublicTypeLowCodeComponent } from '@alilc/lowcode-types'; +import { IPublicTypeComponentMap, IPublicTypeLowCodeComponent } from '@lce/lowcode-types'; - -export function isLowCodeComponentType(desc: IPublicTypeComponentMap): desc is IPublicTypeLowCodeComponent { +export function isLowCodeComponentType( + desc: IPublicTypeComponentMap, +): desc is IPublicTypeLowCodeComponent { return !isProCodeComponentType(desc); } diff --git a/packages/utils/src/check-types/is-lowcode-project-schema.ts b/packages/utils/src/check-types/is-lowcode-project-schema.ts index 230911f0f3..346adaa4e0 100644 --- a/packages/utils/src/check-types/is-lowcode-project-schema.ts +++ b/packages/utils/src/check-types/is-lowcode-project-schema.ts @@ -1,8 +1,10 @@ -import { IPublicTypeComponentSchema, IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeComponentSchema, IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { isComponentSchema } from './is-component-schema'; import { isObject } from '../is-object'; -export function isLowcodeProjectSchema(data: any): data is IPublicTypeProjectSchema<IPublicTypeComponentSchema> { +export function isLowcodeProjectSchema( + data: any, +): data is IPublicTypeProjectSchema<IPublicTypeComponentSchema> { if (!isObject(data)) { return false; } diff --git a/packages/utils/src/check-types/is-node-schema.ts b/packages/utils/src/check-types/is-node-schema.ts index 253c05a080..8ae9e63acc 100644 --- a/packages/utils/src/check-types/is-node-schema.ts +++ b/packages/utils/src/check-types/is-node-schema.ts @@ -1,4 +1,4 @@ -import { IPublicTypeNodeSchema } from '@alilc/lowcode-types'; +import { IPublicTypeNodeSchema } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isNodeSchema(data: any): data is IPublicTypeNodeSchema { diff --git a/packages/utils/src/check-types/is-node.ts b/packages/utils/src/check-types/is-node.ts index b4690ddff9..54a3f8ced5 100644 --- a/packages/utils/src/check-types/is-node.ts +++ b/packages/utils/src/check-types/is-node.ts @@ -1,4 +1,4 @@ -import { IPublicModelNode } from '@alilc/lowcode-types'; +import { IPublicModelNode } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isNode<Node = IPublicModelNode>(node: any): node is Node { @@ -6,4 +6,4 @@ export function isNode<Node = IPublicModelNode>(node: any): node is Node { return false; } return node.isNode; -} \ No newline at end of file +} diff --git a/packages/utils/src/check-types/is-procode-component-type.ts b/packages/utils/src/check-types/is-procode-component-type.ts index 46618dcd5a..8af39922fa 100644 --- a/packages/utils/src/check-types/is-procode-component-type.ts +++ b/packages/utils/src/check-types/is-procode-component-type.ts @@ -1,7 +1,9 @@ -import { IPublicTypeComponentMap, IPublicTypeProCodeComponent } from '@alilc/lowcode-types'; +import { IPublicTypeComponentMap, IPublicTypeProCodeComponent } from '@lce/lowcode-types'; import { isObject } from '../is-object'; -export function isProCodeComponentType(desc: IPublicTypeComponentMap): desc is IPublicTypeProCodeComponent { +export function isProCodeComponentType( + desc: IPublicTypeComponentMap, +): desc is IPublicTypeProCodeComponent { if (!isObject(desc)) { return false; } diff --git a/packages/utils/src/check-types/is-project-schema.ts b/packages/utils/src/check-types/is-project-schema.ts index d217acd9ee..691d143fa0 100644 --- a/packages/utils/src/check-types/is-project-schema.ts +++ b/packages/utils/src/check-types/is-project-schema.ts @@ -1,4 +1,4 @@ -import { IPublicTypeProjectSchema } from '@alilc/lowcode-types'; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isProjectSchema(data: any): data is IPublicTypeProjectSchema { diff --git a/packages/utils/src/check-types/is-required-prop-type.ts b/packages/utils/src/check-types/is-required-prop-type.ts index 106da78a00..9e3cec23ac 100644 --- a/packages/utils/src/check-types/is-required-prop-type.ts +++ b/packages/utils/src/check-types/is-required-prop-type.ts @@ -1,8 +1,16 @@ -import { IPublicTypePropType, IPublicTypeRequiredType } from '@alilc/lowcode-types'; +import { IPublicTypePropType, IPublicTypeRequiredType } from '@lce/lowcode-types'; -export function isRequiredPropType(propType: IPublicTypePropType): propType is IPublicTypeRequiredType { +export function isRequiredPropType( + propType: IPublicTypePropType, +): propType is IPublicTypeRequiredType { if (!propType) { return false; } - return typeof propType === 'object' && propType.type && ['array', 'bool', 'func', 'number', 'object', 'string', 'node', 'element', 'any'].includes(propType.type); -} \ No newline at end of file + return ( + typeof propType === 'object' && + propType.type && + ['array', 'bool', 'func', 'number', 'object', 'string', 'node', 'element', 'any'].includes( + propType.type, + ) + ); +} diff --git a/packages/utils/src/check-types/is-setter-config.ts b/packages/utils/src/check-types/is-setter-config.ts index 98d835f32c..9105323d2f 100644 --- a/packages/utils/src/check-types/is-setter-config.ts +++ b/packages/utils/src/check-types/is-setter-config.ts @@ -1,4 +1,4 @@ -import { IPublicTypeSetterConfig } from '@alilc/lowcode-types'; +import { IPublicTypeSetterConfig } from '@lce/lowcode-types'; import { isCustomView } from './is-custom-view'; import { isObject } from '../is-object'; diff --git a/packages/utils/src/check-types/is-setting-field.ts b/packages/utils/src/check-types/is-setting-field.ts index 0d6e21d848..413f68fdf8 100644 --- a/packages/utils/src/check-types/is-setting-field.ts +++ b/packages/utils/src/check-types/is-setting-field.ts @@ -1,4 +1,4 @@ -import { IPublicModelSettingField } from '@alilc/lowcode-types'; +import { IPublicModelSettingField } from '@lce/lowcode-types'; import { isObject } from '../is-object'; export function isSettingField(obj: any): obj is IPublicModelSettingField { diff --git a/packages/utils/src/check-types/is-title-config.ts b/packages/utils/src/check-types/is-title-config.ts index 460da99790..4f6ebccaf8 100644 --- a/packages/utils/src/check-types/is-title-config.ts +++ b/packages/utils/src/check-types/is-title-config.ts @@ -1,4 +1,4 @@ -import { IPublicTypeTitleConfig } from '@alilc/lowcode-types'; +import { IPublicTypeTitleConfig } from '@lce/lowcode-types'; import { isI18nData } from './is-i18n-data'; import { isPlainObject } from '../is-plain-object'; diff --git a/packages/utils/src/context-menu.tsx b/packages/utils/src/context-menu.tsx index 185abbb343..df8db5b530 100644 --- a/packages/utils/src/context-menu.tsx +++ b/packages/utils/src/context-menu.tsx @@ -1,6 +1,12 @@ import { Menu, Icon } from '@alifd/next'; -import { IPublicEnumContextMenuType, IPublicModelNode, IPublicModelPluginContext, IPublicTypeContextMenuAction, IPublicTypeContextMenuItem } from '@alilc/lowcode-types'; -import { Logger } from '@alilc/lowcode-utils'; +import { + IPublicEnumContextMenuType, + IPublicModelNode, + IPublicModelPluginContext, + IPublicTypeContextMenuAction, + IPublicTypeContextMenuItem, +} from '@lce/lowcode-types'; +import { Logger } from '@lce/lowcode-utils'; import classNames from 'classnames'; import React from 'react'; import './context-menu.scss'; @@ -24,9 +30,7 @@ const Tree = (props: { const { node } = props; if (!node) { - return ( - <div className="engine-context-menu-tree-wrap">{ props.children }</div> - ); + return <div className="engine-context-menu-tree-wrap">{props.children}</div>; } const { common } = props.options.pluginContext || {}; @@ -40,7 +44,7 @@ const Tree = (props: { }; return ( - <Tree {...props} node={node.parent} > + <Tree {...props} node={node.parent}> <div className="engine-context-menu-title" onClick={() => { @@ -49,21 +53,22 @@ const Tree = (props: { }} style={style} > - {props.options.nodes?.[0].id === node.id ? (<Icon className="engine-context-menu-tree-selecte-icon" size="small" type="success" />) : null} + {props.options.nodes?.[0].id === node.id ? ( + <Icon className="engine-context-menu-tree-selecte-icon" size="small" type="success" /> + ) : null} {intl(node.title)} </div> - <div - className="engine-context-menu-tree-children" - > - { props.children } - </div> + <div className="engine-context-menu-tree-children">{props.children}</div> </Tree> ); }; let destroyFn: Function | undefined; -export function parseContextMenuAsReactNode(menus: IPublicTypeContextMenuItem[], options: IOptions): React.ReactNode[] { +export function parseContextMenuAsReactNode( + menus: IPublicTypeContextMenuItem[], + options: IOptions, +): React.ReactNode[] { const { common, commonUI } = options.pluginContext || {}; const { intl = (title: any) => title } = common?.utils || {}; const { HelpTip } = commonUI || {}; @@ -77,7 +82,7 @@ export function parseContextMenuAsReactNode(menus: IPublicTypeContextMenuItem[], if (menu.type === IPublicEnumContextMenuType.MENU_ITEM) { if (menu.items && menu.items.length) { - children.push(( + children.push( <PopupItem className={classNames('engine-context-menu-item', { disabled: menu.disabled, @@ -86,12 +91,12 @@ export function parseContextMenuAsReactNode(menus: IPublicTypeContextMenuItem[], label={<div className="engine-context-menu-text">{intl(menu.title)}</div>} > <Menu className="next-context engine-context-menu"> - { parseContextMenuAsReactNode(menu.items, options) } + {parseContextMenuAsReactNode(menu.items, options)} </Menu> - </PopupItem> - )); + </PopupItem>, + ); } else { - children.push(( + children.push( <Item className={classNames('engine-context-menu-item', { disabled: menu.disabled, @@ -103,27 +108,29 @@ export function parseContextMenuAsReactNode(menus: IPublicTypeContextMenuItem[], key={menu.name} > <div className="engine-context-menu-text"> - { menu.title ? intl(menu.title) : null } - { menu.help ? <HelpTip size="xs" help={menu.help} direction="right" /> : null } + {menu.title ? intl(menu.title) : null} + {menu.help ? <HelpTip size="xs" help={menu.help} direction="right" /> : null} </div> - </Item> - )); + </Item>, + ); } } if (menu.type === IPublicEnumContextMenuType.NODE_TREE) { - children.push(( - <Tree node={options.nodes?.[0]} options={options} /> - )); + children.push(<Tree node={options.nodes?.[0]} options={options} />); } }); return children; } -export function parseContextMenuProperties(menus: (IPublicTypeContextMenuAction | Omit<IPublicTypeContextMenuAction, 'items'>)[], options: IOptions & { - event?: MouseEvent; -}, level = 1): IPublicTypeContextMenuItem[] { +export function parseContextMenuProperties( + menus: (IPublicTypeContextMenuAction | Omit<IPublicTypeContextMenuAction, 'items'>)[], + options: IOptions & { + event?: MouseEvent; + }, + level = 1, +): IPublicTypeContextMenuItem[] { destroyFn?.(); const { nodes, destroy } = options; @@ -133,14 +140,9 @@ export function parseContextMenuProperties(menus: (IPublicTypeContextMenuAction } return menus - .filter(menu => !menu.condition || (menu.condition && menu.condition(nodes || []))) + .filter((menu) => !menu.condition || (menu.condition && menu.condition(nodes || []))) .map((menu) => { - const { - name, - title, - type = IPublicEnumContextMenuType.MENU_ITEM, - help, - } = menu; + const { name, title, type = IPublicEnumContextMenuType.MENU_ITEM, help } = menu; const result: IPublicTypeContextMenuItem = { name, @@ -151,7 +153,7 @@ export function parseContextMenuProperties(menus: (IPublicTypeContextMenuAction destroy?.(); menu.action?.(nodes || [], options.event); }, - disabled: menu.disabled && menu.disabled(nodes || []) || false, + disabled: (menu.disabled && menu.disabled(nodes || [])) || false, }; if ('items' in menu && menu.items) { @@ -169,7 +171,7 @@ export function parseContextMenuProperties(menus: (IPublicTypeContextMenuAction return menus.concat([currentMenu]); } - const index = menus.find(item => item.name === currentMenu.name); + const index = menus.find((item) => item.name === currentMenu.name); if (!index) { return menus.concat([currentMenu]); } else { @@ -192,20 +194,29 @@ function getMenuItemHeight() { return menuItemHeight; } -export function createContextMenu(children: React.ReactNode[], { - event, - offset = [0, 0], -}: { - event: MouseEvent | React.MouseEvent; - offset?: [number, number]; -}) { +export function createContextMenu( + children: React.ReactNode[], + { + event, + offset = [0, 0], + }: { + event: MouseEvent | React.MouseEvent; + offset?: [number, number]; + }, +) { event.preventDefault(); event.stopPropagation(); const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; - const dividerCount = React.Children.count(children.filter(child => React.isValidElement(child) && child.type === Divider)); - const popupItemCount = React.Children.count(children.filter(child => React.isValidElement(child) && (child.type === PopupItem || child.type === Item))); + const dividerCount = React.Children.count( + children.filter((child) => React.isValidElement(child) && child.type === Divider), + ); + const popupItemCount = React.Children.count( + children.filter( + (child) => React.isValidElement(child) && (child.type === PopupItem || child.type === Item), + ), + ); const menuHeight = popupItemCount * parseInt(getMenuItemHeight(), 10) + dividerCount * 8 + 16; const menuWidthLimit = 200; let x = event.clientX + offset[0]; @@ -227,4 +238,4 @@ export function createContextMenu(children: React.ReactNode[], { destroyFn = (menuInstance as any).destroy; return destroyFn; -} \ No newline at end of file +} diff --git a/packages/utils/src/create-icon.tsx b/packages/utils/src/create-icon.tsx index 621b5c7ab4..788f0d3e7c 100644 --- a/packages/utils/src/create-icon.tsx +++ b/packages/utils/src/create-icon.tsx @@ -1,15 +1,15 @@ import { isValidElement, ReactNode, createElement, cloneElement } from 'react'; import { Icon } from '@alifd/next'; -import { IPublicTypeIconType } from '@alilc/lowcode-types'; +import { IPublicTypeIconType } from '@lce/lowcode-types'; import { isReactComponent } from './is-react'; import { isESModule } from './is-es-module'; const URL_RE = /^(https?:)\/\//i; export function createIcon( - icon?: IPublicTypeIconType | null, - props?: Record<string, unknown>, - ): ReactNode { + icon?: IPublicTypeIconType | null, + props?: Record<string, unknown>, +): ReactNode { if (!icon) { return null; } diff --git a/packages/utils/src/misc.ts b/packages/utils/src/misc.ts index 28833ef321..2c2ca16794 100644 --- a/packages/utils/src/misc.ts +++ b/packages/utils/src/misc.ts @@ -1,7 +1,6 @@ - import { isI18NObject } from './is-object'; import { get } from 'lodash'; -import { IPublicEnumTransformStage, IPublicModelComponentMeta } from '@alilc/lowcode-types'; +import { IPublicEnumTransformStage, IPublicModelComponentMeta } from '@lce/lowcode-types'; import { Logger } from './logger'; const logger = new Logger({ level: 'warn', bizName: 'utils' }); @@ -22,7 +21,7 @@ export function isVariable(obj: any): obj is Variable { export function isUseI18NSetter(prototype: any, propName: string) { const configure = prototype?.options?.configure; if (Array.isArray(configure)) { - return configure.some(c => { + return configure.some((c) => { return c.name === propName && c?.setter?.type?.displayName === 'I18nSetter'; }); } @@ -64,14 +63,14 @@ export function waitForThing(obj: any, path: string): Promise<any> { export function arrShallowEquals(arr1: any[], arr2: any[]): boolean { if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false; if (arr1.length !== arr2.length) return false; - return arr1.every(item => arr2.includes(item)); + return arr1.every((item) => arr2.includes(item)); } /** * 判断当前 meta 是否从 vc prototype 转换而来 * @param meta */ - export function isFromVC(meta: IPublicModelComponentMeta) { +export function isFromVC(meta: IPublicModelComponentMeta) { return !!meta?.getMetadata().configure?.advanced; } @@ -79,14 +78,7 @@ export function executePendingFn(fn: () => void, timeout: number = 2000) { return setTimeout(fn, timeout); } -const stageList = [ - 'render', - 'serilize', - 'save', - 'clone', - 'init', - 'upgrade', -]; +const stageList = ['render', 'serilize', 'save', 'clone', 'init', 'upgrade']; /** * 兼容原来的数字版本的枚举对象 @@ -95,7 +87,9 @@ const stageList = [ */ export function compatStage(stage: IPublicEnumTransformStage | number): IPublicEnumTransformStage { if (typeof stage === 'number') { - console.warn('stage 直接指定为数字的使用方式已经过时,将在下一版本移除,请直接使用 IPublicEnumTransformStage.Render|Serilize|Save|Clone|Init|Upgrade'); + console.warn( + 'stage 直接指定为数字的使用方式已经过时,将在下一版本移除,请直接使用 IPublicEnumTransformStage.Render|Serilize|Save|Clone|Init|Upgrade', + ); return stageList[stage - 1] as IPublicEnumTransformStage; } return stage as IPublicEnumTransformStage; @@ -103,7 +97,7 @@ export function compatStage(stage: IPublicEnumTransformStage | number): IPublicE export function invariant(check: any, message: string, thing?: any) { if (!check) { - throw new Error(`Invariant failed: ${ message }${thing ? ` in '${thing}'` : ''}`); + throw new Error(`Invariant failed: ${message}${thing ? ` in '${thing}'` : ''}`); } } @@ -132,4 +126,4 @@ export function shouldUseVariableSetter( ) { if (propSupportVariable === false) return false; return propSupportVariable || globalSupportVariable; -} \ No newline at end of file +} diff --git a/packages/utils/src/node-helper.ts b/packages/utils/src/node-helper.ts index 60102d6794..129a7c63f3 100644 --- a/packages/utils/src/node-helper.ts +++ b/packages/utils/src/node-helper.ts @@ -1,11 +1,11 @@ // 仅使用类型 -import { IPublicModelNode } from '@alilc/lowcode-types'; +import { IPublicModelNode } from '@lce/lowcode-types'; import { MouseEvent } from 'react'; export const getClosestNode = <Node extends IPublicModelNode = IPublicModelNode>( node: Node, until: (n: Node) => boolean, - ): Node | undefined => { +): Node | undefined => { if (!node) { return undefined; } @@ -23,7 +23,10 @@ export const getClosestNode = <Node extends IPublicModelNode = IPublicModelNode> * @param {unknown} e 点击事件 * @returns {boolean} 是否可点击,true表示可点击 */ -export function canClickNode<Node extends IPublicModelNode = IPublicModelNode>(node: Node, e: MouseEvent): boolean { +export function canClickNode<Node extends IPublicModelNode = IPublicModelNode>( + node: Node, + e: MouseEvent, +): boolean { const onClickHook = node.componentMeta?.advanced?.callbacks?.onClickHook; const canClick = typeof onClickHook === 'function' ? onClickHook(e, node) : true; return canClick; diff --git a/packages/utils/src/schema.ts b/packages/utils/src/schema.ts index 2e7dec70fa..deebdec6ea 100644 --- a/packages/utils/src/schema.ts +++ b/packages/utils/src/schema.ts @@ -1,4 +1,4 @@ -import { ActivityType, IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@alilc/lowcode-types'; +import { ActivityType, IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@lce/lowcode-types'; import { isJSBlock, isJSSlot } from './check-types'; import { isVariable } from './misc'; import { isPlainObject } from './is-plain-object'; @@ -23,7 +23,7 @@ export function compatibleLegaoSchema(props: any): any { } if (Array.isArray(props)) { - return props.map(k => compatibleLegaoSchema(k)); + return props.map((k) => compatibleLegaoSchema(k)); } if (!isPlainObject(props)) { @@ -78,7 +78,10 @@ export function compatibleLegaoSchema(props: any): any { return newProps; } -export function getNodeSchemaById(schema: IPublicTypeNodeSchema, nodeId: string): IPublicTypeNodeSchema | undefined { +export function getNodeSchemaById( + schema: IPublicTypeNodeSchema, + nodeId: string, +): IPublicTypeNodeSchema | undefined { let found: IPublicTypeNodeSchema | undefined; if (schema.id === nodeId) { return schema; @@ -123,7 +126,10 @@ function getNodeSchemaFromPropsById(props: any, nodeId: string): IPublicTypeNode * TODO: not sure if this is used anywhere * @deprecated */ -export function applyActivities(pivotSchema: IPublicTypeRootSchema, activities: any): IPublicTypeRootSchema { +export function applyActivities( + pivotSchema: IPublicTypeRootSchema, + activities: any, +): IPublicTypeRootSchema { let schema = { ...pivotSchema }; if (!Array.isArray(activities)) { activities = [activities]; diff --git a/packages/utils/src/transaction-manager.ts b/packages/utils/src/transaction-manager.ts index 85161eff9f..4e29526431 100644 --- a/packages/utils/src/transaction-manager.ts +++ b/packages/utils/src/transaction-manager.ts @@ -1,24 +1,33 @@ -import { IPublicEnumTransitionType } from '@alilc/lowcode-types'; +import { IPublicEnumTransitionType } from '@lce/lowcode-types'; import { runInAction } from 'mobx'; import EventEmitter from 'events'; class TransactionManager { emitter = new EventEmitter(); - executeTransaction = (fn: () => void, type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT): void => { + executeTransaction = ( + fn: () => void, + type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT, + ): void => { this.emitter.emit(`[${type}]startTransaction`); runInAction(fn); this.emitter.emit(`[${type}]endTransaction`); }; - onStartTransaction = (fn: () => void, type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT): () => void => { + onStartTransaction = ( + fn: () => void, + type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT, + ): (() => void) => { this.emitter.on(`[${type}]startTransaction`, fn); return () => { this.emitter.off(`[${type}]startTransaction`, fn); }; }; - onEndTransaction = (fn: () => void, type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT): () => void => { + onEndTransaction = ( + fn: () => void, + type: IPublicEnumTransitionType = IPublicEnumTransitionType.REPAINT, + ): (() => void) => { this.emitter.on(`[${type}]endTransaction`, fn); return () => { this.emitter.off(`[${type}]endTransaction`, fn); diff --git a/packages/utils/src/workspace.tsx b/packages/utils/src/workspace.tsx index 446530ce8e..ae5451d9b6 100644 --- a/packages/utils/src/workspace.tsx +++ b/packages/utils/src/workspace.tsx @@ -1,5 +1,10 @@ import React, { useEffect, useState, useCallback } from 'react'; -import { IPublicModelPluginContext, IPublicEnumPluginRegisterLevel, IPublicModelWindow, IPublicModelEditorView } from '@alilc/lowcode-types'; +import { + IPublicModelPluginContext, + IPublicEnumPluginRegisterLevel, + IPublicModelWindow, + IPublicModelEditorView, +} from '@lce/lowcode-types'; /** * 高阶组件(HOC):为组件提供 view 插件上下文。 @@ -24,7 +29,11 @@ export const ProvideViewPluginContext = (Component: any, viewName?: string | str return null; } if (viewName) { - const items = editorWindow?.editorViews.filter(d => (d as any).viewName === viewName || (Array.isArray(viewName) && viewName.includes((d as any).viewName))); + const items = editorWindow?.editorViews.filter( + (d) => + (d as any).viewName === viewName || + (Array.isArray(viewName) && viewName.includes((d as any).viewName)), + ); return items[0]; } else { return editorWindow.currentEditorView; @@ -32,7 +41,9 @@ export const ProvideViewPluginContext = (Component: any, viewName?: string | str }, []); const { workspace } = props.pluginContext || {}; - const [pluginContext, setPluginContext] = useState<IPublicModelEditorView | null>(getPluginContextFun(workspace?.window)); + const [pluginContext, setPluginContext] = useState<IPublicModelEditorView | null>( + getPluginContextFun(workspace?.window), + ); useEffect(() => { if (workspace?.window) { @@ -45,7 +56,10 @@ export const ProvideViewPluginContext = (Component: any, viewName?: string | str }); }, [workspace, getPluginContextFun]); - if (props.pluginContext?.registerLevel !== IPublicEnumPluginRegisterLevel.Workspace || !props.pluginContext) { + if ( + props.pluginContext?.registerLevel !== IPublicEnumPluginRegisterLevel.Workspace || + !props.pluginContext + ) { return <Component {...props} />; } diff --git a/packages/utils/test/src/check-types/is-custom-view.test.tsx b/packages/utils/test/src/check-types/is-custom-view.test.tsx index 62c08780e6..e2cd3fa434 100644 --- a/packages/utils/test/src/check-types/is-custom-view.test.tsx +++ b/packages/utils/test/src/check-types/is-custom-view.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { isCustomView } from '../../../src/check-types/is-custom-view'; -import { IPublicTypeCustomView } from '@alilc/lowcode-types'; +import { IPublicTypeCustomView } from '@lce/lowcode-types'; describe('isCustomView', () => { test('should return true when obj is a valid React element', () => { diff --git a/packages/utils/test/src/check-types/is-drag-any-object.test.ts b/packages/utils/test/src/check-types/is-drag-any-object.test.ts index 6a835f2be3..efd974fd8a 100644 --- a/packages/utils/test/src/check-types/is-drag-any-object.test.ts +++ b/packages/utils/test/src/check-types/is-drag-any-object.test.ts @@ -1,5 +1,5 @@ import { isDragAnyObject } from '../../../src/check-types/is-drag-any-object'; -import { IPublicEnumDragObjectType } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType } from '@lce/lowcode-types'; describe('isDragAnyObject', () => { it('should return false if obj is null', () => { diff --git a/packages/utils/test/src/check-types/is-drag-node-data-object.test.ts b/packages/utils/test/src/check-types/is-drag-node-data-object.test.ts index 92867843a2..6643f67421 100644 --- a/packages/utils/test/src/check-types/is-drag-node-data-object.test.ts +++ b/packages/utils/test/src/check-types/is-drag-node-data-object.test.ts @@ -1,4 +1,4 @@ -import { IPublicEnumDragObjectType, IPublicTypeDragNodeDataObject } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType, IPublicTypeDragNodeDataObject } from '@lce/lowcode-types'; import { isDragNodeDataObject } from '../../../src/check-types/is-drag-node-data-object'; describe('isDragNodeDataObject', () => { diff --git a/packages/utils/test/src/check-types/is-drag-node-object.test.ts b/packages/utils/test/src/check-types/is-drag-node-object.test.ts index 3561c87885..660d87edb9 100644 --- a/packages/utils/test/src/check-types/is-drag-node-object.test.ts +++ b/packages/utils/test/src/check-types/is-drag-node-object.test.ts @@ -1,4 +1,4 @@ -import { IPublicEnumDragObjectType } from '@alilc/lowcode-types'; +import { IPublicEnumDragObjectType } from '@lce/lowcode-types'; import { isDragNodeObject } from '../../../src/check-types/is-drag-node-object'; describe('isDragNodeObject', () => { diff --git a/packages/utils/test/src/check-types/is-i18n-data.test.ts b/packages/utils/test/src/check-types/is-i18n-data.test.ts index 2e903a2ed2..59c0548866 100644 --- a/packages/utils/test/src/check-types/is-i18n-data.test.ts +++ b/packages/utils/test/src/check-types/is-i18n-data.test.ts @@ -1,5 +1,5 @@ import { isI18nData } from '../../../src/check-types/is-i18n-data'; -import { IPublicTypeI18nData } from "@alilc/lowcode-types"; +import { IPublicTypeI18nData } from '@lce/lowcode-types'; describe('isI18nData', () => { it('should return true for valid i18n data', () => { diff --git a/packages/utils/test/src/check-types/is-jsslot.test.ts b/packages/utils/test/src/check-types/is-jsslot.test.ts index 5c130cddfd..da67b6c26d 100644 --- a/packages/utils/test/src/check-types/is-jsslot.test.ts +++ b/packages/utils/test/src/check-types/is-jsslot.test.ts @@ -1,5 +1,5 @@ import { isJSSlot } from '../../../src/check-types/is-jsslot'; -import { IPublicTypeJSSlot } from '@alilc/lowcode-types'; +import { IPublicTypeJSSlot } from '@lce/lowcode-types'; describe('isJSSlot', () => { it('should return true when input is of type IPublicTypeJSSlot', () => { diff --git a/packages/utils/test/src/check-types/is-location-children-detail.test.ts b/packages/utils/test/src/check-types/is-location-children-detail.test.ts index f209e8e63f..ea9cf281c2 100644 --- a/packages/utils/test/src/check-types/is-location-children-detail.test.ts +++ b/packages/utils/test/src/check-types/is-location-children-detail.test.ts @@ -1,5 +1,8 @@ import { isLocationChildrenDetail } from '../../../src/check-types/is-location-children-detail'; -import { IPublicTypeLocationChildrenDetail, IPublicTypeLocationDetailType } from '@alilc/lowcode-types'; +import { + IPublicTypeLocationChildrenDetail, + IPublicTypeLocationDetailType, +} from '@lce/lowcode-types'; describe('isLocationChildrenDetail', () => { it('should return true when obj is IPublicTypeLocationChildrenDetail', () => { diff --git a/packages/utils/test/src/check-types/is-location-data.test.ts b/packages/utils/test/src/check-types/is-location-data.test.ts index ba2e2c8be0..89aba925b4 100644 --- a/packages/utils/test/src/check-types/is-location-data.test.ts +++ b/packages/utils/test/src/check-types/is-location-data.test.ts @@ -1,5 +1,5 @@ import { isLocationData } from '../../../src/check-types/is-location-data'; -import { IPublicTypeLocationData } from '@alilc/lowcode-types'; +import { IPublicTypeLocationData } from '@lce/lowcode-types'; describe('isLocationData', () => { it('should return true when obj is valid location data', () => { diff --git a/packages/utils/test/src/check-types/is-lowcode-component-type.test.ts b/packages/utils/test/src/check-types/is-lowcode-component-type.test.ts index 35b76f00b5..ef4834af95 100644 --- a/packages/utils/test/src/check-types/is-lowcode-component-type.test.ts +++ b/packages/utils/test/src/check-types/is-lowcode-component-type.test.ts @@ -1,5 +1,5 @@ import { isLowCodeComponentType } from '../../../src/check-types/is-lowcode-component-type'; -import { IPublicTypeLowCodeComponent, IPublicTypeProCodeComponent } from '@alilc/lowcode-types'; +import { IPublicTypeLowCodeComponent, IPublicTypeProCodeComponent } from '@lce/lowcode-types'; describe('isLowCodeComponentType', () => { test('should return true for a low code component type', () => { @@ -13,7 +13,7 @@ describe('isLowCodeComponentType', () => { test('should return false for a pro code component type', () => { const desc: IPublicTypeProCodeComponent = { // create a valid pro code component description - package: 'pro-code' + package: 'pro-code', }; expect(isLowCodeComponentType(desc)).toBe(false); diff --git a/packages/utils/test/src/check-types/is-project-schema.test.ts b/packages/utils/test/src/check-types/is-project-schema.test.ts index 0ec3f47408..1a0d7d9c9f 100644 --- a/packages/utils/test/src/check-types/is-project-schema.test.ts +++ b/packages/utils/test/src/check-types/is-project-schema.test.ts @@ -1,8 +1,8 @@ -import { IPublicTypeProjectSchema } from "@alilc/lowcode-types"; -import { isProjectSchema } from "../../../src/check-types/is-project-schema"; +import { IPublicTypeProjectSchema } from '@lce/lowcode-types'; +import { isProjectSchema } from '../../../src/check-types/is-project-schema'; -describe("isProjectSchema", () => { - it("should return true if data has componentsTree property", () => { +describe('isProjectSchema', () => { + it('should return true if data has componentsTree property', () => { const data: IPublicTypeProjectSchema = { // ... componentsTree: { @@ -12,14 +12,14 @@ describe("isProjectSchema", () => { expect(isProjectSchema(data)).toBe(true); }); - it("should return false if data does not have componentsTree property", () => { + it('should return false if data does not have componentsTree property', () => { const data = { // ... }; expect(isProjectSchema(data)).toBe(false); }); - it("should return false if data is null or undefined", () => { + it('should return false if data is null or undefined', () => { expect(isProjectSchema(null)).toBe(false); expect(isProjectSchema(undefined)).toBe(false); }); diff --git a/packages/utils/test/src/misc.test.ts b/packages/utils/test/src/misc.test.ts index 2514661508..72f08b7c06 100644 --- a/packages/utils/test/src/misc.test.ts +++ b/packages/utils/test/src/misc.test.ts @@ -12,7 +12,7 @@ import { isRegExp, shouldUseVariableSetter, } from '../../src/misc'; -import { IPublicModelComponentMeta } from '@alilc/lowcode-types'; +import { IPublicModelComponentMeta } from '@lce/lowcode-types'; describe('isVariable', () => { it('should return true for a variable object', () => { @@ -30,14 +30,22 @@ describe('isVariable', () => { describe('isUseI18NSetter', () => { it('should return true for a property with I18nSetter', () => { - const prototype = { options: { configure: [{ name: 'propName', setter: { type: { displayName: 'I18nSetter' } } }] } }; + const prototype = { + options: { + configure: [{ name: 'propName', setter: { type: { displayName: 'I18nSetter' } } }], + }, + }; const propName = 'propName'; const result = isUseI18NSetter(prototype, propName); expect(result).toBe(true); }); it('should return false for a property without I18nSetter', () => { - const prototype = { options: { configure: [{ name: 'propName', setter: { type: { displayName: 'OtherSetter' } } }] } }; + const prototype = { + options: { + configure: [{ name: 'propName', setter: { type: { displayName: 'OtherSetter' } } }], + }, + }; const propName = 'propName'; const result = isUseI18NSetter(prototype, propName); expect(result).toBe(false); @@ -240,7 +248,7 @@ describe('executePendingFn', () => { expect(fn).not.toHaveBeenCalled(); // Wait for the specified timeout - await new Promise(resolve => setTimeout(resolve, 100)); + await new Promise((resolve) => setTimeout(resolve, 100)); // Ensure the function has been called after the timeout expect(fn).toHaveBeenCalled(); @@ -257,7 +265,7 @@ describe('executePendingFn', () => { expect(fn).not.toHaveBeenCalled(); // Wait for the default timeout (2000 milliseconds) - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); // Ensure the function has been called after the default timeout expect(fn).toHaveBeenCalled(); @@ -275,7 +283,7 @@ describe('compatStage', () => { const result = compatStage(2); expect(result).toBe('serilize'); expect(warnSpy).toHaveBeenCalledWith( - 'stage 直接指定为数字的使用方式已经过时,将在下一版本移除,请直接使用 IPublicEnumTransformStage.Render|Serilize|Save|Clone|Init|Upgrade' + 'stage 直接指定为数字的使用方式已经过时,将在下一版本移除,请直接使用 IPublicEnumTransformStage.Render|Serilize|Save|Clone|Init|Upgrade', ); warnSpy.mockRestore(); }); @@ -293,7 +301,7 @@ describe('invariant', () => { it('should throw an error if the check is false', () => { expect(() => invariant(false, 'Test invariant', 'thing')).toThrowError( - "Invariant failed: Test invariant in 'thing'" + "Invariant failed: Test invariant in 'thing'", ); }); }); @@ -323,4 +331,4 @@ it('shouldUseVariableSetter', () => { expect(shouldUseVariableSetter(true, false)).toBeTruthy(); expect(shouldUseVariableSetter(undefined, false)).toBeFalsy(); expect(shouldUseVariableSetter(undefined, true)).toBeTruthy(); -}); \ No newline at end of file +}); diff --git a/packages/utils/test/src/schema.test.ts b/packages/utils/test/src/schema.test.ts index 8d03f58118..6c4ccc4fca 100644 --- a/packages/utils/test/src/schema.test.ts +++ b/packages/utils/test/src/schema.test.ts @@ -1,9 +1,5 @@ -import { - compatibleLegaoSchema, - getNodeSchemaById, - applyActivities, -} from '../../src/schema'; -import { ActivityType } from '@alilc/lowcode-types'; +import { compatibleLegaoSchema, getNodeSchemaById, applyActivities } from '../../src/schema'; +import { ActivityType } from '@lce/lowcode-types'; describe('compatibleLegaoSchema', () => { it('should handle null input', () => { @@ -126,30 +122,29 @@ describe('applyActivities', () => { // Add more test cases for other activity types and scenarios }); - describe('Schema Ut', () => { it('props', () => { const schema = { props: { mobileSlot: { - type: "JSBlock", + type: 'JSBlock', value: { - componentName: "Slot", + componentName: 'Slot', children: [ { loop: { - variable: "props.content", - type: "variable" + variable: 'props.content', + type: 'variable', }, - } + }, ], - } + }, }, }, - }; + }; const result = compatibleLegaoSchema(schema); expect(result).toMatchSnapshot(); expect(result.props.mobileSlot.value[0].loop.type).toBe('JSExpression'); }); -}) \ No newline at end of file +}); diff --git a/packages/utils/test/src/transaction-manager.test.ts b/packages/utils/test/src/transaction-manager.test.ts index 42c7fa8bf0..3d4bf5c87d 100644 --- a/packages/utils/test/src/transaction-manager.test.ts +++ b/packages/utils/test/src/transaction-manager.test.ts @@ -1,5 +1,5 @@ import { transactionManager } from '../../src/transaction-manager'; -import { IPublicEnumTransitionType } from '@alilc/lowcode-types'; +import { IPublicEnumTransitionType } from '@lce/lowcode-types'; const type = IPublicEnumTransitionType.REPAINT; diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 778b8167f8..5d5e21d75f 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -1,5 +1,5 @@ { - "name": "@alilc/lowcode-workspace", + "name": "@lce/lowcode-workspace", "version": "1.3.2", "description": "Shell Layer for AliLowCodeEngine", "main": "lib/index.js", @@ -15,11 +15,11 @@ }, "license": "MIT", "dependencies": { - "@alilc/lowcode-designer": "1.3.2", - "@alilc/lowcode-editor-core": "1.3.2", - "@alilc/lowcode-editor-skeleton": "1.3.2", - "@alilc/lowcode-types": "1.3.2", - "@alilc/lowcode-utils": "1.3.2", + "@lce/lowcode-designer": "1.3.2", + "@lce/lowcode-editor-core": "1.3.2", + "@lce/lowcode-editor-skeleton": "1.3.2", + "@lce/lowcode-types": "1.3.2", + "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", diff --git a/packages/workspace/src/context/base-context.ts b/packages/workspace/src/context/base-context.ts index 445677a618..65999e1d1d 100644 --- a/packages/workspace/src/context/base-context.ts +++ b/packages/workspace/src/context/base-context.ts @@ -1,12 +1,13 @@ import { Editor, - engineConfig, Setters as InnerSetters, + engineConfig, + Setters as InnerSetters, Hotkey as InnerHotkey, commonEvent, IEngineConfig, IHotKey, Command as InnerCommand, -} from '@alilc/lowcode-editor-core'; +} from '@lce/lowcode-editor-core'; import { Designer, ILowCodePluginContextApiAssembler, @@ -15,11 +16,8 @@ import { IProject, IDesigner, ILowCodePluginManager, -} from '@alilc/lowcode-designer'; -import { - ISkeleton, - Skeleton as InnerSkeleton, -} from '@alilc/lowcode-editor-skeleton'; +} from '@lce/lowcode-designer'; +import { ISkeleton, Skeleton as InnerSkeleton } from '@lce/lowcode-editor-skeleton'; import { Hotkey, Plugins, @@ -35,7 +33,7 @@ import { Canvas, CommonUI, Command, -} from '@alilc/lowcode-shell'; +} from '@lce/lowcode-shell'; import { IPluginPreferenceMananger, IPublicApiCanvas, @@ -50,8 +48,8 @@ import { IPublicEnumPluginRegisterLevel, IPublicModelPluginContext, IPublicTypePluginMeta, -} from '@alilc/lowcode-types'; -import { getLogger, Logger as InnerLogger } from '@alilc/lowcode-utils'; +} from '@lce/lowcode-types'; +import { getLogger, Logger as InnerLogger } from '@lce/lowcode-utils'; import { IWorkspace } from '../workspace'; import { IEditorWindow } from '../window'; @@ -104,7 +102,12 @@ export class BasicContext implements IBasicContext { preference: IPluginPreferenceMananger; workspace: IWorkspace; - constructor(innerWorkspace: IWorkspace, viewName: string, readonly registerLevel: IPublicEnumPluginRegisterLevel, public editorWindow?: IEditorWindow) { + constructor( + innerWorkspace: IWorkspace, + viewName: string, + readonly registerLevel: IPublicEnumPluginRegisterLevel, + public editorWindow?: IEditorWindow, + ) { const editor = new Editor(viewName, true); const innerSkeleton = new InnerSkeleton(editor, viewName); @@ -157,7 +160,11 @@ export class BasicContext implements IBasicContext { let plugins: IPublicApiPlugins; const pluginContextApiAssembler: ILowCodePluginContextApiAssembler = { - assembleApis: (context: ILowCodePluginContextPrivate, pluginName: string, meta: IPublicTypePluginMeta) => { + assembleApis: ( + context: ILowCodePluginContextPrivate, + pluginName: string, + meta: IPublicTypePluginMeta, + ) => { context.workspace = workspace; context.hotkey = hotkey; context.project = project; @@ -180,7 +187,8 @@ export class BasicContext implements IBasicContext { commandScope, }); context.registerLevel = registerLevel; - context.isPluginRegisteredInWorkspace = registerLevel === IPublicEnumPluginRegisterLevel.Workspace; + context.isPluginRegisteredInWorkspace = + registerLevel === IPublicEnumPluginRegisterLevel.Workspace; editor.set('pluginContext', context); }, }; @@ -197,4 +205,4 @@ export class BasicContext implements IBasicContext { await innerWorkspace?.registryInnerPlugin(designer, editor, plugins); }; } -} \ No newline at end of file +} diff --git a/packages/workspace/src/context/view-context.ts b/packages/workspace/src/context/view-context.ts index 0542f83a95..1decdf253e 100644 --- a/packages/workspace/src/context/view-context.ts +++ b/packages/workspace/src/context/view-context.ts @@ -1,5 +1,9 @@ -import { computed, makeObservable, obx } from '@alilc/lowcode-editor-core'; -import { IPublicEditorViewConfig, IPublicEnumPluginRegisterLevel, IPublicTypeEditorView } from '@alilc/lowcode-types'; +import { computed, makeObservable, obx } from '@lce/lowcode-editor-core'; +import { + IPublicEditorViewConfig, + IPublicEnumPluginRegisterLevel, + IPublicTypeEditorView, +} from '@lce/lowcode-types'; import { flow } from 'mobx'; import { IWorkspace } from '../workspace'; import { BasicContext, IBasicContext } from './base-context'; @@ -37,13 +41,21 @@ export class Context extends BasicContext implements IViewContext { this.isInit = true; }); - constructor(public workspace: IWorkspace, public editorWindow: IEditorWindow, public editorView: IPublicTypeEditorView, options: Object | undefined) { + constructor( + public workspace: IWorkspace, + public editorWindow: IEditorWindow, + public editorView: IPublicTypeEditorView, + options: Object | undefined, + ) { super(workspace, editorView.viewName, IPublicEnumPluginRegisterLevel.EditorView, editorWindow); this.viewType = editorView.viewType || 'editor'; this.viewName = editorView.viewName; - this.instance = editorView(this.innerPlugins._getLowCodePluginContext({ - pluginName: 'any', - }), options); + this.instance = editorView( + this.innerPlugins._getLowCodePluginContext({ + pluginName: 'any', + }), + options, + ); makeObservable(this); } @@ -67,4 +79,4 @@ export class Context extends BasicContext implements IViewContext { async save() { return await this.instance?.save?.(); } -} \ No newline at end of file +} diff --git a/packages/workspace/src/inner-plugins/webview.tsx b/packages/workspace/src/inner-plugins/webview.tsx index 820b843ab8..b685499a61 100644 --- a/packages/workspace/src/inner-plugins/webview.tsx +++ b/packages/workspace/src/inner-plugins/webview.tsx @@ -1,9 +1,6 @@ -import { IPublicModelPluginContext } from '@alilc/lowcode-types'; +import { IPublicModelPluginContext } from '@lce/lowcode-types'; -export function DesignerView(props: { - url: string; - viewName?: string; -}) { +export function DesignerView(props: { url: string; viewName?: string }) { return ( <div className="lc-designer lowcode-plugin-designer"> <div className="lc-project"> diff --git a/packages/workspace/src/layouts/workbench.tsx b/packages/workspace/src/layouts/workbench.tsx index 2913576e1c..6528327806 100644 --- a/packages/workspace/src/layouts/workbench.tsx +++ b/packages/workspace/src/layouts/workbench.tsx @@ -1,23 +1,34 @@ import { Component } from 'react'; -import { TipContainer, engineConfig, observer } from '@alilc/lowcode-editor-core'; +import { TipContainer, engineConfig, observer } from '@lce/lowcode-editor-core'; import { WindowView } from '../view/window-view'; import classNames from 'classnames'; import { SkeletonContext } from '../skeleton-context'; -import { EditorConfig, PluginClassSet } from '@alilc/lowcode-types'; +import { EditorConfig, PluginClassSet } from '@lce/lowcode-types'; import { Workspace } from '../workspace'; -import { BottomArea, LeftArea, LeftFixedPane, LeftFloatPane, MainArea, SubTopArea, TopArea } from '@alilc/lowcode-editor-skeleton'; +import { + BottomArea, + LeftArea, + LeftFixedPane, + LeftFloatPane, + MainArea, + SubTopArea, + TopArea, +} from '@lce/lowcode-editor-skeleton'; @observer -export class Workbench extends Component<{ - workspace: Workspace; - config?: EditorConfig; - components?: PluginClassSet; - className?: string; - topAreaItemClassName?: string; -}, { - workspaceEmptyComponent: any; - theme?: string; -}> { +export class Workbench extends Component< + { + workspace: Workspace; + config?: EditorConfig; + components?: PluginClassSet; + className?: string; + topAreaItemClassName?: string; + }, + { + workspaceEmptyComponent: any; + theme?: string; + } +> { constructor(props: any) { super(props); const { config, components, workspace } = this.props; @@ -47,7 +58,11 @@ export class Workbench extends Component<{ return ( <div className={classNames('lc-workspace-workbench', className, theme)}> <SkeletonContext.Provider value={skeleton}> - <TopArea className="lc-workspace-top-area" area={skeleton.topArea} itemClassName={topAreaItemClassName} /> + <TopArea + className="lc-workspace-top-area" + area={skeleton.topArea} + itemClassName={topAreaItemClassName} + /> <div className="lc-workspace-workbench-body"> <LeftArea className="lc-workspace-left-area lc-left-area" area={skeleton.leftArea} /> <LeftFloatPane area={skeleton.leftFloatArea} /> @@ -56,19 +71,13 @@ export class Workbench extends Component<{ <div className="lc-workspace-workbench-center-content"> <SubTopArea area={skeleton.subTopArea} itemClassName={topAreaItemClassName} /> <div className="lc-workspace-workbench-window"> - { - workspace.windows.map(d => ( - <WindowView - active={d.id === workspace.window?.id} - window={d} - key={d.id} - /> - )) - } + {workspace.windows.map((d) => ( + <WindowView active={d.id === workspace.window?.id} window={d} key={d.id} /> + ))} - { - !workspace.windows.length && WorkspaceEmptyComponent ? <WorkspaceEmptyComponent /> : null - } + {!workspace.windows.length && WorkspaceEmptyComponent ? ( + <WorkspaceEmptyComponent /> + ) : null} </div> </div> <MainArea area={skeleton.mainArea} /> diff --git a/packages/workspace/src/resource-type.ts b/packages/workspace/src/resource-type.ts index 28d54e56b3..fb5597c6e6 100644 --- a/packages/workspace/src/resource-type.ts +++ b/packages/workspace/src/resource-type.ts @@ -1,6 +1,7 @@ -import { IPublicTypeResourceType } from '@alilc/lowcode-types'; +import { IPublicTypeResourceType } from '@lce/lowcode-types'; -export interface IResourceType extends Omit<IPublicTypeResourceType, 'resourceName' | 'resourceType'> { +export interface IResourceType + extends Omit<IPublicTypeResourceType, 'resourceName' | 'resourceType'> { name: string; type: 'editor' | 'webview'; @@ -9,8 +10,7 @@ export interface IResourceType extends Omit<IPublicTypeResourceType, 'resourceNa } export class ResourceType implements IResourceType { - constructor(readonly resourceTypeModel: IPublicTypeResourceType) { - } + constructor(readonly resourceTypeModel: IPublicTypeResourceType) {} get name() { return this.resourceTypeModel.resourceName; @@ -19,4 +19,4 @@ export class ResourceType implements IResourceType { get type() { return this.resourceTypeModel.resourceType; } -} \ No newline at end of file +} diff --git a/packages/workspace/src/resource.ts b/packages/workspace/src/resource.ts index 6e85183853..818c465526 100644 --- a/packages/workspace/src/resource.ts +++ b/packages/workspace/src/resource.ts @@ -1,6 +1,12 @@ -import { ISkeleton } from '@alilc/lowcode-editor-skeleton'; -import { IPublicTypeEditorView, IPublicResourceData, IPublicResourceTypeConfig, IBaseModelResource, IPublicEnumPluginRegisterLevel } from '@alilc/lowcode-types'; -import { Logger } from '@alilc/lowcode-utils'; +import { ISkeleton } from '@lce/lowcode-editor-skeleton'; +import { + IPublicTypeEditorView, + IPublicResourceData, + IPublicResourceTypeConfig, + IBaseModelResource, + IPublicEnumPluginRegisterLevel, +} from '@lce/lowcode-types'; +import { Logger } from '@lce/lowcode-utils'; import { BasicContext, IBasicContext } from './context/base-context'; import { ResourceType, IResourceType } from './resource-type'; import { IWorkspace } from './workspace'; @@ -41,7 +47,9 @@ export class Resource implements IResource { } get viewName() { - return this.resourceData.viewName || (this.resourceData as any).viewType || this.defaultViewName; + return ( + this.resourceData.viewName || (this.resourceData as any).viewType || this.defaultViewName + ); } get description() { @@ -82,11 +90,22 @@ export class Resource implements IResource { return this.resourceData.config; } - constructor(readonly resourceData: IPublicResourceData, readonly resourceType: IResourceType, readonly workspace: IWorkspace) { - this.context = new BasicContext(workspace, `resource-${resourceData.resourceName || resourceType.name}`, IPublicEnumPluginRegisterLevel.Resource); - this.resourceTypeInstance = resourceType.resourceTypeModel(this.context.innerPlugins._getLowCodePluginContext({ - pluginName: '', - }), this.options); + constructor( + readonly resourceData: IPublicResourceData, + readonly resourceType: IResourceType, + readonly workspace: IWorkspace, + ) { + this.context = new BasicContext( + workspace, + `resource-${resourceData.resourceName || resourceType.name}`, + IPublicEnumPluginRegisterLevel.Resource, + ); + this.resourceTypeInstance = resourceType.resourceTypeModel( + this.context.innerPlugins._getLowCodePluginContext({ + pluginName: '', + }), + this.options, + ); this.init(); if (this.resourceTypeInstance.editorViews) { this.resourceTypeInstance.editorViews.forEach((d: any) => { @@ -96,7 +115,15 @@ export class Resource implements IResource { if (!resourceType) { logger.error(`resourceType[${resourceType}] is unValid.`); } - this.children = this.resourceData?.children?.map(d => new Resource(d, this.workspace.getResourceType(d.resourceName || this.resourceType.name), this.workspace)) || []; + this.children = + this.resourceData?.children?.map( + (d) => + new Resource( + d, + this.workspace.getResourceType(d.resourceName || this.resourceType.name), + this.workspace, + ), + ) || []; } async init() { @@ -127,4 +154,4 @@ export class Resource implements IResource { getEditorView(name: string) { return this.editorViewMap.get(name); } -} \ No newline at end of file +} diff --git a/packages/workspace/src/view/editor-view.tsx b/packages/workspace/src/view/editor-view.tsx index 7ada5c911e..bed679c1fc 100644 --- a/packages/workspace/src/view/editor-view.tsx +++ b/packages/workspace/src/view/editor-view.tsx @@ -1,18 +1,19 @@ -import { BuiltinLoading } from '@alilc/lowcode-designer'; -import { engineConfig, observer } from '@alilc/lowcode-editor-core'; -import { - Workbench, -} from '@alilc/lowcode-editor-skeleton'; +import { BuiltinLoading } from '@lce/lowcode-designer'; +import { engineConfig, observer } from '@lce/lowcode-editor-core'; +import { Workbench } from '@lce/lowcode-editor-skeleton'; import { PureComponent } from 'react'; import { Context } from '../context/view-context'; export * from '../context/base-context'; @observer -export class EditorView extends PureComponent<{ - editorView: Context; - active: boolean; -}, any> { +export class EditorView extends PureComponent< + { + editorView: Context; + active: boolean; + }, + any +> { render() { const { active } = this.props; const editorView = this.props.editorView; diff --git a/packages/workspace/src/view/resource-view.tsx b/packages/workspace/src/view/resource-view.tsx index e2204dd505..52ca78b605 100644 --- a/packages/workspace/src/view/resource-view.tsx +++ b/packages/workspace/src/view/resource-view.tsx @@ -1,16 +1,19 @@ import { PureComponent } from 'react'; import { EditorView } from './editor-view'; -import { observer } from '@alilc/lowcode-editor-core'; +import { observer } from '@lce/lowcode-editor-core'; import { IResource } from '../resource'; import { IEditorWindow } from '../window'; import './resource-view.less'; -import { TopArea } from '@alilc/lowcode-editor-skeleton'; +import { TopArea } from '@lce/lowcode-editor-skeleton'; @observer -export class ResourceView extends PureComponent<{ - window: IEditorWindow; - resource: IResource; -}, any> { +export class ResourceView extends PureComponent< + { + window: IEditorWindow; + resource: IResource; + }, + any +> { render() { const { skeleton } = this.props.resource; const { editorViews } = this.props.window; @@ -18,19 +21,17 @@ export class ResourceView extends PureComponent<{ <div className="workspace-resource-view"> <TopArea area={skeleton.topArea} itemClassName="engine-actionitem" /> <div className="workspace-editor-body"> - { - Array.from(editorViews.values()).map((editorView: any) => { - return ( - <EditorView - key={editorView.name} - active={editorView.active} - editorView={editorView} - /> - ); - }) - } + {Array.from(editorViews.values()).map((editorView: any) => { + return ( + <EditorView + key={editorView.name} + active={editorView.active} + editorView={editorView} + /> + ); + })} </div> </div> ); } -} \ No newline at end of file +} diff --git a/packages/workspace/src/view/window-view.tsx b/packages/workspace/src/view/window-view.tsx index 65378bc9c4..f45c2c5e22 100644 --- a/packages/workspace/src/view/window-view.tsx +++ b/packages/workspace/src/view/window-view.tsx @@ -1,15 +1,18 @@ import { PureComponent } from 'react'; import { ResourceView } from './resource-view'; -import { engineConfig, observer } from '@alilc/lowcode-editor-core'; +import { engineConfig, observer } from '@lce/lowcode-editor-core'; import { EditorWindow } from '../window'; -import { BuiltinLoading } from '@alilc/lowcode-designer'; +import { BuiltinLoading } from '@lce/lowcode-designer'; import { DesignerView } from '../inner-plugins/webview'; @observer -export class WindowView extends PureComponent<{ - window: EditorWindow; - active: boolean; -}, any> { +export class WindowView extends PureComponent< + { + window: EditorWindow; + active: boolean; + }, + any +> { render() { const { active } = this.props; const { resource, initReady, url } = this.props.window; @@ -29,11 +32,8 @@ export class WindowView extends PureComponent<{ return ( <div className={`workspace-engine-main ${active ? 'active' : ''}`}> - <ResourceView - resource={resource} - window={this.props.window} - /> + <ResourceView resource={resource} window={this.props.window} /> </div> ); } -} \ No newline at end of file +} diff --git a/packages/workspace/src/window.ts b/packages/workspace/src/window.ts index cd64a9b112..1ab6917bd1 100644 --- a/packages/workspace/src/window.ts +++ b/packages/workspace/src/window.ts @@ -1,9 +1,9 @@ -import { uniqueId } from '@alilc/lowcode-utils'; -import { createModuleEventBus, IEventBus, makeObservable, obx } from '@alilc/lowcode-editor-core'; +import { uniqueId } from '@lce/lowcode-utils'; +import { createModuleEventBus, IEventBus, makeObservable, obx } from '@lce/lowcode-editor-core'; import { Context, IViewContext } from './context/view-context'; import { IWorkspace } from './workspace'; import { IResource } from './resource'; -import { IPublicModelWindow, IPublicTypeDisposable } from '@alilc/lowcode-types'; +import { IPublicModelWindow, IPublicTypeDisposable } from '@lce/lowcode-types'; interface IWindowCOnfig { title: string | undefined; @@ -12,7 +12,11 @@ interface IWindowCOnfig { sleep?: boolean; } -export interface IEditorWindow extends Omit<IPublicModelWindow<IResource>, 'changeViewType' | 'currentEditorView' | 'editorViews'> { +export interface IEditorWindow + extends Omit< + IPublicModelWindow<IResource>, + 'changeViewType' | 'currentEditorView' | 'editorViews' + > { readonly resource: IResource; editorViews: Map<string, IViewContext>; @@ -41,7 +45,7 @@ export enum WINDOW_STATE { inactive = 'inactive', // 销毁 - destroyed = 'destroyed' + destroyed = 'destroyed', } export class EditorWindow implements IEditorWindow { @@ -69,7 +73,11 @@ export class EditorWindow implements IEditorWindow { return this._editorView; } - constructor(readonly resource: IResource, readonly workspace: IWorkspace, private config: IWindowCOnfig) { + constructor( + readonly resource: IResource, + readonly workspace: IWorkspace, + private config: IWindowCOnfig, + ) { makeObservable(this); this.title = config.title; this.icon = resource.icon; @@ -99,7 +107,7 @@ export class EditorWindow implements IEditorWindow { return; } - Object.keys(newSchema).forEach(key => { + Object.keys(newSchema).forEach((key) => { const view = this.editorViews.get(key); view?.project.importSchema(newSchema[key]); }); @@ -133,10 +141,11 @@ export class EditorWindow implements IEditorWindow { async init() { await this.initViewTypes(); await this.execViewTypesInit(); - Promise.all(Array.from(this.editorViews.values()).map((d) => d.onSimulatorRendererReady())) - .then(() => { - this.workspace.emitWindowRendererReady(); - }); + Promise.all( + Array.from(this.editorViews.values()).map((d) => d.onSimulatorRendererReady()), + ).then(() => { + this.workspace.emitWindowRendererReady(); + }); this.url = await this.resource.url(); this.setDefaultViewName(); this.initReady = true; @@ -250,4 +259,4 @@ export class EditorWindow implements IEditorWindow { get innerPlugins() { return this.editorView?.innerPlugins; } -} \ No newline at end of file +} diff --git a/packages/workspace/src/workspace.ts b/packages/workspace/src/workspace.ts index 9f1abaa0fb..ad5940aab9 100644 --- a/packages/workspace/src/workspace.ts +++ b/packages/workspace/src/workspace.ts @@ -1,12 +1,27 @@ -import { IDesigner, ILowCodePluginManager, LowCodePluginManager } from '@alilc/lowcode-designer'; -import { createModuleEventBus, Editor, IEditor, IEventBus, makeObservable, obx } from '@alilc/lowcode-editor-core'; -import { IPublicApiPlugins, IPublicApiWorkspace, IPublicEnumPluginRegisterLevel, IPublicResourceList, IPublicTypeDisposable, IPublicTypeResourceType, IShellModelFactory } from '@alilc/lowcode-types'; +import { IDesigner, ILowCodePluginManager, LowCodePluginManager } from '@lce/lowcode-designer'; +import { + createModuleEventBus, + Editor, + IEditor, + IEventBus, + makeObservable, + obx, +} from '@lce/lowcode-editor-core'; +import { + IPublicApiPlugins, + IPublicApiWorkspace, + IPublicEnumPluginRegisterLevel, + IPublicResourceList, + IPublicTypeDisposable, + IPublicTypeResourceType, + IShellModelFactory, +} from '@lce/lowcode-types'; import { BasicContext } from './context/base-context'; import { EditorWindow, WINDOW_STATE } from './window'; import type { IEditorWindow } from './window'; import { IResource, Resource } from './resource'; import { IResourceType, ResourceType } from './resource-type'; -import { ISkeleton } from '@alilc/lowcode-editor-skeleton'; +import { ISkeleton } from '@lce/lowcode-editor-skeleton'; enum EVENT { CHANGE_WINDOW = 'change_window', @@ -20,11 +35,16 @@ enum EVENT { const CHANGE_EVENT = 'resource.list.change'; -export interface IWorkspace extends Omit<IPublicApiWorkspace< - LowCodePluginManager, - IEditorWindow ->, 'resourceList' | 'plugins' | 'openEditorWindow' | 'removeEditorWindow'> { - readonly registryInnerPlugin: (designer: IDesigner, editor: Editor, plugins: IPublicApiPlugins) => Promise<IPublicTypeDisposable>; +export interface IWorkspace + extends Omit< + IPublicApiWorkspace<LowCodePluginManager, IEditorWindow>, + 'resourceList' | 'plugins' | 'openEditorWindow' | 'removeEditorWindow' + > { + readonly registryInnerPlugin: ( + designer: IDesigner, + editor: Editor, + plugins: IPublicApiPlugins, + ) => Promise<IPublicTypeDisposable>; readonly shellModelFactory: IShellModelFactory; @@ -66,7 +86,13 @@ export interface IWorkspace extends Omit<IPublicApiWorkspace< /** * @deprecated */ - openEditorWindow(name: string, title: string, options: Object, viewName?: string, sleep?: boolean): Promise<void>; + openEditorWindow( + name: string, + title: string, + options: Object, + viewName?: string, + sleep?: boolean, + ): Promise<void>; } export class Workspace implements IWorkspace { @@ -108,15 +134,22 @@ export class Workspace implements IWorkspace { @obx.ref window: IEditorWindow; - windowQueue: ({ - name: string; - title: string; - options: Object; - viewName?: string; - } | IResource)[] = []; + windowQueue: ( + | { + name: string; + title: string; + options: Object; + viewName?: string; + } + | IResource + )[] = []; constructor( - readonly registryInnerPlugin: (designer: IDesigner, editor: IEditor, plugins: IPublicApiPlugins) => Promise<IPublicTypeDisposable>, + readonly registryInnerPlugin: ( + designer: IDesigner, + editor: IEditor, + plugins: IPublicApiPlugins, + ) => Promise<IPublicTypeDisposable>, readonly shellModelFactory: any, ) { this.context = new BasicContext(this, '', IPublicEnumPluginRegisterLevel.Workspace); @@ -133,7 +166,12 @@ export class Workspace implements IWorkspace { if (windowInfo instanceof Resource) { this.openEditorWindowByResource(windowInfo); } else if (windowInfo) { - this.openEditorWindow(windowInfo.name, windowInfo.title, windowInfo.options, windowInfo.viewName); + this.openEditorWindow( + windowInfo.name, + windowInfo.title, + windowInfo.options, + windowInfo.viewName, + ); } } @@ -142,10 +180,14 @@ export class Workspace implements IWorkspace { return; } const resourceName = this.defaultResourceType.name; - const resource = new Resource({ - resourceName, - options: {}, - }, this.defaultResourceType, this); + const resource = new Resource( + { + resourceName, + options: {}, + }, + this.defaultResourceType, + this, + ); this.window = new EditorWindow(resource, this, { title: resource.title, }); @@ -174,7 +216,9 @@ export class Workspace implements IWorkspace { } setResourceList(resourceList: IPublicResourceList) { - this.resourceList = resourceList.map(d => new Resource(d, this.getResourceType(d.resourceName), this)); + this.resourceList = resourceList.map( + (d) => new Resource(d, this.getResourceType(d.resourceName), this), + ); this.emitter.emit(CHANGE_EVENT, resourceList); } @@ -207,7 +251,7 @@ export class Workspace implements IWorkspace { } removeEditorWindowById(id: string) { - const index = this.windows.findIndex(d => (d.id === id)); + const index = this.windows.findIndex((d) => d.id === id); this.remove(index); } @@ -230,12 +274,14 @@ export class Workspace implements IWorkspace { } removeEditorWindow(resourceName: string, id: string) { - const index = this.windows.findIndex(d => (d.resource?.name === resourceName && (d.title === id || d.resource.id === id))); + const index = this.windows.findIndex( + (d) => d.resource?.name === resourceName && (d.title === id || d.resource.id === id), + ); this.remove(index); } removeEditorWindowByResource(resource: IResource) { - const index = this.windows.findIndex(d => (d.resource?.id === resource.id)); + const index = this.windows.findIndex((d) => d.resource?.id === resource.id); this.remove(index); } @@ -260,7 +306,7 @@ export class Workspace implements IWorkspace { this.window?.updateState(WINDOW_STATE.inactive); - const filterWindows = this.windows.filter(d => (d.resource?.id === resource.id)); + const filterWindows = this.windows.filter((d) => d.resource?.id === resource.id); if (filterWindows && filterWindows.length) { this.window = filterWindows[0]; if (!sleep && this.window.sleep) { @@ -293,10 +339,19 @@ export class Workspace implements IWorkspace { this.window?.updateState(WINDOW_STATE.active); } - async openEditorWindow(name: string, title: string, options: Object, viewName?: string, sleep?: boolean) { + async openEditorWindow( + name: string, + title: string, + options: Object, + viewName?: string, + sleep?: boolean, + ) { if (this.window && !this.window.sleep && !this.window?.initReady && !sleep) { this.windowQueue.push({ - name, title, options, viewName, + name, + title, + options, + viewName, }); return; } @@ -306,7 +361,9 @@ export class Workspace implements IWorkspace { return; } this.window?.updateState(WINDOW_STATE.inactive); - const filterWindows = this.windows.filter(d => (d.resource?.name === name && d.resource.title == title) || (d.resource.id == title)); + const filterWindows = this.windows.filter( + (d) => (d.resource?.name === name && d.resource.title == title) || d.resource.id == title, + ); if (filterWindows && filterWindows.length) { this.window = filterWindows[0]; if (!sleep && this.window.sleep) { @@ -318,12 +375,16 @@ export class Workspace implements IWorkspace { this.window?.updateState(WINDOW_STATE.active); return; } - const resource = new Resource({ - resourceName: name, - title, - options, - id: title?.toString(), - }, resourceType, this); + const resource = new Resource( + { + resourceName: name, + title, + options, + id: title?.toString(), + }, + resourceType, + this, + ); const window = new EditorWindow(resource, this, { title, options, diff --git a/scripts/build.sh b/scripts/build.sh index 751e9094fe..e294ddb91b 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,26 +3,26 @@ set -e lerna run build \ - --scope @alilc/lowcode-types \ - --scope @alilc/lowcode-utils \ - --scope @alilc/lowcode-shell \ - --scope @alilc/lowcode-editor-core \ - --scope @alilc/lowcode-editor-skeleton \ - --scope @alilc/lowcode-designer \ - --scope @alilc/lowcode-plugin-designer \ - --scope @alilc/lowcode-plugin-command \ - --scope @alilc/lowcode-plugin-outline-pane \ - --scope @alilc/lowcode-react-renderer \ - --scope @alilc/lowcode-react-simulator-renderer \ - --scope @alilc/lowcode-renderer-core \ - --scope @alilc/lowcode-workspace \ - --scope @alilc/lowcode-engine \ + --scope @lce/lowcode-types \ + --scope @lce/lowcode-utils \ + --scope @lce/lowcode-shell \ + --scope @lce/lowcode-editor-core \ + --scope @lce/lowcode-editor-skeleton \ + --scope @lce/lowcode-designer \ + --scope @lce/lowcode-plugin-designer \ + --scope @lce/lowcode-plugin-command \ + --scope @lce/lowcode-plugin-outline-pane \ + --scope @lce/lowcode-react-renderer \ + --scope @lce/lowcode-react-simulator-renderer \ + --scope @lce/lowcode-renderer-core \ + --scope @lce/lowcode-workspace \ + --scope @lce/lowcode-engine \ --stream lerna run build:umd \ - --scope @alilc/lowcode-engine \ - --scope @alilc/lowcode-react-simulator-renderer \ - --scope @alilc/lowcode-react-renderer \ + --scope @lce/lowcode-engine \ + --scope @lce/lowcode-react-simulator-renderer \ + --scope @lce/lowcode-react-renderer \ --stream cp ./packages/react-simulator-renderer/dist/js/* ./packages/engine/dist/js/ diff --git a/scripts/setup-for-test.sh b/scripts/setup-for-test.sh index b0734c362f..fe7e866390 100755 --- a/scripts/setup-for-test.sh +++ b/scripts/setup-for-test.sh @@ -7,7 +7,7 @@ find ./packages -type f -name "package-lock.json" -exec rm -f {} \; lerna bootstrap lerna exec --stream \ - --scope @alilc/lowcode-editor-core \ - --scope @alilc/lowcode-types \ - --scope @alilc/lowcode-utils \ + --scope @lce/lowcode-editor-core \ + --scope @lce/lowcode-types \ + --scope @lce/lowcode-utils \ -- npm run build diff --git a/scripts/start.js b/scripts/start.js index e1a83ea732..5882249a31 100644 --- a/scripts/start.js +++ b/scripts/start.js @@ -3,8 +3,13 @@ const os = require('os'); const execa = require('execa'); async function start() { - const [, , pkgName = '@alilc/lowcode-ignitor'] = process.argv; - await execa.command(`lerna exec --scope ${pkgName} -- npm start`, { stdio: 'inherit', encoding: 'utf-8' }); + const [, , pkgName = '@lce/lowcode-ignitor'] = process.argv; + await execa.command(`lerna exec --scope ${pkgName} -- npm start`, { + stdio: 'inherit', + encoding: 'utf-8', + }); } -os.type() === 'Windows_NT' ? start() : execa.command('scripts/start.sh', { stdio: 'inherit', encoding: 'utf-8' }); +os.type() === 'Windows_NT' + ? start() + : execa.command('scripts/start.sh', { stdio: 'inherit', encoding: 'utf-8' }); diff --git a/scripts/start.sh b/scripts/start.sh index 88593ebe03..a8c66b2ae9 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -pkgName="@alilc/lowcode-ignitor" +pkgName="@lce/lowcode-ignitor" if [ "$1" ]; then pkgName="$1" diff --git a/scripts/sync.sh b/scripts/sync.sh index 3edac03845..6d5d8eb04a 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -1,17 +1,17 @@ #!/usr/bin/env bash # sync all packages to alibaba intranet registry -tnpm sync @alilc/lowcode-types -tnpm sync @alilc/lowcode-utils -tnpm sync @alilc/lowcode-shell -tnpm sync @alilc/lowcode-editor-core -tnpm sync @alilc/lowcode-editor-skeleton -tnpm sync @alilc/lowcode-designer -tnpm sync @alilc/lowcode-plugin-designer -tnpm sync @alilc/lowcode-plugin-outline-pane -tnpm sync @alilc/lowcode-renderer-core -tnpm sync @alilc/lowcode-react-renderer -tnpm sync @alilc/lowcode-react-simulator-renderer -tnpm sync @alilc/lowcode-engine -tnpm sync @alilc/lowcode-workspace -tnpm sync @alilc/lowcode-plugin-command \ No newline at end of file +tnpm sync @lce/lowcode-types +tnpm sync @lce/lowcode-utils +tnpm sync @lce/lowcode-shell +tnpm sync @lce/lowcode-editor-core +tnpm sync @lce/lowcode-editor-skeleton +tnpm sync @lce/lowcode-designer +tnpm sync @lce/lowcode-plugin-designer +tnpm sync @lce/lowcode-plugin-outline-pane +tnpm sync @lce/lowcode-renderer-core +tnpm sync @lce/lowcode-react-renderer +tnpm sync @lce/lowcode-react-simulator-renderer +tnpm sync @lce/lowcode-engine +tnpm sync @lce/lowcode-workspace +tnpm sync @lce/lowcode-plugin-command \ No newline at end of file From ff6664e9750e0055af2c1a57f63b9fe20abec1ed Mon Sep 17 00:00:00 2001 From: mazhaobo <mazhaobo@hoteamsoft.com> Date: Sat, 21 Sep 2024 21:30:59 +0800 Subject: [PATCH 03/94] =?UTF-8?q?chore:=20=E5=9B=9E=E6=92=A4=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E9=83=A8=E5=88=86=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/api/plugins.md | 2 +- docs/docs/api/setters.md | 2 +- docs/docs/guide/create/useEditor.md | 6 +++--- docs/docs/guide/design/setter.md | 2 +- packages/engine/README-zh_CN.md | 2 +- packages/engine/README.md | 2 +- packages/engine/build.umd.json | 2 +- packages/engine/package.json | 2 +- packages/engine/src/inner-plugins/setter-registry.ts | 2 +- packages/ignitor/build.json | 2 +- packages/react-simulator-renderer/build.umd.json | 2 +- tsconfig.json | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/docs/api/plugins.md b/docs/docs/api/plugins.md index cead039716..19a462867a 100644 --- a/docs/docs/api/plugins.md +++ b/docs/docs/api/plugins.md @@ -249,7 +249,7 @@ your-plugin/package.json ```json { - "name": "@alilc/lowcode-plugin-debug", + "name": "@lce/lowcode-plugin-debug", "lcMeta": { "pluginName": "debug", "meta": { diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md index 1916b033a6..6370dff3ec 100644 --- a/docs/docs/api/setters.md +++ b/docs/docs/api/setters.md @@ -73,7 +73,7 @@ registerSetter( ```typescript import { setters, skeleton } from '@lce/lowcode-engine'; -import { setterMap, pluginMap } from '@lce/lowcode-engine-ext'; +import { setterMap, pluginMap } from '@alilc/lowcode-engine-ext'; import { IPublicModelPluginContext } from '@lce/lowcode-types'; const SetterRegistry = (ctx: IPublicModelPluginContext) => { diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 884c674b77..39d45201cd 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -72,7 +72,7 @@ sidebar_position: 0 <!-- 低代码引擎官方扩展的样式 --> <link rel="stylesheet" - href="https://uipaas-assets.com/prod/npm/@lce/lowcode-engine-ext/1.0.5/dist/css/engine-ext.css" + href="https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine-ext/1.0.5/dist/css/engine-ext.css" /> <!-- React,可替换为 production 包 --> @@ -96,7 +96,7 @@ sidebar_position: 0 <!-- 低代码引擎官方扩展的主包 --> <script crossorigin="anonymous" - src="https://uipaas-assets.com/prod/npm/@lce/lowcode-engine-ext/1.0.5/dist/js/engine-ext.js" + src="https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine-ext/1.0.5/dist/js/engine-ext.js" ></script> ``` @@ -116,7 +116,7 @@ sidebar_position: 0 "prop-types": "var window.PropTypes", "@alifd/next": "var window.Next", "@lce/lowcode-engine": "var window.AliLowCodeEngine", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var window.moment", "lodash": "var window._" } diff --git a/docs/docs/guide/design/setter.md b/docs/docs/guide/design/setter.md index e3790b4663..dc2412eca6 100644 --- a/docs/docs/guide/design/setter.md +++ b/docs/docs/guide/design/setter.md @@ -18,7 +18,7 @@ sidebar_position: 6 ## npm 包与仓库信息 -- npm 包:@lce/lowcode-engine-ext +- npm 包:@alilc/lowcode-engine-ext - 仓库:[https://github.com/alibaba/lowcode-engine-ext](https://github.com/alibaba/lowcode-engine-ext) ## 设置器模块原理 diff --git a/packages/engine/README-zh_CN.md b/packages/engine/README-zh_CN.md index 8bd59a83ce..62e25640d0 100644 --- a/packages/engine/README-zh_CN.md +++ b/packages/engine/README-zh_CN.md @@ -113,7 +113,7 @@ init(document.getElementById('lce')); { "externals": { "@lce/lowcode-engine": "var window.AliLowCodeEngine", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` diff --git a/packages/engine/README.md b/packages/engine/README.md index 0be0d809af..ad91e13f5f 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -92,7 +92,7 @@ init(document.getElementById('lce')); { "externals": { "@lce/lowcode-engine": "var window.AliLowCodeEngine", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` diff --git a/packages/engine/build.umd.json b/packages/engine/build.umd.json index 74f3f31110..92d5a1bfd3 100644 --- a/packages/engine/build.umd.json +++ b/packages/engine/build.umd.json @@ -15,7 +15,7 @@ "monaco-editor/esm/vs/editor/editor.api": "var window.monaco", "monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco", "@alifd/next": "var Next", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/packages/engine/package.json b/packages/engine/package.json index 03d84c5775..aef7bc0abc 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -22,7 +22,7 @@ "@lce/lowcode-designer": "1.3.2", "@lce/lowcode-editor-core": "1.3.2", "@lce/lowcode-editor-skeleton": "1.3.2", - "@lce/lowcode-engine-ext": "^1.0.0", + "@alilc/lowcode-engine-ext": "^1.0.0", "@lce/lowcode-plugin-command": "1.3.2", "@lce/lowcode-plugin-designer": "1.3.2", "@lce/lowcode-plugin-outline-pane": "1.3.2", diff --git a/packages/engine/src/inner-plugins/setter-registry.ts b/packages/engine/src/inner-plugins/setter-registry.ts index 6ca9ae3ab9..701eaca406 100644 --- a/packages/engine/src/inner-plugins/setter-registry.ts +++ b/packages/engine/src/inner-plugins/setter-registry.ts @@ -6,7 +6,7 @@ export const setterRegistry = (ctx: IPublicModelPluginContext) => { init() { const { config } = ctx; if (config.get('disableDefaultSetters')) return; - const builtinSetters = require('@lce/lowcode-engine-ext')?.setters; + const builtinSetters = require('@alilc/lowcode-engine-ext')?.setters; if (builtinSetters) { ctx.setters.registerSetter(builtinSetters); } diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json index 57fcb68b17..3b86fbdfd3 100644 --- a/packages/ignitor/build.json +++ b/packages/ignitor/build.json @@ -17,7 +17,7 @@ "@alifd/next": "var window.Next", "rax": "var window.Rax", "@lce/lowcode-engine": "var window.AliLowCodeEngine", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/packages/react-simulator-renderer/build.umd.json b/packages/react-simulator-renderer/build.umd.json index b2f73337c0..1052bb0765 100644 --- a/packages/react-simulator-renderer/build.umd.json +++ b/packages/react-simulator-renderer/build.umd.json @@ -10,7 +10,7 @@ "react-dom": "var window.ReactDOM", "prop-types": "var window.PropTypes", "@alifd/next": "var Next", - "@lce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/tsconfig.json b/tsconfig.json index a063661419..5b464faa3a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -33,7 +33,7 @@ "baseUrl": "./packages", "useDefineForClassFields": true, "paths": { - "@alilc/lowcode-*": ["./*/src"] + "@lce/lowcode-*": ["./*/src"] }, "outDir": "lib" }, From 55eb0fa735f5a6be6de2166b919da5c5a07e8b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=86=E6=B3=A2?= <530762087@qq.com> Date: Sat, 21 Sep 2024 23:01:48 +0800 Subject: [PATCH 04/94] =?UTF-8?q?chore:=20=E6=9B=BF=E6=8D=A2jest=20config?= =?UTF-8?q?=E4=B8=AD=E7=9A=84moduleNameMapper=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/jest.config.js | 10 ++++------ packages/editor-core/jest.config.js | 10 ++++------ packages/editor-skeleton/jest.config.js | 17 +++++------------ packages/ignitor/jest.config.js | 10 ++++------ packages/plugin-command/jest.config.js | 15 +++++---------- packages/react-renderer/jest.config.js | 16 +++++----------- .../react-simulator-renderer/jest.config.js | 16 +++++----------- packages/renderer-core/jest.config.js | 15 +++++---------- packages/utils/jest.config.js | 13 ++++--------- 9 files changed, 41 insertions(+), 81 deletions(-) diff --git a/packages/designer/jest.config.js b/packages/designer/jest.config.js index 3684a48acb..8633c5886d 100644 --- a/packages/designer/jest.config.js +++ b/packages/designer/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -22,9 +22,7 @@ const jestConfig = { // testMatch: ['**/selection.test.ts'], // testMatch: ['**/plugin/sequencify.test.ts'], // testMatch: ['**/builtin-simulator/utils/parse-metadata.test.ts'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], setupFiles: ['./tests/fixtures/unhandled-rejection.ts'], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: false, @@ -49,6 +47,6 @@ const jestConfig = { // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/editor-core/jest.config.js b/packages/editor-core/jest.config.js index e8441e3dbb..0f5fdf78da 100644 --- a/packages/editor-core/jest.config.js +++ b/packages/editor-core/jest.config.js @@ -1,12 +1,10 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: false, collectCoverageFrom: [ @@ -21,6 +19,6 @@ const jestConfig = { // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/editor-skeleton/jest.config.js b/packages/editor-skeleton/jest.config.js index 8a9b2000ca..661ae68239 100644 --- a/packages/editor-skeleton/jest.config.js +++ b/packages/editor-skeleton/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -9,21 +9,14 @@ const jestConfig = { // // '^.+\\.(ts|tsx)$': 'ts-jest', // // '^.+\\.(js|jsx)$': 'babel-jest', // }, - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: false, - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!**/node_modules/**', - '!**/vendor/**', - ], + collectCoverageFrom: ['src/**/*.ts', '!src/**/*.d.ts', '!**/node_modules/**', '!**/vendor/**'], }; // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/ignitor/jest.config.js b/packages/ignitor/jest.config.js index 788c0ac79a..b6c753f857 100644 --- a/packages/ignitor/jest.config.js +++ b/packages/ignitor/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -15,9 +15,7 @@ const jestConfig = { // testMatch: ['**/document-model.test.ts'], // testMatch: ['**/prop.test.ts'], // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], setupFiles: ['./tests/fixtures/unhandled-rejection.ts'], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: false, @@ -42,6 +40,6 @@ const jestConfig = { // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/plugin-command/jest.config.js b/packages/plugin-command/jest.config.js index 822a526b7d..dca1ea3ed2 100644 --- a/packages/plugin-command/jest.config.js +++ b/packages/plugin-command/jest.config.js @@ -1,22 +1,17 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: true, - collectCoverageFrom: [ - 'src/**/*.ts', - 'src/**/*.tsx', - ], + collectCoverageFrom: ['src/**/*.ts', 'src/**/*.tsx'], }; // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/react-renderer/jest.config.js b/packages/react-renderer/jest.config.js index df1400719b..8229911137 100644 --- a/packages/react-renderer/jest.config.js +++ b/packages/react-renderer/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -13,20 +13,14 @@ const jestConfig = { // testMatch: ['**/designer/builtin-hotkey.test.ts'], // testMatch: ['**/plugin/plugin-manager.test.ts'], // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: true, - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!**/node_modules/**', - ], + collectCoverageFrom: ['src/**/*.ts', '!src/**/*.d.ts', '!**/node_modules/**'], }; // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/react-simulator-renderer/jest.config.js b/packages/react-simulator-renderer/jest.config.js index 5378ef5380..557da3a8e4 100644 --- a/packages/react-simulator-renderer/jest.config.js +++ b/packages/react-simulator-renderer/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -13,21 +13,15 @@ const jestConfig = { // testMatch: ['**/designer/builtin-hotkey.test.ts'], // testMatch: ['**/plugin/plugin-manager.test.ts'], // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], setupFiles: ['./test/utils/host.ts'], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: true, - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!**/node_modules/**', - ], + collectCoverageFrom: ['src/**/*.ts', '!src/**/*.d.ts', '!**/node_modules/**'], }; // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/renderer-core/jest.config.js b/packages/renderer-core/jest.config.js index 1ea4204de5..c4cf3aa941 100644 --- a/packages/renderer-core/jest.config.js +++ b/packages/renderer-core/jest.config.js @@ -1,7 +1,7 @@ const fs = require('fs'); const { join } = require('path'); const esModules = [].join('|'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { // transform: { @@ -14,13 +14,8 @@ const jestConfig = { // testMatch: ['**/utils/common.test.ts'], // testMatch: ['**/*/leaf.test.tsx'], // testMatch: ['**/*/is-use-loop.test.ts'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], - setupFiles: [ - './tests/fixtures/unhandled-rejection.ts', - './tests/setup.ts', - ], + transformIgnorePatterns: [`/node_modules/(?!${esModules})/`], + setupFiles: ['./tests/fixtures/unhandled-rejection.ts', './tests/setup.ts'], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: true, collectCoverageFrom: [ @@ -33,6 +28,6 @@ const jestConfig = { // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; diff --git a/packages/utils/jest.config.js b/packages/utils/jest.config.js index 0631fa00c9..1636f82a3e 100644 --- a/packages/utils/jest.config.js +++ b/packages/utils/jest.config.js @@ -1,21 +1,16 @@ const fs = require('fs'); const { join } = require('path'); -const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); +const pkgNames = fs.readdirSync(join('..')).filter((pkgName) => !pkgName.startsWith('.')); const jestConfig = { moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: false, - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!**/node_modules/**', - '!**/vendor/**', - ], + collectCoverageFrom: ['src/**/*.ts', '!src/**/*.d.ts', '!**/node_modules/**', '!**/vendor/**'], setupFilesAfterEnv: ['./jest.setup.js'], }; // 只对本仓库内的 pkg 做 mapping jestConfig.moduleNameMapper = {}; -jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; +jestConfig.moduleNameMapper[`^@lce/lowcode\\-(${pkgNames.join('|')})$`] = '<rootDir>/../$1/src'; -module.exports = jestConfig; \ No newline at end of file +module.exports = jestConfig; From 318afcc4bcbedc2980cc04f8acc4d9d932a78697 Mon Sep 17 00:00:00 2001 From: mazhaobo <mazhaobo@hoteamsoft.com> Date: Mon, 30 Sep 2024 16:35:29 +0800 Subject: [PATCH 05/94] =?UTF-8?q?chore:=20=E8=B0=83=E6=95=B4=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=AF=B4=E6=98=8E=EF=BC=8C=E5=8D=87=E7=BA=A7f2elint?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E4=BB=A5=E6=94=AF=E6=8C=81=E6=9B=B4=E9=AB=98?= =?UTF-8?q?node=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/participate/flow.md | 24 +++++++++++++++--------- docs/docs/participate/index.md | 2 +- package.json | 7 ++----- packages/engine/README-zh_CN.md | 14 +++++++------- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/docs/docs/participate/flow.md b/docs/docs/participate/flow.md index b8b804e123..77c94a3e0a 100644 --- a/docs/docs/participate/flow.md +++ b/docs/docs/participate/flow.md @@ -2,10 +2,13 @@ title: 研发协作流程 sidebar_position: 2 --- + ## 代码风格 + 引擎项目配置了 eslint 和 stylelint,在每次 git commit 前都会检查代码风格,假如有报错,请修改后再提交。(**严禁 -n 提交,-n 也逃脱不了 github workflow 的 lint 检查,放弃吧,骚年~**) ## 测试机制 + 每次提交代码前,务必本地跑一次单元测试,通过后再提交 MR。 假如涉及新的功能,需要**补充相应的单元测试**,目前引擎核心模块的单测覆盖率都在 80%+,假如降低了覆盖率,将会不予以通过。 @@ -15,12 +18,15 @@ sidebar_position: 2 1. 项目根目录下执行 npm run build 2. 只改了一个包,比如 designer,则在 designer 目录下,执行 npm test 3. (or)改了多个包,则在根目录下执行 npm test + ## commit 风格 + 几点要求: 1. commit message 格式遵循 [ConvensionalCommits](https://www.conventionalcommits.org/en/v1.0.0/#summary) <img src="https://img.alicdn.com/imgextra/i3/O1CN01M9UzVM1iqYpyxECdV_!!6000000004464-2-tps-2070-594.png" width="700"/> + 2. 请按照一个 bugfix / feature 对应一个 commit,假如不是,请 rebase 后再提交 MR,不要一堆无用的、试验性的 commit。 好处:从引擎的整体 commit 历史来看,会很清晰,**每个 commit 完成一件确定的事,changelog 也能自动生成**。另外,假如因为某个 commit 导致了 bug,也很容易通过 rebase drop 等方式快速修复。 @@ -30,8 +36,8 @@ sidebar_position: 2 - main 分支,最稳定的分支,跟 npm latest 包的内容保持一致 - develop 分支,开发分支,拥有最新的、已经验证过的 feature / bugfix,Pull Request 的**目标合入分支** - release 分支 - - 正式发布分支,命名规则为 release/x.y.z,一般从 develop 拉出来进行发布,x.y.z 为待发布的版本号 - - beta 发布分支,命名规则为 release/x.y.z-beta(\.\d+)?,可以快速验证修改,发布 npm beta 版本。 + - 正式发布分支,命名规则为 release/x.y.z,一般从 develop 拉出来进行发布,x.y.z 为待发布的版本号 + - beta 发布分支,命名规则为 release/x.y.z-beta(\.\d+)?,可以快速验证修改,发布 npm beta 版本。 验证通过后,因为 beta 发布分支上会存在无用的 commit(比如 lerna 修改 package.json 这种),所以不直接 PR 到 develop,而是从 develop 拉分支,从 beta 发布分支 cherry pick 有用的 commit 到新分支,然后 PR 到 develop。 @@ -47,11 +53,12 @@ sidebar_position: 2 - 特殊情况紧急迭代随时发 - 大 Feature 迭代,每年 2 - 4 次 - ### 发布步骤 + > **发布需要权限,如果提 PR 之后着急发布可以**[**加入贡献者交流群**](../participate/#核心贡献者交流)**。** #### 发正式版 + 步骤如下(以发布 1.0.0 版本为例): 1. git checkout develop @@ -82,6 +89,7 @@ sidebar_position: 2 如果是发布 beta 版本,步骤如下(以发布 1.0.1 版本为例): #### 发某 y 位版本首个 beta,如 1.1.0-beta.0 + 1. 拉 develop 分支 ```bash git checkout develop @@ -110,6 +118,7 @@ sidebar_position: 2 ``` #### 发某 z 位版本首个 beta,如 1.0.1-beta.0 + 1. 拉 develop 分支 ```bash git checkout develop @@ -138,6 +147,7 @@ sidebar_position: 2 ``` #### 发某版本非首个 beta,如 1.0.1-beta.0 -> 1.0.1-beta.1 + 1. 切换到 release 分支 ```bash git checkout release/1.0.1-beta @@ -150,7 +160,7 @@ sidebar_position: 2 ```bash npm run build ``` -4. 发布,此处需有 @alilc scope 发包权限 ***此处命令与发首个 beta 时有变化*** +4. 发布,此处需有 @alilc scope 发包权限 **_此处命令与发首个 beta 时有变化_** ```bash npm run pub:prerelease ``` @@ -160,9 +170,8 @@ sidebar_position: 2 tnpm run syncOss ``` - - ## DEMO 发布机制 + 1. **修改版本号** 手动修改 package.json 的版本号 2. **build** @@ -182,6 +191,3 @@ sidebar_position: 2 tnpm run sync tnpm run syncOss ``` - -**官网生效** -需要在通过阿里内部系统更新 demo 版本 diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md index a72f5b70db..05e37588c6 100644 --- a/docs/docs/participate/index.md +++ b/docs/docs/participate/index.md @@ -5,7 +5,7 @@ sidebar_position: 0 ### 环境准备 -开发 LowcodeEngine 需要 Node.js 16+。 +开发 LowcodeEngine 需要 Node.js 18+。 推荐使用 nvm 管理 Node.js,避免权限问题的同时,还能够随时切换当前使用的 Node.js 的版本。 diff --git a/package.json b/package.json index 213bbc1c45..e538518fb9 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "devDependencies": { "del": "^6.1.1", "execa": "^5.1.1", - "f2elint": "^2.0.1", + "f2elint": "^4.8.0", "gulp": "^4.0.2", "husky": "^7.0.4", "lerna": "^4.0.0", @@ -58,9 +58,6 @@ "babel-jest": "^26.5.2", "@alilc/lowcode-test-mate": "^1.0.1" }, - "engines": { - "node": ">=14.17.0 <18" - }, "tnpm": { "mode": "yarn", "lockfile": "enable" @@ -69,5 +66,5 @@ "typescript": "4.6.2", "react-error-overlay": "6.0.9" }, - "repository": "git@github.com:alibaba/lowcode-engine.git" + "repository": "git@github.com:zboma/lowcode-engine.git" } diff --git a/packages/engine/README-zh_CN.md b/packages/engine/README-zh_CN.md index 62e25640d0..82e84f9c7a 100644 --- a/packages/engine/README-zh_CN.md +++ b/packages/engine/README-zh_CN.md @@ -10,7 +10,7 @@ 本项目将转变部分思路,舍弃部分外围的功能开发,以提供核心低码功能为主,做纯粹低代码内核。如 workspace 等模块将降低优先级。 -更多的内部模块将转移到 plugins 中,作为默认插件提供,而不是封装到内部。整体向更开放的开发方向转变。 +更多的内部模块将转移到 plugins 中(未完成),作为默认插件提供,而不是封装到内部。整体向更开放的开发方向转变。 同时,针对各子模块,将通过 shell 模块开放更多的接口,以支持更多定制化需求。 @@ -23,11 +23,11 @@ - 主要工程的命名空间调整 - 修复积压问题 -- <p align="center"> - <a href="https://lowcode-engine.cn"> - <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01i8K9cD1d0HU7TjDtv_!!6000000003673-2-tps-500-591.png"> - </a> - </p> + +## 联系方式 +微信搜索 kunsile-002 添加我的微信,或者扫码加群: + +<img src="https://jxxg-wangjian.oss-cn-beijing.aliyuncs.com/static/lce-group-qrcode.jpg" width="200" /> <h1 align="center">LowCodeEngine</h1> @@ -35,7 +35,7 @@ 一套面向扩展设计的企业级低代码技术体系 -<!-- [![NPM version][npm-image]][npm-url] [![NPM downloads][download-image]][download-url] --> +[![NPM version][npm-image]][npm-url] [![NPM downloads][download-image]][download-url] [![][issues-helper-image]][issues-helper-url] [![Issues need help][help-wanted-image]][help-wanted-url] From 80aeb55eb8393548eefe2aa8c54fd66c7dad4629 Mon Sep 17 00:00:00 2001 From: mazhaobo <mazhaobo@hoteamsoft.com> Date: Sun, 6 Oct 2024 10:52:18 +0800 Subject: [PATCH 06/94] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 13 +++++++------ packages/engine/package.json | 4 ++-- packages/react-renderer/package.json | 2 +- packages/react-simulator-renderer/package.json | 4 ++-- packages/shell/package.json | 1 + 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index e538518fb9..eccd6b2534 100644 --- a/package.json +++ b/package.json @@ -44,19 +44,20 @@ } }, "devDependencies": { + "@alilc/build-plugin-lce": "^0.0.5", + "@alilc/lowcode-test-mate": "^1.0.1", + "@babel/plugin-proposal-decorators": "^7.24.7", + "@types/react-router": "5.1.18", + "babel-jest": "^26.5.2", "del": "^6.1.1", "execa": "^5.1.1", "f2elint": "^4.8.0", "gulp": "^4.0.2", "husky": "^7.0.4", "lerna": "^4.0.0", - "typescript": "4.6.2", - "yarn": "^1.22.17", "rimraf": "^3.0.2", - "@types/react-router": "5.1.18", - "@alilc/build-plugin-lce": "^0.0.5", - "babel-jest": "^26.5.2", - "@alilc/lowcode-test-mate": "^1.0.1" + "typescript": "4.6.2", + "yarn": "^1.22.17" }, "tnpm": { "mode": "yarn", diff --git a/packages/engine/package.json b/packages/engine/package.json index aef7bc0abc..77bbf7d25d 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -12,8 +12,8 @@ "scripts": { "start": "build-scripts start", "version:update": "node ./scripts/version.js", - "build": "NODE_OPTIONS=--max_old_space_size=8192 build-scripts build", - "build:umd": "NODE_OPTIONS=--max_old_space_size=8192 build-scripts build --config build.umd.json", + "build": "build-scripts build", + "build:umd": "build-scripts build --config build.umd.json", "test": "build-scripts test --config build.test.json --jest-passWithNoTests" }, "license": "MIT", diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index d45aa5ec4d..a65cd2ac4f 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -13,7 +13,7 @@ "test": "build-scripts test --config build.test.json", "start": "build-scripts start", "build": "build-scripts build", - "build:umd": "NODE_OPTIONS=--max_old_space_size=8192 build-scripts build --config build.umd.json" + "build:umd": "build-scripts build --config build.umd.json" }, "keywords": [ "lowcode", diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json index b3736bf987..a97a6ab88e 100644 --- a/packages/react-simulator-renderer/package.json +++ b/packages/react-simulator-renderer/package.json @@ -12,8 +12,8 @@ ], "scripts": { "test": "build-scripts test --config build.test.json", - "build": "NODE_OPTIONS=--max_old_space_size=8192 build-scripts build", - "build:umd": "NODE_OPTIONS=--max_old_space_size=8192 build-scripts build --config build.umd.json", + "build": "build-scripts build", + "build:umd": "build-scripts build --config build.umd.json", "test:cov": "build-scripts test --config build.test.json --jest-coverage" }, "dependencies": { diff --git a/packages/shell/package.json b/packages/shell/package.json index 2183116054..9828bb53d9 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -19,6 +19,7 @@ "@lce/lowcode-types": "1.3.2", "@lce/lowcode-utils": "1.3.2", "@lce/lowcode-workspace": "1.3.2", + "@alifd/next": "^1.20.12", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", From fbb20c9f2f3a80b193daac133d8c42142a6b2646 Mon Sep 17 00:00:00 2001 From: mazhaobo <mazhaobo@hoteamsoft.com> Date: Sun, 6 Oct 2024 11:05:36 +0800 Subject: [PATCH 07/94] =?UTF-8?q?chore:=20=E6=9B=BF=E6=8D=A2github?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 10 +- .github/workflows/cov packages.yml | 10 +- .../workflows/insufficient information.yml | 2 +- docs/community/issue.md | 30 +- docs/config/navbar.js | 2 +- docs/config/sidebars.js | 6 +- docs/docs/api/canvas.md | 16 +- docs/docs/api/common.md | 6 +- docs/docs/api/config.md | 4 +- docs/docs/api/configOptions.md | 4 +- docs/docs/api/event.md | 6 +- docs/docs/api/hotkey.md | 6 +- docs/docs/api/logger.md | 2 +- docs/docs/api/material.md | 20 +- docs/docs/api/model/clipboard.md | 5 +- docs/docs/api/model/component-meta.md | 31 +- docs/docs/api/model/detecting.md | 17 +- docs/docs/api/model/document-model.md | 105 +++-- docs/docs/api/model/dragon.md | 2 +- docs/docs/api/model/drop-location.md | 12 +- docs/docs/api/model/editor-view.md | 6 +- docs/docs/api/model/history.md | 10 +- docs/docs/api/model/modal-nodes-manager.md | 12 +- docs/docs/api/model/node-children.md | 64 ++- docs/docs/api/model/node.md | 58 +-- docs/docs/api/model/plugin-instance.md | 6 +- docs/docs/api/model/prop.md | 16 +- docs/docs/api/model/props.md | 23 +- docs/docs/api/model/resource.md | 6 +- docs/docs/api/model/selection.md | 19 +- docs/docs/api/model/setting-field.md | 26 +- docs/docs/api/model/setting-top-entry.md | 9 +- docs/docs/api/model/simulatorRender.md | 6 +- docs/docs/api/model/window.md | 19 +- docs/docs/api/plugins.md | 14 +- docs/docs/api/project.md | 44 +- docs/docs/api/setters.md | 10 +- docs/docs/api/simulatorHost.md | 20 +- docs/docs/api/skeleton.md | 18 +- docs/docs/api/workspace.md | 18 +- docs/docs/demoUsage/appendix/loop.md | 7 +- docs/docs/faq/faq003.md | 8 +- docs/docs/faq/faq009.md | 2 +- docs/docs/faq/faq014.md | 11 +- docs/docs/faq/faq018.md | 3 +- docs/docs/faq/faq023.md | 8 +- docs/docs/guide/appendix/npms.md | 86 ++-- docs/docs/guide/appendix/repos.md | 76 ++-- docs/docs/guide/create/useEditor.md | 2 +- docs/docs/guide/create/useRenderer.md | 8 +- docs/docs/guide/design/generator.md | 8 +- docs/docs/guide/design/materialParser.md | 2 +- docs/docs/guide/design/renderer.md | 2 +- docs/docs/guide/design/setter.md | 2 +- docs/docs/guide/expand/editor/graph.md | 47 +- docs/docs/guide/expand/editor/material.md | 8 +- .../guide/expand/editor/parts/partsassets.md | 12 +- .../guide/expand/editor/pluginContextMenu.md | 4 +- docs/docs/guide/expand/editor/pluginWidget.md | 4 +- docs/docs/guide/expand/editor/summary.md | 2 +- docs/docs/guide/expand/runtime/renderer.md | 2 +- docs/docs/guide/quickStart/start.md | 6 +- docs/docs/participate/flow.md | 2 +- docs/docs/participate/index.md | 6 +- docs/docusaurus.config.js | 52 ++- docs/package.json | 2 +- modules/code-generator/CHANGELOG.md | 418 +++++++++--------- modules/code-generator/README.md | 2 +- modules/code-generator/package.json | 6 +- modules/material-parser/package.json | 6 +- packages/designer/package.json | 6 +- .../fixtures/component-metadata/abcgroup.ts | 2 +- .../fixtures/component-metadata/abcitem.ts | 2 +- .../fixtures/component-metadata/abcnode.ts | 2 +- .../fixtures/component-metadata/abcoption.ts | 2 +- .../fixtures/component-metadata/button.ts | 2 +- .../fixtures/component-metadata/dialog.ts | 2 +- .../tests/fixtures/component-metadata/div.ts | 2 +- .../fixtures/component-metadata/div10.ts | 2 +- .../tests/fixtures/component-metadata/div2.ts | 2 +- .../tests/fixtures/component-metadata/div3.ts | 2 +- .../tests/fixtures/component-metadata/div4.ts | 2 +- .../tests/fixtures/component-metadata/div5.ts | 2 +- .../tests/fixtures/component-metadata/div6.ts | 2 +- .../tests/fixtures/component-metadata/div7.ts | 2 +- .../tests/fixtures/component-metadata/div8.ts | 2 +- .../tests/fixtures/component-metadata/div9.ts | 2 +- .../tests/fixtures/component-metadata/form.ts | 2 +- .../fixtures/component-metadata/other.ts | 2 +- .../tests/fixtures/component-metadata/page.ts | 2 +- .../fixtures/component-metadata/page2.ts | 2 +- .../component-metadata/root-content.ts | 2 +- .../component-metadata/root-footer.ts | 2 +- .../component-metadata/root-header.ts | 2 +- packages/editor-core/package.json | 6 +- packages/editor-skeleton/package.json | 6 +- packages/engine/README-zh_CN.md | 15 +- packages/engine/README.md | 22 +- packages/engine/package.json | 6 +- packages/ignitor/package.json | 6 +- packages/ignitor/public/index.html | 39 +- packages/plugin-command/package.json | 6 +- packages/plugin-designer/package.json | 6 +- packages/plugin-outline-pane/package.json | 6 +- packages/react-renderer/package.json | 6 +- .../react-simulator-renderer/package.json | 6 +- packages/renderer-core/package.json | 6 +- packages/renderer-core/src/hoc/index.tsx | 2 +- packages/shell/package.json | 6 +- packages/shell/src/api/common.tsx | 2 +- packages/shell/src/api/project.ts | 7 +- packages/types/package.json | 6 +- packages/types/src/shell/api/project.ts | 37 +- packages/utils/package.json | 6 +- packages/workspace/package.json | 6 +- scripts/set-repo.js | 70 +-- 116 files changed, 974 insertions(+), 860 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4636a1bdd1..046c285442 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,17 +1,17 @@ name: Node CI on: - push: + push: branches: - main - pull_request: + pull_request: branches: - main jobs: upload-designer-codecov: runs-on: ubuntu-latest - # if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + # if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -90,7 +90,7 @@ jobs: upload-code-generator: runs-on: ubuntu-latest - # if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + # if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -113,4 +113,4 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} name: code-generator fail_ci_if_error: true - verbose: true \ No newline at end of file + verbose: true diff --git a/.github/workflows/cov packages.yml b/.github/workflows/cov packages.yml index 7f92e1009c..90f6639e49 100644 --- a/.github/workflows/cov packages.yml +++ b/.github/workflows/cov packages.yml @@ -10,7 +10,7 @@ jobs: cov-designer: runs-on: ubuntu-latest # skip fork's PR, otherwise it fails while making a comment - if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -32,7 +32,7 @@ jobs: cov-renderer-core: runs-on: ubuntu-latest # skip fork's PR, otherwise it fails while making a comment - if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -54,7 +54,7 @@ jobs: cov-react-simulator-renderer: runs-on: ubuntu-latest # skip fork's PR, otherwise it fails while making a comment - if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -76,7 +76,7 @@ jobs: cov-utils: runs-on: ubuntu-latest # skip fork's PR, otherwise it fails while making a comment - if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }} + if: ${{ github.event.pull_request.head.repo.full_name == 'fe-lce/lowcode-engine' }} steps: - name: checkout uses: actions/checkout@v2 @@ -93,4 +93,4 @@ jobs: working-directory: packages/utils test-script: npm test -- --jest-ci --jest-json --jest-coverage --jest-testLocationInResults --jest-outputFile=report.json package-manager: yarn - annotations: none \ No newline at end of file + annotations: none diff --git a/.github/workflows/insufficient information.yml b/.github/workflows/insufficient information.yml index c49e133f16..70f0be05fb 100644 --- a/.github/workflows/insufficient information.yml +++ b/.github/workflows/insufficient information.yml @@ -16,4 +16,4 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} issue-number: ${{ github.event.issue.number }} body: | - 你好 @${{ github.event.issue.user.login }},由于缺乏必要的信息(如 bug 重现步骤、引擎版本信息 等),无法定位问题,请按照 [issue bug 模板](https://github.com/alibaba/lowcode-engine/blob/main/.github/ISSUE_TEMPLATE/bug-report.md) 补全信息,也可以通过阅读 [引擎的 issue 说明](https://lowcode-engine.cn/site/community/issue) 了解什么类型的 issue 可以获得更好、更快的支持。 + 你好 @${{ github.event.issue.user.login }},由于缺乏必要的信息(如 bug 重现步骤、引擎版本信息 等),无法定位问题,请按照 [issue bug 模板](https://github.com/fe-lce/lowcode-engine/blob/main/.github/ISSUE_TEMPLATE/bug-report.md) 补全信息,也可以通过阅读 [引擎的 issue 说明](https://lowcode-engine.cn/site/community/issue) 了解什么类型的 issue 可以获得更好、更快的支持。 diff --git a/docs/community/issue.md b/docs/community/issue.md index 2b6bd0f962..9e12e49a43 100644 --- a/docs/community/issue.md +++ b/docs/community/issue.md @@ -2,17 +2,17 @@ title: 关于引擎的 issue 说明 sidebar_position: 2 --- -> 提交地址:[https://github.com/alibaba/lowcode-engine/issues](https://github.com/alibaba/lowcode-engine/issues) + +> 提交地址:[https://github.com/fe-lce/lowcode-engine/issues](https://github.com/fe-lce/lowcode-engine/issues) ### 提交前必读 -由于引擎项目复杂,很多问题在复现和沟通上无法花费太多时间,需要大家尽力将复现步骤说明白。 +由于引擎项目复杂,很多问题在复现和沟通上无法花费太多时间,需要大家尽力将复现步骤说明白。 ![image.png](./img/you-think.png) **你以为的 issue** - ![image.png](./img/i-see.png) **我们看到的 issue** @@ -26,18 +26,21 @@ sidebar_position: 2 - 【支持慢】有完整的项目地址,下载下来可直接安装依赖并启动复现的 - 【支持慢】需求类型的由于人力有限,欢迎大家 PR,如能讲清楚背景上下文和场景,项目维护团队更容易给出方案建议或方向指引。 - 【不保证提供支持】其他 - - 只有标题没有复现步骤 - - 复现步骤不清晰 - - 和引擎无关的 + - 只有标题没有复现步骤 + - 复现步骤不清晰 + - 和引擎无关的 ### 不同优先级的示例 + #### 【支持快】通过线上 Demo 地址 + 控制台输入 API 可复现。 + **示例** ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01np6ARb1KnJFOELjXg_!!6000000001208-2-tps-3322-1862.png) 复现步骤: - 打开线上 demo - 在控制台输入 + ```json // 当前 doc const doc = window.AliLowCodeEngine.project.currentDocument @@ -56,6 +59,7 @@ window.AliLowCodeEngine.project.openDocument('docl4xkca5b') - 使用 openDocument 可以正常的切换回原来的 doc #### 【支持快】通过线上 demo + 导入 schema 可复现 + 步骤: - 使用线上 demo @@ -68,8 +72,8 @@ window.AliLowCodeEngine.project.openDocument('docl4xkca5b') - 页面中的 xxx 部分和预期不符合,期望的效果是 xxx #### 【支持稍慢】通过线上 demo + 完整操作步骤可复现 -**示例** -1.使用 antd 组件 + +**示例** 1.使用 antd 组件 ![image.png](https://img.alicdn.com/imgextra/i4/O1CN019dFe4Y24SDKbmpbdw_!!6000000007389-2-tps-3584-1812.png) 2.拖拽这个组件 @@ -83,6 +87,7 @@ window.AliLowCodeEngine.project.openDocument('docl4xkca5b') - 组件同配置一致 #### 【支持稍慢】通过线上 demo + 变更代码可复现,并清楚的说明变更代码的位置和内容 + **示例** ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01FL0Urq1tl1pLcYhJH_!!6000000005941-2-tps-1892-754.png) @@ -93,20 +98,23 @@ window.AliLowCodeEngine.project.openDocument('docl4xkca5b') ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01OKzt1Z28b9WZIbM6B_!!6000000007950-2-tps-1912-914.png) #### 【支持慢】有完整的项目地址,下载下来可直接安装依赖并启动复现的 + 由于完整的项目中有很多冗余的信息,这部分排查起来十分耗时且困难。不推荐使用改方式。 #### 【不保证提供支持】其他 + ##### 只有标题没有复现步骤 + ![image.png](https://img.alicdn.com/imgextra/i3/O1CN017rO2gR1YKpEgIMBjh_!!6000000003041-2-tps-2520-1020.png) ##### 复现步骤不清晰 + ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01vtHi5z225CC7aFVS2_!!6000000007068-2-tps-3584-1666.png) ##### 和引擎无关的 -![image.png](https://img.alicdn.com/imgextra/i2/O1CN01KxqT9M1vcu25xJHFP_!!6000000006194-2-tps-2548-1430.png) - - +![image.png](https://img.alicdn.com/imgextra/i2/O1CN01KxqT9M1vcu25xJHFP_!!6000000006194-2-tps-2548-1430.png) ### 扩展阅读 + 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/~sgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。(此段参考 [antd](https://github.com/ant-design/ant-design)) diff --git a/docs/config/navbar.js b/docs/config/navbar.js index 24f8a39376..2eadcb3c8e 100644 --- a/docs/config/navbar.js +++ b/docs/config/navbar.js @@ -65,7 +65,7 @@ module.exports = { // }, // { { - href: 'https://github.com/alibaba/lowcode-engine', + href: 'https://github.com/fe-lce/lowcode-engine', position: 'right', className: 'header-github-link', 'aria-label': 'GitHub repository', diff --git a/docs/config/sidebars.js b/docs/config/sidebars.js index b8a7587d91..031a25c57d 100644 --- a/docs/config/sidebars.js +++ b/docs/config/sidebars.js @@ -39,7 +39,9 @@ module.exports = { type: 'category', label: '扩展编辑器', collapsed: false, - items: getDocsFromDir('guide/expand/editor', [{ dir: 'guide/expand/editor/parts', label: 'Parts·造物' }]), + items: getDocsFromDir('guide/expand/editor', [ + { dir: 'guide/expand/editor/parts', label: 'Parts·造物' }, + ]), }, { type: 'category', @@ -61,7 +63,7 @@ module.exports = { { type: 'link', label: '更新日志', - href: 'https://github.com/alibaba/lowcode-engine/releases', + href: 'https://github.com/fe-lce/lowcode-engine/releases', }, ...getDocsFromDir('guide/appendix'), { diff --git a/docs/docs/api/canvas.md b/docs/docs/api/canvas.md index 865b9ac311..76586e66c3 100644 --- a/docs/docs/api/canvas.md +++ b/docs/docs/api/canvas.md @@ -3,9 +3,7 @@ title: canvas - 画布 API sidebar_position: 10 --- -> **@types** [IPublicApiCanvas](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/canvas.ts)<br/> -> **@since** v1.1.0 - +> **@types** [IPublicApiCanvas](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/canvas.ts)<br/> > **@since** v1.1.0 ## 模块简介 @@ -19,8 +17,7 @@ sidebar_position: 10 `@type {IPublicModelDragon | null}` - -相关类型:[IPublicModelDragon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts) +相关类型:[IPublicModelDragon](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts) ### activeTracker @@ -28,7 +25,7 @@ sidebar_position: 10 `@type {IPublicModelActiveTracker | null}` -相关类型:[IPublicModelActiveTracker](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/active-tracker.ts) +相关类型:[IPublicModelActiveTracker](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/active-tracker.ts) ### isInLiveEditing @@ -37,15 +34,17 @@ sidebar_position: 10 `@type {boolean}` ### clipboard + 全局剪贴板实例 `@type {IPublicModelClipboard}` -相关类型:[IPublicModelClipboard](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/clipboard.ts) +相关类型:[IPublicModelClipboard](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/clipboard.ts) ## 方法 ### createLocation + 创建一个文档插入位置对象,该对象用来描述一个即将插入的节点在文档中的位置 ```typescript @@ -58,7 +57,9 @@ createLocation(locationData: IPublicTypeLocationData): IPublicModelDropLocation; ``` ### createScroller + 创建一个滚动控制器 Scroller,赋予一个视图滚动的基本能力, + ```typescript /** * 创建一个滚动控制器 Scroller,赋予一个视图滚动的基本能力, @@ -75,6 +76,7 @@ createScroller(scrollable: IPublicTypeScrollable): IPublicModelScroller; ``` ### createScrollTarget + 创建一个 ScrollTarget,与 Scroller 一起发挥作用,详见 [createScroller](#createscroller) 中的描述 ```typescript diff --git a/docs/docs/api/common.md b/docs/docs/api/common.md index 1ce872844b..e0304722e7 100644 --- a/docs/docs/api/common.md +++ b/docs/docs/api/common.md @@ -3,7 +3,7 @@ title: common - 通用 API sidebar_position: 10 --- -> **@types** [IPublicApiCommon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiCommon](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -17,7 +17,7 @@ sidebar_position: 10 通用 utils,详见下方方法签名 -相关类型:[IPublicApiCommonUtils](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts) +相关类型:[IPublicApiCommonUtils](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/common.ts) #### skeletonCabin @@ -74,7 +74,7 @@ getNodeSchemaById( ): IPublicTypeNodeSchema | undefined; ``` -相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +相关类型:[IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) #### executeTransaction diff --git a/docs/docs/api/config.md b/docs/docs/api/config.md index 3a7ea4ae20..90abb2c970 100644 --- a/docs/docs/api/config.md +++ b/docs/docs/api/config.md @@ -3,7 +3,7 @@ title: config - 配置 API sidebar_position: 5 --- -> **@types** [IPublicModelEngineConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/engine-config.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicModelEngineConfig](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/engine-config.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -115,7 +115,7 @@ config.setConfig({ keyA: false, keyB: 2 }); getPreference(): IPublicModelPreference; ``` -相关类型:[IPublicModelPreference](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/preference.ts) +相关类型:[IPublicModelPreference](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/preference.ts) **@since v1.1.0** diff --git a/docs/docs/api/configOptions.md b/docs/docs/api/configOptions.md index 5a158659c5..b2beb1f5ba 100644 --- a/docs/docs/api/configOptions.md +++ b/docs/docs/api/configOptions.md @@ -3,7 +3,7 @@ title: config options - 配置列表 sidebar_position: 5 --- -> **@types** [IPublicTypeEngineOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts)<br/> +> **@types** [IPublicTypeEngineOptions](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts)<br/> ## 配置方式 @@ -31,7 +31,7 @@ config.set('enableCondition', false); ## 配置详情 -> 源码详见 [IPublicTypeEngineOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts) +> 源码详见 [IPublicTypeEngineOptions](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts) ### 画布 diff --git a/docs/docs/api/event.md b/docs/docs/api/event.md index 83d20829ed..bfe9fcdd51 100644 --- a/docs/docs/api/event.md +++ b/docs/docs/api/event.md @@ -3,7 +3,7 @@ title: event - 事件 API sidebar_position: 10 --- -> **@types** [IPublicApiEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/event.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiEvent](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/event.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -25,7 +25,7 @@ sidebar_position: 10 on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### prependListener @@ -40,7 +40,7 @@ on(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; prependListener(event: string, listener: (...args: any[]) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### off diff --git a/docs/docs/api/hotkey.md b/docs/docs/api/hotkey.md index 4c4b7f72a5..e65c80f71a 100644 --- a/docs/docs/api/hotkey.md +++ b/docs/docs/api/hotkey.md @@ -3,7 +3,7 @@ title: hotkey - 快捷键 API sidebar_position: 10 --- -> **@types** [IPublicApiHotkey](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/hotkey.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiHotkey](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/hotkey.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -33,8 +33,8 @@ bind( 相关 types -- [IPublicTypeHotkeyCallback](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/hotkey-callback.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicTypeHotkeyCallback](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/hotkey-callback.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ## 使用示例 diff --git a/docs/docs/api/logger.md b/docs/docs/api/logger.md index 1c8ad3bfa3..c3b6d453d0 100644 --- a/docs/docs/api/logger.md +++ b/docs/docs/api/logger.md @@ -3,7 +3,7 @@ title: logger - 日志 API sidebar_position: 10 --- -> **@types** [IPublicApiLogger](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/logger.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiLogger](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/logger.ts)<br/> > **@since** v1.0.0 ## 模块简介 diff --git a/docs/docs/api/material.md b/docs/docs/api/material.md index 52ce4875fa..5d8b3969aa 100644 --- a/docs/docs/api/material.md +++ b/docs/docs/api/material.md @@ -3,7 +3,7 @@ title: material - 物料 API sidebar_position: 10 --- -> **@types** [IPublicApiMaterial](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/material.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiMaterial](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/material.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -23,7 +23,7 @@ sidebar_position: 10 get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType<any> | object } ; ``` -相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) +相关类型:[IPublicTypeNpmInfo](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) ## 方法 @@ -42,7 +42,7 @@ get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType<any> | setAssets(assets: IPublicTypeAssetsJson): void; ``` -相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) +相关类型:[IPublicTypeAssetsJson](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** 直接在项目中引用 npm 包 @@ -95,7 +95,7 @@ plugins getAssets(): IPublicTypeAssetsJson; ``` -相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) +相关类型:[IPublicTypeAssetsJson](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** @@ -119,7 +119,7 @@ material.getAssets(); loadIncrementalAssets(incrementalAssets: IPublicTypeAssetsJson): Promise<void>; ``` -相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) +相关类型:[IPublicTypeAssetsJson](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts) **示例** @@ -162,7 +162,7 @@ material.loadIncrementalAssets({ addBuiltinComponentAction(action: IPublicTypeComponentAction): void; ``` -相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) +相关类型:[IPublicTypeComponentAction](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) **示例** 新增设计扩展位,并绑定事件 @@ -232,7 +232,7 @@ modifyBuiltinComponentAction( ): void; ``` -相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) +相关类型:[IPublicTypeComponentAction](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts) ##### 内置设计器辅助 name @@ -357,7 +357,7 @@ material.adjustContextMenuLayout((actions: IPublicTypeContextMenuAction) => { getComponentMeta(componentName: string): IPublicModelComponentMeta | null; ``` -相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) +相关类型:[IPublicModelComponentMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) **示例** @@ -380,7 +380,7 @@ material.getComponentMeta('Input'); getComponentMetasMap(): Map<string, IPublicModelComponentMeta>; ``` -相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) +相关类型:[IPublicModelComponentMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) **示例** @@ -533,7 +533,7 @@ material.getRegisteredMetadataTransducers(); onChangeAssets(fn: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) **示例** diff --git a/docs/docs/api/model/clipboard.md b/docs/docs/api/model/clipboard.md index 15d9e280ca..190c92f39b 100644 --- a/docs/docs/api/model/clipboard.md +++ b/docs/docs/api/model/clipboard.md @@ -3,8 +3,7 @@ title: Clipboard sidebar_position: 14 --- -> **@types** [IPublicModelClipboard](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/clipboard.ts)<br/> -> **@since** v1.1.0 +> **@types** [IPublicModelClipboard](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/clipboard.ts)<br/> > **@since** v1.1.0 ## 方法 @@ -40,4 +39,4 @@ waitPasteData( keyboardEvent: KeyboardEvent, cb: (data: any, clipboardEvent: ClipboardEvent) => void, ): void; -``` \ No newline at end of file +``` diff --git a/docs/docs/api/model/component-meta.md b/docs/docs/api/model/component-meta.md index 28f7fe7407..33f3ff1dc9 100644 --- a/docs/docs/api/model/component-meta.md +++ b/docs/docs/api/model/component-meta.md @@ -3,8 +3,7 @@ title: ComponentMeta sidebar_position: 15 --- -> **@types** [IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts)<br/> -> **@since** v1.0.0 +> **@types** [IPublicModelComponentMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts)<br/> > **@since** v1.0.0 ## 基本介绍 @@ -25,9 +24,11 @@ sidebar_position: 15 `@type {boolean}` ### isMinimalRenderUnit + 是否是最小渲染单元 当组件需要重新渲染时: + - 若为最小渲染单元,则只渲染当前组件, - 若不为最小渲染单元,则寻找到上层最近的最小渲染单元进行重新渲染,直至根节点。 @@ -45,7 +46,7 @@ sidebar_position: 15 `@type {IPublicTypeFieldConfig[]}` -相关类型:[IPublicTypeFieldConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts) +相关类型:[IPublicTypeFieldConfig](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts) ### title @@ -53,7 +54,7 @@ sidebar_position: 15 `@type {string | IPublicTypeI18nData | ReactElement}` -相关类型:[IPublicTypeI18nData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts) +相关类型:[IPublicTypeI18nData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts) ### icon @@ -61,7 +62,7 @@ sidebar_position: 15 `@type {IPublicTypeIconType}` -相关类型:[IPublicTypeIconType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts) +相关类型:[IPublicTypeIconType](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts) ### npm @@ -69,7 +70,7 @@ sidebar_position: 15 `@type {IPublicTypeNpmInfo}` -相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) +相关类型:[IPublicTypeNpmInfo](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) ### availableActions @@ -77,7 +78,7 @@ sidebar_position: 15 `@type {IPublicTypeTransformedComponentMetadata}` -相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts) +相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts) ### advanced @@ -85,7 +86,7 @@ sidebar_position: 15 `@type {IPublicTypeAdvanced}` -相关类型:[IPublicTypeAdvanced](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/advanced.ts) +相关类型:[IPublicTypeAdvanced](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/advanced.ts) ## 方法 @@ -102,7 +103,7 @@ sidebar_position: 15 setNpm(npm: IPublicTypeNpmInfo): void; ``` -相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) +相关类型:[IPublicTypeNpmInfo](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) ### getMetadata @@ -116,7 +117,7 @@ setNpm(npm: IPublicTypeNpmInfo): void; getMetadata(): IPublicTypeTransformedComponentMetadata; ``` -相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts) +相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts) ### checkNestingUp @@ -133,9 +134,9 @@ checkNestingUp(my: IPublicModelNode | IPublicTypeNodeData, parent: any): boolean ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeNodeData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeNodeData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) ### checkNestingDown @@ -155,10 +156,10 @@ checkNestingDown( ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeNodeData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) -- [IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeNodeData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) +- [IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### refreshMetadata diff --git a/docs/docs/api/model/detecting.md b/docs/docs/api/model/detecting.md index ccd60e3a65..5155ee6ac8 100644 --- a/docs/docs/api/model/detecting.md +++ b/docs/docs/api/model/detecting.md @@ -2,8 +2,8 @@ title: Detecting sidebar_position: 6 --- -> **@types** [IPublicModelDetecting](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/detecting.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelDetecting](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/detecting.ts)<br/> > **@since** v1.0.0 ## 基本介绍 @@ -17,7 +17,7 @@ sidebar_position: 6 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) **@since v1.0.16** @@ -27,8 +27,8 @@ sidebar_position: 6 `@type {boolean}` - ## 方法 + ### capture hover 指定节点 @@ -68,7 +68,9 @@ leave(): void; ``` ## 事件 + ### onDetectingChange + hover 节点变化事件 ```typescript @@ -81,7 +83,8 @@ onDetectingChange(fn: (node: IPublicModelNode | null) => void): IPublicTypeDispo ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) -**@since v1.1.0** \ No newline at end of file +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) + +**@since v1.1.0** diff --git a/docs/docs/api/model/document-model.md b/docs/docs/api/model/document-model.md index 8d813e7678..4c81ba8020 100644 --- a/docs/docs/api/model/document-model.md +++ b/docs/docs/api/model/document-model.md @@ -2,8 +2,8 @@ title: DocumentModel sidebar_position: 0 --- -> **@types** [IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelDocumentModel](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts)<br/> > **@since** v1.0.0 ## 基本介绍 @@ -25,7 +25,7 @@ sidebar_position: 0 相关章节:[节点选中区模型](./selection) -相关类型:[IPublicModelSelection](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/selection.ts) +相关类型:[IPublicModelSelection](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/selection.ts) ### detecting @@ -35,7 +35,7 @@ sidebar_position: 0 相关章节:[画布节点悬停模型](./detecting) -相关类型:[IPublicModelDetecting](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/detecting.ts) +相关类型:[IPublicModelDetecting](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/detecting.ts) ### history @@ -45,7 +45,7 @@ sidebar_position: 0 相关章节:[操作历史模型](./history) -相关类型:[IPublicModelHistory](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/history.ts) +相关类型:[IPublicModelHistory](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/history.ts) ### project @@ -53,7 +53,7 @@ sidebar_position: 0 `@type {IPublicApiProject}` -相关类型:[IPublicApiProject](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/project.ts) +相关类型:[IPublicApiProject](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/project.ts) ### root @@ -61,7 +61,7 @@ sidebar_position: 0 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### nodesMap @@ -69,10 +69,9 @@ sidebar_position: 0 `@type {Map<string, IPublicModelNode>} ` - 相关章节:[节点模型](./node) -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### modalNodesManager @@ -82,7 +81,7 @@ sidebar_position: 0 相关章节:[模态节点管理](./modal-nodes-manager) -相关类型:[IPublicModelModalNodesManager](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/modal-nodes-manager.ts) +相关类型:[IPublicModelModalNodesManager](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/modal-nodes-manager.ts) ### dropLocation @@ -90,12 +89,12 @@ sidebar_position: 0 `@type {IPublicModelDropLocation | null}` - -相关类型:[IPublicModelDropLocation](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/drop-location.ts) +相关类型:[IPublicModelDropLocation](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/drop-location.ts) **@since v1.1.0** ## 方法 + ### getNodeById 根据 nodeId 返回 [Node](./node) 实例 @@ -110,8 +109,7 @@ sidebar_position: 0 getNodeById(nodeId: string): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### importSchema @@ -126,10 +124,10 @@ getNodeById(nodeId: string): IPublicModelNode | null; importSchema(schema: IPublicTypeRootSchema): void; ``` -相关类型:[IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) - +相关类型:[IPublicTypeRootSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) ### exportSchema + 导出 schema ```typescript @@ -143,8 +141,9 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeRootSchema | undefine ``` 相关类型: -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) -- [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) + +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypeRootSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) ### insertNode @@ -163,7 +162,7 @@ insertNode( ): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### createNode @@ -179,7 +178,7 @@ insertNode( createNode(data: any): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### removeNode @@ -194,9 +193,10 @@ createNode(data: any): IPublicModelNode | null; removeNode(idOrNode: string | IPublicModelNode): void; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### checkNesting + 检查拖拽放置的目标节点是否可以放置该拖拽对象 ```typescript @@ -215,13 +215,15 @@ checkNesting( ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDragNodeObject](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/drag-node-object.ts) -- [IPublicTypeDragNodeDataObject](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/drag-node-object-data.ts) + +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDragNodeObject](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/drag-node-object.ts) +- [IPublicTypeDragNodeDataObject](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/drag-node-object-data.ts) **@since v1.0.16** ### isDetectingNode + 判断是否当前节点处于被探测状态 ```typescript @@ -233,13 +235,13 @@ checkNesting( */ isDetectingNode(node: IPublicModelNode): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) **@since v1.1.0** - ## 事件 + ### onAddNode 当前 document 新增节点事件 @@ -253,8 +255,9 @@ onAddNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable; ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) + +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onMountNode @@ -269,10 +272,12 @@ onMountNode(fn: (payload: { node: IPublicModelNode }) => void): IPublicTypeDispo ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) + +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onRemoveNode + 当前 document 删除节点事件 ```typescript @@ -284,9 +289,9 @@ onRemoveNode(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable; ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeDetecting @@ -302,8 +307,9 @@ onChangeDetecting(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable; ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) + +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeSelection @@ -317,7 +323,7 @@ onChangeDetecting(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable; onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeNodeVisible @@ -332,8 +338,8 @@ onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable; onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): IPublicTypeDisposable; ``` -- 相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- 相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- 相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeNodeChildren @@ -343,19 +349,22 @@ onChangeNodeVisible(fn: (node: IPublicModelNode, visible: boolean) => void): IPu onChangeNodeChildren(fn: (info?: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeNodeProp + 当前 document 节点属性修改事件 ```typescript onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onImportSchema + 当前 document 导入新的 schema 事件 + ```typescript /** * import schema event @@ -364,13 +373,16 @@ onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void): IPublicTypeD */ onImportSchema(fn: (schema: IPublicTypeRootSchema) => void): IPublicTypeDisposable; ``` + 相关类型: -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) -- [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) + +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicTypeRootSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) **@since v1.0.15** ### onFocusNodeChanged + 设置聚焦节点变化的回调 ```typescript @@ -384,13 +396,16 @@ onFocusNodeChanged( fn: (doc: IPublicModelDocumentModel, focusNode: IPublicModelNode) => void, ): IPublicTypeDisposable; ``` + 相关类型: -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) + +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) **@since v1.1.0** ### onDropLocationChanged + 设置 DropLocation 变化的回调 ```typescript @@ -403,6 +418,6 @@ onFocusNodeChanged( onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) -**@since v1.1.0** \ No newline at end of file +**@since v1.1.0** diff --git a/docs/docs/api/model/dragon.md b/docs/docs/api/model/dragon.md index 9e7e287d6c..26dec5aaf5 100644 --- a/docs/docs/api/model/dragon.md +++ b/docs/docs/api/model/dragon.md @@ -3,7 +3,7 @@ title: Dragon sidebar_position: 99 --- -> **@types** [IPublicModelDragon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicModelDragon](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts)<br/> > **@since** v1.0.0 ## 基本介绍 diff --git a/docs/docs/api/model/drop-location.md b/docs/docs/api/model/drop-location.md index dc6a684e42..c7355ac509 100644 --- a/docs/docs/api/model/drop-location.md +++ b/docs/docs/api/model/drop-location.md @@ -3,9 +3,7 @@ title: DropLocation sidebar_position: 13 --- -> **@types** [IPublicModelDropLocation](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/drop-location.ts)<br/> -> **@since** v1.1.0 - +> **@types** [IPublicModelDropLocation](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/drop-location.ts)<br/> > **@since** v1.1.0 ## 基本介绍 @@ -19,7 +17,7 @@ sidebar_position: 13 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### detail @@ -27,7 +25,7 @@ sidebar_position: 13 `@type {IPublicTypeLocationDetail}` -相关类型:[IPublicTypeLocationDetail](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/location-detail.ts) +相关类型:[IPublicTypeLocationDetail](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/location-detail.ts) ### event @@ -35,7 +33,7 @@ sidebar_position: 13 `@type {IPublicTypeLocationDetail}` -相关类型:[IPublicModelLocateEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts) +相关类型:[IPublicModelLocateEvent](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts) ## 方法 @@ -51,4 +49,4 @@ sidebar_position: 13 clone(event: IPublicModelLocateEvent): IPublicModelDropLocation; ``` -相关类型:[IPublicModelLocateEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts) \ No newline at end of file +相关类型:[IPublicModelLocateEvent](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts) diff --git a/docs/docs/api/model/editor-view.md b/docs/docs/api/model/editor-view.md index a3cc83e1f2..63938ebfac 100644 --- a/docs/docs/api/model/editor-view.md +++ b/docs/docs/api/model/editor-view.md @@ -3,9 +3,7 @@ title: EditorView sidebar_position: 12 --- -> **[@experimental](./#experimental)**<br/> -> **@types** [IPublicModelEditorView](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/editor-view.ts)<br/> -> **@since** v1.1.7 +> **[@experimental](./#experimental)**<br/> > **@types** [IPublicModelEditorView](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/editor-view.ts)<br/> > **@since** v1.1.7 窗口编辑视图 @@ -18,4 +16,4 @@ export interface IPublicModelEditorView extends IPublicModelPluginContext {}; ``` -相关类型定义: [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) +相关类型定义: [IPublicModelPluginContext](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) diff --git a/docs/docs/api/model/history.md b/docs/docs/api/model/history.md index b8c4d791b1..4e495862c5 100644 --- a/docs/docs/api/model/history.md +++ b/docs/docs/api/model/history.md @@ -2,14 +2,15 @@ title: History sidebar_position: 5 --- -> **@types** [IPublicModelHistory](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/history.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelHistory](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/history.ts)<br/> > **@since** v1.0.0 ## 基本介绍 操作历史记录模型 ## 方法 + ### go 历史记录跳转到指定位置 @@ -93,6 +94,7 @@ getState(): number; ``` ## 事件 + ### onChangeState 监听 state 变更事件 @@ -106,7 +108,7 @@ getState(): number; onChangeState(func: () => any): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeCursor @@ -121,4 +123,4 @@ onChangeState(func: () => any): IPublicTypeDisposable; onChangeCursor(func: () => any): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) \ No newline at end of file +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) diff --git a/docs/docs/api/model/modal-nodes-manager.md b/docs/docs/api/model/modal-nodes-manager.md index fead53f0a1..0e3f163f3d 100644 --- a/docs/docs/api/model/modal-nodes-manager.md +++ b/docs/docs/api/model/modal-nodes-manager.md @@ -2,8 +2,8 @@ title: ModalNodesManager sidebar_position: 7 --- -> **@types** [IPublicModelModalNodesManager](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/modal-nodes-manager.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelModalNodesManager](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/modal-nodes-manager.ts)<br/> > **@since** v1.0.0 ## 基本介绍 @@ -35,7 +35,7 @@ setNodes(): void; getModalNodes(): IPublicModelNode[]; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### getVisibleModalNode @@ -49,7 +49,7 @@ getModalNodes(): IPublicModelNode[]; getVisibleModalNode(): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### hideModalNodes @@ -76,7 +76,7 @@ hideModalNodes(): void; setVisible(node: IPublicModelNode): void; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### setInvisible @@ -91,4 +91,4 @@ setVisible(node: IPublicModelNode): void; setInvisible(node: IPublicModelNode): void; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) diff --git a/docs/docs/api/model/node-children.md b/docs/docs/api/model/node-children.md index 5507fcbfb8..3bfe93279d 100644 --- a/docs/docs/api/model/node-children.md +++ b/docs/docs/api/model/node-children.md @@ -2,20 +2,22 @@ title: NodeChildren sidebar_position: 2 --- -> **@types** [IPublicModelNodeChildren](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node-children.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelNodeChildren](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node-children.ts)<br/> > **@since** v1.0.0 ## 基本介绍 + 节点孩子模型 ## 属性 + ### owner 返回当前 children 实例所属的节点实例 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### size @@ -23,7 +25,6 @@ children 内的节点实例数 `@type {number}` - ### isEmptyNode 是否为空 @@ -31,6 +32,7 @@ children 内的节点实例数 `@type {boolean}` **@since v1.1.0** + > v1.1.0 之前请使用 `isEmpty` ### notEmptyNode @@ -42,7 +44,9 @@ children 内的节点实例数 **@since v1.1.0** ## 方法 + ### delete + 删除指定节点 ```typescript @@ -54,7 +58,7 @@ children 内的节点实例数 delete(node: IPublicModelNode): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### insert @@ -69,8 +73,7 @@ delete(node: IPublicModelNode): boolean; insert(node: IPublicModelNode): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### indexOf @@ -86,7 +89,7 @@ insert(node: IPublicModelNode): boolean; indexOf(node: IPublicModelNode): number; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### splice @@ -103,8 +106,7 @@ indexOf(node: IPublicModelNode): number; splice(start: number, deleteCount: number, node?: IPublicModelNode): any; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### get @@ -120,8 +122,7 @@ splice(start: number, deleteCount: number, node?: IPublicModelNode): any; get(index: number): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### has @@ -137,8 +138,7 @@ get(index: number): IPublicModelNode | null; has(node: IPublicModelNode): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### forEach @@ -154,7 +154,7 @@ forEach(fn: (node: IPublicModelNode, index: number) => void): void; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### reverse @@ -169,8 +169,7 @@ reverse(): IPublicModelNode[]; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### map @@ -185,8 +184,7 @@ reverse(): IPublicModelNode[]; map<T>(fn: (node: IPublicModelNode, index: number) => T[]): any[] | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### every @@ -201,8 +199,7 @@ map<T>(fn: (node: IPublicModelNode, index: number) => T[]): any[] | null; every(fn: (node: IPublicModelNode, index: number) => boolean): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### some @@ -217,8 +214,7 @@ every(fn: (node: IPublicModelNode, index: number) => boolean): boolean; some(fn: (node: IPublicModelNode, index: number) => boolean): boolean; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### filter @@ -233,8 +229,7 @@ some(fn: (node: IPublicModelNode, index: number) => boolean): boolean; filter(fn: (node: IPublicModelNode, index: number) => boolean): any; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### find @@ -249,8 +244,7 @@ filter(fn: (node: IPublicModelNode, index: number) => boolean): any; find(fn: (node: IPublicModelNode, index: number) => boolean): IPublicModelNode | null; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### reduce @@ -265,8 +259,7 @@ find(fn: (node: IPublicModelNode, index: number) => boolean): IPublicModelNode | reduce(fn: (acc: any, cur: IPublicModelNode) => any, initialValue: any): void; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### importSchema @@ -281,10 +274,10 @@ reduce(fn: (acc: any, cur: IPublicModelNode) => any, initialValue: any): void; importSchema(data?: IPublicTypeNodeData | IPublicTypeNodeData[]): void; ``` -相关类型:[IPublicTypeNodeData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) - +相关类型:[IPublicTypeNodeData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) ### exportSchema + 导出 schema ```typescript @@ -297,9 +290,9 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeNodeSchema; ``` 相关类型: -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) -- [IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### mergeChildren @@ -321,5 +314,6 @@ mergeChildren( ``` 相关类型: -- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -- [IPublicTypeNodeData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) + +- [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +- [IPublicTypeNodeData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts) diff --git a/docs/docs/api/model/node.md b/docs/docs/api/model/node.md index 43de96a33d..64576532d7 100644 --- a/docs/docs/api/model/node.md +++ b/docs/docs/api/model/node.md @@ -2,14 +2,15 @@ title: Node sidebar_position: 1 --- -> **@types** [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)<br/> > **@since** v1.0.0 ## 基本介绍 节点模型 ## 属性 + ### id 节点 id @@ -22,7 +23,7 @@ sidebar_position: 1 `@type {string | IPublicTypeI18nData | ReactElement}` -相关类型:[IPublicTypeI18nData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts) +相关类型:[IPublicTypeI18nData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts) ### isContainerNode @@ -31,6 +32,7 @@ sidebar_position: 1 `@type {boolean}` **@since v1.1.0** + > v1.1.0 之前请使用 `isContainer` ### isRootNode @@ -120,6 +122,7 @@ sidebar_position: 1 **@since v1.0.16** ### isRGLContainerNode + 设置为磁贴布局节点,使用方式可参考:[磁贴布局在钉钉宜搭报表设计引擎中的实现](https://mp.weixin.qq.com/s/PSTut5ahAB8nlJ9kBpBaxw) `@type {boolean}` @@ -140,7 +143,7 @@ sidebar_position: 1 `@type {IPublicTypeIconType}` -相关类型:[IPublicTypeIconType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts) +相关类型:[IPublicTypeIconType](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts) ### zLevel @@ -160,8 +163,7 @@ sidebar_position: 1 `@type {IPublicModelComponentMeta | null}` -相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) - +相关类型:[IPublicModelComponentMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) ### document @@ -169,7 +171,7 @@ sidebar_position: 1 `@type {IPublicModelDocumentModel | null}` -相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) +相关类型:[IPublicModelDocumentModel](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) ### prevSibling @@ -195,7 +197,7 @@ sidebar_position: 1 `@type {IPublicModelNodeChildren | null}` -相关类型:[IPublicModelNodeChildren](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node-children.ts) +相关类型:[IPublicModelNodeChildren](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node-children.ts) ### slots @@ -209,7 +211,7 @@ sidebar_position: 1 `@type {IPublicModelProp | null}` -相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) +相关类型:[IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) ### props @@ -217,8 +219,7 @@ sidebar_position: 1 `@type {IPublicModelProps | null}` -相关类型:[IPublicModelProps](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/props.ts) - +相关类型:[IPublicModelProps](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/props.ts) ### propsData @@ -227,8 +228,9 @@ sidebar_position: 1 `@type {IPublicTypePropsMap | IPublicTypePropsList | null}` 相关类型: -- [IPublicTypePropsMap](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/props-map.ts) -- [IPublicTypePropsList](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/props-list.ts) + +- [IPublicTypePropsMap](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/props-map.ts) +- [IPublicTypePropsList](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/props-list.ts) ### conditionGroup @@ -236,7 +238,7 @@ sidebar_position: 1 `@type {IPublicModelExclusiveGroup | null}` -相关类型:[IPublicModelExclusiveGroup](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/exclusive-group.ts) +相关类型:[IPublicModelExclusiveGroup](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/exclusive-group.ts) **@since v1.1.0** @@ -246,7 +248,7 @@ sidebar_position: 1 `@type {IPublicTypeNodeSchema | null}` -相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +相关类型:[IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### settingEntry @@ -256,9 +258,10 @@ sidebar_position: 1 相关章节:[设置器顶层操作对象](./setting-top-entry) -相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) +相关类型:[IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) ### visible + 当前节点是否可见 `@type {boolean}` @@ -328,7 +331,7 @@ hasLoop(): boolean; getProp(path: string, createIfNone: boolean): IPublicModelProp | null; ``` -相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) +相关类型:[IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) ### getPropValue @@ -360,7 +363,7 @@ getPropValue(path: string): any; getExtraProp(path: string, createIfNone?: boolean): IPublicModelProp | null; ``` -相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) +相关类型:[IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) ### getExtraPropValue @@ -395,8 +398,7 @@ setPropValue(path: string, value: CompositeValue) setPropValue(path: string, value: IPublicTypeCompositeValue): void; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) - +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) ### setExtraPropValue @@ -412,7 +414,7 @@ setPropValue(path: string, value: IPublicTypeCompositeValue): void; setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) ### importSchema @@ -427,7 +429,7 @@ setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void; importSchema(data: IPublicTypeNodeSchema): void; ``` -相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +相关类型:[IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### exportSchema @@ -444,8 +446,9 @@ exportSchema(stage: IPublicEnumTransformStage, options?: any): IPublicTypeNodeSc ``` 相关类型: -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) -- [IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) + +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### insertBefore @@ -513,7 +516,7 @@ replaceChild(node: IPublicModelNode, data: any): IPublicModelNode | null; replaceWith(schema: IPublicTypeNodeSchema): any; ``` -相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +相关类型:[IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### select @@ -541,6 +544,7 @@ hover(flag: boolean): void; ``` ### lock + 设置节点锁定状态 ```typescript @@ -635,6 +639,7 @@ isConditionalVisible(): boolean | undefined; **@since v1.1.0** ### setConditionalVisible + 设置该节点的 ConditionalVisible 为 true ```typescript @@ -649,6 +654,7 @@ setConditionalVisible(): void; **@since v1.1.0** ### getDOMNode + 获取节点实例对应的 dom 节点 ```typescript @@ -675,4 +681,4 @@ getRGL(): { isRGL: boolean; rglNode: IPublicModelNode | null; } -``` \ No newline at end of file +``` diff --git a/docs/docs/api/model/plugin-instance.md b/docs/docs/api/model/plugin-instance.md index 14ce388376..52d43e6b8b 100644 --- a/docs/docs/api/model/plugin-instance.md +++ b/docs/docs/api/model/plugin-instance.md @@ -3,9 +3,7 @@ title: PluginInstance sidebar_position: 12 --- -> **@types** [IPublicModelPluginInstance](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-instance.ts)<br/> -> **@since** v1.1.0 - +> **@types** [IPublicModelPluginInstance](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-instance.ts)<br/> > **@since** v1.1.0 ## 基本介绍 @@ -37,4 +35,4 @@ sidebar_position: 12 `@type {IPublicTypePluginMeta}` -相关类型:[IPublicTypePluginMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-meta.ts) +相关类型:[IPublicTypePluginMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-meta.ts) diff --git a/docs/docs/api/model/prop.md b/docs/docs/api/model/prop.md index d9b0d14f42..ebc064f5e3 100644 --- a/docs/docs/api/model/prop.md +++ b/docs/docs/api/model/prop.md @@ -2,8 +2,8 @@ title: Prop sidebar_position: 3 --- -> **@types** [IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)<br/> > **@since** v1.0.0 ## 基本介绍 @@ -35,7 +35,7 @@ key 值 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### slotNode @@ -43,8 +43,7 @@ key 值 `@type {IPublicModelNode | undefined | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) - +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ## 方法 @@ -61,7 +60,7 @@ key 值 setValue(val: IPublicTypeCompositeValue): void; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) ### getValue @@ -104,5 +103,6 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeCompositeValue; ``` 相关类型: -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) -- [IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) \ No newline at end of file + +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) diff --git a/docs/docs/api/model/props.md b/docs/docs/api/model/props.md index 9bd6eaa66b..03db08ee57 100644 --- a/docs/docs/api/model/props.md +++ b/docs/docs/api/model/props.md @@ -2,37 +2,37 @@ title: Props sidebar_position: 4 --- -> **@types** [IPublicModelProps](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/props.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelProps](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/props.ts)<br/> > **@since** v1.0.0 ## 基本介绍 属性集模型 ## 属性 + ### id id `@type {string}` - ### path 返回当前 props 的路径 `@type {string[]}` - ### node 返回当前属性集所属的节点实例 `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ## 方法 + ### getProp 获取指定 path 的属性模型实例 @@ -46,7 +46,7 @@ id getProp(path: string): IPublicModelProp | null; ``` -相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) +相关类型:[IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) ### getPropValue @@ -75,7 +75,7 @@ getPropValue(path: string): any; getExtraProp(path: string): IPublicModelProp | null; ``` -相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) +相关类型:[IPublicModelProp](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts) ### getExtraPropValue @@ -105,7 +105,7 @@ getExtraPropValue(path: string): any; setPropValue(path: string, value: IPublicTypeCompositeValue): void; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) ### setExtraPropValue @@ -121,8 +121,7 @@ setPropValue(path: string, value: IPublicTypeCompositeValue): void; setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) - +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) ### has @@ -155,6 +154,6 @@ has(key: string): boolean; add(value: IPublicTypeCompositeValue, key?: string | number | undefined): any; ``` -相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) +相关类型:[IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) -**@since v1.1.0** \ No newline at end of file +**@since v1.1.0** diff --git a/docs/docs/api/model/resource.md b/docs/docs/api/model/resource.md index a5fdeaf782..7bf094b50f 100644 --- a/docs/docs/api/model/resource.md +++ b/docs/docs/api/model/resource.md @@ -3,9 +3,7 @@ title: Resource sidebar_position: 13 --- -> **[@experimental](./#experimental)**<br/> -> **@types** [IPublicModelResource](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/resource.ts)<br/> -> **@since** v1.1.0 +> **[@experimental](./#experimental)**<br/> > **@types** [IPublicModelResource](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/resource.ts)<br/> > **@since** v1.1.0 ## 属性 @@ -55,4 +53,4 @@ sidebar_position: 13 资源配置信息 -`@type {Object}` \ No newline at end of file +`@type {Object}` diff --git a/docs/docs/api/model/selection.md b/docs/docs/api/model/selection.md index 9fc2e3a1cc..3b36087914 100644 --- a/docs/docs/api/model/selection.md +++ b/docs/docs/api/model/selection.md @@ -2,14 +2,15 @@ title: Selection sidebar_position: 6 --- -> **@types** [IPublicModelSelection](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/selection.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelSelection](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/selection.ts)<br/> > **@since** v1.0.0 ## 基本介绍 画布节点选中模型 ## 属性 + ### selected 返回选中的节点 id @@ -17,15 +18,17 @@ sidebar_position: 6 `@type {string[]}` ### node + 返回选中的节点(如多个节点只返回第一个) `@type {IPublicModelNode | null}` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) **@since v1.1.0** ## 方法 + ### select 选中指定节点(覆盖方式) @@ -116,14 +119,15 @@ add(id: string): void; getNodes(): IPublicModelNode[]; ``` -相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) +相关类型:[IPublicModelNode](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) ### getTopNodes + 获取选区的顶层节点 例如选中的节点为: - DivA - - ChildrenA + - ChildrenA - DivB getNodes 返回的是 [DivA、ChildrenA、DivB],getTopNodes 返回的是 [DivA、DivB],其中 ChildrenA 由于是二层节点,getTopNodes 不会返回 @@ -143,6 +147,7 @@ getTopNodes(includeRoot?: boolean): IPublicModelNode[]; **@since v1.0.16** ## 事件 + ### onSelectionChange 注册 selection 变化事件回调 @@ -156,6 +161,6 @@ getTopNodes(includeRoot?: boolean): IPublicModelNode[]; onSelectionChange(fn: (ids: string[]) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) -**@since v1.1.0** \ No newline at end of file +**@since v1.1.0** diff --git a/docs/docs/api/model/setting-field.md b/docs/docs/api/model/setting-field.md index 226a0c7e5b..1e66be3d6a 100644 --- a/docs/docs/api/model/setting-field.md +++ b/docs/docs/api/model/setting-field.md @@ -2,7 +2,8 @@ title: SettingField sidebar_position: 6 --- -> **@types** [IPublicModelSettingField](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-field.ts)<br/> + +> **@types** [IPublicModelSettingField](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-field.ts)<br/> ## 基本介绍 @@ -16,7 +17,6 @@ setter 设置器操作对象 `@type {boolean}` - #### id 获取设置属性的 id @@ -71,7 +71,7 @@ setter 设置器操作对象 相关章节:[设置器顶层操作对象](./setting-top-entry) -相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) +相关类型:[IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) #### node @@ -79,7 +79,6 @@ setter 设置器操作对象 `@type {IPublicModelNode | null}` - #### parent 获取设置属性的父设置属性 @@ -88,7 +87,7 @@ setter 设置器操作对象 相关章节:[设置器顶层操作对象](./setting-top-entry) -相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) +相关类型:[IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) #### top @@ -98,7 +97,7 @@ setter 设置器操作对象 相关章节:[设置器顶层操作对象](./setting-top-entry) -相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) +相关类型:[IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) #### isSettingField @@ -110,7 +109,7 @@ setter 设置器操作对象 `@type {IPublicModelComponentMeta}` -相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) +相关类型:[IPublicModelComponentMeta](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts) #### items @@ -118,7 +117,7 @@ setter 设置器操作对象 `@type {Array<IPublicModelSettingField | IPublicTypeCustomView>}` -相关类型:[IPublicTypeCustomView](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts) +相关类型:[IPublicTypeCustomView](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts) ## 方法 @@ -147,8 +146,9 @@ setValue(val: IPublicTypeCompositeValue, extraOptions?: IPublicTypeSetValueOptio ``` 相关类型: -- [IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) -- [IPublicTypeSetValueOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/set-value-options.ts) + +- [IPublicTypeCompositeValue](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts) +- [IPublicTypeSetValueOptions](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/set-value-options.ts) #### setPropValue @@ -248,7 +248,7 @@ getProps(): IPublicModelSettingTopEntry; 相关章节:[设置器顶层操作对象](./setting-top-entry) -相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) +相关类型:[IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts) #### isUseVariable @@ -287,7 +287,7 @@ setUseVariable(flag: boolean): void; createField(config: IPublicTypeFieldConfig): IPublicModelSettingField; ``` -相关类型:[IPublicTypeFieldConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts) +相关类型:[IPublicTypeFieldConfig](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts) #### getMockOrValue @@ -339,4 +339,4 @@ remove(): void; onEffect(action: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) \ No newline at end of file +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) diff --git a/docs/docs/api/model/setting-top-entry.md b/docs/docs/api/model/setting-top-entry.md index 2e2cad52be..2061c21733 100644 --- a/docs/docs/api/model/setting-top-entry.md +++ b/docs/docs/api/model/setting-top-entry.md @@ -2,7 +2,8 @@ title: SettingTopEntry sidebar_position: 6 --- -> **@types** [IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)<br/> + +> **@types** [IPublicModelSettingTopEntry](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)<br/> ## 基本介绍 @@ -30,10 +31,10 @@ setter 设置器顶层操作对象 */ get(propName: string | number): IPublicModelSettingField | null; ``` -相关章节:[设置器操作对象](./setting-field) -相关类型:[IPublicModelSettingField](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-field.ts) +相关章节:[设置器操作对象](./setting-field) +相关类型:[IPublicModelSettingField](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/setting-field.ts) #### getPropValue @@ -71,4 +72,4 @@ setPropValue(propName: string | number, value: any): void; * @param propName */ clearPropValue(propName: string | number): void; -``` \ No newline at end of file +``` diff --git a/docs/docs/api/model/simulatorRender.md b/docs/docs/api/model/simulatorRender.md index f5bacec493..a98703bb2e 100644 --- a/docs/docs/api/model/simulatorRender.md +++ b/docs/docs/api/model/simulatorRender.md @@ -2,14 +2,15 @@ title: SimulatorRender sidebar_position: 6 --- -> **@types** [IPublicModelSimulatorRender](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/simulator-render.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicModelSimulatorRender](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/simulator-render.ts)<br/> > **@since** v1.0.0 ## 基本介绍 画布节点选中模型 ## 属性 + ### components 画布组件列表 @@ -35,4 +36,3 @@ components: { */ rerender: () => void; ``` - diff --git a/docs/docs/api/model/window.md b/docs/docs/api/model/window.md index 9db39996fa..5ba232cb69 100644 --- a/docs/docs/api/model/window.md +++ b/docs/docs/api/model/window.md @@ -3,10 +3,7 @@ title: Window sidebar_position: 12 --- -> **[@experimental](./#experimental)**<br/> -> **@types** [IPublicModelWindow](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/window.ts)<br/> -> **@since** v1.1.0 - +> **[@experimental](./#experimental)**<br/> > **@types** [IPublicModelWindow](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/window.ts)<br/> > **@since** v1.1.0 ## 基本介绍 @@ -39,6 +36,7 @@ sidebar_position: 12 关联模型 [IPublicModelResource](./resource) ### currentEditorView + 窗口当前视图 `@type {IPublicModelEditorView}` @@ -60,22 +58,25 @@ sidebar_position: 12 ## 方法 ### importSchema + 当前窗口导入 schema, 会调用当前窗口对应资源的 import 钩子 ```typescript -function importSchema(schema: IPublicTypeNodeSchema): void +function importSchema(schema: IPublicTypeNodeSchema): void; ``` -相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) +相关类型:[IPublicTypeNodeSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts) ### changeViewType + 修改当前窗口视图类型 ```typescript -function changeViewType(viewName: string): void +function changeViewType(viewName: string): void; ``` ### save + 当前窗口的保存方法,会调用当前窗口对应资源的 save 钩子 ```typescript @@ -92,7 +93,7 @@ function save(): Promise(void) onChangeViewType(fn: (viewName: string) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onSave @@ -102,6 +103,6 @@ onChangeViewType(fn: (viewName: string) => void): IPublicTypeDisposable; onSave(fn: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) **@since v1.1.7** diff --git a/docs/docs/api/plugins.md b/docs/docs/api/plugins.md index 19a462867a..e30e0d9b76 100644 --- a/docs/docs/api/plugins.md +++ b/docs/docs/api/plugins.md @@ -3,7 +3,7 @@ title: plugins - 插件 API sidebar_position: 2 --- -> **@types** [IPublicApiPlugins](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/plugins.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiPlugins](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/plugins.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -24,8 +24,8 @@ async function register( 相关 types: -- [IPublicTypePlugin](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin.ts) -- [IPublicTypePluginRegisterOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-register-options.ts) +- [IPublicTypePlugin](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/plugin.ts) +- [IPublicTypePluginRegisterOptions](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-register-options.ts) 其中第一个参数 plugin 通过低代码工具链的插件脚手架生成编写模板,开发者可以参考[这个章节](/site/docs/guide/expand/editor/cli)进行创建 @@ -97,7 +97,7 @@ await plugins.register(PluginA); await plugins.register(PluginB); ``` -> 注:ctx 是在插件中获取引擎 API 的唯一渠道,具体定义参见 [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) +> 注:ctx 是在插件中获取引擎 API 的唯一渠道,具体定义参见 [IPublicModelPluginContext](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) #### 设置兼容引擎版本示例 @@ -239,9 +239,9 @@ getPluginPreference( ## 相关类型定义 -- [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) -- [IPublicTypePluginConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-config.ts) -- [IPublicModelPluginInstance](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-instance.ts) +- [IPublicModelPluginContext](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts) +- [IPublicTypePluginConfig](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-config.ts) +- [IPublicModelPluginInstance](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-instance.ts) ## 插件元数据工程转化示例 diff --git a/docs/docs/api/project.md b/docs/docs/api/project.md index 20bdceb69e..ce52891da9 100644 --- a/docs/docs/api/project.md +++ b/docs/docs/api/project.md @@ -41,7 +41,7 @@ sidebar_position: 10 get currentDocument(): IPublicModelDocumentModel | null; ``` -相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) +相关类型:[IPublicModelDocumentModel](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) ### documents @@ -56,7 +56,7 @@ get currentDocument(): IPublicModelDocumentModel | null; get documents(): IPublicModelDocumentModel[]; ``` -相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) +相关类型:[IPublicModelDocumentModel](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) ### simulatorHost @@ -70,7 +70,7 @@ get documents(): IPublicModelDocumentModel[]; get simulatorHost(): IPublicApiSimulatorHost | null; ``` -相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +相关类型:[IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) ## 方法 @@ -89,8 +89,8 @@ openDocument(doc?: string | IPublicTypeRootSchema | undefined): IPublicModelDocu 相关类型: -- [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) -- [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) +- [IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +- [IPublicTypeRootSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) ### createDocument @@ -108,8 +108,8 @@ createDocument(data?: IPublicTypeRootSchema): IPublicModelDocumentModel | null; 相关类型: -- [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) -- [IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) +- [IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +- [IPublicTypeRootSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts) ### removeDocument @@ -124,7 +124,7 @@ createDocument(data?: IPublicTypeRootSchema): IPublicModelDocumentModel | null; removeDocument(doc: IPublicModelDocumentModel): void; ``` -相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +相关类型:[IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) ### getDocumentByFileName @@ -140,7 +140,7 @@ removeDocument(doc: IPublicModelDocumentModel): void; getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null; ``` -相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +相关类型:[IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) ### getDocumentById @@ -156,7 +156,7 @@ getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null; getDocumentById(id: string): IPublicModelDocumentModel | null; ``` -相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +相关类型:[IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) ### exportSchema @@ -173,8 +173,8 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema; 相关类型: -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) -- [IPublicTypeProjectSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypeProjectSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) ### importSchema @@ -189,7 +189,7 @@ exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema; importSchema(schema?: IPublicTypeProjectSchema): void; ``` -相关类型:[IPublicTypeProjectSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) +相关类型:[IPublicTypeProjectSchema](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts) ### addPropsTransducer @@ -210,8 +210,8 @@ addPropsTransducer( 相关类型: -- [IPublicTypePropsTransducer](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/props-transducer.ts) -- [IPublicEnumTransformStage](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) +- [IPublicTypePropsTransducer](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/props-transducer.ts) +- [IPublicEnumTransformStage](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/enum/transform-stage.ts) **示例** 在保存的时候删除每一个组件的 props.hidden @@ -249,7 +249,7 @@ DeleteHiddenTransducer.pluginName = 'DeleteHiddenTransducer'; ```typescript /** * 设置多语言语料 - * 数据格式参考 https://github.com/alibaba/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa + * 数据格式参考 https://github.com/fe-lce/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa * * set I18n data for this project * @param value object @@ -306,7 +306,7 @@ export {}; onRemoveDocument(fn: (data: { id: string }) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) **@since v1.0.16** @@ -324,8 +324,8 @@ onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDispo 相关类型: -- [IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicModelDocumentModel](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onSimulatorHostReady @@ -341,8 +341,8 @@ onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDi 相关类型: -- [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) -- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- [IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) +- [IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onSimulatorRendererReady @@ -356,4 +356,4 @@ onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDi onSimulatorRendererReady(fn: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md index 6370dff3ec..ca79d1b605 100644 --- a/docs/docs/api/setters.md +++ b/docs/docs/api/setters.md @@ -3,7 +3,7 @@ title: setters - 设置器 API sidebar_position: 10 --- -> **@types** [IPublicApiSetters](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/setters.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiSetters](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/setters.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -25,7 +25,7 @@ sidebar_position: 10 getSetter(type: string): IPublicTypeRegisteredSetter | null; ``` -相关类型:[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) +相关类型:[IPublicTypeRegisteredSetter](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) ### getSettersMap @@ -42,7 +42,7 @@ getSettersMap(): Map<string, IPublicTypeRegisteredSetter & { }>; ``` -相关类型:[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) +相关类型:[IPublicTypeRegisteredSetter](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) ### registerSetter @@ -64,8 +64,8 @@ registerSetter( 相关类型: -- [IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) -- [IPublicTypeCustomView](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts) +- [IPublicTypeRegisteredSetter](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts) +- [IPublicTypeCustomView](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts) ## 使用示例 diff --git a/docs/docs/api/simulatorHost.md b/docs/docs/api/simulatorHost.md index 70eaca0220..5efb6e89ef 100644 --- a/docs/docs/api/simulatorHost.md +++ b/docs/docs/api/simulatorHost.md @@ -2,15 +2,19 @@ title: simulatorHost - 模拟器 API sidebar_position: 10 --- -> **@types** [IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)<br/> -> **@since** v1.0.0 + +> **@types** [IPublicApiSimulatorHost](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)<br/> > **@since** v1.0.0 ## 模块简介 + 负责模拟器相关的 API,包括画布尺寸、语言等。 ## 方法 + ### set + 设置 host 配置值 + ```typescript /** * 设置若干用于画布渲染的变量,比如画布大小、locale 等。 @@ -20,22 +24,27 @@ sidebar_position: 10 */ set(key: string, value: any): void; ``` + **示例** 设置若干用于画布渲染的变量,比如画布大小、locale 等。 以设置画布大小为例: 目前支持 3 种定制方式: -```typescript +```typescript // 直接使用内置设备类型 project.simulatorHost.set('device', 'mobile' / 'iphonex' / 'iphone6' / 'default'); // 定制 canvas 的样式类 project.simulatorHost.set('deviceClassName', 'my-canvas-class'); // 最灵活的方式,直接设置 canvas / viewport 的样式(canvas 是外框,viewport 是内框,可以在 canvas 设置手机 / 平板背景图) -project.simulatorHost.set('deviceStyle', { canvas: { width: '300px', backgroundColor: 'red' }, viewport: { width: '280px' } }); +project.simulatorHost.set('deviceStyle', { + canvas: { width: '300px', backgroundColor: 'red' }, + viewport: { width: '280px' }, +}); ``` ### get + 获取模拟器中设置的变量,比如画布大小、locale 等。 ```typescript @@ -50,6 +59,7 @@ get(key: string): any; ``` ### rerender + 触发组件构建,并刷新渲染画布 ```typescript @@ -61,6 +71,7 @@ rerender(): void; ``` ### scrollToNode + 滚动到指定节点 ```typescript @@ -72,4 +83,5 @@ rerender(): void; */ scrollToNode(node: IPublicModelNode): void; ``` + **@since v1.1.0** diff --git a/docs/docs/api/skeleton.md b/docs/docs/api/skeleton.md index 5b07624643..7269bec9d1 100644 --- a/docs/docs/api/skeleton.md +++ b/docs/docs/api/skeleton.md @@ -3,7 +3,7 @@ title: skeleton - 面板 API sidebar_position: 10 --- -> **@types** [IPublicApiSkeleton](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/skeleton.ts)<br/> > **@since** v1.0.0 +> **@types** [IPublicApiSkeleton](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/skeleton.ts)<br/> > **@since** v1.0.0 ## 模块简介 @@ -204,7 +204,7 @@ remove(config: IPublicTypeWidgetBaseConfig): number | undefined; getPanel(name: string): IPublicModelSkeletonItem | undefined; ``` -相关类型:[IPublicModelSkeletonItem](https://github.com/alibaba/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts) +相关类型:[IPublicModelSkeletonItem](https://github.com/fe-lce/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts) @since v1.1.10 @@ -326,7 +326,7 @@ hideArea(areaName: string): void; getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] | undefined; ``` -相关类型:[IPublicModelSkeletonItem](https://github.com/alibaba/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts) +相关类型:[IPublicModelSkeletonItem](https://github.com/fe-lce/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts) ### registerConfigTransducer @@ -406,7 +406,7 @@ export default controlPanelWidthPlugin; onShowPanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onHidePanel @@ -422,7 +422,7 @@ onShowPanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => v onHidePanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onDisableWidget @@ -436,7 +436,7 @@ onHidePanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => v onDisableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onEnableWidget @@ -450,7 +450,7 @@ onDisableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) onEnableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onShowWidget @@ -466,7 +466,7 @@ onEnableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) = onShowWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onHideWidget @@ -482,7 +482,7 @@ onShowWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => onHideWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ## 使用示例 diff --git a/docs/docs/api/workspace.md b/docs/docs/api/workspace.md index 74f7d6950f..fef81e48be 100644 --- a/docs/docs/api/workspace.md +++ b/docs/docs/api/workspace.md @@ -3,9 +3,7 @@ title: workspace - 应用级 API sidebar_position: 10 --- -> **[@experimental](./#experimental)**<br/> -> **@types** [IPublicApiWorkspace](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/workspace.ts)<br/> -> **@since** v1.1.0 +> **[@experimental](./#experimental)**<br/> > **@types** [IPublicApiWorkspace](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/api/workspace.ts)<br/> > **@since** v1.1.0 ## 模块简介 @@ -70,6 +68,7 @@ get resourceList(): IPublicModelResource; ## 方法 ### registerResourceType + 注册资源 ```typescript @@ -77,7 +76,7 @@ get resourceList(): IPublicModelResource; registerResourceType(resourceTypeModel: IPublicTypeResourceType): void; ``` -相关类型:[IPublicTypeResourceType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-type.ts) +相关类型:[IPublicTypeResourceType](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/resource-type.ts) ### setResourceList @@ -87,7 +86,7 @@ registerResourceType(resourceTypeModel: IPublicTypeResourceType): void; setResourceList(resourceList: IPublicResourceList) {} ``` -相关类型:[IPublicResourceData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-list.ts) +相关类型:[IPublicResourceData](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/resource-list.ts) ### openEditorWindow @@ -147,7 +146,7 @@ removeEditorWindowById(id: string): void; function onChangeWindows(fn: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onChangeActiveWindow @@ -157,8 +156,7 @@ active 窗口变更事件 function onChangeActiveWindow(fn: () => void): IPublicTypeDisposable; ``` -相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) - +相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) ### onResourceListChange @@ -168,5 +166,5 @@ function onChangeActiveWindow(fn: () => void): IPublicTypeDisposable; onResourceListChange(fn: (resourceList: IPublicResourceList): void): (): IPublicTypeDisposable; ``` -- 相关类型:[IPublicResourceOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-options.ts) -- 相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) +- 相关类型:[IPublicResourceOptions](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/resource-options.ts) +- 相关类型:[IPublicTypeDisposable](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts) diff --git a/docs/docs/demoUsage/appendix/loop.md b/docs/docs/demoUsage/appendix/loop.md index 46f39398af..da536c77e8 100644 --- a/docs/docs/demoUsage/appendix/loop.md +++ b/docs/docs/demoUsage/appendix/loop.md @@ -2,6 +2,7 @@ title: 如何使用循环值 sidebar_position: 0 --- + 1.设置循环数据 ![image.png](https://img.alicdn.com/imgextra/i1/O1CN01Gw1kXO1qaXulQCWap_!!6000000005512-2-tps-3840-1900.png) @@ -19,10 +20,10 @@ this.index 是当前循环的索引值。 3.在事件绑定函数中使用 在事件绑定函数中使用扩展参数设置 -![image](https://github.com/alibaba/lowcode-engine/assets/11935995/7274506e-decd-497a-b07f-c95941a706b4) +![image](https://github.com/fe-lce/lowcode-engine/assets/11935995/7274506e-decd-497a-b07f-c95941a706b4) 绑定之后在函数中使用 -![image](https://github.com/alibaba/lowcode-engine/assets/11935995/9d52ee5c-9959-4991-91be-9391e639bb7e) +![image](https://github.com/fe-lce/lowcode-engine/assets/11935995/9d52ee5c-9959-4991-91be-9391e639bb7e) 按钮点击效果 -![image](https://github.com/alibaba/lowcode-engine/assets/11935995/6ca590c9-1f5f-4d48-94a5-439130a22e92) +![image](https://github.com/fe-lce/lowcode-engine/assets/11935995/6ca590c9-1f5f-4d48-94a5-439130a22e92) diff --git a/docs/docs/faq/faq003.md b/docs/docs/faq/faq003.md index 780614dcfc..139182ce4b 100644 --- a/docs/docs/faq/faq003.md +++ b/docs/docs/faq/faq003.md @@ -3,20 +3,25 @@ title: 点击事件如何添加参数 sidebar_position: 3 tags: [FAQ] --- + 背景: -- [Antd Table 下 button 点击事件怎么拿到行数据?](https://github.com/alibaba/lowcode-engine/issues/341) +- [Antd Table 下 button 点击事件怎么拿到行数据?](https://github.com/fe-lce/lowcode-engine/issues/341) + ## 方式 1 + ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01i58EGG1bxFJBdlS6x_!!6000000003531-2-tps-3342-1126.png) 参考 fusion protable,将操作列直接耦合 button 组件,因为 col.render 函数能拿到 行数据 record,那么 pro-table 组件封装的时候,就可以在渲染操作列按钮的时候,将 col.render 参数透传给 button 组件 ## 方式 2 + slot + 扩展参数 ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01pQk2RC1WBXyxjNDif_!!6000000002750-2-tps-3284-1148.png) 将扩展参数写成: + ```json { record: this.record, @@ -25,6 +30,7 @@ slot + 扩展参数 ``` 那事件处理函数的第二个参数即可得到: + ```json onClick_new_new(...args){ console.log(args) diff --git a/docs/docs/faq/faq009.md b/docs/docs/faq/faq009.md index e54229ac0e..d1375b100c 100644 --- a/docs/docs/faq/faq009.md +++ b/docs/docs/faq/faq009.md @@ -12,7 +12,7 @@ tags: [FAQ] **解决方案** LowCodeEngine 升级到 1.0.8 -> 相关 PR:[https://github.com/alibaba/lowcode-engine/pull/383](https://github.com/alibaba/lowcode-engine/pull/383) +> 相关 PR:[https://github.com/fe-lce/lowcode-engine/pull/383](https://github.com/fe-lce/lowcode-engine/pull/383) ## 编辑态,snippets 和注入组件不对应 diff --git a/docs/docs/faq/faq014.md b/docs/docs/faq/faq014.md index 8f5f15fe31..1cccfaee08 100644 --- a/docs/docs/faq/faq014.md +++ b/docs/docs/faq/faq014.md @@ -3,18 +3,25 @@ title: VERSION_PLACEHOLDER is not defined sidebar_position: 14 tags: [FAQ] --- + # 问题原因 -由于 lowcode-engine 目前只提供 cdn 的使用方式。如果是自己创建的项目,遇到这个报错了,主要是因为将 npm 包打包进去了。 + +由于 lowcode-engine 目前只提供 cdn 的使用方式。如果是自己创建的项目,遇到这个报错了,主要是因为将 npm 包打包进去了。 # 解决方案 ## engine-demo 项目 -在项目的 externals 配置里加[一行配置](https://github.com/alibaba/lowcode-demo/blob/f8afad0df3190565caccc0a1dfd750dbf84c680f/build.json#L16) + +在项目的 externals 配置里加[一行配置](https://github.com/fe-lce/lowcode-demo/blob/f8afad0df3190565caccc0a1dfd750dbf84c680f/build.json#L16) ## 其他项目 + [相关文档](/site/docs/guide/create/useEditor#引入-umd-包资源) + ### webpack + [https://webpack.docschina.org/configuration/externals/](https://webpack.docschina.org/configuration/externals/) ### 使用文档 + 待补充 diff --git a/docs/docs/faq/faq018.md b/docs/docs/faq/faq018.md index b5a5902404..679eef1989 100644 --- a/docs/docs/faq/faq018.md +++ b/docs/docs/faq/faq018.md @@ -3,8 +3,9 @@ title: 是否可以生成 Vue 页面代码? sidebar_position: 18 tags: [FAQ] --- + 低代码引擎在架构上是和具体语言无关的,通过一定的扩展和插件是可以生成 Vue 页面代码的。 -如果只是用现有的基于 React 的 fusion 物料来搭建,只是在最终出码的时候生成 Vue 页面代码,那您需要准备一套和 fusion 兼容的 vue 物料,并定制个出码方案,将[下面的一些出码插件](https://github.com/alibaba/lowcode-engine/blob/main/modules/code-generator/src/solutions/icejs.ts)替换成生成 Vue 框架的即可: +如果只是用现有的基于 React 的 fusion 物料来搭建,只是在最终出码的时候生成 Vue 页面代码,那您需要准备一套和 fusion 兼容的 vue 物料,并定制个出码方案,将[下面的一些出码插件](https://github.com/fe-lce/lowcode-engine/blob/main/modules/code-generator/src/solutions/icejs.ts)替换成生成 Vue 框架的即可: ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01VxkwCL1l85DiDC2BO_!!6000000004773-2-tps-974-1368.png) 详细定制方案可以参考下[《自定义出码》](/site/docs/guide/expand/runtime/codeGeneration#5自定义出码)。 如果您希望在搭建的时候也使用 Vue 的物料,则还需要扩展定制入料、画布和渲染器等模块,详细方案请参考下[《扩展低代码编辑器》](/site/docs/guide/expand/editor/summary) diff --git a/docs/docs/faq/faq023.md b/docs/docs/faq/faq023.md index e03f7118e0..72ee0c1ef4 100644 --- a/docs/docs/faq/faq023.md +++ b/docs/docs/faq/faq023.md @@ -5,16 +5,20 @@ tags: [FAQ] --- ## 问题描述 + 在低代码引擎的页面渲染过程中,可能会遇到一个关于Slot组件的报错,提示“Slot找不到”。实际上,在渲染态时不应使用Slot组件。 ## 问题原因 + 低代码引擎渲染分为两个状态:设计态和渲染态。 + - **设计态**:为了帮助插槽进行可视化设计,引入了Slot组件。 - **渲染态**:在此状态下,不需要使用Slot组件。 这个问题通常是因为在渲染态错误地使用了设计态的schema。 ## 解决方案 + 1. **区分设计态和渲染态**:通过`project.exportSchema(TransformStage.Save)`的参数来区分。 - `TransformStage.Save`代表渲染态的schema,其中不包含Slot组件。 - 【默认值】`TransformStage.Render`代表设计态的schema,其中包含Slot组件。 @@ -22,10 +26,12 @@ tags: [FAQ] 3. **处理脏数据问题**:如果问题是由脏数据导致,清除数据并重新拖拽组件以恢复正常。 ## 注意事项 + - 确保在代码和配置中正确区分设计态和渲染态。 - 如果遇到持续的问题,检查是否有脏数据或配置错误,并进行相应的清理和调整。 ## 相关链接 -- Issue链接:[Issue #1798](https://github.com/alibaba/lowcode-engine/issues/1798) + +- Issue链接:[Issue #1798](https://github.com/fe-lce/lowcode-engine/issues/1798) --- diff --git a/docs/docs/guide/appendix/npms.md b/docs/docs/guide/appendix/npms.md index 24cf78a36e..e1f016ae34 100644 --- a/docs/docs/guide/appendix/npms.md +++ b/docs/docs/guide/appendix/npms.md @@ -3,46 +3,46 @@ title: NPM 包对应源码位置汇总 sidebar_position: 3 --- -| 包名 | 仓库 | 路径 | -| -------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------ | -| @lce/lowcode-code-generator | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/code-generator | -| @lce/lowcode-material-parser | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | modules/material-parser | -| @lce/lowcode-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/designer | -| @lce/lowcode-editor-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-core | -| @lce/lowcode-editor-skeleton | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/editor-skeleton | -| @lce/lowcode-engine | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/engine | -| @lce/lowcode-plugin-designer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-designer | -| @lce/lowcode-plugin-outline-pane | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/plugin-outline-pane | -| @lce/lowcode-react-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-renderer | -| @lce/lowcode-react-simulator-renderer | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/react-simulator-renderer | -| @lce/lowcode-renderer-core | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/renderer-core | -| @lce/lowcode-shell | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/shell | -| @lce/lowcode-types | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/types | -| @lce/lowcode-utils | [https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) | packages/utils | -| @alilc/lowcode-datasource-engine | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-engine | -| @alilc/lowcode-datasource-fetch-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-fetch-handler | -| @alilc/lowcode-datasource-jsonp-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-jsonp-handler | -| @alilc/lowcode-datasource-mopen-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mopen-handler | -| @alilc/lowcode-datasource-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-mtop-handler | -| @alilc/lowcode-datasource-types | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-types | -| @alilc/lowcode-datasource-universal-mtop-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-universal-mtop-handler | -| @alilc/lowcode-datasource-url-params-handler | [https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) | packages/datasource-url-params-handler | -| @alilc/build-plugin-alt | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/build-plugin-alt | -| @alilc/create-element | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/create-element | -| @alilc/lowcode-plugin-inject | [https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) | packages/lowcode-plugin-inject | -| @alilc/action-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/action-block | -| @alilc/lowcode-plugin-base-monaco-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-base-monaco-editor | -| @alilc/lowcode-plugin-block | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-block | -| @alilc/lowcode-plugin-code-editor | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-code-editor | -| @alilc/lowcode-plugin-components-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-components-pane | -| @alilc/lowcode-plugin-datasource-pane | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-datasource-pane | -| @alilc/lowcode-plugin-manual | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-manual | -| @alilc/lowcode-plugin-schema | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-schema | -| @alilc/lowcode-plugin-undo-redo | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-undo-redo | -| @alilc/lowcode-plugin-zh-en | [https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) | packages/plugin-zh-en | -| @alifd/fusion-ui | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-ui | -| @alilc/lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/fusion-lowcode-materials | -| @alilc/antd-lowcode-materials | [https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) | packages/antd-lowcode-materials | -| @alifd/layout(原 @alifd/pro-layout 升级后的版本) | [https://github.com/alibaba-fusion/layout](https://github.com/alibaba-fusion/layout) | | -| | | | -| | | | +| 包名 | 仓库 | 路径 | +| -------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------ | +| @lce/lowcode-code-generator | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/code-generator | +| @lce/lowcode-material-parser | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/material-parser | +| @lce/lowcode-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/designer | +| @lce/lowcode-editor-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-core | +| @lce/lowcode-editor-skeleton | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-skeleton | +| @lce/lowcode-engine | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/engine | +| @lce/lowcode-plugin-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-designer | +| @lce/lowcode-plugin-outline-pane | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-outline-pane | +| @lce/lowcode-react-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-renderer | +| @lce/lowcode-react-simulator-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-simulator-renderer | +| @lce/lowcode-renderer-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/renderer-core | +| @lce/lowcode-shell | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/shell | +| @lce/lowcode-types | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/types | +| @lce/lowcode-utils | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/utils | +| @alilc/lowcode-datasource-engine | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-engine | +| @alilc/lowcode-datasource-fetch-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-fetch-handler | +| @alilc/lowcode-datasource-jsonp-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-jsonp-handler | +| @alilc/lowcode-datasource-mopen-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-mopen-handler | +| @alilc/lowcode-datasource-mtop-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-mtop-handler | +| @alilc/lowcode-datasource-types | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-types | +| @alilc/lowcode-datasource-universal-mtop-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-universal-mtop-handler | +| @alilc/lowcode-datasource-url-params-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-url-params-handler | +| @alilc/build-plugin-alt | [https://github.com/fe-lce/lowcode-tools](https://github.com/fe-lce/lowcode-tools) | packages/build-plugin-alt | +| @alilc/create-element | [https://github.com/fe-lce/lowcode-tools](https://github.com/fe-lce/lowcode-tools) | packages/create-element | +| @alilc/lowcode-plugin-inject | [https://github.com/fe-lce/lowcode-tools](https://github.com/fe-lce/lowcode-tools) | packages/lowcode-plugin-inject | +| @alilc/action-block | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/action-block | +| @alilc/lowcode-plugin-base-monaco-editor | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-base-monaco-editor | +| @alilc/lowcode-plugin-block | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-block | +| @alilc/lowcode-plugin-code-editor | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-code-editor | +| @alilc/lowcode-plugin-components-pane | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-components-pane | +| @alilc/lowcode-plugin-datasource-pane | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-datasource-pane | +| @alilc/lowcode-plugin-manual | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-manual | +| @alilc/lowcode-plugin-schema | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-schema | +| @alilc/lowcode-plugin-undo-redo | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-undo-redo | +| @alilc/lowcode-plugin-zh-en | [https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) | packages/plugin-zh-en | +| @alifd/fusion-ui | [https://github.com/fe-lce/lowcode-materials](https://github.com/fe-lce/lowcode-materials) | packages/fusion-ui | +| @alilc/lowcode-materials | [https://github.com/fe-lce/lowcode-materials](https://github.com/fe-lce/lowcode-materials) | packages/fusion-lowcode-materials | +| @alilc/antd-lowcode-materials | [https://github.com/fe-lce/lowcode-materials](https://github.com/fe-lce/lowcode-materials) | packages/antd-lowcode-materials | +| @alifd/layout(原 @alifd/pro-layout 升级后的版本) | [https://github.com/fe-lce-fusion/layout](https://github.com/fe-lce-fusion/layout) | | +| | | | +| | | | diff --git a/docs/docs/guide/appendix/repos.md b/docs/docs/guide/appendix/repos.md index 87852258d2..4dacd23ec2 100644 --- a/docs/docs/guide/appendix/repos.md +++ b/docs/docs/guide/appendix/repos.md @@ -2,10 +2,12 @@ title: 低代码仓库列表 sidebar_position: 2 --- + ## 1. 引擎主包 + 包含引擎的 4 大模块,入料、编排、渲染和出码。 -仓库地址:[https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) +仓库地址:[https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) 子包明细: 1. designer @@ -24,40 +26,43 @@ sidebar_position: 2 14. code-generator ## 2. 引擎官方扩展包 + 包含了常用的设置器(setter)、跟 setter 绑定的插件等 -仓库地址:[https://github.com/alibaba/lowcode-engine-ext](https://github.com/alibaba/lowcode-engine-ext) +仓库地址:[https://github.com/fe-lce/lowcode-engine-ext](https://github.com/fe-lce/lowcode-engine-ext) 子包明细: - 设置器 setter - - array-setter - - bool-setter - - classname-setter - - color-setter - - events-setter - - expression-setter - - function-setter - - i18n-setter - - icon-setter - - json-setter - - mixed-setter - - number-setter - - object-setter - - out.txt - - radiogroup-setter - - select-setter - - slot-setter - - string-setter - - style-setter - - textarea-setter - - variable-setter + - array-setter + - bool-setter + - classname-setter + - color-setter + - events-setter + - expression-setter + - function-setter + - i18n-setter + - icon-setter + - json-setter + - mixed-setter + - number-setter + - object-setter + - out.txt + - radiogroup-setter + - select-setter + - slot-setter + - string-setter + - style-setter + - textarea-setter + - variable-setter - 插件 plugin - - plugin-event-bind-dialog 事件绑定浮层 - - plugin-variable-bind-dialog 变量绑定浮层 + - plugin-event-bind-dialog 事件绑定浮层 + - plugin-variable-bind-dialog 变量绑定浮层 + ## 3. 低代码插件 + 包含了常用的插件等 -仓库地址:[https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) +仓库地址:[https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) 子包明细: - base-monaco-editor 基础代码编辑器 @@ -69,17 +74,26 @@ sidebar_position: 2 - plugin-zh-cn 中英文切换功能 ## 4. 引擎 demo + 展示使用引擎编排和渲染等模块以及相应的依赖资源配置基础 demo -仓库地址:[https://github.com/alibaba/lowcode-demo](https://github.com/alibaba/lowcode-demo) +仓库地址:[https://github.com/fe-lce/lowcode-demo](https://github.com/fe-lce/lowcode-demo) + ## 5. 工具链包 + 包含生成引擎生态元素(setter、物料、插件)的脚手架,启动脚本,调试插件等 -仓库地址:[https://github.com/alibaba/lowcode-tools](https://github.com/alibaba/lowcode-tools) +仓库地址:[https://github.com/fe-lce/lowcode-tools](https://github.com/fe-lce/lowcode-tools) + ## 6. 低代码数据源引擎 + 负责在渲染&出码两种运行时实现数据源管理,承担低代码搭建数据请求的能力; -仓库地址:[https://github.com/alibaba/lowcode-datasource](https://github.com/alibaba/lowcode-datasource) +仓库地址:[https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) + ## 7. 基础物料 & 物料描述 -仓库地址:[https://github.com/alibaba/lowcode-materials](https://github.com/alibaba/lowcode-materials) + +仓库地址:[https://github.com/fe-lce/lowcode-materials](https://github.com/fe-lce/lowcode-materials) + ## 8. 出码 demo -仓库地址:[https://github.com/alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) + +仓库地址:[https://github.com/fe-lce/lowcode-code-generator-demo](https://github.com/fe-lce/lowcode-code-generator-demo) diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 39d45201cd..5c8bb646aa 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -162,7 +162,7 @@ init 的功能包括但不限于: 2. 传递 preference 并设置 plugins 入参; 3. 初始化 Workbench; -> 本节中的低代码编辑器例子可以在 demo 中找到:[https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts) +> 本节中的低代码编辑器例子可以在 demo 中找到:[https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/index.ts](https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/index.ts) ## 配置低代码编辑器 diff --git a/docs/docs/guide/create/useRenderer.md b/docs/docs/guide/create/useRenderer.md index 6fd902005d..003123f541 100644 --- a/docs/docs/guide/create/useRenderer.md +++ b/docs/docs/guide/create/useRenderer.md @@ -20,7 +20,7 @@ sidebar_position: 1 [在 Demo 中](https://lowcode-engine.cn/demo/demo-general/index.html),右上角有渲染模块的示例使用方式: ![Mar-13-2022 16-52-49.gif](https://img.alicdn.com/imgextra/i2/O1CN01PRsEl61o7Zct5fJML_!!6000000005178-1-tps-1534-514.gif) -基于官方提供的渲染模块 [@alifd/lowcode-react-renderer](https://github.com/alibaba/lowcode-engine/tree/main/packages/react-renderer),你可以在 React 上下文渲染低代码编辑器产出的页面。 +基于官方提供的渲染模块 [@alifd/lowcode-react-renderer](https://github.com/fe-lce/lowcode-engine/tree/main/packages/react-renderer),你可以在 React 上下文渲染低代码编辑器产出的页面。 ### 构造渲染模块所需数据 @@ -79,9 +79,9 @@ const SamplePreview = () => { }; ``` -> 注 1:您可以注意到,此处是依赖了 React 进行渲染的,对于 Vue 形态的渲染或编辑器支持,详见[对应公告](https://github.com/alibaba/lowcode-engine/issues/236)。 +> 注 1:您可以注意到,此处是依赖了 React 进行渲染的,对于 Vue 形态的渲染或编辑器支持,详见[对应公告](https://github.com/fe-lce/lowcode-engine/issues/236)。 > -> 注 2:本节示例可在 Demo 代码里找到更完整的版本:[https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/preview.tsx](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/preview.tsx) +> 注 2:本节示例可在 Demo 代码里找到更完整的版本:[https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/preview.tsx](https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/preview.tsx) ## 出码模块 @@ -89,7 +89,7 @@ const SamplePreview = () => { ![Mar-13-2022 16-55-56.gif](https://img.alicdn.com/imgextra/i3/O1CN017CVeka27p3vwrGI1D_!!6000000007845-1-tps-1536-514.gif) -> 本节示例可在出码插件里找到:[https://github.com/alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) +> 本节示例可在出码插件里找到:[https://github.com/fe-lce/lowcode-code-generator-demo](https://github.com/fe-lce/lowcode-code-generator-demo) ## 低代码的生产和消费流程总览 diff --git a/docs/docs/guide/design/generator.md b/docs/docs/guide/design/generator.md index fe89c64d38..2609e6a5cd 100644 --- a/docs/docs/guide/design/generator.md +++ b/docs/docs/guide/design/generator.md @@ -7,10 +7,10 @@ sidebar_position: 5 ## npm 包与仓库信息 -| **NPM 包** | **代码仓库** | **说明** | -| ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| [@lce/lowcode-code-generator](https://www.npmjs.com/package/@lce/lowcode-code-generator) | [alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine)(子目录:modules/code-generator) | 出码模块核心库,支持在 node 环境下运行,也提供了浏览器下运行的 standalone 模式 | -| [@alilc/lowcode-plugin-code-generator](https://www.npmjs.com/package/@alilc/lowcode-plugin-code-generator) | [alibaba/lowcode-code-generator-demo](https://github.com/alibaba/lowcode-code-generator-demo) | 出码示例 -- 浏览器端出码插件 | +| **NPM 包** | **代码仓库** | **说明** | +| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| [@lce/lowcode-code-generator](https://www.npmjs.com/package/@lce/lowcode-code-generator) | [fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine)(子目录:modules/code-generator) | 出码模块核心库,支持在 node 环境下运行,也提供了浏览器下运行的 standalone 模式 | +| [@alilc/lowcode-plugin-code-generator](https://www.npmjs.com/package/@alilc/lowcode-plugin-code-generator) | [fe-lce/lowcode-code-generator-demo](https://github.com/fe-lce/lowcode-code-generator-demo) | 出码示例 -- 浏览器端出码插件 | ## 出码模块原理 diff --git a/docs/docs/guide/design/materialParser.md b/docs/docs/guide/design/materialParser.md index fb6917d3e3..04693d1a4f 100644 --- a/docs/docs/guide/design/materialParser.md +++ b/docs/docs/guide/design/materialParser.md @@ -10,7 +10,7 @@ sidebar_position: 2 ## npm 包与仓库信息 - npm 包:@lce/lowcode-material-parser -- 仓库:[https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) 下的 modules/material-parser +- 仓库:[https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) 下的 modules/material-parser ## 原理 diff --git a/docs/docs/guide/design/renderer.md b/docs/docs/guide/design/renderer.md index 03366932fd..1e245514c4 100644 --- a/docs/docs/guide/design/renderer.md +++ b/docs/docs/guide/design/renderer.md @@ -12,7 +12,7 @@ sidebar_position: 4 ## npm 包与仓库信息 - React 框架渲染 npm 包:@lce/lowcode-react-renderer -- 仓库:[https://github.com/alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) 下的 +- 仓库:[https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) 下的 - packages/renderer-core - packages/react-renderer - packages/react-simulator-renderer diff --git a/docs/docs/guide/design/setter.md b/docs/docs/guide/design/setter.md index dc2412eca6..62b795d9b7 100644 --- a/docs/docs/guide/design/setter.md +++ b/docs/docs/guide/design/setter.md @@ -19,7 +19,7 @@ sidebar_position: 6 ## npm 包与仓库信息 - npm 包:@alilc/lowcode-engine-ext -- 仓库:[https://github.com/alibaba/lowcode-engine-ext](https://github.com/alibaba/lowcode-engine-ext) +- 仓库:[https://github.com/fe-lce/lowcode-engine-ext](https://github.com/fe-lce/lowcode-engine-ext) ## 设置器模块原理 diff --git a/docs/docs/guide/expand/editor/graph.md b/docs/docs/guide/expand/editor/graph.md index a45f34baf0..932cce450f 100644 --- a/docs/docs/guide/expand/editor/graph.md +++ b/docs/docs/guide/expand/editor/graph.md @@ -2,47 +2,73 @@ title: 图编排扩展 sidebar_position: 8 --- + ## 项目运行 + ### 前置准备 + 1. 参考 https://lowcode-engine.cn/site/docs/guide/quickStart/start 2. 参考至Demo下载 https://lowcode-engine.cn/site/docs/guide/quickStart/start#%E4%B8%8B%E8%BD%BD-demo + ### 选择demo-graph-x6 + 在根目录下执行: + ```bash cd demo-graph-x6 ``` + ### 安装依赖 + 在 lowcode-demo/demo-graph-x6目录下执行: + ```bash npm install ``` + ### 启动Demo + 在 lowcode-demo/demo-graph-x6 目录下执行: + ```bash npm run start ``` + 之后就可以通过 http://localhost:5556/ 来访问我们的 DEMO 了。 ## 认识Demo + 这里的Demo即通过图编排引擎加入了几个简单的物料而来,已经是可以面向真是用户的产品界面。 ![image.png](https://img.alicdn.com/imgextra/i1/O1CN016TbCI31hM2sJy8qkR_!!6000000004262-2-tps-5120-2726.png) + ### 区域组成 + #### 顶部:操作区​ + - 右侧:保存到本地、重置页面、自定义按钮 + #### 顶部:工具区 + - 左侧:删除、撤销、重做、放大、缩小 + #### 左侧:面板与操作区​ + - 物料面板:可以查找节点,并在此拖动节点到编辑器画布中 + #### 中部:可视化页面编辑画布区域​ + - 点击节点/边在右侧面板中能够显示出对应组件的属性配置选项 - 拖拽修改节点的排列顺序 + #### 右侧:组件级别配置​ + - 选中的组件:从页面开始一直到当前选中的节点/边位置,点击对应的名称可以切换到对应的节点上 - 选中组件的配置:属性:节点的基础属性值设置 > 每个区域的组成都可以被替换和自定义来生成开发者需要的业务产品。 ## 目录介绍 + ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01Luc8gr1tLq5QTbpb9_!!6000000005886-0-tps-832-1522.jpg) - public:与其他demo保持一致,均是lowcode engine所必要依赖 @@ -51,6 +77,7 @@ npm run start - services:mock数据,真实场景中可能为异步获取数据 ## 开发插件 + ```typescript function pluginX6DesignerExtension(ctx: IPublicModelPluginContext) { return { @@ -104,12 +131,15 @@ pluginX6DesignerExtension.pluginName = 'plugin-x6-designer-extension'; export default pluginX6DesignerExtension; ``` + x6Designer为图实例暴露出来的一些接口,可基于此进行一些图的必要插件的封装,整个插件的封装完全follow低代码引擎的插件,详情可参考 https://lowcode-engine.cn/site/docs/guide/expand/editor/pluginWidget ## 开发物料 + ```bash npm init @alilc/element your-material-demo ``` + ![image.png](https://img.alicdn.com/imgextra/i3/O1CN01DCCqO82ADuhS8ztCt_!!6000000008170-2-tps-546-208.png) 仓库初始化完成 @@ -119,37 +149,44 @@ npm init @alilc/element your-material-demo 图物料与低代码的dom场景存在画布的差异,因此暂不支持物料单独调试,须通过项目demo进行物料调试 ### 资产描述 + ```bash npm run lowcode:build ``` + 如果物料是个React组件,则在执行上述命令时会自动生成对应的meta.ts,<b>但图物料很多时候并非一个React组件,因此须手动生产meta.ts</b> -可参考: https://github.com/alibaba/lowcode-materials/blob/main/packages/graph-x6-materials/lowcode/send-email/meta.ts +可参考: https://github.com/fe-lce/lowcode-materials/blob/main/packages/graph-x6-materials/lowcode/send-email/meta.ts 同时会自动生成物料描述文件 ### 物料调试 + #### 物料侧 + 物料想要支持被项目动态inject调试,须在build.lowcode.js中加入 + ```javascript [ '@alilc/build-plugin-alt', { type: 'component', inject: true, - library + library, }, -] +]; ``` + ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01HyXfL12992sDkOmOg_!!6000000008024-0-tps-5120-2824.jpg) 本地启动 + ```bash npm run lowcode:dev ``` + #### 项目侧 + 通过@alilc/lce-graph-core加载物料的天然支持了debug,因此无须特殊处理。 若项目中自行加载,则参考 https://lowcode-engine.cn/site/docs/guide/expand/editor/cli 项目访问地址后拼接query "?debug"即可进入物料调试 ![image.png](https://img.alicdn.com/imgextra/i2/O1CN01ke58hT1aRoYJzkutk_!!6000000003327-2-tps-5120-2790.png) - - diff --git a/docs/docs/guide/expand/editor/material.md b/docs/docs/guide/expand/editor/material.md index 84d2652924..5ba14df876 100644 --- a/docs/docs/guide/expand/editor/material.md +++ b/docs/docs/guide/expand/editor/material.md @@ -19,7 +19,7 @@ sidebar_position: 1 ![image.png](https://img.alicdn.com/imgextra/i4/O1CN01SQJfxh1Y8uwDXksaK_!!6000000003015-2-tps-3068-1646.png) 在低代码 Demo 中,我们可以看到,组件面板不只提供一个组件,组件是以集合的形式提供给低代码平台的,而低代码资产包正是这些组件构成集合的形式。 -**_它背后的 Interface,_**[**_在引擎中的定义摘抄如下_**](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/assets.ts)**_:_** +**_它背后的 Interface,_**[**_在引擎中的定义摘抄如下_**](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/assets.ts)**_:_** ```typescript export interface Assets { @@ -50,7 +50,7 @@ export interface RemoteComponentDescription { 在 Demo 项目中,自带了一份默认的资产包: -> [https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/services/assets.json](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/services/assets.json) +> [https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/services/assets.json](https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/services/assets.json) 这份资产包里的物料是我们内部沉淀出的,用户可以通过这套资产包体验引擎提供的搭建、配置能力。 **_在项目中正常注册资产包:_** @@ -81,7 +81,7 @@ await material.setAssets(await injectAssets(assets)); ### 手工配置资产包 -参考 Demo 中的[基础 Fusion Assets 定义](https://github.com/alibaba/lowcode-demo/blob/main/demo-basic-fusion/src/services/assets.json),如果我们修改 assets.json,我们就能做到配置资产包: +参考 Demo 中的[基础 Fusion Assets 定义](https://github.com/fe-lce/lowcode-demo/blob/main/demo-basic-fusion/src/services/assets.json),如果我们修改 assets.json,我们就能做到配置资产包: - packages 对象:我们需要在其中定义这个包的获取方式,如果不定义,就不会被低代码引擎动态加载并对应上组件实例。定义方式是 UMD 的包,低代码引擎会尝试在 window 上寻找对应 library 的实例; - components 对象:我们需要在其中定义物料描述,物料描述我们将在下一节继续讲解。 @@ -321,7 +321,7 @@ npm publish #### 资产包托管 -- 最简单的方式就是类似[引擎 demo 项目](https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/services/assets.json)的做法,在项目中维护一份 assets.json,新增组件或者组件版本更新都需要修改这份资产包; +- 最简单的方式就是类似[引擎 demo 项目](https://github.com/fe-lce/lowcode-demo/blob/main/demo-general/src/services/assets.json)的做法,在项目中维护一份 assets.json,新增组件或者组件版本更新都需要修改这份资产包; - 灵活一点的做法是通过 oss 等服务维护一份远程可配置的 assets.json,新增组件或者组件更新只需要修改这份远程的资产包,项目无需更新; - 再高级一点的做法是实现一个资产包管理的服务,能够通过用户界面去更新资产包的内容; diff --git a/docs/docs/guide/expand/editor/parts/partsassets.md b/docs/docs/guide/expand/editor/parts/partsassets.md index 74709de16e..d008e337ce 100644 --- a/docs/docs/guide/expand/editor/parts/partsassets.md +++ b/docs/docs/guide/expand/editor/parts/partsassets.md @@ -49,18 +49,18 @@ sidebar_position: 4 ## 使用资产包 -你可以在 [lowcode-demo](https://github.com/alibaba/lowcode-demo) 中直接引用,可直接替换 demo 中原来的资产包文件: -例如,在 [demo-lowcode-component](https://github.com/alibaba/lowcode-demo/tree/main/demo-lowcode-component) 中,直接用你的资产包文件替换文件[assets.json](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/services/assets.json),即可快速使用自己的物料了。 +你可以在 [lowcode-demo](https://github.com/fe-lce/lowcode-demo) 中直接引用,可直接替换 demo 中原来的资产包文件: +例如,在 [demo-lowcode-component](https://github.com/fe-lce/lowcode-demo/tree/main/demo-lowcode-component) 中,直接用你的资产包文件替换文件[assets.json](https://github.com/fe-lce/lowcode-demo/blob/main/demo-lowcode-component/src/services/assets.json),即可快速使用自己的物料了。 ### 在编辑器中使用资产包 在使用含有低代码组件的资产包注意 注意引擎版本必须大于等于 `1.1.0-beta.9`。 -然后直接替换 [lowcode-demo](https://github.com/alibaba/lowcode-demo) demo 中的 `assets.json` 文件即可。 +然后直接替换 [lowcode-demo](https://github.com/fe-lce/lowcode-demo) demo 中的 `assets.json` 文件即可。 ### 在预览中使用资产包 -在预览中使用资产包的整体思路是从 `资产包` 中提取并转换出 `ReactRenderer` 渲染所需要的 react 组件列表 (`components` 参数),然后将 `schema` 以及 `components` 传入到 `ReactRenderer` 中进行渲染,需要注意的是,在 `资产包` 的转换过程中,我们也需要将 `低代码组件` 转换成 react 组件,具体逻辑可以参考下 [demo-lowcode-component](https://github.com/alibaba/lowcode-demo/tree/main/demo-lowcode-component) 中 `src/parse-assets.ts` 文件的实现。 -基于资产包进行预览的整体逻辑如下: [详见](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/preview.tsx): +在预览中使用资产包的整体思路是从 `资产包` 中提取并转换出 `ReactRenderer` 渲染所需要的 react 组件列表 (`components` 参数),然后将 `schema` 以及 `components` 传入到 `ReactRenderer` 中进行渲染,需要注意的是,在 `资产包` 的转换过程中,我们也需要将 `低代码组件` 转换成 react 组件,具体逻辑可以参考下 [demo-lowcode-component](https://github.com/fe-lce/lowcode-demo/tree/main/demo-lowcode-component) 中 `src/parse-assets.ts` 文件的实现。 +基于资产包进行预览的整体逻辑如下: [详见](https://github.com/fe-lce/lowcode-demo/blob/main/demo-lowcode-component/src/preview.tsx): ```ts import ReactDOM from 'react-dom'; @@ -127,7 +127,7 @@ const SamplePreview = () => { ReactDOM.render(<SamplePreview />, document.getElementById('ice-container')); ``` -从资产包中解析 react 组件列表的逻辑如下,[详见](https://github.com/alibaba/lowcode-demo/blob/main/demo-lowcode-component/src/parse-assets.ts): +从资产包中解析 react 组件列表的逻辑如下,[详见](https://github.com/fe-lce/lowcode-demo/blob/main/demo-lowcode-component/src/parse-assets.ts): ```ts import { diff --git a/docs/docs/guide/expand/editor/pluginContextMenu.md b/docs/docs/guide/expand/editor/pluginContextMenu.md index 95cc0c6c01..486256bb19 100644 --- a/docs/docs/guide/expand/editor/pluginContextMenu.md +++ b/docs/docs/guide/expand/editor/pluginContextMenu.md @@ -73,8 +73,8 @@ await plugins.register(removeCopyAction); ### 区块管理 -- 仓库地址:[https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) -- 具体代码:[https://github.com/alibaba/lowcode-plugins/tree/main/packages/action-block](https://github.com/alibaba/lowcode-plugins/tree/main/packages/action-block) +- 仓库地址:[https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) +- 具体代码:[https://github.com/fe-lce/lowcode-plugins/tree/main/packages/action-block](https://github.com/fe-lce/lowcode-plugins/tree/main/packages/action-block) - 直播回放: - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) diff --git a/docs/docs/guide/expand/editor/pluginWidget.md b/docs/docs/guide/expand/editor/pluginWidget.md index f6f650e7c9..f099e318aa 100644 --- a/docs/docs/guide/expand/editor/pluginWidget.md +++ b/docs/docs/guide/expand/editor/pluginWidget.md @@ -203,8 +203,8 @@ skeleton.add({ ### 区块面板 -- 仓库地址:[https://github.com/alibaba/lowcode-plugins](https://github.com/alibaba/lowcode-plugins) -- 具体代码:[https://github.com/alibaba/lowcode-plugins/tree/main/packages/plugin-block](https://github.com/alibaba/lowcode-plugins/tree/main/packages/plugin-block) +- 仓库地址:[https://github.com/fe-lce/lowcode-plugins](https://github.com/fe-lce/lowcode-plugins) +- 具体代码:[https://github.com/fe-lce/lowcode-plugins/tree/main/packages/plugin-block](https://github.com/fe-lce/lowcode-plugins/tree/main/packages/plugin-block) - 直播回放: - [低代码引擎项目实战 (9)-区块管理 (1)-保存为区块](https://www.bilibili.com/video/BV1YF411M7RK/) - [低代码引擎项目实战 (10)-区块管理 - 区块面板](https://www.bilibili.com/video/BV1FB4y1S7tu/) diff --git a/docs/docs/guide/expand/editor/summary.md b/docs/docs/guide/expand/editor/summary.md index 04e1e2bc31..5ad4326bc4 100644 --- a/docs/docs/guide/expand/editor/summary.md +++ b/docs/docs/guide/expand/editor/summary.md @@ -102,4 +102,4 @@ setters.registerSetter({ 后续“设置器扩展”章节会详细说明。 -> 本章节所有可扩展配置内容在 demo 中均可找到:[https://github.com/alibaba/lowcode-demo/tree/main/demo-general](https://github.com/alibaba/lowcode-demo/tree/main/demo-general) +> 本章节所有可扩展配置内容在 demo 中均可找到:[https://github.com/fe-lce/lowcode-demo/tree/main/demo-general](https://github.com/fe-lce/lowcode-demo/tree/main/demo-general) diff --git a/docs/docs/guide/expand/runtime/renderer.md b/docs/docs/guide/expand/runtime/renderer.md index a08ea7ad3f..149e619593 100644 --- a/docs/docs/guide/expand/runtime/renderer.md +++ b/docs/docs/guide/expand/runtime/renderer.md @@ -46,7 +46,7 @@ ReactDOM.render( ### 项目使用示例 > [设计器 demo](https://lowcode-engine.cn/demo/demo-general/index.html) -> 项目代码完整示例:[https://github.com/alibaba/lowcode-demo](https://github.com/alibaba/lowcode-demo) +> 项目代码完整示例:[https://github.com/fe-lce/lowcode-demo](https://github.com/fe-lce/lowcode-demo) **step 1:在设计器中获取组件列表** diff --git a/docs/docs/guide/quickStart/start.md b/docs/docs/guide/quickStart/start.md index a8f97ee297..a4ee05a2cb 100644 --- a/docs/docs/guide/quickStart/start.md +++ b/docs/docs/guide/quickStart/start.md @@ -45,7 +45,7 @@ n 14.17.0 ### 下载 Demo -可以前往 github(<https://github.com/alibaba/lowcode-demo>)将 DEMO 下载到本地。 +可以前往 github(<https://github.com/fe-lce/lowcode-demo>)将 DEMO 下载到本地。 #### git clone @@ -54,7 +54,7 @@ n 14.17.0 需要使用到 git 工具 ```bash -git clone https://github.com/alibaba/lowcode-demo.git +git clone https://github.com/fe-lce/lowcode-demo.git ``` ##### SSH @@ -62,7 +62,7 @@ git clone https://github.com/alibaba/lowcode-demo.git 需要配置 SSH key,如果没有配置可以 ```bash -git clone git@github.com:alibaba/lowcode-demo.git +git clone git@github.com:fe-lce/lowcode-demo.git ``` #### 下载 Zip 包 diff --git a/docs/docs/participate/flow.md b/docs/docs/participate/flow.md index 77c94a3e0a..1b0bc5cd87 100644 --- a/docs/docs/participate/flow.md +++ b/docs/docs/participate/flow.md @@ -82,7 +82,7 @@ sidebar_position: 2 tnpm run sync tnpm run syncOss ``` -6. 更新[发布日志](https://github.com/alibaba/lowcode-engine/releases) +6. 更新[发布日志](https://github.com/fe-lce/lowcode-engine/releases) 7. 合并 release/x.x.x 到 main 分支 8. 合并 main 分支到 develop 分支 diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md index 05e37588c6..b94c665c49 100644 --- a/docs/docs/participate/index.md +++ b/docs/docs/participate/index.md @@ -14,7 +14,7 @@ sidebar_position: 0 #### clone 项目 ``` -git clone git@github.com:alibaba/lowcode-engine.git +git clone git@github.com:fe-lce/lowcode-engine.git cd lowcode-engine ``` @@ -77,7 +77,7 @@ npm start #### 维护方式 -- 官方文档通过 github 管理文档源,官网文档与[主仓库 develop 分支](https://github.com/alibaba/lowcode-engine/tree/develop/docs)保持同步。 +- 官方文档通过 github 管理文档源,官网文档与[主仓库 develop 分支](https://github.com/fe-lce/lowcode-engine/tree/develop/docs)保持同步。 - 点击每篇文档下发的 `编辑此页` 可直接定位到 github 中位置。 - 欢迎 PR,文档 PR 也会作为贡献者贡献,会用于贡献度统计。 - **文档同步到官方网站由官方人员进行操作**,如有需要可以通过 issue 或 贡献者群与相关人员沟通。 @@ -108,7 +108,7 @@ PR 被合并之后,我们会尽快发布相关的正式版本或者 beta 版 如果你不知道可以贡献什么,可以到源码里搜 TODO 或 FIXME 找找。 -为了使你能够快速上手和熟悉贡献流程,我们这里有个列表 [good first issues](https://github.com/alibaba/lowcode-engine/issues?q=is:open+is:issue+label:%22good+first+issue%22),里面有相对没那么笼统的漏洞,从这开始是个不错的选择。 +为了使你能够快速上手和熟悉贡献流程,我们这里有个列表 [good first issues](https://github.com/fe-lce/lowcode-engine/issues?q=is:open+is:issue+label:%22good+first+issue%22),里面有相对没那么笼统的漏洞,从这开始是个不错的选择。 ### PR 提交注意事项 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 0aaa4c50f9..3ce8ba033c 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -39,44 +39,42 @@ const config = { presets: [ [ 'classic', - ({ + { docs: { sidebarPath: require.resolve('./config/sidebars.js'), // lastVersion: 'current', - editUrl: - 'https://github.com/alibaba/lowcode-engine/tree/develop/docs/', + editUrl: 'https://github.com/fe-lce/lowcode-engine/tree/develop/docs/', }, theme: { customCss: require.resolve('./src/css/custom.css'), }, - }), + }, ], ], - themeConfig: - ({ - docs: { - sidebar: { - hideable: true, - }, - }, - navbar, - footer: { - // style: 'dark', - copyright: `Copyright © ${new Date().getFullYear()} 阿里巴巴集团, Inc. Built with Docusaurus.`, + themeConfig: { + docs: { + sidebar: { + hideable: true, }, - // 主题切换 - prism: { - theme: lightCodeTheme, - darkTheme: darkCodeTheme, - }, - // 语雀文档导出的图片,会进行 referrer 校验,这里设置关闭,不然加载不了语雀的图片 - metadata: [{ name: 'referrer', content: 'no-referrer' }], - tableOfContents: { - minHeadingLevel: 2, - maxHeadingLevel: 6, - }, - }), + }, + navbar, + footer: { + // style: 'dark', + copyright: `Copyright © ${new Date().getFullYear()} 阿里巴巴集团, Inc. Built with Docusaurus.`, + }, + // 主题切换 + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + // 语雀文档导出的图片,会进行 referrer 校验,这里设置关闭,不然加载不了语雀的图片 + metadata: [{ name: 'referrer', content: 'no-referrer' }], + tableOfContents: { + minHeadingLevel: 2, + maxHeadingLevel: 6, + }, + }, themes: [ [ diff --git a/docs/package.json b/docs/package.json index b73c452d06..6bd0401ee2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -57,7 +57,7 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6" } diff --git a/modules/code-generator/CHANGELOG.md b/modules/code-generator/CHANGELOG.md index 0a329f21a1..89b40d8728 100644 --- a/modules/code-generator/CHANGELOG.md +++ b/modules/code-generator/CHANGELOG.md @@ -2,279 +2,265 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -### [1.0.7-beta.2](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.7-beta.2) (2022-11-24) +### [1.0.7-beta.2](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.7-beta.2) (2022-11-24) ### Bug Fixes -* 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([3b9b177](https://github.com/alibaba/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) -* 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/alibaba/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/alibaba/lowcode-engine/issues/288) -* 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 __$eval 中用到 window 的问题 ([ce531ae](https://github.com/alibaba/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) -* add support for jsx expression ([453e069](https://github.com/alibaba/lowcode-engine/commit/453e0699ece06d98e59227e23248baf1de4082aa)) -* 修复生成的 icejs 项目不支持 constants 的问题, fixes [#1259](https://github.com/alibaba/lowcode-engine/issues/1259) ([a079fbc](https://github.com/alibaba/lowcode-engine/commit/a079fbc256f8275e8a69eb6d8abb6f6b08179578)) -* 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/alibaba/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) -### [1.0.7-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.7-beta.0...@lce/lowcode-code-generator@1.0.7-beta.1) (2022-10-26) +- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([3b9b177](https://github.com/fe-lce/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) +- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/fe-lce/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) +- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([ce531ae](https://github.com/fe-lce/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) +- add support for jsx expression ([453e069](https://github.com/fe-lce/lowcode-engine/commit/453e0699ece06d98e59227e23248baf1de4082aa)) +- 修复生成的 icejs 项目不支持 constants 的问题, fixes [#1259](https://github.com/fe-lce/lowcode-engine/issues/1259) ([a079fbc](https://github.com/fe-lce/lowcode-engine/commit/a079fbc256f8275e8a69eb6d8abb6f6b08179578)) +- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/fe-lce/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) +### [1.0.7-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.7-beta.0...@lce/lowcode-code-generator@1.0.7-beta.1) (2022-10-26) ### Bug Fixes -* fix empty string lost when generate variable ([2cf74cd](https://github.com/alibaba/lowcode-engine/commit/2cf74cd04b4f48a3501d37329d39784f6964366a)) +- fix empty string lost when generate variable ([2cf74cd](https://github.com/fe-lce/lowcode-engine/commit/2cf74cd04b4f48a3501d37329d39784f6964366a)) -### [1.0.7-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.6-beta.0...@lce/lowcode-code-generator@1.0.7-beta.0) (2022-10-25) - -### [1.0.6-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.6-beta.0) (2022-10-25) +### [1.0.7-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.6-beta.0...@lce/lowcode-code-generator@1.0.7-beta.0) (2022-10-25) +### [1.0.6-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.6-beta.0) (2022-10-25) ### Features -* 🎸 设计态支持数据源引擎配置 ([04631f8](https://github.com/alibaba/lowcode-engine/commit/04631f813782dbf6d175f51c40ccc75ca4c099d2)) -* 大纲树支持节点过滤 ([f30db20](https://github.com/alibaba/lowcode-engine/commit/f30db20606f5f2fdac0017305b1dda7ab2258c4b)) -* 为 renderer 追加 displayName,以支持后续的反射功能 ([6399cce](https://github.com/alibaba/lowcode-engine/commit/6399cce05ae494dac6facf4366949b0b97576079)) -* 资产包支持一个package从另一个package异步导出 ([#1150](https://github.com/alibaba/lowcode-engine/issues/1150)) ([6b78157](https://github.com/alibaba/lowcode-engine/commit/6b78157b211d6eabf60297b9ce980a3e10cc8272)) -* add availableActions for ComponentMeta ([de1f60b](https://github.com/alibaba/lowcode-engine/commit/de1f60bbee157267e2c2212df1077cc49ce506f4)) -* add code coverage action ([ed3ddcf](https://github.com/alibaba/lowcode-engine/commit/ed3ddcf5c942a8e78e1f247e41d4159da97e75a8)) -* add componentMeta getter for setingPropEntry ([2f8b954](https://github.com/alibaba/lowcode-engine/commit/2f8b9545de0210260001a832b52f608238ac4191)) -* add expanded to shell SettingPropEntry ([534e294](https://github.com/alibaba/lowcode-engine/commit/534e29429d445d97c71d95d4c4e492868527bb6b)) -* add flag createIfNode for ShellNode#getProp ([152a24d](https://github.com/alibaba/lowcode-engine/commit/152a24d65528d0a3b7990c9aa87e6d8d09aa9b2a)) -* add getComponentsMap() for DocumentModel ([f956645](https://github.com/alibaba/lowcode-engine/commit/f9566454ef83eb4c48b68d63a766c3d0ff927c73)) -* add getExtraPropValue setExtraPropValue to shell SettingPropEntry ([70e7c1c](https://github.com/alibaba/lowcode-engine/commit/70e7c1c2e8998e80d58447759efdf651105724a9)) -* add id setter for DocumentModel ([941ae05](https://github.com/alibaba/lowcode-engine/commit/941ae0592586334694c48197aaa6692d49cefbce)) -* add importSchema event for documentModel ([4b8ec09](https://github.com/alibaba/lowcode-engine/commit/4b8ec09e86e3950a9d4066c28e681a59273b4c93)) -* add isGroup & items to shell SettingPropEntry ([7b76ff3](https://github.com/alibaba/lowcode-engine/commit/7b76ff357e4e638454c31a9b1324fb68966ec522)) -* add mergeChldren API for shell node ([a47d4ee](https://github.com/alibaba/lowcode-engine/commit/a47d4eea28cf4479e3b3a2bd1d194a6433666825)) -* add onMountNode event for DocumentModel ([dcc247c](https://github.com/alibaba/lowcode-engine/commit/dcc247c7d54f6af2ed36d46bfd79c7eacf7bd604)) -* add renderer for simulatorHost ([1cfc8d6](https://github.com/alibaba/lowcode-engine/commit/1cfc8d668b8897ef3a53c11520312cc6d18338f9)) -* add script for synchronizing packages to intranet registry ([b4f463e](https://github.com/alibaba/lowcode-engine/commit/b4f463e7d45f7b476de04bd4d98ad9f74d53cf13)) -* add scrollToNode for simulator host ([#1075](https://github.com/alibaba/lowcode-engine/issues/1075)) ([0bcd9ff](https://github.com/alibaba/lowcode-engine/commit/0bcd9ff78227aeddaf2fdc22d10fbd662fed91d3)) -* add setVisible for Node ([ba90327](https://github.com/alibaba/lowcode-engine/commit/ba90327eac0f5f82f6349bb9a7684bf51259e9c9)) -* add showArea & hideArea method for skeleton ([8f6b53e](https://github.com/alibaba/lowcode-engine/commit/8f6b53e67d89ee7af754132f0994a759522b3821)) -* add slotNode for shell prop ([d9a44c5](https://github.com/alibaba/lowcode-engine/commit/d9a44c5de7861e9180567b4afb787e381cefac61)) -* add some features ([18d1a4f](https://github.com/alibaba/lowcode-engine/commit/18d1a4fe1d952bcd4715e693def09fee94da49a5)) -* add some necessary methods and attributes ([4fd7f27](https://github.com/alibaba/lowcode-engine/commit/4fd7f27f8eb33b66324ede279b412940fc1f7032)) -* add some params for onDragstart & onDrag & onDragend ([d1c9838](https://github.com/alibaba/lowcode-engine/commit/d1c9838343ba1bdd4c02c1cfbf1f920dd8c87e7d)) -* add top attrbute for Shell SettingPropEntry ([51aca3d](https://github.com/alibaba/lowcode-engine/commit/51aca3d330b6483c05b71867f1b362a9f5db6cfe)) -* added lowcode engine standard specs ([f25feba](https://github.com/alibaba/lowcode-engine/commit/f25feba63f181efa83f1a8dff530e1c39ab1b34c)) -* added lowcode engine standard specs ([57df803](https://github.com/alibaba/lowcode-engine/commit/57df803179ca9cec4e8ab1dac1be577175732e65)) -* added thisRequiredInJSE API to control whether JSExpression expression access context must use this ([#702](https://github.com/alibaba/lowcode-engine/issues/702)) ([da7f77e](https://github.com/alibaba/lowcode-engine/commit/da7f77ee91b3bf441a4a57614872df32d6a1d041)) -* assetLoader loda scripts with async=false ([f6ad4a1](https://github.com/alibaba/lowcode-engine/commit/f6ad4a157df8c0ff7db327f4770f454998693d9a)) -* change loop sertter config, set defaultValue prop to JsonSetter ([aa6b9c8](https://github.com/alibaba/lowcode-engine/commit/aa6b9c8f7a5353771af9f46216310f044e57c533)) -* cp dist files of simulator-renderer to that of engine ([03c5397](https://github.com/alibaba/lowcode-engine/commit/03c53971df6de8c35620fd77743ac4f57a82d323)) -* export nodeChildrenSymbol && remove some unnecessary editor.set ([e83adce](https://github.com/alibaba/lowcode-engine/commit/e83adcee815eea73b6b1ed4f43f4d684c11818ca)) -* fix render-core leaf hoc component condition config should get from leaf exportSchema fn ([85704c3](https://github.com/alibaba/lowcode-engine/commit/85704c36946191a1b88db789cfac59e9d027a371)) -* low-code components support lifecycle and function execution ([176583f](https://github.com/alibaba/lowcode-engine/commit/176583f48af573d30c0d2c36faa3d901b0541c06)) -* **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/alibaba/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) -* modify the output method of rendering module parsing errors ([8255b79](https://github.com/alibaba/lowcode-engine/commit/8255b7945836ee5d25fae73913faa6d0af7b3ff3)) -* pass e to customizeIgnoreSelectors ([900b239](https://github.com/alibaba/lowcode-engine/commit/900b2394323e85f0dce5df83dfc773f96da23e24)) -* refine nesting drawer ([4c032d0](https://github.com/alibaba/lowcode-engine/commit/4c032d0d0ead9731c038bd62dccc4a7d96435183)) -* refine nesting drawer ([94a211e](https://github.com/alibaba/lowcode-engine/commit/94a211e2795f74721cfd2ae3ff38a1d3607e9cd0)) -* refine pop drawer ([abf8fae](https://github.com/alibaba/lowcode-engine/commit/abf8fae3ef4d62b5688362e1b98f1b508a207029)) -* requestHandlersMap should be optional ([ee7160e](https://github.com/alibaba/lowcode-engine/commit/ee7160ea3c625d421c07730ef51711b8f14392a0)) -* return unbind function for onChangeDetecting & onChangeSelection ([30267cb](https://github.com/alibaba/lowcode-engine/commit/30267cb173fca2cd80a61450b9f2fe2bceac0f06)) -* support for hiding settings tabs when there is only one item ([#669](https://github.com/alibaba/lowcode-engine/issues/669)) ([cbd95a1](https://github.com/alibaba/lowcode-engine/commit/cbd95a1778415406670f37507ce957af6b3ecd4a)) -* support for NotFoundComponent design state is optional ([#1013](https://github.com/alibaba/lowcode-engine/issues/1013)) ([d3c891e](https://github.com/alibaba/lowcode-engine/commit/d3c891e2a46d138e31c81a7f9b804a8240154df5)) -* support opening document with id ([3f7c0cd](https://github.com/alibaba/lowcode-engine/commit/3f7c0cd5191b7924f2630c58e6439f4d4a936ac9)) -* support SPA mode ([1f9150e](https://github.com/alibaba/lowcode-engine/commit/1f9150e4b260d522bd7cb31497069b700a1e8576)) -* sync utils/constants ([#506](https://github.com/alibaba/lowcode-engine/issues/506)) ([2871b5b](https://github.com/alibaba/lowcode-engine/commit/2871b5ba4c3dbf1ed76bf4d6359fb457190a9b22)) -* the tips when dragging a component from the component panel same with the moving component ([dbe0764](https://github.com/alibaba/lowcode-engine/commit/dbe0764ff4901450f03ca56b62167fbc87d2524a)) - +- 🎸 设计态支持数据源引擎配置 ([04631f8](https://github.com/fe-lce/lowcode-engine/commit/04631f813782dbf6d175f51c40ccc75ca4c099d2)) +- 大纲树支持节点过滤 ([f30db20](https://github.com/fe-lce/lowcode-engine/commit/f30db20606f5f2fdac0017305b1dda7ab2258c4b)) +- 为 renderer 追加 displayName,以支持后续的反射功能 ([6399cce](https://github.com/fe-lce/lowcode-engine/commit/6399cce05ae494dac6facf4366949b0b97576079)) +- 资产包支持一个package从另一个package异步导出 ([#1150](https://github.com/fe-lce/lowcode-engine/issues/1150)) ([6b78157](https://github.com/fe-lce/lowcode-engine/commit/6b78157b211d6eabf60297b9ce980a3e10cc8272)) +- add availableActions for ComponentMeta ([de1f60b](https://github.com/fe-lce/lowcode-engine/commit/de1f60bbee157267e2c2212df1077cc49ce506f4)) +- add code coverage action ([ed3ddcf](https://github.com/fe-lce/lowcode-engine/commit/ed3ddcf5c942a8e78e1f247e41d4159da97e75a8)) +- add componentMeta getter for setingPropEntry ([2f8b954](https://github.com/fe-lce/lowcode-engine/commit/2f8b9545de0210260001a832b52f608238ac4191)) +- add expanded to shell SettingPropEntry ([534e294](https://github.com/fe-lce/lowcode-engine/commit/534e29429d445d97c71d95d4c4e492868527bb6b)) +- add flag createIfNode for ShellNode#getProp ([152a24d](https://github.com/fe-lce/lowcode-engine/commit/152a24d65528d0a3b7990c9aa87e6d8d09aa9b2a)) +- add getComponentsMap() for DocumentModel ([f956645](https://github.com/fe-lce/lowcode-engine/commit/f9566454ef83eb4c48b68d63a766c3d0ff927c73)) +- add getExtraPropValue setExtraPropValue to shell SettingPropEntry ([70e7c1c](https://github.com/fe-lce/lowcode-engine/commit/70e7c1c2e8998e80d58447759efdf651105724a9)) +- add id setter for DocumentModel ([941ae05](https://github.com/fe-lce/lowcode-engine/commit/941ae0592586334694c48197aaa6692d49cefbce)) +- add importSchema event for documentModel ([4b8ec09](https://github.com/fe-lce/lowcode-engine/commit/4b8ec09e86e3950a9d4066c28e681a59273b4c93)) +- add isGroup & items to shell SettingPropEntry ([7b76ff3](https://github.com/fe-lce/lowcode-engine/commit/7b76ff357e4e638454c31a9b1324fb68966ec522)) +- add mergeChldren API for shell node ([a47d4ee](https://github.com/fe-lce/lowcode-engine/commit/a47d4eea28cf4479e3b3a2bd1d194a6433666825)) +- add onMountNode event for DocumentModel ([dcc247c](https://github.com/fe-lce/lowcode-engine/commit/dcc247c7d54f6af2ed36d46bfd79c7eacf7bd604)) +- add renderer for simulatorHost ([1cfc8d6](https://github.com/fe-lce/lowcode-engine/commit/1cfc8d668b8897ef3a53c11520312cc6d18338f9)) +- add script for synchronizing packages to intranet registry ([b4f463e](https://github.com/fe-lce/lowcode-engine/commit/b4f463e7d45f7b476de04bd4d98ad9f74d53cf13)) +- add scrollToNode for simulator host ([#1075](https://github.com/fe-lce/lowcode-engine/issues/1075)) ([0bcd9ff](https://github.com/fe-lce/lowcode-engine/commit/0bcd9ff78227aeddaf2fdc22d10fbd662fed91d3)) +- add setVisible for Node ([ba90327](https://github.com/fe-lce/lowcode-engine/commit/ba90327eac0f5f82f6349bb9a7684bf51259e9c9)) +- add showArea & hideArea method for skeleton ([8f6b53e](https://github.com/fe-lce/lowcode-engine/commit/8f6b53e67d89ee7af754132f0994a759522b3821)) +- add slotNode for shell prop ([d9a44c5](https://github.com/fe-lce/lowcode-engine/commit/d9a44c5de7861e9180567b4afb787e381cefac61)) +- add some features ([18d1a4f](https://github.com/fe-lce/lowcode-engine/commit/18d1a4fe1d952bcd4715e693def09fee94da49a5)) +- add some necessary methods and attributes ([4fd7f27](https://github.com/fe-lce/lowcode-engine/commit/4fd7f27f8eb33b66324ede279b412940fc1f7032)) +- add some params for onDragstart & onDrag & onDragend ([d1c9838](https://github.com/fe-lce/lowcode-engine/commit/d1c9838343ba1bdd4c02c1cfbf1f920dd8c87e7d)) +- add top attrbute for Shell SettingPropEntry ([51aca3d](https://github.com/fe-lce/lowcode-engine/commit/51aca3d330b6483c05b71867f1b362a9f5db6cfe)) +- added lowcode engine standard specs ([f25feba](https://github.com/fe-lce/lowcode-engine/commit/f25feba63f181efa83f1a8dff530e1c39ab1b34c)) +- added lowcode engine standard specs ([57df803](https://github.com/fe-lce/lowcode-engine/commit/57df803179ca9cec4e8ab1dac1be577175732e65)) +- added thisRequiredInJSE API to control whether JSExpression expression access context must use this ([#702](https://github.com/fe-lce/lowcode-engine/issues/702)) ([da7f77e](https://github.com/fe-lce/lowcode-engine/commit/da7f77ee91b3bf441a4a57614872df32d6a1d041)) +- assetLoader loda scripts with async=false ([f6ad4a1](https://github.com/fe-lce/lowcode-engine/commit/f6ad4a157df8c0ff7db327f4770f454998693d9a)) +- change loop sertter config, set defaultValue prop to JsonSetter ([aa6b9c8](https://github.com/fe-lce/lowcode-engine/commit/aa6b9c8f7a5353771af9f46216310f044e57c533)) +- cp dist files of simulator-renderer to that of engine ([03c5397](https://github.com/fe-lce/lowcode-engine/commit/03c53971df6de8c35620fd77743ac4f57a82d323)) +- export nodeChildrenSymbol && remove some unnecessary editor.set ([e83adce](https://github.com/fe-lce/lowcode-engine/commit/e83adcee815eea73b6b1ed4f43f4d684c11818ca)) +- fix render-core leaf hoc component condition config should get from leaf exportSchema fn ([85704c3](https://github.com/fe-lce/lowcode-engine/commit/85704c36946191a1b88db789cfac59e9d027a371)) +- low-code components support lifecycle and function execution ([176583f](https://github.com/fe-lce/lowcode-engine/commit/176583f48af573d30c0d2c36faa3d901b0541c06)) +- **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/fe-lce/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) +- modify the output method of rendering module parsing errors ([8255b79](https://github.com/fe-lce/lowcode-engine/commit/8255b7945836ee5d25fae73913faa6d0af7b3ff3)) +- pass e to customizeIgnoreSelectors ([900b239](https://github.com/fe-lce/lowcode-engine/commit/900b2394323e85f0dce5df83dfc773f96da23e24)) +- refine nesting drawer ([4c032d0](https://github.com/fe-lce/lowcode-engine/commit/4c032d0d0ead9731c038bd62dccc4a7d96435183)) +- refine nesting drawer ([94a211e](https://github.com/fe-lce/lowcode-engine/commit/94a211e2795f74721cfd2ae3ff38a1d3607e9cd0)) +- refine pop drawer ([abf8fae](https://github.com/fe-lce/lowcode-engine/commit/abf8fae3ef4d62b5688362e1b98f1b508a207029)) +- requestHandlersMap should be optional ([ee7160e](https://github.com/fe-lce/lowcode-engine/commit/ee7160ea3c625d421c07730ef51711b8f14392a0)) +- return unbind function for onChangeDetecting & onChangeSelection ([30267cb](https://github.com/fe-lce/lowcode-engine/commit/30267cb173fca2cd80a61450b9f2fe2bceac0f06)) +- support for hiding settings tabs when there is only one item ([#669](https://github.com/fe-lce/lowcode-engine/issues/669)) ([cbd95a1](https://github.com/fe-lce/lowcode-engine/commit/cbd95a1778415406670f37507ce957af6b3ecd4a)) +- support for NotFoundComponent design state is optional ([#1013](https://github.com/fe-lce/lowcode-engine/issues/1013)) ([d3c891e](https://github.com/fe-lce/lowcode-engine/commit/d3c891e2a46d138e31c81a7f9b804a8240154df5)) +- support opening document with id ([3f7c0cd](https://github.com/fe-lce/lowcode-engine/commit/3f7c0cd5191b7924f2630c58e6439f4d4a936ac9)) +- support SPA mode ([1f9150e](https://github.com/fe-lce/lowcode-engine/commit/1f9150e4b260d522bd7cb31497069b700a1e8576)) +- sync utils/constants ([#506](https://github.com/fe-lce/lowcode-engine/issues/506)) ([2871b5b](https://github.com/fe-lce/lowcode-engine/commit/2871b5ba4c3dbf1ed76bf4d6359fb457190a9b22)) +- the tips when dragging a component from the component panel same with the moving component ([dbe0764](https://github.com/fe-lce/lowcode-engine/commit/dbe0764ff4901450f03ca56b62167fbc87d2524a)) ### Bug Fixes -* 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([3b9b177](https://github.com/alibaba/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) -* 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/alibaba/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/alibaba/lowcode-engine/issues/288) -* 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 __$eval 中用到 window 的问题 ([ce531ae](https://github.com/alibaba/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) -* 🐛 修复数据源引擎请求处理器映射严格模式下被过滤的问题 ([75626d8](https://github.com/alibaba/lowcode-engine/commit/75626d877db017b8862b1d5e64d75f3af7ff667a)) -* 🐛 修正 i18n 里面的一个参数命名问题 ([20c6fca](https://github.com/alibaba/lowcode-engine/commit/20c6fca03e99b11fa5c257cbbda0d4d23f410090)) -* 新元素无法在大纲树拖拽 ([3d41fd5](https://github.com/alibaba/lowcode-engine/commit/3d41fd5d0783048a7cfb54c6f80d058856153d25)) -* 修复React17选中组件bug ([750d282](https://github.com/alibaba/lowcode-engine/commit/750d282c03a880204fefdef01e180510465b82f8)) -* 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/alibaba/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) -* 左侧抽屉固定模式层级不足 ([c657cee](https://github.com/alibaba/lowcode-engine/commit/c657cee0694e3126dee89588a2aa17c4e118f786)) -* add lowcode-designer, lowcode-utils dependencies ([d250242](https://github.com/alibaba/lowcode-engine/commit/d2502427ca988881747a35bd8da49f024939b833)) -* add support for jsx expression ([1043ef8](https://github.com/alibaba/lowcode-engine/commit/1043ef82b1e9ceefc3b74fd21eb28e9a740bd1db)) -* addon-combine affect metadata unexpectedly ([fc5fbc6](https://github.com/alibaba/lowcode-engine/commit/fc5fbc63a04a32bc887754f32e74c76149d74b05)) -* adjust synchronize-order of packages ([81a7304](https://github.com/alibaba/lowcode-engine/commit/81a73049bd848524e1156761ded08ddf325863ba)) -* change typescript type export to export type ([50e4a03](https://github.com/alibaba/lowcode-engine/commit/50e4a03b7d810131ce413cc057b43d4a726f1ebe)) -* change typescript type export to export type ([573504b](https://github.com/alibaba/lowcode-engine/commit/573504b0e3537ca60d234ce2b2f3feedb323405e)) -* declare parameter appHelper for valid engine options ([058a842](https://github.com/alibaba/lowcode-engine/commit/058a84226af8ca19d8c7d63599d80d0cdf70281c)) -* defaultValue should be evaluated inspite of condition result is falsy, fixes [#1045](https://github.com/alibaba/lowcode-engine/issues/1045) ([fcfce3c](https://github.com/alibaba/lowcode-engine/commit/fcfce3cbeb5a53600c40aea07ffef19c9c9591c4)) -* delete the defaultValue configuration outside the loop ([acf7449](https://github.com/alibaba/lowcode-engine/commit/acf7449ca231d45e8ed7e1d9416817ea11b1266f)) -* delete unused typescript types ([63f5d2c](https://github.com/alibaba/lowcode-engine/commit/63f5d2ca3e0bda92898fd0df28c9500707812082)) -* delete unused typescript types ([2432aed](https://github.com/alibaba/lowcode-engine/commit/2432aed83d55407d2f8b5f94910ada7ea78bb59e)) -* designer/loadIncrementalAssets await Sequential ([#841](https://github.com/alibaba/lowcode-engine/issues/841)) ([8232424](https://github.com/alibaba/lowcode-engine/commit/823242469743d235923b3b946ec7d2db70887ead)) -* error thrown when triggering undo after save schema on SchemaPane ([9be46e7](https://github.com/alibaba/lowcode-engine/commit/9be46e7b34e3a40cbc489dbae4bfd0915c2090e3)) -* fallback focusNode to root if empty ([a9a118f](https://github.com/alibaba/lowcode-engine/commit/a9a118fe6e79080245c6eea42ed26772b7c784ca)) -* **filter:** unique key prop warning ([3fe6e41](https://github.com/alibaba/lowcode-engine/commit/3fe6e41536cd3a9b9c7eaca5b353de4bd1f91b11)) -* **filter:** unique key prop warning ([06e6920](https://github.com/alibaba/lowcode-engine/commit/06e6920602bdf21b6e1ffe5cfa3dfe4856e7c57e)) -* fix css resources with parameters not loading correctly ([f859752](https://github.com/alibaba/lowcode-engine/commit/f85975211814147d40ae5330a76cb21cb6c66916)) -* fix css resources with parameters not loading correctly ([9a5a04a](https://github.com/alibaba/lowcode-engine/commit/9a5a04ac9560fb6a51bf4e0ed8ea446381d39c35)) -* fix dataSource needs to be compatible due to empty schema ([98bc477](https://github.com/alibaba/lowcode-engine/commit/98bc477d80dbf7993f89befdb42762d78a55fb1b)) -* fix displayName spell mistake ([2b2bcbd](https://github.com/alibaba/lowcode-engine/commit/2b2bcbdaebde6a3ce974072f586386ef7ef3497c)) -* fix internal project.getSchema default stage is error ([0d40db2](https://github.com/alibaba/lowcode-engine/commit/0d40db2581f4fe5a9e22f763f21aec641e366c34)) -* fix lint issues for renderer-core/renderer/base ([d85437d](https://github.com/alibaba/lowcode-engine/commit/d85437d4af1043371e27dfde98cecf914b93a126)) -* fix lint issues for renderer-core/renderer/base ([4b59190](https://github.com/alibaba/lowcode-engine/commit/4b59190c7f9d518bc7efac44b7eeee73f1b5d177)) -* fix low-code component rendering problems: 1. thisRequiredInJSE does not take effect 2. jsx components cannot obtain source components ([5dd4625](https://github.com/alibaba/lowcode-engine/commit/5dd462544fbbbccfa97165f2bcfeed8629fab2a3)) -* fix material-spec demo ([438cccd](https://github.com/alibaba/lowcode-engine/commit/438cccd58e4341638070c1d8b2d4e78e4e20e3fb)) -* fix misused doc urls ([16a8857](https://github.com/alibaba/lowcode-engine/commit/16a88578634b9da2f04698df5ca5a5e69151bb97)) -* fix monitor utils incorrect assignment method ([bf280c6](https://github.com/alibaba/lowcode-engine/commit/bf280c6fa1e46d084fc8f20323164816fad4076f)) -* fix outline-pane invisible occasionally when dragging tree node ([031c7f2](https://github.com/alibaba/lowcode-engine/commit/031c7f25f10a6cfebfc7929c9226f4e4167a359f)) -* fix outline-tree initialization failed ([a2d5c6f](https://github.com/alibaba/lowcode-engine/commit/a2d5c6fd90ca0226bbbfea01a4b28c8b8d307a78)) -* fix render module state expression initialization exception ([5bd68ee](https://github.com/alibaba/lowcode-engine/commit/5bd68ee6b448fa58b022870b3f8175d8b77febde)) -* fix render module state expression initialization exception ([9c545cc](https://github.com/alibaba/lowcode-engine/commit/9c545cca6004f65e2f206ea001cefa3fa3cfa807)) -* fix setter hooks error ([8a3a0b8](https://github.com/alibaba/lowcode-engine/commit/8a3a0b824162e25a930711c6fef511b4b369e897)) -* fix test case failures of designer ([4b0521a](https://github.com/alibaba/lowcode-engine/commit/4b0521a47494f78e120f75021e0a076fb00ce53e)) -* Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/alibaba/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) -* fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([6ee6b07](https://github.com/alibaba/lowcode-engine/commit/6ee6b07a10ba4aac583def52d8ff1fa78d111d0b)) -* fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([f400172](https://github.com/alibaba/lowcode-engine/commit/f4001728259047b09db75d76a8c3ef1e1bcb4e0a)) -* fix the problem that material.getComponentMetasMap returns the wrong result ([e02933c](https://github.com/alibaba/lowcode-engine/commit/e02933c18bc15519b2eba8ad946282502a509611)) -* Fix the rendering error caused by incorrect key value when configuring the loop ([1026763](https://github.com/alibaba/lowcode-engine/commit/1026763dc5a77d4395a1e86e5a0084ab4fb4230c)) -* fix the unit test failure problem caused by thisRequiredInJSE modification ([c2c59b7](https://github.com/alibaba/lowcode-engine/commit/c2c59b7ff72ba06156bbcdb952262739d6188209)) -* fix unnecessary props calculation ([f1fed75](https://github.com/alibaba/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) -* fixed an issue where materials would be rendered multiple times ([9d187cc](https://github.com/alibaba/lowcode-engine/commit/9d187ccb7de55857e861d3fc881c610506872d03)) -* fixed an issue where materials would be rendered multiple times ([64cc328](https://github.com/alibaba/lowcode-engine/commit/64cc3283c15342151a8f93c46a276681f3575153)) -* fixed focusNodeSelector configuration not taking effect ([9beae9c](https://github.com/alibaba/lowcode-engine/commit/9beae9c3269901bf03a29033121c7d480571bce5)) -* fixed the issue that thisRequiredInJSE did not take effect in some scenarios ([7e5a919](https://github.com/alibaba/lowcode-engine/commit/7e5a919f9352397f11741fd911495996469c0256)) -* in ES require changed to import ([b4d7d6d](https://github.com/alibaba/lowcode-engine/commit/b4d7d6d8c290a335a2c1f60731d4417b23444941)) -* in ES require changed to import ([7c8cd36](https://github.com/alibaba/lowcode-engine/commit/7c8cd36a10a7caa61de31a15abd93ab8a97fbe08)) -* leaf should be type of ShellNode other than InnerNode ([5bb8cf5](https://github.com/alibaba/lowcode-engine/commit/5bb8cf5d12d38d70b69fa28deb2f8aa0afa9b9b9)) -* lowcode component exec lifecycle has error ([f99a47e](https://github.com/alibaba/lowcode-engine/commit/f99a47e502080134454795f5e361cfa4fba3f03b)) -* lowcode component leaf dont have export prop, exec leaf.export make error ([9d51dcd](https://github.com/alibaba/lowcode-engine/commit/9d51dcdae38850be0206861f2cae74ca68805c25)) -* missing engine options config info ([a79875c](https://github.com/alibaba/lowcode-engine/commit/a79875cf8698d3912b50526d97f6ac72e9a21fc9)) -* missing engine options config info ([9ccded0](https://github.com/alibaba/lowcode-engine/commit/9ccded006ef44cd538abaa140250e519243bf090)) -* npm run clean error in windows ([a176e9d](https://github.com/alibaba/lowcode-engine/commit/a176e9d245981fb5718c8d144f477202b3796be6)) -* project event listeners will not be invoked sometimes ([a0c772f](https://github.com/alibaba/lowcode-engine/commit/a0c772fb903cf5eb9e0b811b64bbe3846d4ba8ac)) -* project.exportSchema api lack stage param & setAssets should be a async fn ([0ea76a7](https://github.com/alibaba/lowcode-engine/commit/0ea76a746fac8ea8e7b999d42434c468c85d6372)) -* project.exportSchema should export componentsMap of all documents ([969a130](https://github.com/alibaba/lowcode-engine/commit/969a130b373fb028f8051e96cb9d79f1de0a2a1c)) -* removed incorrectly calling childWhitelist hook logic during drag and drop ([#1141](https://github.com/alibaba/lowcode-engine/issues/1141)) ([6576346](https://github.com/alibaba/lowcode-engine/commit/6576346b9185bedb090be9c84129e077cf5389b3)) -* renderer not rendering correct components when loading components with loadAsyncLibrary api ([9b3b4f9](https://github.com/alibaba/lowcode-engine/commit/9b3b4f9b0e35ef3ea2f0117f0cdb2254e15d5389)) -* should pass index param when creating a Prop instance under a list type Prop instance, fix [#780](https://github.com/alibaba/lowcode-engine/issues/780) ([a8de3f2](https://github.com/alibaba/lowcode-engine/commit/a8de3f299c7b26fa939d2b2ea1428143e2b5fb01)) -* simulator eclipses setting area [#773](https://github.com/alibaba/lowcode-engine/issues/773) ([b4b30a3](https://github.com/alibaba/lowcode-engine/commit/b4b30a359932f5c0e8fde1b28f54a883c87901d8)) -* spec typo ([#1064](https://github.com/alibaba/lowcode-engine/issues/1064)) ([ecb9dca](https://github.com/alibaba/lowcode-engine/commit/ecb9dca2b9386ef6fadfd009d161a9203b9b9558)) -* try catch calculation of dynamic setter ([f61e2a2](https://github.com/alibaba/lowcode-engine/commit/f61e2a2b8a3d8d6754474cd392bc259917c7eb10)) -* type=legao dont make request ([98ececa](https://github.com/alibaba/lowcode-engine/commit/98ececa9c11f93e5f849b201b5b5e7ff453733d7)) -* **types:** rrror declaration of the children prop ([951d1cb](https://github.com/alibaba/lowcode-engine/commit/951d1cb103fa46c0e7926d6138657c7d10cc4f88)) -* use the original object if it is not a shell object ([5ea53f7](https://github.com/alibaba/lowcode-engine/commit/5ea53f706b6571946bcfa56b8655b55717381771)) -* use the outer documentation url of unique key, fixes [#868](https://github.com/alibaba/lowcode-engine/issues/868) ([d770007](https://github.com/alibaba/lowcode-engine/commit/d770007ff8c39e6cf527e07a7d6468dbb88c776d)) -* use the outer documentation url of unique key, fixes [#868](https://github.com/alibaba/lowcode-engine/issues/868) ([912ee22](https://github.com/alibaba/lowcode-engine/commit/912ee22180a424f63298c319c62fb481513af904)) -* use uppercase resize trigger names based on material spec ([7fda0ef](https://github.com/alibaba/lowcode-engine/commit/7fda0efe131e0e2e3141849cf3f87307e7ce1b36)) -* when designMode is not design, the hidden attribute does not take effect ([3dd0b6d](https://github.com/alibaba/lowcode-engine/commit/3dd0b6d0a86267e3029c176ff49aff793ce3e186)) - -### [1.0.4](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4) (2022-04-12) - +- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([3b9b177](https://github.com/fe-lce/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) +- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/fe-lce/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) +- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([ce531ae](https://github.com/fe-lce/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) +- 🐛 修复数据源引擎请求处理器映射严格模式下被过滤的问题 ([75626d8](https://github.com/fe-lce/lowcode-engine/commit/75626d877db017b8862b1d5e64d75f3af7ff667a)) +- 🐛 修正 i18n 里面的一个参数命名问题 ([20c6fca](https://github.com/fe-lce/lowcode-engine/commit/20c6fca03e99b11fa5c257cbbda0d4d23f410090)) +- 新元素无法在大纲树拖拽 ([3d41fd5](https://github.com/fe-lce/lowcode-engine/commit/3d41fd5d0783048a7cfb54c6f80d058856153d25)) +- 修复React17选中组件bug ([750d282](https://github.com/fe-lce/lowcode-engine/commit/750d282c03a880204fefdef01e180510465b82f8)) +- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/fe-lce/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) +- 左侧抽屉固定模式层级不足 ([c657cee](https://github.com/fe-lce/lowcode-engine/commit/c657cee0694e3126dee89588a2aa17c4e118f786)) +- add lowcode-designer, lowcode-utils dependencies ([d250242](https://github.com/fe-lce/lowcode-engine/commit/d2502427ca988881747a35bd8da49f024939b833)) +- add support for jsx expression ([1043ef8](https://github.com/fe-lce/lowcode-engine/commit/1043ef82b1e9ceefc3b74fd21eb28e9a740bd1db)) +- addon-combine affect metadata unexpectedly ([fc5fbc6](https://github.com/fe-lce/lowcode-engine/commit/fc5fbc63a04a32bc887754f32e74c76149d74b05)) +- adjust synchronize-order of packages ([81a7304](https://github.com/fe-lce/lowcode-engine/commit/81a73049bd848524e1156761ded08ddf325863ba)) +- change typescript type export to export type ([50e4a03](https://github.com/fe-lce/lowcode-engine/commit/50e4a03b7d810131ce413cc057b43d4a726f1ebe)) +- change typescript type export to export type ([573504b](https://github.com/fe-lce/lowcode-engine/commit/573504b0e3537ca60d234ce2b2f3feedb323405e)) +- declare parameter appHelper for valid engine options ([058a842](https://github.com/fe-lce/lowcode-engine/commit/058a84226af8ca19d8c7d63599d80d0cdf70281c)) +- defaultValue should be evaluated inspite of condition result is falsy, fixes [#1045](https://github.com/fe-lce/lowcode-engine/issues/1045) ([fcfce3c](https://github.com/fe-lce/lowcode-engine/commit/fcfce3cbeb5a53600c40aea07ffef19c9c9591c4)) +- delete the defaultValue configuration outside the loop ([acf7449](https://github.com/fe-lce/lowcode-engine/commit/acf7449ca231d45e8ed7e1d9416817ea11b1266f)) +- delete unused typescript types ([63f5d2c](https://github.com/fe-lce/lowcode-engine/commit/63f5d2ca3e0bda92898fd0df28c9500707812082)) +- delete unused typescript types ([2432aed](https://github.com/fe-lce/lowcode-engine/commit/2432aed83d55407d2f8b5f94910ada7ea78bb59e)) +- designer/loadIncrementalAssets await Sequential ([#841](https://github.com/fe-lce/lowcode-engine/issues/841)) ([8232424](https://github.com/fe-lce/lowcode-engine/commit/823242469743d235923b3b946ec7d2db70887ead)) +- error thrown when triggering undo after save schema on SchemaPane ([9be46e7](https://github.com/fe-lce/lowcode-engine/commit/9be46e7b34e3a40cbc489dbae4bfd0915c2090e3)) +- fallback focusNode to root if empty ([a9a118f](https://github.com/fe-lce/lowcode-engine/commit/a9a118fe6e79080245c6eea42ed26772b7c784ca)) +- **filter:** unique key prop warning ([3fe6e41](https://github.com/fe-lce/lowcode-engine/commit/3fe6e41536cd3a9b9c7eaca5b353de4bd1f91b11)) +- **filter:** unique key prop warning ([06e6920](https://github.com/fe-lce/lowcode-engine/commit/06e6920602bdf21b6e1ffe5cfa3dfe4856e7c57e)) +- fix css resources with parameters not loading correctly ([f859752](https://github.com/fe-lce/lowcode-engine/commit/f85975211814147d40ae5330a76cb21cb6c66916)) +- fix css resources with parameters not loading correctly ([9a5a04a](https://github.com/fe-lce/lowcode-engine/commit/9a5a04ac9560fb6a51bf4e0ed8ea446381d39c35)) +- fix dataSource needs to be compatible due to empty schema ([98bc477](https://github.com/fe-lce/lowcode-engine/commit/98bc477d80dbf7993f89befdb42762d78a55fb1b)) +- fix displayName spell mistake ([2b2bcbd](https://github.com/fe-lce/lowcode-engine/commit/2b2bcbdaebde6a3ce974072f586386ef7ef3497c)) +- fix internal project.getSchema default stage is error ([0d40db2](https://github.com/fe-lce/lowcode-engine/commit/0d40db2581f4fe5a9e22f763f21aec641e366c34)) +- fix lint issues for renderer-core/renderer/base ([d85437d](https://github.com/fe-lce/lowcode-engine/commit/d85437d4af1043371e27dfde98cecf914b93a126)) +- fix lint issues for renderer-core/renderer/base ([4b59190](https://github.com/fe-lce/lowcode-engine/commit/4b59190c7f9d518bc7efac44b7eeee73f1b5d177)) +- fix low-code component rendering problems: 1. thisRequiredInJSE does not take effect 2. jsx components cannot obtain source components ([5dd4625](https://github.com/fe-lce/lowcode-engine/commit/5dd462544fbbbccfa97165f2bcfeed8629fab2a3)) +- fix material-spec demo ([438cccd](https://github.com/fe-lce/lowcode-engine/commit/438cccd58e4341638070c1d8b2d4e78e4e20e3fb)) +- fix misused doc urls ([16a8857](https://github.com/fe-lce/lowcode-engine/commit/16a88578634b9da2f04698df5ca5a5e69151bb97)) +- fix monitor utils incorrect assignment method ([bf280c6](https://github.com/fe-lce/lowcode-engine/commit/bf280c6fa1e46d084fc8f20323164816fad4076f)) +- fix outline-pane invisible occasionally when dragging tree node ([031c7f2](https://github.com/fe-lce/lowcode-engine/commit/031c7f25f10a6cfebfc7929c9226f4e4167a359f)) +- fix outline-tree initialization failed ([a2d5c6f](https://github.com/fe-lce/lowcode-engine/commit/a2d5c6fd90ca0226bbbfea01a4b28c8b8d307a78)) +- fix render module state expression initialization exception ([5bd68ee](https://github.com/fe-lce/lowcode-engine/commit/5bd68ee6b448fa58b022870b3f8175d8b77febde)) +- fix render module state expression initialization exception ([9c545cc](https://github.com/fe-lce/lowcode-engine/commit/9c545cca6004f65e2f206ea001cefa3fa3cfa807)) +- fix setter hooks error ([8a3a0b8](https://github.com/fe-lce/lowcode-engine/commit/8a3a0b824162e25a930711c6fef511b4b369e897)) +- fix test case failures of designer ([4b0521a](https://github.com/fe-lce/lowcode-engine/commit/4b0521a47494f78e120f75021e0a076fb00ce53e)) +- Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/fe-lce/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) +- fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([6ee6b07](https://github.com/fe-lce/lowcode-engine/commit/6ee6b07a10ba4aac583def52d8ff1fa78d111d0b)) +- fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([f400172](https://github.com/fe-lce/lowcode-engine/commit/f4001728259047b09db75d76a8c3ef1e1bcb4e0a)) +- fix the problem that material.getComponentMetasMap returns the wrong result ([e02933c](https://github.com/fe-lce/lowcode-engine/commit/e02933c18bc15519b2eba8ad946282502a509611)) +- Fix the rendering error caused by incorrect key value when configuring the loop ([1026763](https://github.com/fe-lce/lowcode-engine/commit/1026763dc5a77d4395a1e86e5a0084ab4fb4230c)) +- fix the unit test failure problem caused by thisRequiredInJSE modification ([c2c59b7](https://github.com/fe-lce/lowcode-engine/commit/c2c59b7ff72ba06156bbcdb952262739d6188209)) +- fix unnecessary props calculation ([f1fed75](https://github.com/fe-lce/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) +- fixed an issue where materials would be rendered multiple times ([9d187cc](https://github.com/fe-lce/lowcode-engine/commit/9d187ccb7de55857e861d3fc881c610506872d03)) +- fixed an issue where materials would be rendered multiple times ([64cc328](https://github.com/fe-lce/lowcode-engine/commit/64cc3283c15342151a8f93c46a276681f3575153)) +- fixed focusNodeSelector configuration not taking effect ([9beae9c](https://github.com/fe-lce/lowcode-engine/commit/9beae9c3269901bf03a29033121c7d480571bce5)) +- fixed the issue that thisRequiredInJSE did not take effect in some scenarios ([7e5a919](https://github.com/fe-lce/lowcode-engine/commit/7e5a919f9352397f11741fd911495996469c0256)) +- in ES require changed to import ([b4d7d6d](https://github.com/fe-lce/lowcode-engine/commit/b4d7d6d8c290a335a2c1f60731d4417b23444941)) +- in ES require changed to import ([7c8cd36](https://github.com/fe-lce/lowcode-engine/commit/7c8cd36a10a7caa61de31a15abd93ab8a97fbe08)) +- leaf should be type of ShellNode other than InnerNode ([5bb8cf5](https://github.com/fe-lce/lowcode-engine/commit/5bb8cf5d12d38d70b69fa28deb2f8aa0afa9b9b9)) +- lowcode component exec lifecycle has error ([f99a47e](https://github.com/fe-lce/lowcode-engine/commit/f99a47e502080134454795f5e361cfa4fba3f03b)) +- lowcode component leaf dont have export prop, exec leaf.export make error ([9d51dcd](https://github.com/fe-lce/lowcode-engine/commit/9d51dcdae38850be0206861f2cae74ca68805c25)) +- missing engine options config info ([a79875c](https://github.com/fe-lce/lowcode-engine/commit/a79875cf8698d3912b50526d97f6ac72e9a21fc9)) +- missing engine options config info ([9ccded0](https://github.com/fe-lce/lowcode-engine/commit/9ccded006ef44cd538abaa140250e519243bf090)) +- npm run clean error in windows ([a176e9d](https://github.com/fe-lce/lowcode-engine/commit/a176e9d245981fb5718c8d144f477202b3796be6)) +- project event listeners will not be invoked sometimes ([a0c772f](https://github.com/fe-lce/lowcode-engine/commit/a0c772fb903cf5eb9e0b811b64bbe3846d4ba8ac)) +- project.exportSchema api lack stage param & setAssets should be a async fn ([0ea76a7](https://github.com/fe-lce/lowcode-engine/commit/0ea76a746fac8ea8e7b999d42434c468c85d6372)) +- project.exportSchema should export componentsMap of all documents ([969a130](https://github.com/fe-lce/lowcode-engine/commit/969a130b373fb028f8051e96cb9d79f1de0a2a1c)) +- removed incorrectly calling childWhitelist hook logic during drag and drop ([#1141](https://github.com/fe-lce/lowcode-engine/issues/1141)) ([6576346](https://github.com/fe-lce/lowcode-engine/commit/6576346b9185bedb090be9c84129e077cf5389b3)) +- renderer not rendering correct components when loading components with loadAsyncLibrary api ([9b3b4f9](https://github.com/fe-lce/lowcode-engine/commit/9b3b4f9b0e35ef3ea2f0117f0cdb2254e15d5389)) +- should pass index param when creating a Prop instance under a list type Prop instance, fix [#780](https://github.com/fe-lce/lowcode-engine/issues/780) ([a8de3f2](https://github.com/fe-lce/lowcode-engine/commit/a8de3f299c7b26fa939d2b2ea1428143e2b5fb01)) +- simulator eclipses setting area [#773](https://github.com/fe-lce/lowcode-engine/issues/773) ([b4b30a3](https://github.com/fe-lce/lowcode-engine/commit/b4b30a359932f5c0e8fde1b28f54a883c87901d8)) +- spec typo ([#1064](https://github.com/fe-lce/lowcode-engine/issues/1064)) ([ecb9dca](https://github.com/fe-lce/lowcode-engine/commit/ecb9dca2b9386ef6fadfd009d161a9203b9b9558)) +- try catch calculation of dynamic setter ([f61e2a2](https://github.com/fe-lce/lowcode-engine/commit/f61e2a2b8a3d8d6754474cd392bc259917c7eb10)) +- type=legao dont make request ([98ececa](https://github.com/fe-lce/lowcode-engine/commit/98ececa9c11f93e5f849b201b5b5e7ff453733d7)) +- **types:** rrror declaration of the children prop ([951d1cb](https://github.com/fe-lce/lowcode-engine/commit/951d1cb103fa46c0e7926d6138657c7d10cc4f88)) +- use the original object if it is not a shell object ([5ea53f7](https://github.com/fe-lce/lowcode-engine/commit/5ea53f706b6571946bcfa56b8655b55717381771)) +- use the outer documentation url of unique key, fixes [#868](https://github.com/fe-lce/lowcode-engine/issues/868) ([d770007](https://github.com/fe-lce/lowcode-engine/commit/d770007ff8c39e6cf527e07a7d6468dbb88c776d)) +- use the outer documentation url of unique key, fixes [#868](https://github.com/fe-lce/lowcode-engine/issues/868) ([912ee22](https://github.com/fe-lce/lowcode-engine/commit/912ee22180a424f63298c319c62fb481513af904)) +- use uppercase resize trigger names based on material spec ([7fda0ef](https://github.com/fe-lce/lowcode-engine/commit/7fda0efe131e0e2e3141849cf3f87307e7ce1b36)) +- when designMode is not design, the hidden attribute does not take effect ([3dd0b6d](https://github.com/fe-lce/lowcode-engine/commit/3dd0b6d0a86267e3029c176ff49aff793ce3e186)) + +### [1.0.4](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4) (2022-04-12) ### Bug Fixes -* 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([eb4cc69](https://github.com/alibaba/lowcode-engine/commit/eb4cc693f5dbcae54546c569eb8fa331d074e062)) - -### [1.0.4-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4-beta.1) (2022-04-11) +- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([eb4cc69](https://github.com/fe-lce/lowcode-engine/commit/eb4cc693f5dbcae54546c569eb8fa331d074e062)) +### [1.0.4-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.4-beta.0...@lce/lowcode-code-generator@1.0.4-beta.1) (2022-04-11) ### Bug Fixes -* 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 __$evalArray 的问题 ([987f4ce](https://github.com/alibaba/lowcode-engine/commit/987f4cea54ef8a75d0b63a0268b5a20b2938b8a7)) - -### [1.0.4-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.4-beta.0) (2022-04-10) +- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([987f4ce](https://github.com/fe-lce/lowcode-engine/commit/987f4cea54ef8a75d0b63a0268b5a20b2938b8a7)) +### [1.0.4-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.3...@lce/lowcode-code-generator@1.0.4-beta.0) (2022-04-10) ### Features -* **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/alibaba/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) - +- **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/fe-lce/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) ### Bug Fixes -* 🐛 修正 i18n 里面的一个参数命名问题 ([1e9e388](https://github.com/alibaba/lowcode-engine/commit/1e9e388ce9104d76c4f6d9bc513c57e5059d7982)) -* 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([1eb9add](https://github.com/alibaba/lowcode-engine/commit/1eb9addd8df2323f9aabac87af32ac2efcd6bf22)), closes [#288](https://github.com/alibaba/lowcode-engine/issues/288) -* 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 __$eval 中用到 window 的问题 ([67dabb0](https://github.com/alibaba/lowcode-engine/commit/67dabb04beb32b6e94eb1276222e53b416e47c9d)) -* Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/alibaba/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) -* fix unnecessary props calculation ([f1fed75](https://github.com/alibaba/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) -* 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([79db4ac](https://github.com/alibaba/lowcode-engine/commit/79db4ac97f34f24b7f7460fb3fc67521967f8cc5)) - -### [1.0.3](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2...@lce/lowcode-code-generator@1.0.3) (2022-03-29) +- 🐛 修正 i18n 里面的一个参数命名问题 ([1e9e388](https://github.com/fe-lce/lowcode-engine/commit/1e9e388ce9104d76c4f6d9bc513c57e5059d7982)) +- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([1eb9add](https://github.com/fe-lce/lowcode-engine/commit/1eb9addd8df2323f9aabac87af32ac2efcd6bf22)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) +- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([67dabb0](https://github.com/fe-lce/lowcode-engine/commit/67dabb04beb32b6e94eb1276222e53b416e47c9d)) +- Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/fe-lce/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) +- fix unnecessary props calculation ([f1fed75](https://github.com/fe-lce/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) +- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([79db4ac](https://github.com/fe-lce/lowcode-engine/commit/79db4ac97f34f24b7f7460fb3fc67521967f8cc5)) +### [1.0.3](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2...@lce/lowcode-code-generator@1.0.3) (2022-03-29) ### Features -* add getConvertedExtraKey / getOriginalExtraKey to utils ([8e7bb9d](https://github.com/alibaba/lowcode-engine/commit/8e7bb9d4b86454dd77c6928eb769cd764cad8630)) - +- add getConvertedExtraKey / getOriginalExtraKey to utils ([8e7bb9d](https://github.com/fe-lce/lowcode-engine/commit/8e7bb9d4b86454dd77c6928eb769cd764cad8630)) ### Bug Fixes -* 🐛 出码: 解决 componentName 和 exportName 不一致时生成的 import 语句的问题 ([eefc091](https://github.com/alibaba/lowcode-engine/commit/eefc091ee7e86d6214d20d486212cb5aff237946)) -* component cannot be redisplayed by configuration after rendering is closed ([c54f369](https://github.com/alibaba/lowcode-engine/commit/c54f369e1860d818479dda9d6429f851c0b08fa6)) -* fix loop configuration auto fill empty array issue ([d087092](https://github.com/alibaba/lowcode-engine/commit/d087092fd712eff0556adacda692d3ff6f2f9f22)) -* make important true by default ([c63b6e1](https://github.com/alibaba/lowcode-engine/commit/c63b6e1bfadc3fc87ed41840952e02ffbff24fab)) -* make insertAfter & insertBefore work ([70fd372](https://github.com/alibaba/lowcode-engine/commit/70fd3720d098d6e227acb9281ee22feee66b9c0b)) -* npm源 ([437adcc](https://github.com/alibaba/lowcode-engine/commit/437adccf5f2dbb400de6e2bef10cfc4b65286f2b)) -* prop should return undefined when all items are undefined ([5bb9ec7](https://github.com/alibaba/lowcode-engine/commit/5bb9ec7a1dfaabfdb5369226b54d5f63a7999e59)) -* should not create new prop while querying fileName ([19c207d](https://github.com/alibaba/lowcode-engine/commit/19c207d29de045f473ba73baaf34e7294d40261a)) -* variable binding lost after modify the mock value ([ef95b56](https://github.com/alibaba/lowcode-engine/commit/ef95b5683273d8302bde1582de8afe3d87a808d8)) -* Workbench should receive the original skeleton other than shell skeleton ([d5c3ca1](https://github.com/alibaba/lowcode-engine/commit/d5c3ca1068ce2c2140980bd059d0da333574dc34)) - -### [1.0.2](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.1...@lce/lowcode-code-generator@1.0.2) (2022-03-08) +- 🐛 出码: 解决 componentName 和 exportName 不一致时生成的 import 语句的问题 ([eefc091](https://github.com/fe-lce/lowcode-engine/commit/eefc091ee7e86d6214d20d486212cb5aff237946)) +- component cannot be redisplayed by configuration after rendering is closed ([c54f369](https://github.com/fe-lce/lowcode-engine/commit/c54f369e1860d818479dda9d6429f851c0b08fa6)) +- fix loop configuration auto fill empty array issue ([d087092](https://github.com/fe-lce/lowcode-engine/commit/d087092fd712eff0556adacda692d3ff6f2f9f22)) +- make important true by default ([c63b6e1](https://github.com/fe-lce/lowcode-engine/commit/c63b6e1bfadc3fc87ed41840952e02ffbff24fab)) +- make insertAfter & insertBefore work ([70fd372](https://github.com/fe-lce/lowcode-engine/commit/70fd3720d098d6e227acb9281ee22feee66b9c0b)) +- npm源 ([437adcc](https://github.com/fe-lce/lowcode-engine/commit/437adccf5f2dbb400de6e2bef10cfc4b65286f2b)) +- prop should return undefined when all items are undefined ([5bb9ec7](https://github.com/fe-lce/lowcode-engine/commit/5bb9ec7a1dfaabfdb5369226b54d5f63a7999e59)) +- should not create new prop while querying fileName ([19c207d](https://github.com/fe-lce/lowcode-engine/commit/19c207d29de045f473ba73baaf34e7294d40261a)) +- variable binding lost after modify the mock value ([ef95b56](https://github.com/fe-lce/lowcode-engine/commit/ef95b5683273d8302bde1582de8afe3d87a808d8)) +- Workbench should receive the original skeleton other than shell skeleton ([d5c3ca1](https://github.com/fe-lce/lowcode-engine/commit/d5c3ca1068ce2c2140980bd059d0da333574dc34)) -### [1.0.2-beta.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.0...@lce/lowcode-code-generator@1.0.2-beta.1) (2022-03-08) +### [1.0.2](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.1...@lce/lowcode-code-generator@1.0.2) (2022-03-08) +### [1.0.2-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.2-beta.0...@lce/lowcode-code-generator@1.0.2-beta.1) (2022-03-08) ### Bug Fixes -* 🐛 补充 icejs 模板中缺失的依赖包 ([a94553e](https://github.com/alibaba/lowcode-engine/commit/a94553e503d439b67478df6a34950d9e3d15a063)) - -### [1.0.2-beta.0](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.2-beta.0) (2022-03-08) +- 🐛 补充 icejs 模板中缺失的依赖包 ([a94553e](https://github.com/fe-lce/lowcode-engine/commit/a94553e503d439b67478df6a34950d9e3d15a063)) +### [1.0.2-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.2-beta.0) (2022-03-08) ### Features -* 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/alibaba/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) -* modify npm private control & version ([ee55d02](https://github.com/alibaba/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) -* modify yuque link in README ([d522034](https://github.com/alibaba/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) -* remove CHANGELOG.md ([b996414](https://github.com/alibaba/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) -* remove module field in material-parser package.json ([6141c27](https://github.com/alibaba/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) -* rename build:umd ([23c7959](https://github.com/alibaba/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) -* replace tnpm with npm ([36caf0f](https://github.com/alibaba/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) -* support UMD packageing for react-renderer ([982d0d6](https://github.com/alibaba/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) - +- 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/fe-lce/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) +- modify npm private control & version ([ee55d02](https://github.com/fe-lce/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) +- modify yuque link in README ([d522034](https://github.com/fe-lce/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) +- remove CHANGELOG.md ([b996414](https://github.com/fe-lce/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) +- remove module field in material-parser package.json ([6141c27](https://github.com/fe-lce/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) +- rename build:umd ([23c7959](https://github.com/fe-lce/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) +- replace tnpm with npm ([36caf0f](https://github.com/fe-lce/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) +- support UMD packageing for react-renderer ([982d0d6](https://github.com/fe-lce/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) ### Bug Fixes -* 🐛 去掉 npm 上没有的依赖 ([#68](https://github.com/alibaba/lowcode-engine/issues/68)) ([e7ce779](https://github.com/alibaba/lowcode-engine/commit/e7ce77987eb05871dd1675d2a88367c5569bfbff)) -* 兼容 setters 为空的情况 ([56b459a](https://github.com/alibaba/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) -* 解决 package.json 中误添加了没有用到的数据源类型的 handler 的包的问题 ([#56](https://github.com/alibaba/lowcode-engine/issues/56)) ([76341c8](https://github.com/alibaba/lowcode-engine/commit/76341c8456b227192bb65537dc3d16033db0b3a1)) -* 解决出码的一些问题 ([#87](https://github.com/alibaba/lowcode-engine/issues/87)) ([4a01c97](https://github.com/alibaba/lowcode-engine/commit/4a01c97ea6bf23eb677888ba1aba54e5c9f4f630)) -* 修复 setup 的逻辑 ([1cfb15a](https://github.com/alibaba/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) -* 修正一些对内的地址 ([07cc1f2](https://github.com/alibaba/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) -* 增加必要的方法 ([1b38a81](https://github.com/alibaba/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) -* fix tsconfig of material-parser ([46725cb](https://github.com/alibaba/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) -* lint&fix auto generated types.ts ([7dde970](https://github.com/alibaba/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) -* The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/alibaba/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) - -### [1.0.1](https://github.com/alibaba/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.1) (2022-03-08) +- 🐛 去掉 npm 上没有的依赖 ([#68](https://github.com/fe-lce/lowcode-engine/issues/68)) ([e7ce779](https://github.com/fe-lce/lowcode-engine/commit/e7ce77987eb05871dd1675d2a88367c5569bfbff)) +- 兼容 setters 为空的情况 ([56b459a](https://github.com/fe-lce/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) +- 解决 package.json 中误添加了没有用到的数据源类型的 handler 的包的问题 ([#56](https://github.com/fe-lce/lowcode-engine/issues/56)) ([76341c8](https://github.com/fe-lce/lowcode-engine/commit/76341c8456b227192bb65537dc3d16033db0b3a1)) +- 解决出码的一些问题 ([#87](https://github.com/fe-lce/lowcode-engine/issues/87)) ([4a01c97](https://github.com/fe-lce/lowcode-engine/commit/4a01c97ea6bf23eb677888ba1aba54e5c9f4f630)) +- 修复 setup 的逻辑 ([1cfb15a](https://github.com/fe-lce/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) +- 修正一些对内的地址 ([07cc1f2](https://github.com/fe-lce/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) +- 增加必要的方法 ([1b38a81](https://github.com/fe-lce/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) +- fix tsconfig of material-parser ([46725cb](https://github.com/fe-lce/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) +- lint&fix auto generated types.ts ([7dde970](https://github.com/fe-lce/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) +- The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/fe-lce/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) +### [1.0.1](https://github.com/fe-lce/lowcode-engine/compare/@lce/lowcode-code-generator@1.0.0...@lce/lowcode-code-generator@1.0.1) (2022-03-08) ### Features -* 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/alibaba/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) -* modify npm private control & version ([ee55d02](https://github.com/alibaba/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) -* modify yuque link in README ([d522034](https://github.com/alibaba/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) -* remove CHANGELOG.md ([b996414](https://github.com/alibaba/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) -* remove module field in material-parser package.json ([6141c27](https://github.com/alibaba/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) -* rename build:umd ([23c7959](https://github.com/alibaba/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) -* replace tnpm with npm ([36caf0f](https://github.com/alibaba/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) -* support UMD packageing for react-renderer ([982d0d6](https://github.com/alibaba/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) - +- 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/fe-lce/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) +- modify npm private control & version ([ee55d02](https://github.com/fe-lce/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) +- modify yuque link in README ([d522034](https://github.com/fe-lce/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) +- remove CHANGELOG.md ([b996414](https://github.com/fe-lce/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) +- remove module field in material-parser package.json ([6141c27](https://github.com/fe-lce/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) +- rename build:umd ([23c7959](https://github.com/fe-lce/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) +- replace tnpm with npm ([36caf0f](https://github.com/fe-lce/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) +- support UMD packageing for react-renderer ([982d0d6](https://github.com/fe-lce/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) ### Bug Fixes -* 🐛 修正一些示例地址 ([8d21283](https://github.com/alibaba/lowcode-engine/commit/8d212832e77a1ec763db668683917705774acd0d)) -* 兼容 setters 为空的情况 ([56b459a](https://github.com/alibaba/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) -* 修复 setup 的逻辑 ([1cfb15a](https://github.com/alibaba/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) -* 修正一些对内的地址 ([07cc1f2](https://github.com/alibaba/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) -* 增加必要的方法 ([1b38a81](https://github.com/alibaba/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) -* fix tsconfig of material-parser ([46725cb](https://github.com/alibaba/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) -* lint&fix auto generated types.ts ([7dde970](https://github.com/alibaba/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) -* The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/alibaba/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) +- 🐛 修正一些示例地址 ([8d21283](https://github.com/fe-lce/lowcode-engine/commit/8d212832e77a1ec763db668683917705774acd0d)) +- 兼容 setters 为空的情况 ([56b459a](https://github.com/fe-lce/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) +- 修复 setup 的逻辑 ([1cfb15a](https://github.com/fe-lce/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) +- 修正一些对内的地址 ([07cc1f2](https://github.com/fe-lce/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) +- 增加必要的方法 ([1b38a81](https://github.com/fe-lce/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) +- fix tsconfig of material-parser ([46725cb](https://github.com/fe-lce/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) +- lint&fix auto generated types.ts ([7dde970](https://github.com/fe-lce/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) +- The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/fe-lce/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) ## 1.0.0 (2022-02-17) - ### Features -* first commit - genesis ([4f4ac51](https://github.com/alibaba/lowcode-engine/commit/4f4ac5115d18357a7399632860808f6cffc33fad)) +- first commit - genesis ([4f4ac51](https://github.com/fe-lce/lowcode-engine/commit/4f4ac5115d18357a7399632860808f6cffc33fad)) diff --git a/modules/code-generator/README.md b/modules/code-generator/README.md index b9f818af3e..2adf685733 100644 --- a/modules/code-generator/README.md +++ b/modules/code-generator/README.md @@ -120,4 +120,4 @@ await CodeGenerator.publishers.zip().publish({ ## 参与共建 -欢迎参与共建,如何共建请参阅:[./CONTRIBUTING.md](https://github.com/alibaba/lowcode-engine/blob/main/modules/code-generator/CONTRIBUTING.md) +欢迎参与共建,如何共建请参阅:[./CONTRIBUTING.md](https://github.com/fe-lce/lowcode-engine/blob/main/modules/code-generator/CONTRIBUTING.md) diff --git a/modules/code-generator/package.json b/modules/code-generator/package.json index 7d3101f706..7b2b89d878 100644 --- a/modules/code-generator/package.json +++ b/modules/code-generator/package.json @@ -148,8 +148,8 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/modules/code-generator" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/modules/code-generator" }, - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/modules/material-parser/package.json b/modules/material-parser/package.json index 332739cff1..a85dd846e6 100644 --- a/modules/material-parser/package.json +++ b/modules/material-parser/package.json @@ -69,8 +69,8 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/modules/material-parser" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/modules/material-parser" }, - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/designer/package.json b/packages/designer/package.json index 0db9ea5301..e411c50a0a 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -50,9 +50,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/designer" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/designer" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/designer/tests/fixtures/component-metadata/abcgroup.ts b/packages/designer/tests/fixtures/component-metadata/abcgroup.ts index abce5577be..f9ff8afaf0 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcgroup.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcgroup.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: { label: '容器' }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/abcitem.ts b/packages/designer/tests/fixtures/component-metadata/abcitem.ts index 4608e4f68e..0a4e688e6e 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcitem.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcitem.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: { label: '容器' }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/abcnode.ts b/packages/designer/tests/fixtures/component-metadata/abcnode.ts index a8cbd629e4..db86ead5d0 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcnode.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcnode.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: { label: '容器' }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/abcoption.ts b/packages/designer/tests/fixtures/component-metadata/abcoption.ts index 2a62a48450..be14c0165c 100644 --- a/packages/designer/tests/fixtures/component-metadata/abcoption.ts +++ b/packages/designer/tests/fixtures/component-metadata/abcoption.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: { label: '容器' }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/button.ts b/packages/designer/tests/fixtures/component-metadata/button.ts index 3d9f151934..786020ac0b 100644 --- a/packages/designer/tests/fixtures/component-metadata/button.ts +++ b/packages/designer/tests/fixtures/component-metadata/button.ts @@ -6,7 +6,7 @@ export default { componentName: 'Button', }, title: '按钮', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/dialog.ts b/packages/designer/tests/fixtures/component-metadata/dialog.ts index bc638de3c3..827d353a53 100644 --- a/packages/designer/tests/fixtures/component-metadata/dialog.ts +++ b/packages/designer/tests/fixtures/component-metadata/dialog.ts @@ -6,7 +6,7 @@ export default { componentName: 'Dialog', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div.ts b/packages/designer/tests/fixtures/component-metadata/div.ts index 71d877bf78..265f5517f4 100644 --- a/packages/designer/tests/fixtures/component-metadata/div.ts +++ b/packages/designer/tests/fixtures/component-metadata/div.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div10.ts b/packages/designer/tests/fixtures/component-metadata/div10.ts index 44180a6256..6d9c0177e6 100644 --- a/packages/designer/tests/fixtures/component-metadata/div10.ts +++ b/packages/designer/tests/fixtures/component-metadata/div10.ts @@ -2,7 +2,7 @@ import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div2.ts b/packages/designer/tests/fixtures/component-metadata/div2.ts index 166603b889..bb8da59ada 100644 --- a/packages/designer/tests/fixtures/component-metadata/div2.ts +++ b/packages/designer/tests/fixtures/component-metadata/div2.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: { label: '容器' }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div3.ts b/packages/designer/tests/fixtures/component-metadata/div3.ts index ffb6508cf8..dd3489bc7c 100644 --- a/packages/designer/tests/fixtures/component-metadata/div3.ts +++ b/packages/designer/tests/fixtures/component-metadata/div3.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-div', componentName: 'Div', }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div4.ts b/packages/designer/tests/fixtures/component-metadata/div4.ts index 2d3491efcd..e0f4c88273 100644 --- a/packages/designer/tests/fixtures/component-metadata/div4.ts +++ b/packages/designer/tests/fixtures/component-metadata/div4.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-div', componentName: 'Div', }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: [ diff --git a/packages/designer/tests/fixtures/component-metadata/div5.ts b/packages/designer/tests/fixtures/component-metadata/div5.ts index cd20bd5f44..5baa1f28c4 100644 --- a/packages/designer/tests/fixtures/component-metadata/div5.ts +++ b/packages/designer/tests/fixtures/component-metadata/div5.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-div', componentName: 'Div', }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div6.ts b/packages/designer/tests/fixtures/component-metadata/div6.ts index 19d99bbd8e..49d4b9cea7 100644 --- a/packages/designer/tests/fixtures/component-metadata/div6.ts +++ b/packages/designer/tests/fixtures/component-metadata/div6.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-div', componentName: 'Div', }, - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div7.ts b/packages/designer/tests/fixtures/component-metadata/div7.ts index a76dd136c3..610b5bd92c 100644 --- a/packages/designer/tests/fixtures/component-metadata/div7.ts +++ b/packages/designer/tests/fixtures/component-metadata/div7.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/div8.ts b/packages/designer/tests/fixtures/component-metadata/div8.ts index f20c3f22c7..eef017d2f1 100644 --- a/packages/designer/tests/fixtures/component-metadata/div8.ts +++ b/packages/designer/tests/fixtures/component-metadata/div8.ts @@ -6,7 +6,7 @@ export default { componentName: 'Div', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], } as IPublicTypeComponentMetadata; diff --git a/packages/designer/tests/fixtures/component-metadata/div9.ts b/packages/designer/tests/fixtures/component-metadata/div9.ts index bdf37737b9..576fc7e5fe 100644 --- a/packages/designer/tests/fixtures/component-metadata/div9.ts +++ b/packages/designer/tests/fixtures/component-metadata/div9.ts @@ -2,7 +2,7 @@ import { IPublicTypeComponentMetadata } from '@lce/lowcode-types'; export default { componentName: 'Div', title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], } as IPublicTypeComponentMetadata; diff --git a/packages/designer/tests/fixtures/component-metadata/form.ts b/packages/designer/tests/fixtures/component-metadata/form.ts index 23a18e35fd..ba7f431131 100644 --- a/packages/designer/tests/fixtures/component-metadata/form.ts +++ b/packages/designer/tests/fixtures/component-metadata/form.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-form', }, title: '表单', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/other.ts b/packages/designer/tests/fixtures/component-metadata/other.ts index 9145073631..dabf90c36e 100644 --- a/packages/designer/tests/fixtures/component-metadata/other.ts +++ b/packages/designer/tests/fixtures/component-metadata/other.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-other', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/page.ts b/packages/designer/tests/fixtures/component-metadata/page.ts index 23b9ff04f9..80d7a925df 100644 --- a/packages/designer/tests/fixtures/component-metadata/page.ts +++ b/packages/designer/tests/fixtures/component-metadata/page.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-page', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/page2.ts b/packages/designer/tests/fixtures/component-metadata/page2.ts index 23b9ff04f9..80d7a925df 100644 --- a/packages/designer/tests/fixtures/component-metadata/page2.ts +++ b/packages/designer/tests/fixtures/component-metadata/page2.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-page', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-content.ts b/packages/designer/tests/fixtures/component-metadata/root-content.ts index 89dafd4005..43bf014d9c 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-content.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-content.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-page', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-footer.ts b/packages/designer/tests/fixtures/component-metadata/root-footer.ts index ac9828b7c9..4dae535d2d 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-footer.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-footer.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-page', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/designer/tests/fixtures/component-metadata/root-header.ts b/packages/designer/tests/fixtures/component-metadata/root-header.ts index d4bf551a12..6d0e4d8708 100644 --- a/packages/designer/tests/fixtures/component-metadata/root-header.ts +++ b/packages/designer/tests/fixtures/component-metadata/root-header.ts @@ -5,7 +5,7 @@ export default { package: '@ali/vc-page', }, title: '容器', - docUrl: 'https://github.com/alibaba/lowcode-materials/tree/main/docs', + docUrl: 'https://github.com/fe-lce/lowcode-materials/tree/main/docs', devMode: 'proCode', tags: ['布局'], configure: { diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 4f7f77c5a6..651f40ca28 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -47,9 +47,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/editor-core" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/editor-core" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index ed3dcb0216..0a97a9cdc9 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -40,9 +40,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/editor-skeleton" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/editor-skeleton" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/engine/README-zh_CN.md b/packages/engine/README-zh_CN.md index 82e84f9c7a..8959a1ca70 100644 --- a/packages/engine/README-zh_CN.md +++ b/packages/engine/README-zh_CN.md @@ -25,6 +25,7 @@ - 修复积压问题 ## 联系方式 + 微信搜索 kunsile-002 添加我的微信,或者扫码加群: <img src="https://jxxg-wangjian.oss-cn-beijing.aliyuncs.com/static/lce-group-qrcode.jpg" width="200" /> @@ -47,12 +48,12 @@ [npm-url]: http://npmjs.org/package/@lce/lowcode-engine [download-image]: https://img.shields.io/npm/dm/@lce/lowcode-engine.svg?style=flat-square [download-url]: https://npmjs.org/package/@lce/lowcode-engine -[help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open -[help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 +[help-wanted-image]: https://flat.badgen.net/github/label-issues/fe-lce/lowcode-engine/help%20wanted/open +[help-wanted-url]: https://github.com/fe-lce/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 [issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square [issues-helper-url]: https://github.com/actions-cool/issues-helper -[codecov-image-url]: https://codecov.io/gh/alibaba/lowcode-engine/branch/main/graph/badge.svg -[codecov-url]: https://codecov.io/gh/alibaba/lowcode-engine +[codecov-image-url]: https://codecov.io/gh/fe-lce/lowcode-engine/branch/main/graph/badge.svg +[codecov-url]: https://codecov.io/gh/fe-lce/lowcode-engine </div> @@ -148,8 +149,8 @@ https://cdn.jsdelivr.net/npm/@lce/lowcode-react-simulator-renderer@1.0.18/dist/j ## 🔗 相关链接 - [官网首页](https://lowcode-engine.cn/) -- [Demo 马上玩](https://lowcode-engine.cn/demo) | [引擎 Demo 仓库](https://github.com/alibaba/lowcode-demo) -- [阿里物料](https://github.com/alibaba/lowcode-materials) +- [Demo 马上玩](https://lowcode-engine.cn/demo) | [引擎 Demo 仓库](https://github.com/fe-lce/lowcode-demo) +- [阿里物料](https://github.com/fe-lce/lowcode-materials) - [官方设置器(setter)](https://github.com/zboMa/lowcode-engine-ext) - [官方插件(plugin)](https://github.com/zboMa/lowcode-plugins) - [生态元素(物料、setter、插件)工具链](https://lowcode-engine.cn/site/docs/guide/expand/editor/cli) @@ -172,7 +173,7 @@ $ npm start > > 📢 windows 环境必须使用 [WSL](https://docs.microsoft.com/zh-cn/windows/wsl/install),其他终端不保证能正常运行 -lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-demo](https://github.com/alibaba/lowcode-demo) 项目做调试,文件代理规则参考[这里](https://lowcode-engine.cn/site/docs/participate/prepare#2-配置资源代理)。 +lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-demo](https://github.com/fe-lce/lowcode-demo) 项目做调试,文件代理规则参考[这里](https://lowcode-engine.cn/site/docs/participate/prepare#2-配置资源代理)。 ## 🤝 参与共建 diff --git a/packages/engine/README.md b/packages/engine/README.md index ad91e13f5f..cf3b747b91 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -26,12 +26,12 @@ An enterprise-class low-code technology stack with scale-out design [npm-url]: http://npmjs.org/package/@lce/lowcode-engine [download-image]: https://img.shields.io/npm/dm/@lce/lowcode-engine.svg?style=flat-square [download-url]: https://npmjs.org/package/@lce/lowcode-engine -[help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open -[help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 +[help-wanted-image]: https://flat.badgen.net/github/label-issues/fe-lce/lowcode-engine/help%20wanted/open +[help-wanted-url]: https://github.com/fe-lce/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 [issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square [issues-helper-url]: https://github.com/actions-cool/issues-helper -[codecov-image-url]: https://codecov.io/gh/alibaba/lowcode-engine/branch/main/graph/badge.svg -[codecov-url]: https://codecov.io/gh/alibaba/lowcode-engine +[codecov-image-url]: https://codecov.io/gh/fe-lce/lowcode-engine/branch/main/graph/badge.svg +[codecov-url]: https://codecov.io/gh/fe-lce/lowcode-engine </div> @@ -134,10 +134,10 @@ Pass the files under packages/engine/dist and packages/react-simulator-renderer/ ## 🔗 Related Links - [Official website home page](http://lowcode-engine.cn/) -- [Demo Play Now](http://lowcode-engine.cn/demo) | [Engine Demo Repository](https://github.com/alibaba/lowcode-demo) -- [Official Materials](https://github.com/alibaba/lowcode-materials) -- [official setter](https://github.com/alibaba/lowcode-engine-ext) -- [Official plugin (plugin)](https://github.com/alibaba/lowcode-plugins) +- [Demo Play Now](http://lowcode-engine.cn/demo) | [Engine Demo Repository](https://github.com/fe-lce/lowcode-demo) +- [Official Materials](https://github.com/fe-lce/lowcode-materials) +- [official setter](https://github.com/fe-lce/lowcode-engine-ext) +- [Official plugin (plugin)](https://github.com/fe-lce/lowcode-plugins) - [Ecological elements (materials, setters, plugins) toolchain](https://lowcode-engine.cn/site/docs/guide/expand/editor/cli) - [User Documentation](http://lowcode-engine.cn/doc) - [API](https://lowcode-engine.cn/site/docs/api/) @@ -147,7 +147,7 @@ This [awesome-lowcode-engine](https://github.com/lowcode-workspace/awesome-lowco ## 💻 Local debugging ```bash -$ git clone git@github.com:alibaba/lowcode-engine.git +$ git clone git@github.com:fe-lce/lowcode-engine.git $ cd lowcode-engine $ npm install $ npm run setup @@ -158,7 +158,7 @@ $ npm start > > 📢 Windows environment must use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install), other terminals are not guaranteed to work normally -After lowcode-engine is started, several umd files are provided, which can be debugged in combination with the [lowcode-demo](https://github.com/alibaba/lowcode-demo) project. Refer to the file proxy rules [here](https://lowcode-engine.cn/site/docs/participate/prepare). +After lowcode-engine is started, several umd files are provided, which can be debugged in combination with the [lowcode-demo](https://github.com/fe-lce/lowcode-demo) project. Refer to the file proxy rules [here](https://lowcode-engine.cn/site/docs/participate/prepare). ## 🤝 Participation @@ -179,5 +179,5 @@ About Pull Request: Special thanks to everyone who contributed to this project. <p> -<a href="https://github.com/alibaba/lowcode-engine/graphs/contributors"><img src="https://contrib.rocks/image?repo=alibaba/lowcode-engine" /></a> +<a href="https://github.com/fe-lce/lowcode-engine/graphs/contributors"><img src="https://contrib.rocks/image?repo=fe-lce/lowcode-engine" /></a> </p> diff --git a/packages/engine/package.json b/packages/engine/package.json index 77bbf7d25d..0f8787713b 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -52,9 +52,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/engine" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/engine" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/ignitor/package.json b/packages/ignitor/package.json index 29c891fb22..12dc65add2 100644 --- a/packages/ignitor/package.json +++ b/packages/ignitor/package.json @@ -19,8 +19,8 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/ignitor" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/ignitor" }, - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/ignitor/public/index.html b/packages/ignitor/public/index.html index 147fe334d9..b53e23b215 100644 --- a/packages/ignitor/public/index.html +++ b/packages/ignitor/public/index.html @@ -1,20 +1,23 @@ <!DOCTYPE html> <html> - <head> - <meta charset="utf-8" /> - <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" /> - <meta name="viewport" content="width=device-width" /> - <title>LowCodeEngine Editor DEMO - - -

- This project only provides engine resource files. For usage, go for - Lowcode Demo -

-

- For local debugging of lowcode engine, please visit - proxy documentation - to get more information. -

- - + + + + + + LowCodeEngine Editor DEMO + + + +

+ This project only provides engine resource files. For usage, go for + Lowcode Demo +

+

+ For local debugging of lowcode engine, please visit + proxy documentation + to get more information. +

+ + + \ No newline at end of file diff --git a/packages/plugin-command/package.json b/packages/plugin-command/package.json index cc5bccb725..1e17bc8914 100644 --- a/packages/plugin-command/package.json +++ b/packages/plugin-command/package.json @@ -3,7 +3,7 @@ "version": "1.3.2", "description": "> TODO: description", "author": "liujuping ", - "homepage": "https://github.com/alibaba/lowcode-engine#readme", + "homepage": "https://github.com/fe-lce/lowcode-engine#readme", "license": "ISC", "main": "lib/index.js", "module": "es/index.js", @@ -20,14 +20,14 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/alibaba/lowcode-engine.git" + "url": "git+https://github.com/fe-lce/lowcode-engine.git" }, "scripts": { "test": "build-scripts test --config build.test.json --jest-passWithNoTests", "build": "build-scripts build" }, "bugs": { - "url": "https://github.com/alibaba/lowcode-engine/issues" + "url": "https://github.com/fe-lce/lowcode-engine/issues" }, "dependencies": { "@lce/lowcode-types": "1.3.2", diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json index 9d8be798dd..8038e7a3bf 100644 --- a/packages/plugin-designer/package.json +++ b/packages/plugin-designer/package.json @@ -35,9 +35,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/plugin-designer" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/plugin-designer" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json index 2bd507fb4b..c44d25f87a 100644 --- a/packages/plugin-outline-pane/package.json +++ b/packages/plugin-outline-pane/package.json @@ -36,9 +36,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/plugin-outline-pane" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/plugin-outline-pane" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index a65cd2ac4f..e7e997a742 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -39,9 +39,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/react-renderer" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/react-renderer" }, - "homepage": "https://github.com/alibaba/lowcode-engine/#readme", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme", "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues" } diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json index a97a6ab88e..a43ba02ee1 100644 --- a/packages/react-simulator-renderer/package.json +++ b/packages/react-simulator-renderer/package.json @@ -41,9 +41,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/react-simulator-renderer" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/react-simulator-renderer" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index 8b44f32224..b6963311b9 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -53,9 +53,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/renderer-core" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/renderer-core" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/renderer-core/src/hoc/index.tsx b/packages/renderer-core/src/hoc/index.tsx index f77403e007..96c7489916 100644 --- a/packages/renderer-core/src/hoc/index.tsx +++ b/packages/renderer-core/src/hoc/index.tsx @@ -14,7 +14,7 @@ function patchDidCatch(Comp: any, { baseRenderer }: Options) { Comp.patchedCatch = true; const { PureComponent } = adapter.getRuntime(); // Rax 的 getDerivedStateFromError 有 BUG,这里先用 componentDidCatch 来替代 - // @see https://github.com/alibaba/rax/issues/2211 + // @see https://github.com/fe-lce/rax/issues/2211 const originalDidCatch = Comp.prototype.componentDidCatch; Comp.prototype.componentDidCatch = function didCatch(this: any, error: Error, errorInfo: any) { this.setState({ engineRenderError: true, error }); diff --git a/packages/shell/package.json b/packages/shell/package.json index 9828bb53d9..6eda172edd 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -47,9 +47,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/shell" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/shell" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/shell/src/api/common.tsx b/packages/shell/src/api/common.tsx index e8fa01b716..f1e2f53472 100644 --- a/packages/shell/src/api/common.tsx +++ b/packages/shell/src/api/common.tsx @@ -129,7 +129,7 @@ class DesignerCabin implements IPublicApiCommonDesignerCabin { /** * 转换类型枚举对象,包含 init / upgrade / render 等类型 - * [参考](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/transform-stage.ts) + * [参考](https://github.com/fe-lce/lowcode-engine/blob/main/packages/types/src/transform-stage.ts) * @deprecated use { TransformStage } from '@lce/lowcode-types' instead */ get TransformStage() { diff --git a/packages/shell/src/api/project.ts b/packages/shell/src/api/project.ts index c4431e9bcf..743e78d798 100644 --- a/packages/shell/src/api/project.ts +++ b/packages/shell/src/api/project.ts @@ -43,7 +43,10 @@ export class Project implements IPublicApiProject { return this[projectSymbol]?.designer.editor; } - constructor(project: InnerProject, public workspaceMode: boolean = false) { + constructor( + project: InnerProject, + public workspaceMode: boolean = false, + ) { this[innerProjectSymbol] = project; } @@ -215,7 +218,7 @@ export class Project implements IPublicApiProject { /** * 设置多语言语料 - * 数据格式参考 https://github.com/alibaba/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa + * 数据格式参考 https://github.com/fe-lce/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa * @param value object * @returns */ diff --git a/packages/types/package.json b/packages/types/package.json index 86b78941af..98e7c000ce 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -27,9 +27,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/types" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/types" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/types/src/shell/api/project.ts b/packages/types/src/shell/api/project.ts index 662f302ccc..f01d15f601 100644 --- a/packages/types/src/shell/api/project.ts +++ b/packages/types/src/shell/api/project.ts @@ -1,12 +1,15 @@ -import { IPublicTypeProjectSchema, IPublicTypeDisposable, IPublicTypeRootSchema, IPublicTypePropsTransducer, IPublicTypeAppConfig } from '../type'; +import { + IPublicTypeProjectSchema, + IPublicTypeDisposable, + IPublicTypeRootSchema, + IPublicTypePropsTransducer, + IPublicTypeAppConfig, +} from '../type'; import { IPublicEnumTransformStage } from '../enum'; import { IPublicApiSimulatorHost } from './'; import { IPublicModelDocumentModel } from '../model'; -export interface IBaseApiProject< - DocumentModel -> { - +export interface IBaseApiProject { /** * 获取当前的 document * get current document @@ -32,7 +35,9 @@ export interface IBaseApiProject< * @param doc * @returns */ - openDocument(doc?: string | IPublicTypeRootSchema | undefined): DocumentModel | null; + openDocument( + doc?: string | IPublicTypeRootSchema | undefined, + ): DocumentModel | null; /** * 创建一个 document @@ -93,9 +98,9 @@ export interface IBaseApiProject< * @param stage */ addPropsTransducer( - transducer: IPublicTypePropsTransducer, - stage: IPublicEnumTransformStage, - ): void; + transducer: IPublicTypePropsTransducer, + stage: IPublicEnumTransformStage, + ): void; /** * 绑定删除文档事件 @@ -115,7 +120,9 @@ export interface IBaseApiProject< * 当前 project 的模拟器 ready 事件 * set callback for event onSimulatorHostReady */ - onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDisposable; + onSimulatorHostReady( + fn: (host: IPublicApiSimulatorHost) => void, + ): IPublicTypeDisposable; /** * 当前 project 的渲染器 ready 事件 @@ -125,7 +132,7 @@ export interface IBaseApiProject< /** * 设置多语言语料 - * 数据格式参考 https://github.com/alibaba/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa + * 数据格式参考 https://github.com/fe-lce/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa * * set I18n data for this project * @param value object @@ -140,8 +147,12 @@ export interface IBaseApiProject< * @param value object * @since v1.1.4 */ - setConfig(key: T, value: IPublicTypeAppConfig[T]): void; + setConfig( + key: T, + value: IPublicTypeAppConfig[T], + ): void; setConfig(value: IPublicTypeAppConfig): void; } -export interface IPublicApiProject extends IBaseApiProject {} +export interface IPublicApiProject + extends IBaseApiProject {} diff --git a/packages/utils/package.json b/packages/utils/package.json index 0f774a28ea..b31f968006 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -34,9 +34,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/utils" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/utils" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 5d5e21d75f..abc4eccab3 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -47,9 +47,9 @@ }, "repository": { "type": "http", - "url": "https://github.com/alibaba/lowcode-engine/tree/main/packages/workspace" + "url": "https://github.com/fe-lce/lowcode-engine/tree/main/packages/workspace" }, "gitHead": "2669f179e6f899d395ce1942d0fe04f9c5ed48a6", - "bugs": "https://github.com/alibaba/lowcode-engine/issues", - "homepage": "https://github.com/alibaba/lowcode-engine/#readme" + "bugs": "https://github.com/fe-lce/lowcode-engine/issues", + "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" } diff --git a/scripts/set-repo.js b/scripts/set-repo.js index 9bae66d053..d856274afb 100644 --- a/scripts/set-repo.js +++ b/scripts/set-repo.js @@ -4,42 +4,42 @@ const path = require('path'); const fs = require('fs-extra'); (async () => { - const root = path.join(__dirname, '../'); - const workspaces = ['modules', 'packages']; - for (const workspace of workspaces) { - const pkgDir = path.join(root, workspace); - const pkgs = await fs.readdir(pkgDir); - for (const pkg of pkgs) { - if (pkg.charAt(0) === '.') continue; - if (!(await fs.statSync(path.join(pkgDir, pkg))).isDirectory()) continue; - await setRepo({ - workspace, - pkgDir, - pkg, - }); - } + const root = path.join(__dirname, '../'); + const workspaces = ['modules', 'packages']; + for (const workspace of workspaces) { + const pkgDir = path.join(root, workspace); + const pkgs = await fs.readdir(pkgDir); + for (const pkg of pkgs) { + if (pkg.charAt(0) === '.') continue; + if (!(await fs.statSync(path.join(pkgDir, pkg))).isDirectory()) continue; + await setRepo({ + workspace, + pkgDir, + pkg, + }); } + } - async function setRepo(opts) { - const pkgDir = path.join(opts.pkgDir, opts.pkg); - const pkgPkgJSONPath = path.join(pkgDir, 'package.json'); - if (!fs.existsSync(pkgPkgJSONPath)) { - console.log(`${opts.pkg} exists`); - } else { - const pkgPkgJSON = require(pkgPkgJSONPath); - fs.writeJSONSync( - pkgPkgJSONPath, - Object.assign(pkgPkgJSON, { - repository: { - type: 'http', - url: `https://github.com/alibaba/lowcode-engine/tree/main/${opts.workspace}/${opts.pkg}`, - }, - bugs: 'https://github.com/alibaba/lowcode-engine/issues', - homepage: 'https://github.com/alibaba/lowcode-engine/#readme', - }), - { spaces: ' ' }, - ); - console.log(`[Write] ${opts.pkg}`); - } + async function setRepo(opts) { + const pkgDir = path.join(opts.pkgDir, opts.pkg); + const pkgPkgJSONPath = path.join(pkgDir, 'package.json'); + if (!fs.existsSync(pkgPkgJSONPath)) { + console.log(`${opts.pkg} exists`); + } else { + const pkgPkgJSON = require(pkgPkgJSONPath); + fs.writeJSONSync( + pkgPkgJSONPath, + Object.assign(pkgPkgJSON, { + repository: { + type: 'http', + url: `https://github.com/fe-lce/lowcode-engine/tree/main/${opts.workspace}/${opts.pkg}`, + }, + bugs: 'https://github.com/fe-lce/lowcode-engine/issues', + homepage: 'https://github.com/fe-lce/lowcode-engine/#readme', + }), + { spaces: ' ' }, + ); + console.log(`[Write] ${opts.pkg}`); } + } })(); From ffe7e5e7b7236adf2616ab5cf61100c2d50a0ae2 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 7 Oct 2024 10:43:30 +0800 Subject: [PATCH 08/94] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B9=BD?= =?UTF-8?q?=E7=81=B5=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/types/package.json | 3 ++- packages/utils/package.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/types/package.json b/packages/types/package.json index 98e7c000ce..6b6f5013ad 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -14,7 +14,8 @@ "dependencies": { "@alilc/lowcode-datasource-types": "^1.0.0", "react": "^16.9", - "strict-event-emitter-types": "^2.0.0" + "strict-event-emitter-types": "^2.0.0", + "@alifd/next": "^1.20.12" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", diff --git a/packages/utils/package.json b/packages/utils/package.json index b31f968006..a0dcfab2a4 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -18,7 +18,8 @@ "lodash": "^4.17.21", "mobx": "^6.3.0", "prop-types": "^15.8.1", - "react": "^16" + "react": "^16", + "events": "^3.3.0" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", From b8db0b4dfbc72c60bf9ace29db393a45e1b8f3e5 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 7 Oct 2024 11:36:04 +0800 Subject: [PATCH 09/94] =?UTF-8?q?chore:=20=E5=88=A0=E9=99=A4tnpm=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4repository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index eccd6b2534..279400551f 100644 --- a/package.json +++ b/package.json @@ -59,13 +59,9 @@ "typescript": "4.6.2", "yarn": "^1.22.17" }, - "tnpm": { - "mode": "yarn", - "lockfile": "enable" - }, "resolutions": { "typescript": "4.6.2", "react-error-overlay": "6.0.9" }, - "repository": "git@github.com:zboma/lowcode-engine.git" + "repository": "git@github.com:fe-lce/lowcode-engine.git" } From 0f7378a3a9d4e4023f1f4dfc0bd39765505b8a31 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 7 Oct 2024 11:36:42 +0800 Subject: [PATCH 10/94] =?UTF-8?q?chore:=20=E7=BB=9F=E4=B8=80@alifd/next?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B01.26.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-core/package.json | 2 +- packages/editor-skeleton/package.json | 2 +- packages/engine/package.json | 2 +- packages/plugin-outline-pane/package.json | 2 +- packages/react-renderer/package.json | 3 +-- packages/shell/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 651f40ca28..6f6dbd46bf 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -15,7 +15,7 @@ "test:cov": "build-scripts test --config build.test.json --jest-coverage" }, "dependencies": { - "@alifd/next": "^1.19.16", + "@alifd/next": "^1.26.0", "@lce/lowcode-types": "1.3.2", "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 0a97a9cdc9..94ca13c6c0 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -18,7 +18,7 @@ "editor" ], "dependencies": { - "@alifd/next": "^1.20.12", + "@alifd/next": "^1.26.0", "@lce/lowcode-designer": "1.3.2", "@lce/lowcode-editor-core": "1.3.2", "@lce/lowcode-types": "1.3.2", diff --git a/packages/engine/package.json b/packages/engine/package.json index 0f8787713b..bce7477759 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -18,7 +18,7 @@ }, "license": "MIT", "dependencies": { - "@alifd/next": "^1.19.12", + "@alifd/next": "^1.26.0", "@lce/lowcode-designer": "1.3.2", "@lce/lowcode-editor-core": "1.3.2", "@lce/lowcode-editor-skeleton": "1.3.2", diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json index c44d25f87a..c34ef245de 100644 --- a/packages/plugin-outline-pane/package.json +++ b/packages/plugin-outline-pane/package.json @@ -12,7 +12,7 @@ "build": "build-scripts build" }, "dependencies": { - "@alifd/next": "^1.19.16", + "@alifd/next": "^1.26.0", "@lce/lowcode-types": "1.3.2", "@lce/lowcode-utils": "1.3.2", "classnames": "^2.2.6", diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index e7e997a742..46a83a5641 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -21,12 +21,11 @@ "react" ], "dependencies": { - "@alifd/next": "^1.21.16", + "@alifd/next": "^1.26.0", "@lce/lowcode-renderer-core": "1.3.2" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", - "@alifd/next": "^1.19.17", "build-plugin-fusion": "^0.1.0", "build-plugin-moment-locales": "^0.1.0", "react": "^16.4.1", diff --git a/packages/shell/package.json b/packages/shell/package.json index 6eda172edd..ccb422fba2 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -19,7 +19,7 @@ "@lce/lowcode-types": "1.3.2", "@lce/lowcode-utils": "1.3.2", "@lce/lowcode-workspace": "1.3.2", - "@alifd/next": "^1.20.12", + "@alifd/next": "^1.26.0", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", diff --git a/packages/types/package.json b/packages/types/package.json index 6b6f5013ad..fdf7d9d52e 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -15,7 +15,7 @@ "@alilc/lowcode-datasource-types": "^1.0.0", "react": "^16.9", "strict-event-emitter-types": "^2.0.0", - "@alifd/next": "^1.20.12" + "@alifd/next": "^1.26.0" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", diff --git a/packages/utils/package.json b/packages/utils/package.json index a0dcfab2a4..146c6677a7 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -13,7 +13,7 @@ "build": "build-scripts build" }, "dependencies": { - "@alifd/next": "^1.19.16", + "@alifd/next": "^1.26.0", "@lce/lowcode-types": "1.3.2", "lodash": "^4.17.21", "mobx": "^6.3.0", From 2a337190d2926a9291fbda78fc341f1ac254a080 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 7 Oct 2024 11:36:55 +0800 Subject: [PATCH 11/94] =?UTF-8?q?chore:=20shell=E6=B7=BB=E5=8A=A0tsconfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/shell/tsconfig.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/shell/tsconfig.json diff --git a/packages/shell/tsconfig.json b/packages/shell/tsconfig.json new file mode 100644 index 0000000000..c37b76ecc6 --- /dev/null +++ b/packages/shell/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib" + }, + "include": [ + "./src/" + ] +} From 1019cdbb924c4e8f649c1cc99e507dc7cc5d91ec Mon Sep 17 00:00:00 2001 From: taojiu Date: Wed, 9 Oct 2024 10:44:03 +0800 Subject: [PATCH 12/94] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=A4=96=E9=83=A8=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/shell/src/api/commonUI.tsx | 54 ++++++++++++++--------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/shell/src/api/commonUI.tsx b/packages/shell/src/api/commonUI.tsx index 1dfd999e9c..e97d8cb1c1 100644 --- a/packages/shell/src/api/commonUI.tsx +++ b/packages/shell/src/api/commonUI.tsx @@ -40,33 +40,33 @@ import { ReactElement } from 'react'; export class CommonUI implements IPublicApiCommonUI { [editorSymbol]: IEditor; - Balloon = Balloon; - Breadcrumb = Breadcrumb; - Button = Button; - Card = Card; - Checkbox = Checkbox; - DatePicker = DatePicker; - Dialog = Dialog; - Dropdown = Dropdown; - Form = Form; - Icon = Icon; - Input = Input; - Loading = Loading as any; - Message = Message; - Overlay = Overlay; - Pagination = Pagination; - Radio = Radio; - Search = Search; - Select = Select; - SplitButton = SplitButton; - Step = Step; - Switch = Switch; - Tab = Tab; - Table = Table; - Tree = Tree; - TreeSelect = TreeSelect; - Upload = Upload; - Divider = Divider; + Balloon: typeof Balloon = Balloon; + Breadcrumb: typeof Breadcrumb = Breadcrumb; + Button: typeof Button = Button; + Card: typeof Card = Card; + Checkbox: typeof Checkbox = Checkbox; + DatePicker: typeof DatePicker = DatePicker; + Dialog: typeof Dialog = Dialog; + Dropdown: typeof Dropdown = Dropdown; + Form: typeof Form = Form; + Icon: typeof Icon = Icon; + Input: typeof Input = Input; + Loading: typeof Loading = Loading; + Message: typeof Message = Message; + Overlay: typeof Overlay = Overlay; + Pagination: typeof Pagination = Pagination; + Radio: typeof Radio = Radio; + Search: typeof Search = Search; + Select: typeof Select = Select; + SplitButton: typeof SplitButton = SplitButton; + Step: typeof Step = Step; + Switch: typeof Switch = Switch; + Tab: typeof Tab = Tab; + Table: typeof Table = Table; + Tree: typeof Tree = Tree; + TreeSelect: typeof TreeSelect = TreeSelect; + Upload: typeof Upload = Upload; + Divider: typeof Divider = Divider; ContextMenu: ((props: { menus: IPublicTypeContextMenuAction[]; From 36edf20d00630bcdd166d0cd81b1cd6d89327898 Mon Sep 17 00:00:00 2001 From: taojiu Date: Thu, 10 Oct 2024 00:06:37 +0800 Subject: [PATCH 13/94] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9@lce?= =?UTF-8?q?=E4=B8=BA@felce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/api/common.md | 6 +- docs/docs/api/config.md | 14 +- docs/docs/api/configOptions.md | 4 +- docs/docs/api/event.md | 4 +- docs/docs/api/hotkey.md | 2 +- docs/docs/api/init.md | 6 +- docs/docs/api/logger.md | 2 +- docs/docs/api/material.md | 34 ++--- docs/docs/api/model/dragon.md | 2 +- docs/docs/api/plugins.md | 18 +-- docs/docs/api/project.md | 6 +- docs/docs/api/setters.md | 6 +- docs/docs/api/skeleton.md | 12 +- docs/docs/demoUsage/panels/datasource.md | 8 +- docs/docs/demoUsage/panels/settings.md | 2 +- docs/docs/faq/faq009.md | 2 +- docs/docs/faq/faq013.md | 6 +- docs/docs/faq/faq024.md | 4 +- docs/docs/guide/appendix/npms.md | 28 ++-- docs/docs/guide/create/useEditor.md | 12 +- docs/docs/guide/create/useRenderer.md | 2 +- docs/docs/guide/design/generator.md | 2 +- docs/docs/guide/design/materialParser.md | 2 +- docs/docs/guide/design/renderer.md | 2 +- docs/docs/guide/expand/editor/cli.md | 2 +- docs/docs/guide/expand/editor/material.md | 8 +- docs/docs/guide/expand/editor/metaSpec.md | 6 +- .../guide/expand/editor/parts/partsassets.md | 8 +- .../guide/expand/editor/pluginContextMenu.md | 8 +- docs/docs/guide/expand/editor/pluginWidget.md | 10 +- docs/docs/guide/expand/editor/setter.md | 4 +- docs/docs/guide/expand/editor/summary.md | 12 +- .../guide/expand/runtime/codeGeneration.md | 16 +-- docs/docs/guide/expand/runtime/renderer.md | 12 +- docs/docs/guide/quickStart/start.md | 2 +- docs/docs/participate/index.md | 8 +- docs/package.json | 2 +- modules/code-generator/CHANGELOG.md | 24 ++-- modules/code-generator/CONTRIBUTING.md | 2 +- modules/code-generator/README.md | 14 +- modules/code-generator/package.json | 10 +- modules/code-generator/scripts/build-cli.js | 2 +- .../scripts/build-standalone-worker.js | 2 +- .../scripts/build-standalone.js | 2 +- .../scripts/build-template-static-files.js | 4 +- .../src/analyzer/componentAnalyzer.ts | 2 +- modules/code-generator/src/cli/run.ts | 17 ++- .../src/cli/solutions/example-solution.ts | 10 +- .../src/generator/ModuleBuilder.ts | 6 +- .../src/generator/ProjectBuilder.ts | 8 +- .../code-generator/src/parser/SchemaParser.ts | 17 ++- .../rax/containerInjectDataSourceEngine.ts | 9 +- .../component/rax/containerLifeCycle.ts | 2 +- .../src/plugins/component/rax/jsx.ts | 5 +- .../react/containerInjectDataSourceEngine.ts | 8 +- .../component/react/containerLifeCycle.ts | 122 +++++++++--------- .../src/plugins/component/react/jsx.ts | 2 +- .../framework/icejs/plugins/packageJSON.ts | 2 +- .../icejs/template/files/README.md.ts | 2 +- .../icejs/template/files/abc.json.ts | 2 +- .../icejs/template/files/build.json.ts | 2 +- .../icejs/template/files/editorconfig.ts | 2 +- .../icejs/template/files/eslintignore.ts | 2 +- .../icejs/template/files/eslintrc.js.ts | 2 +- .../icejs/template/files/gitignore.ts | 2 +- .../icejs/template/files/jsconfig.json.ts | 2 +- .../icejs/template/files/prettierignore.ts | 2 +- .../icejs/template/files/prettierrc.js.ts | 2 +- .../components/Footer/index.jsx.ts | 2 +- .../components/Footer/index.style.ts | 2 +- .../BasicLayout/components/Logo/index.jsx.ts | 2 +- .../components/Logo/index.style.ts | 2 +- .../components/PageNav/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/menuConfig.js.ts | 2 +- .../icejs/template/files/stylelintignore.ts | 2 +- .../icejs/template/files/stylelintrc.js.ts | 2 +- .../icejs/template/files/tsconfig.json.ts | 2 +- .../project/framework/icejs/template/index.ts | 2 +- .../framework/icejs/template/static-files.ts | 2 +- .../framework/icejs3/plugins/buildConfig.ts | 18 +-- .../framework/icejs3/plugins/packageJSON.ts | 4 +- .../icejs3/template/files/README.md.ts | 2 +- .../icejs3/template/files/browserslistrc.ts | 2 +- .../icejs3/template/files/document.ts | 2 +- .../icejs3/template/files/gitignore.ts | 2 +- .../components/Footer/index.jsx.ts | 2 +- .../components/Footer/index.style.ts | 2 +- .../BasicLayout/components/Logo/index.jsx.ts | 2 +- .../components/Logo/index.style.ts | 2 +- .../components/PageNav/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/index.jsx.ts | 2 +- .../src/layouts/BasicLayout/menuConfig.js.ts | 2 +- .../icejs3/template/files/tsconfig.ts | 2 +- .../icejs3/template/files/typings.ts | 2 +- .../framework/icejs3/template/static-files.ts | 2 +- .../framework/rax/plugins/packageJSON.ts | 2 +- .../rax/template/files/.eslintignore.ts | 2 +- .../rax/template/files/.eslintrc.js.ts | 2 +- .../rax/template/files/.gitignore.ts | 2 +- .../rax/template/files/.prettierignore.ts | 2 +- .../rax/template/files/.prettierrc.js.ts | 2 +- .../rax/template/files/.stylelintignore.ts | 2 +- .../rax/template/files/.stylelintrc.js.ts | 2 +- .../framework/rax/template/files/README.md.ts | 2 +- .../rax/template/files/jsconfig.json.ts | 2 +- .../rax/template/files/tsconfig.json.ts | 2 +- .../project/framework/rax/template/index.ts | 2 +- .../framework/rax/template/static-files.ts | 2 +- .../src/publisher/disk/index.ts | 2 +- .../src/publisher/disk/utils.ts | 2 +- .../code-generator/src/publisher/zip/index.ts | 2 +- .../code-generator/src/publisher/zip/utils.ts | 2 +- .../code-generator/src/standalone-loader.ts | 4 +- .../code-generator/src/standalone-worker.ts | 8 +- modules/code-generator/src/types/analyze.ts | 2 +- modules/code-generator/src/types/core.ts | 23 ++-- .../code-generator/src/types/intermediate.ts | 3 +- modules/code-generator/src/types/jsx.ts | 2 +- modules/code-generator/src/types/publisher.ts | 2 +- modules/code-generator/src/utils/common.ts | 12 +- .../code-generator/src/utils/compositeType.ts | 8 +- .../code-generator/src/utils/jsExpression.ts | 11 +- modules/code-generator/src/utils/jsSlot.ts | 2 +- modules/code-generator/src/utils/nodeToJSX.ts | 17 ++- .../code-generator/src/utils/resultHelper.ts | 2 +- modules/code-generator/src/utils/schema.ts | 10 +- .../src/utils/templateHelper.ts | 2 +- .../tests/bugfix/i18n-with-params.test.ts | 2 +- .../bugfix/icejs-import-wrong-naming.test.ts | 20 +-- .../bugfix/strict-mode-context-1.test.ts | 2 +- .../tolerate-eval-errors-1-loop.test.ts | 2 +- ...tolerate-eval-errors-2-nested-loop.test.ts | 2 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../expected/demo-project/ice.config.mts | 3 +- .../public/SchemaParser/p0-basic.test.ts | 2 +- .../tests/public/publisher/disk/disk.test.ts | 2 +- .../tests/public/solutions/icejs3-app.test.ts | 8 +- .../tests/public/solutions/rax-app.test.ts | 8 +- .../tests/public/solutions/react-app.test.ts | 8 +- .../resultHelper/removeDirsFromResult.test.ts | 2 +- .../removeFilesFromResult.test.ts | 2 +- .../tests/utils/schema/handleSubNodes.test.ts | 2 +- modules/material-parser/README.md | 2 +- modules/material-parser/package.json | 2 +- packages/designer/jest.config.js | 2 +- packages/designer/package.json | 8 +- .../bem-tools/border-container.tsx | 6 +- .../bem-tools/border-detecting.tsx | 6 +- .../bem-tools/border-resizing.tsx | 2 +- .../bem-tools/border-selecting.tsx | 6 +- .../bem-tools/drag-resize-engine.ts | 4 +- .../src/builtin-simulator/bem-tools/index.tsx | 2 +- .../builtin-simulator/bem-tools/insertion.tsx | 6 +- .../src/builtin-simulator/create-simulator.ts | 2 +- .../src/builtin-simulator/host-view.tsx | 2 +- .../designer/src/builtin-simulator/host.ts | 6 +- .../live-editing/live-editing.ts | 4 +- .../builtin-simulator/node-selector/index.tsx | 6 +- .../src/builtin-simulator/renderer.ts | 2 +- .../builtin-simulator/resource-consumer.ts | 7 +- .../src/builtin-simulator/utils/clickable.ts | 2 +- .../builtin-simulator/utils/parse-metadata.ts | 4 +- .../src/builtin-simulator/viewport.ts | 2 +- packages/designer/src/component-actions.ts | 4 +- packages/designer/src/component-meta.ts | 11 +- packages/designer/src/context-menu-actions.ts | 6 +- .../designer/src/designer/active-tracker.ts | 6 +- packages/designer/src/designer/clipboard.ts | 2 +- packages/designer/src/designer/designer.ts | 6 +- packages/designer/src/designer/detecting.ts | 4 +- .../src/designer/drag-ghost/index.tsx | 4 +- packages/designer/src/designer/dragon.ts | 12 +- packages/designer/src/designer/location.ts | 6 +- .../designer/src/designer/offset-observer.ts | 4 +- packages/designer/src/designer/scroller.ts | 4 +- .../designer/setting/setting-entry-type.ts | 2 +- .../src/designer/setting/setting-field.ts | 12 +- .../designer/setting/setting-prop-entry.ts | 6 +- .../src/designer/setting/setting-top-entry.ts | 11 +- .../designer/src/designer/setting/utils.ts | 4 +- .../designer/src/document/document-model.ts | 10 +- .../designer/src/document/document-view.tsx | 2 +- packages/designer/src/document/history.ts | 12 +- .../src/document/node/exclusive-group.ts | 11 +- .../src/document/node/modal-nodes-manager.ts | 4 +- .../src/document/node/node-children.ts | 6 +- packages/designer/src/document/node/node.ts | 13 +- .../designer/src/document/node/props/prop.ts | 8 +- .../designer/src/document/node/props/props.ts | 8 +- .../src/document/node/transform-stage.ts | 2 +- packages/designer/src/document/selection.ts | 4 +- packages/designer/src/icons/clone.tsx | 2 +- packages/designer/src/icons/component.tsx | 2 +- packages/designer/src/icons/container.tsx | 2 +- packages/designer/src/icons/hidden.tsx | 2 +- packages/designer/src/icons/lock.tsx | 2 +- packages/designer/src/icons/page.tsx | 2 +- packages/designer/src/icons/remove.tsx | 2 +- packages/designer/src/icons/setting.tsx | 2 +- packages/designer/src/icons/unlock.tsx | 2 +- packages/designer/src/locale/index.ts | 2 +- .../designer/src/plugin/plugin-context.ts | 4 +- .../designer/src/plugin/plugin-manager.ts | 6 +- packages/designer/src/plugin/plugin-types.ts | 2 +- packages/designer/src/plugin/plugin-utils.ts | 5 +- packages/designer/src/plugin/plugin.ts | 4 +- .../designer/src/project/project-view.tsx | 2 +- packages/designer/src/project/project.ts | 8 +- packages/designer/src/simulator.ts | 2 +- packages/designer/src/transducers/index.ts | 2 +- packages/designer/src/types/index.ts | 2 +- .../tests/bugs/prop-variable-jse.test.ts | 6 +- .../bem-tools/drag-resize-engine.test.ts | 2 +- .../bem-tools/manager.test.tsx | 2 +- .../tests/builtin-simulator/host.test.ts | 14 +- .../tests/builtin-simulator/renderer.test.tsx | 2 +- .../tests/builtin-simulator/viewport.test.ts | 2 +- .../tests/designer/builtin-hotkey.test.ts | 10 +- .../designer/tests/designer/designer.test.ts | 4 +- .../designer/tests/designer/dragon.test.ts | 4 +- .../designer/tests/designer/scroller.test.ts | 2 +- .../designer/setting/setting-field.test.ts | 4 +- .../setting/setting-prop-entry.test.ts | 2 +- .../setting/setting-top-entry.test.ts | 2 +- .../document-model/document-model.test.ts | 2 +- .../tests/document/history/history.test.ts | 4 +- .../document/node/modal-nodes-manager.test.ts | 2 +- .../tests/document/node/node-children.test.ts | 2 +- .../designer/tests/document/node/node.test.ts | 8 +- .../tests/document/node/props/prop.test.ts | 4 +- .../tests/document/node/props/props.test.ts | 4 +- .../fixtures/component-metadata/abcgroup.ts | 2 +- .../fixtures/component-metadata/abcitem.ts | 2 +- .../fixtures/component-metadata/abcnode.ts | 2 +- .../fixtures/component-metadata/abcoption.ts | 2 +- .../fixtures/component-metadata/button.ts | 2 +- .../fixtures/component-metadata/dialog.ts | 2 +- .../tests/fixtures/component-metadata/div.ts | 2 +- .../fixtures/component-metadata/div10.ts | 2 +- .../tests/fixtures/component-metadata/div2.ts | 2 +- .../tests/fixtures/component-metadata/div3.ts | 2 +- .../tests/fixtures/component-metadata/div4.ts | 2 +- .../tests/fixtures/component-metadata/div5.ts | 2 +- .../tests/fixtures/component-metadata/div6.ts | 2 +- .../tests/fixtures/component-metadata/div7.ts | 2 +- .../tests/fixtures/component-metadata/div8.ts | 2 +- .../tests/fixtures/component-metadata/div9.ts | 2 +- .../tests/fixtures/component-metadata/form.ts | 2 +- .../fixtures/component-metadata/other.ts | 2 +- .../tests/fixtures/component-metadata/page.ts | 2 +- .../fixtures/component-metadata/page2.ts | 2 +- .../component-metadata/root-content.ts | 2 +- .../component-metadata/root-footer.ts | 2 +- .../component-metadata/root-header.ts | 2 +- .../tests/plugin/plugin-manager.test.ts | 4 +- .../tests/project/project-methods.test.ts | 2 +- .../designer/tests/project/project.test.ts | 2 +- packages/editor-core/jest.config.js | 2 +- packages/editor-core/package.json | 6 +- packages/editor-core/src/command.ts | 4 +- packages/editor-core/src/config.ts | 4 +- packages/editor-core/src/di/setter.ts | 4 +- packages/editor-core/src/editor.ts | 9 +- packages/editor-core/src/event-bus.ts | 4 +- packages/editor-core/src/hotkey.ts | 2 +- .../editor-core/src/intl/global-locale.ts | 2 +- packages/editor-core/src/intl/index.ts | 4 +- .../editor-core/src/utils/assets-transform.ts | 2 +- packages/editor-core/src/utils/logger.ts | 2 +- packages/editor-core/src/utils/preference.ts | 2 +- .../editor-core/src/widgets/tip/help-tips.tsx | 2 +- .../src/widgets/tip/tip-handler.ts | 2 +- .../editor-core/src/widgets/tip/tip-item.tsx | 2 +- packages/editor-core/src/widgets/tip/tip.tsx | 4 +- .../editor-core/src/widgets/title/index.tsx | 4 +- packages/editor-skeleton/jest.config.js | 2 +- packages/editor-skeleton/package.json | 10 +- packages/editor-skeleton/src/area.ts | 6 +- .../src/components/field/fields.tsx | 6 +- .../src/components/field/index.ts | 2 +- .../src/components/popup/index.tsx | 4 +- .../src/components/settings/main.ts | 12 +- .../src/components/settings/settings-pane.tsx | 10 +- .../settings/settings-primary-pane.tsx | 6 +- .../src/components/stage-box/stage-box.tsx | 2 +- .../src/components/stage-box/stage-chain.ts | 2 +- .../src/components/stage-box/stage.tsx | 2 +- .../src/components/widget-views/index.tsx | 2 +- .../widget-views/panel-operation-row.tsx | 2 +- packages/editor-skeleton/src/icons/arrow.tsx | 2 +- packages/editor-skeleton/src/icons/clear.tsx | 2 +- .../editor-skeleton/src/icons/convert.tsx | 2 +- packages/editor-skeleton/src/icons/exit.tsx | 2 +- packages/editor-skeleton/src/icons/fix.tsx | 2 +- packages/editor-skeleton/src/icons/float.tsx | 2 +- packages/editor-skeleton/src/icons/slot.tsx | 2 +- .../editor-skeleton/src/icons/variable.tsx | 2 +- .../src/layouts/bottom-area.tsx | 2 +- .../editor-skeleton/src/layouts/left-area.tsx | 2 +- .../src/layouts/left-fixed-pane.tsx | 4 +- .../src/layouts/left-float-pane.tsx | 4 +- .../editor-skeleton/src/layouts/main-area.tsx | 2 +- .../src/layouts/right-area.tsx | 2 +- .../src/layouts/sub-top-area.tsx | 4 +- .../editor-skeleton/src/layouts/toolbar.tsx | 2 +- .../editor-skeleton/src/layouts/top-area.tsx | 2 +- .../editor-skeleton/src/layouts/workbench.tsx | 4 +- packages/editor-skeleton/src/locale/index.ts | 2 +- .../editor-skeleton/src/register-defaults.ts | 2 +- packages/editor-skeleton/src/skeleton.ts | 11 +- .../src/transducers/addon-combine.ts | 4 +- .../src/transducers/parse-func.ts | 4 +- .../src/transducers/parse-props.ts | 2 +- packages/editor-skeleton/src/types.ts | 2 +- packages/editor-skeleton/src/widget/dock.ts | 11 +- .../editor-skeleton/src/widget/panel-dock.ts | 9 +- packages/editor-skeleton/src/widget/panel.ts | 13 +- packages/editor-skeleton/src/widget/stage.ts | 2 +- packages/editor-skeleton/src/widget/utils.ts | 4 +- .../src/widget/widget-container.ts | 4 +- packages/editor-skeleton/src/widget/widget.ts | 13 +- packages/engine/README-zh_CN.md | 26 ++-- packages/engine/README.md | 30 ++--- packages/engine/package.json | 20 +-- packages/engine/src/engine-core.ts | 18 +-- .../src/inner-plugins/builtin-hotkey.ts | 4 +- .../inner-plugins/component-meta-parser.ts | 2 +- .../src/inner-plugins/default-context-menu.ts | 4 +- .../inner-plugins/default-panel-registry.tsx | 6 +- .../src/inner-plugins/setter-registry.ts | 2 +- packages/engine/src/locale/index.ts | 2 +- packages/engine/src/modules/classes.ts | 4 +- packages/engine/src/modules/designer-types.ts | 2 +- packages/engine/src/modules/live-editing.ts | 4 +- packages/engine/src/modules/lowcode-types.ts | 2 +- .../engine/src/modules/shell-model-factory.ts | 6 +- packages/engine/src/modules/skeleton-types.ts | 2 +- packages/engine/src/modules/symbols.ts | 2 +- packages/ignitor/build.json | 2 +- packages/ignitor/jest.config.js | 2 +- packages/ignitor/package.json | 2 +- .../__tests__/node-command.test.ts | 2 +- packages/plugin-command/jest.config.js | 2 +- packages/plugin-command/package.json | 6 +- .../plugin-command/src/history-command.ts | 2 +- packages/plugin-command/src/index.ts | 2 +- packages/plugin-command/src/node-command.ts | 4 +- packages/plugin-designer/package.json | 8 +- packages/plugin-designer/src/index.tsx | 6 +- packages/plugin-outline-pane/package.json | 6 +- .../src/controllers/pane-controller.ts | 4 +- .../src/controllers/tree-master.ts | 4 +- .../src/controllers/tree-node.ts | 4 +- .../src/controllers/tree.ts | 2 +- .../src/helper/dwell-timer.ts | 4 +- .../src/helper/indent-track.ts | 4 +- .../src/icons/arrow-right.tsx | 2 +- .../plugin-outline-pane/src/icons/cond.tsx | 2 +- .../plugin-outline-pane/src/icons/delete.tsx | 2 +- .../src/icons/eye-close.tsx | 2 +- .../plugin-outline-pane/src/icons/eye.tsx | 2 +- .../plugin-outline-pane/src/icons/filter.tsx | 2 +- .../plugin-outline-pane/src/icons/lock.tsx | 2 +- .../plugin-outline-pane/src/icons/loop.tsx | 2 +- .../plugin-outline-pane/src/icons/outline.tsx | 2 +- .../src/icons/radio-active.tsx | 2 +- .../plugin-outline-pane/src/icons/radio.tsx | 2 +- .../plugin-outline-pane/src/icons/setting.tsx | 2 +- .../plugin-outline-pane/src/icons/unlock.tsx | 2 +- packages/plugin-outline-pane/src/index.tsx | 2 +- .../plugin-outline-pane/src/views/pane.tsx | 2 +- .../src/views/tree-branches.tsx | 2 +- .../src/views/tree-node.tsx | 2 +- .../src/views/tree-title.tsx | 4 +- .../plugin-outline-pane/src/views/tree.tsx | 4 +- packages/react-renderer/demo/compose.md | 2 +- packages/react-renderer/demo/dataSource.md | 2 +- packages/react-renderer/demo/i18n.md | 2 +- packages/react-renderer/demo/list.md | 2 +- packages/react-renderer/demo/table.md | 2 +- packages/react-renderer/jest.config.js | 2 +- packages/react-renderer/package.json | 4 +- packages/react-renderer/src/index.ts | 2 +- .../react-simulator-renderer/jest.config.js | 2 +- .../react-simulator-renderer/package.json | 10 +- packages/react-simulator-renderer/src/host.ts | 2 +- .../src/renderer-view.tsx | 12 +- .../react-simulator-renderer/src/renderer.ts | 18 ++- .../src/utils/get-client-rects.ts | 2 +- .../src/utils/react-find-dom-nodes.ts | 2 +- packages/renderer-core/jest.config.js | 2 +- packages/renderer-core/package.json | 8 +- packages/renderer-core/src/hoc/index.tsx | 2 +- packages/renderer-core/src/hoc/leaf.tsx | 11 +- packages/renderer-core/src/renderer/base.tsx | 4 +- packages/renderer-core/src/renderer/page.tsx | 2 +- .../renderer-core/src/renderer/renderer.tsx | 2 +- packages/renderer-core/src/types/index.ts | 9 +- packages/renderer-core/src/utils/common.ts | 4 +- .../renderer-core/src/utils/data-helper.ts | 2 +- .../renderer-core/src/utils/is-use-loop.ts | 4 +- packages/renderer-core/src/utils/logger.ts | 2 +- packages/shell/package.json | 14 +- packages/shell/src/api/canvas.ts | 9 +- packages/shell/src/api/command.ts | 4 +- packages/shell/src/api/common.tsx | 16 +-- packages/shell/src/api/commonUI.tsx | 4 +- packages/shell/src/api/config.ts | 4 +- packages/shell/src/api/event.ts | 12 +- packages/shell/src/api/hotkey.ts | 9 +- packages/shell/src/api/logger.ts | 4 +- packages/shell/src/api/material.ts | 15 ++- packages/shell/src/api/plugins.ts | 11 +- packages/shell/src/api/project.ts | 8 +- packages/shell/src/api/setters.ts | 11 +- packages/shell/src/api/simulator-host.ts | 4 +- packages/shell/src/api/skeleton.ts | 14 +- packages/shell/src/api/workspace.ts | 4 +- .../shell/src/components/context-menu.tsx | 6 +- packages/shell/src/model/active-tracker.ts | 4 +- packages/shell/src/model/clipboard.ts | 4 +- packages/shell/src/model/component-meta.ts | 4 +- packages/shell/src/model/condition-group.ts | 4 +- packages/shell/src/model/detecting.ts | 8 +- packages/shell/src/model/document-model.ts | 6 +- packages/shell/src/model/drag-object.ts | 2 +- packages/shell/src/model/dragon.ts | 11 +- packages/shell/src/model/drop-location.ts | 4 +- packages/shell/src/model/editor-view.ts | 4 +- packages/shell/src/model/history.ts | 4 +- packages/shell/src/model/locate-event.ts | 4 +- .../shell/src/model/modal-nodes-manager.ts | 4 +- packages/shell/src/model/node-children.ts | 4 +- packages/shell/src/model/node.ts | 4 +- packages/shell/src/model/plugin-instance.ts | 4 +- packages/shell/src/model/prop.ts | 4 +- packages/shell/src/model/props.ts | 4 +- packages/shell/src/model/resource.ts | 4 +- packages/shell/src/model/selection.ts | 8 +- packages/shell/src/model/setting-field.ts | 6 +- packages/shell/src/model/setting-top-entry.ts | 4 +- packages/shell/src/model/simulator-render.ts | 4 +- packages/shell/src/model/skeleton-item.ts | 4 +- packages/shell/src/model/window.ts | 4 +- packages/types/package.json | 2 +- .../src/deprecated/isActionContentObject.ts | 2 +- packages/types/src/deprecated/isCustomView.ts | 2 +- packages/types/src/deprecated/isDOMText.ts | 2 +- .../types/src/deprecated/isDynamicSetter.ts | 2 +- packages/types/src/deprecated/isI18nData.ts | 2 +- packages/types/src/deprecated/isJSBlock.ts | 2 +- .../types/src/deprecated/isJSExpression.ts | 2 +- packages/types/src/deprecated/isJSFunction.ts | 2 +- packages/types/src/deprecated/isJSSlot.ts | 2 +- .../src/deprecated/isLowCodeComponentType.ts | 2 +- packages/types/src/deprecated/isNodeSchema.ts | 2 +- .../types/src/deprecated/isPlainObject.ts | 2 +- .../src/deprecated/isProCodeComponentType.ts | 2 +- .../types/src/deprecated/isProjectSchema.ts | 2 +- packages/types/src/deprecated/isReactClass.ts | 2 +- .../types/src/deprecated/isReactComponent.ts | 2 +- .../types/src/deprecated/isSetterConfig.ts | 2 +- .../types/src/deprecated/isTitleConfig.ts | 2 +- packages/types/src/shell/api/material.ts | 4 +- packages/types/src/shell/api/workspace.ts | 2 +- .../types/src/shell/model/document-model.ts | 2 +- packages/utils/jest.config.js | 2 +- packages/utils/package.json | 4 +- packages/utils/src/asset.ts | 8 +- packages/utils/src/build-components.ts | 2 +- packages/utils/src/check-prop-types.ts | 2 +- packages/utils/src/check-types/index.ts | 2 +- .../check-types/is-action-content-object.ts | 2 +- .../src/check-types/is-basic-prop-type.ts | 2 +- .../src/check-types/is-component-schema.ts | 2 +- .../utils/src/check-types/is-custom-view.ts | 2 +- .../src/check-types/is-drag-any-object.ts | 2 +- .../check-types/is-drag-node-data-object.ts | 2 +- .../src/check-types/is-drag-node-object.ts | 2 +- .../src/check-types/is-dynamic-setter.ts | 2 +- .../utils/src/check-types/is-i18n-data.ts | 2 +- .../utils/src/check-types/is-isfunction.ts | 2 +- packages/utils/src/check-types/is-jsblock.ts | 2 +- .../utils/src/check-types/is-jsexpression.ts | 2 +- packages/utils/src/check-types/is-jsslot.ts | 2 +- .../is-location-children-detail.ts | 2 +- .../utils/src/check-types/is-location-data.ts | 2 +- .../check-types/is-lowcode-component-type.ts | 2 +- .../check-types/is-lowcode-project-schema.ts | 2 +- .../utils/src/check-types/is-node-schema.ts | 2 +- packages/utils/src/check-types/is-node.ts | 2 +- .../check-types/is-procode-component-type.ts | 2 +- .../src/check-types/is-project-schema.ts | 2 +- .../src/check-types/is-required-prop-type.ts | 2 +- .../utils/src/check-types/is-setter-config.ts | 2 +- .../utils/src/check-types/is-setting-field.ts | 2 +- .../utils/src/check-types/is-title-config.ts | 2 +- packages/utils/src/context-menu.tsx | 4 +- packages/utils/src/create-icon.tsx | 2 +- packages/utils/src/misc.ts | 2 +- packages/utils/src/node-helper.ts | 2 +- packages/utils/src/schema.ts | 2 +- packages/utils/src/transaction-manager.ts | 2 +- packages/utils/src/workspace.tsx | 2 +- .../src/check-types/is-custom-view.test.tsx | 2 +- .../check-types/is-drag-any-object.test.ts | 2 +- .../is-drag-node-data-object.test.ts | 2 +- .../check-types/is-drag-node-object.test.ts | 2 +- .../test/src/check-types/is-i18n-data.test.ts | 2 +- .../test/src/check-types/is-jsslot.test.ts | 2 +- .../is-location-children-detail.test.ts | 2 +- .../src/check-types/is-location-data.test.ts | 2 +- .../is-lowcode-component-type.test.ts | 2 +- .../src/check-types/is-project-schema.test.ts | 2 +- packages/utils/test/src/misc.test.ts | 2 +- packages/utils/test/src/schema.test.ts | 2 +- .../test/src/transaction-manager.test.ts | 2 +- packages/workspace/package.json | 12 +- .../workspace/src/context/base-context.ts | 12 +- .../workspace/src/context/view-context.ts | 4 +- .../workspace/src/inner-plugins/webview.tsx | 2 +- packages/workspace/src/layouts/workbench.tsx | 6 +- packages/workspace/src/resource-type.ts | 2 +- packages/workspace/src/resource.ts | 6 +- packages/workspace/src/view/editor-view.tsx | 6 +- packages/workspace/src/view/resource-view.tsx | 4 +- packages/workspace/src/view/window-view.tsx | 4 +- packages/workspace/src/window.ts | 6 +- packages/workspace/src/workspace.ts | 8 +- scripts/build.sh | 34 ++--- scripts/setup-for-test.sh | 6 +- scripts/start.js | 2 +- scripts/start.sh | 2 +- scripts/sync.sh | 28 ++-- tsconfig.json | 2 +- 546 files changed, 1329 insertions(+), 1207 deletions(-) diff --git a/docs/docs/api/common.md b/docs/docs/api/common.md index e0304722e7..97064ef726 100644 --- a/docs/docs/api/common.md +++ b/docs/docs/api/common.md @@ -97,8 +97,8 @@ executeTransaction(fn: () => void, type: IPublicEnumTransitionType): void; **示例** ```typescript -import { common } from '@lce/lowcode-engine'; -import { IPublicEnumTransitionType } from '@lce/lowcode-types'; +import { common } from '@felce/lowcode-engine'; +import { IPublicEnumTransitionType } from '@felce/lowcode-types'; common.utils.startTransaction(() => { node1.setProps(); @@ -150,7 +150,7 @@ createIntl(instance: string | object): { **示例** ```typescript -import { common } from '@lce/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; diff --git a/docs/docs/api/config.md b/docs/docs/api/config.md index 90abb2c970..c06a80ba98 100644 --- a/docs/docs/api/config.md +++ b/docs/docs/api/config.md @@ -29,7 +29,7 @@ get(key: string, defaultValue?: any): any; **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.get('keyA', true); config.get('keyB', { a: 1 }); @@ -52,7 +52,7 @@ set(key: string, value: any): void; **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.set('keyC', 1); ``` @@ -74,7 +74,7 @@ has(key: string): boolean; **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.has('keyD'); ``` @@ -95,7 +95,7 @@ setConfig(config: { [key: string]: any }): void; **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.setConfig({ keyA: false, keyB: 2 }); ``` @@ -122,7 +122,7 @@ getPreference(): IPublicModelPreference; 示例 ```javascript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; const panelName = 'outline-master-pane'; @@ -152,7 +152,7 @@ onceGot(key: string): Promise; **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.onceGot('keyA').then((value) => { console.log(`The value of keyA is ${value}`); @@ -181,7 +181,7 @@ const value = await config.onceGot('keyA'); **示例** ```typescript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.onGot('keyA', (value) => { console.log(`The value of keyA is ${value}`); diff --git a/docs/docs/api/configOptions.md b/docs/docs/api/configOptions.md index b2beb1f5ba..6571e6af8b 100644 --- a/docs/docs/api/configOptions.md +++ b/docs/docs/api/configOptions.md @@ -10,7 +10,7 @@ sidebar_position: 5 #### init API ```javascript -import { init } from '@lce/lowcode-engine'; +import { init } from '@felce/lowcode-engine'; init(document.getElementById('engine'), { enableCondition: false, @@ -22,7 +22,7 @@ init(document.getElementById('engine'), { #### config API ```javascript -import { config } from '@lce/lowcode-engine'; +import { config } from '@felce/lowcode-engine'; config.set('enableCondition', false); ``` diff --git a/docs/docs/api/event.md b/docs/docs/api/event.md index bfe9fcdd51..ad60a6cee7 100644 --- a/docs/docs/api/event.md +++ b/docs/docs/api/event.md @@ -91,7 +91,7 @@ event.emit(eventName); 在 A setter 中进行事件注册: ```typescript -import { event } from '@lce/lowcode-engine'; +import { event } from '@felce/lowcode-engine'; const SETTER_NAME = 'SetterA'; @@ -116,7 +116,7 @@ class SetterA extends React.Component { 在 B setter 中触发事件,来完成通信: ```typescript -import { event } from '@lce/lowcode-engine'; +import { event } from '@felce/lowcode-engine'; class SetterB extends React.Component { bindFunction = () => { diff --git a/docs/docs/api/hotkey.md b/docs/docs/api/hotkey.md index e65c80f71a..f8a0bc0aeb 100644 --- a/docs/docs/api/hotkey.md +++ b/docs/docs/api/hotkey.md @@ -59,7 +59,7 @@ hotkey.bind(['command+s', 'command+c'], (e) => { ### 保存快捷键配置 ```typescript -import { hotkey } from '@lce/lowcode-engine'; +import { hotkey } from '@felce/lowcode-engine'; function saveSchema(schema) { // 保存 schema 相关操作 diff --git a/docs/docs/api/init.md b/docs/docs/api/init.md index e21a4aff26..2ee89029bd 100644 --- a/docs/docs/api/init.md +++ b/docs/docs/api/init.md @@ -26,7 +26,7 @@ function init(container?: Element, options?: IPublicTypeEngineOptions): void; ## 使用示例 ```typescript -import { init } from '@lce/lowcode-engine'; +import { init } from '@felce/lowcode-engine'; init(document.getElementById('engine'), { enableCondition: false, @@ -36,7 +36,7 @@ init(document.getElementById('engine'), { ### 默认打开移动端画布 ```typescript -import { init } from '@lce/lowcode-engine'; +import { init } from '@felce/lowcode-engine'; init({ device: 'mobile', @@ -46,7 +46,7 @@ init({ ### 使用 utils 第三方工具扩展 ```json -import { init } from '@lce/lowcode-engine'; +import { init } from '@felce/lowcode-engine'; init({ device: 'mobile', diff --git a/docs/docs/api/logger.md b/docs/docs/api/logger.md index c3b6d453d0..ce4aa2fea6 100644 --- a/docs/docs/api/logger.md +++ b/docs/docs/api/logger.md @@ -46,7 +46,7 @@ log(...args: any | any[]): void; ## 输出示例 ```typescript -import { Logger } from '@lce/lowcode-utils'; +import { Logger } from '@felce/lowcode-utils'; const logger = new Logger({ level: 'warn', bizName: 'myPlugin:moduleA' }); logger.log('Awesome Low-Code Engine'); ``` diff --git a/docs/docs/api/material.md b/docs/docs/api/material.md index 5d8b3969aa..4493433499 100644 --- a/docs/docs/api/material.md +++ b/docs/docs/api/material.md @@ -48,7 +48,7 @@ setAssets(assets: IPublicTypeAssetsJson): void; 直接在项目中引用 npm 包 ```javascript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; import assets from '@alilc/mc-assets-/assets.json'; material.setAssets(assets); @@ -57,8 +57,8 @@ material.setAssets(assets); 通过接口动态引入资产包 ```typescript -import { material, plugins } from '@lce/lowcode-engine'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { material, plugins } from '@felce/lowcode-engine'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; // 动态加载 assets plugins @@ -100,7 +100,7 @@ getAssets(): IPublicTypeAssetsJson; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.getAssets(); ``` @@ -124,7 +124,7 @@ loadIncrementalAssets(incrementalAssets: IPublicTypeAssetsJson): Promise; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; import assets1 from '@alilc/mc-assets-/assets.json'; import assets2 from '@alilc/mc-assets-/assets.json'; @@ -135,7 +135,7 @@ material.loadIncrementalAssets(assets2); 更新特定物料的描述文件 ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.loadIncrementalAssets({ version: '', components: [ @@ -168,7 +168,7 @@ addBuiltinComponentAction(action: IPublicTypeComponentAction): void; 新增设计扩展位,并绑定事件 ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.addBuiltinComponentAction({ name: 'myIconName', @@ -210,7 +210,7 @@ removeBuiltinComponentAction(name: string): void; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.removeBuiltinComponentAction('myIconName'); ``` @@ -246,7 +246,7 @@ modifyBuiltinComponentAction( 给原始的 remove 扩展时间添加执行前后的日志 ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.modifyBuiltinComponentAction('remove', (action) => { const originAction = action.content.action; @@ -275,7 +275,7 @@ addContextMenuOption(action: IPublicTypeContextMenuAction): void; 示例 ```typescript -import { IPublicEnumContextMenuType } from '@lce/lowcode-types'; +import { IPublicEnumContextMenuType } from '@felce/lowcode-types'; material.addContextMenuOption({ name: 'parentItem', @@ -362,7 +362,7 @@ getComponentMeta(componentName: string): IPublicModelComponentMeta | null; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.getComponentMeta('Input'); ``` @@ -385,7 +385,7 @@ material.getComponentMeta('Input'); **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.getComponentMetasMap(); ``` @@ -426,7 +426,7 @@ registerMetadataTransducer( 给每一个组件的配置添加高级配置面板,其中有一个是否渲染配置项 ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; function addonCombine(metadata: TransformedComponentMetadata) { const { componentName, configure = {} } = metadata; @@ -471,8 +471,8 @@ material.registerMetadataTransducer(addonCombine, 1, 'parse-func'); 删除高级 Tab ```typescript -import { material } from '@lce/lowcode-engine'; -import { IPublicTypeFieldConfig } from '@lce/lowcode-types'; +import { material } from '@felce/lowcode-engine'; +import { IPublicTypeFieldConfig } from '@felce/lowcode-types'; material.registerMetadataTransducer( (transducer) => { @@ -513,7 +513,7 @@ getRegisteredMetadataTransducers(): IPublicTypeMetadataTransducer[]; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.getRegisteredMetadataTransducers(); ``` @@ -538,7 +538,7 @@ onChangeAssets(fn: () => void): IPublicTypeDisposable; **示例** ```typescript -import { material } from '@lce/lowcode-engine'; +import { material } from '@felce/lowcode-engine'; material.onChangeAssets(() => { console.log('asset changed'); diff --git a/docs/docs/api/model/dragon.md b/docs/docs/api/model/dragon.md index 26dec5aaf5..e1de1505d9 100644 --- a/docs/docs/api/model/dragon.md +++ b/docs/docs/api/model/dragon.md @@ -12,7 +12,7 @@ sidebar_position: 99 ### 对应接口 ```typescript -import { IPublicModelDragon } from '@lce/lowcode-types'; +import { IPublicModelDragon } from '@felce/lowcode-types'; ``` ### 支持版本 diff --git a/docs/docs/api/plugins.md b/docs/docs/api/plugins.md index e30e0d9b76..a330c89445 100644 --- a/docs/docs/api/plugins.md +++ b/docs/docs/api/plugins.md @@ -32,8 +32,8 @@ async function register( #### 简单示例 ```typescript -import { plugins } from '@lce/lowcode-engine'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { plugins } from '@felce/lowcode-engine'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; const builtinPluginRegistry = (ctx: IPublicModelPluginContext) => { return { @@ -67,8 +67,8 @@ await plugins.register(builtinPluginRegistry); #### 使用 exports 示例 ```typescript -import { plugins } from '@lce/lowcode-engine'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { plugins } from '@felce/lowcode-engine'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; const PluginA = (ctx: IPublicModelPluginContext) => { return { @@ -102,8 +102,8 @@ await plugins.register(PluginB); #### 设置兼容引擎版本示例 ```typescript -import { plugins } from '@lce/lowcode-engine'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { plugins } from '@felce/lowcode-engine'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext) => { return { @@ -124,8 +124,8 @@ await plugins.register(BuiltinPluginRegistry); #### 设置插件参数版本示例 ```typescript -import { plugins } from '@lce/lowcode-engine'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { plugins } from '@felce/lowcode-engine'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext, options: any) => { return { @@ -249,7 +249,7 @@ your-plugin/package.json ```json { - "name": "@lce/lowcode-plugin-debug", + "name": "@felce/lowcode-plugin-debug", "lcMeta": { "pluginName": "debug", "meta": { diff --git a/docs/docs/api/project.md b/docs/docs/api/project.md index ce52891da9..3fbdca7ed0 100644 --- a/docs/docs/api/project.md +++ b/docs/docs/api/project.md @@ -217,12 +217,12 @@ addPropsTransducer( 在保存的时候删除每一个组件的 props.hidden ```typescript -import { project } from '@lce/lowcode-engine'; +import { project } from '@felce/lowcode-engine'; import { IPublicTypeCompositeObject, IPublicEnumTransformStage, IPublicModelPluginContext, -} from '@lce/lowcode-types'; +} from '@felce/lowcode-types'; export const DeleteHiddenTransducer = (ctx: IPublicModelPluginContext) => { return { @@ -281,7 +281,7 @@ setI18n(value: object): void; ```typescript // shims.d.ts -declare module '@lce/lowcode-types' { +declare module '@felce/lowcode-types' { export interface IPublicTypeAppConfig { customProp: CustomPropType; } diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md index ca79d1b605..9b3c9d705d 100644 --- a/docs/docs/api/setters.md +++ b/docs/docs/api/setters.md @@ -72,9 +72,9 @@ registerSetter( ### 注册官方内置 Setter 到设计器中 ```typescript -import { setters, skeleton } from '@lce/lowcode-engine'; +import { setters, skeleton } from '@felce/lowcode-engine'; import { setterMap, pluginMap } from '@alilc/lowcode-engine-ext'; -import { IPublicModelPluginContext } from '@lce/lowcode-types'; +import { IPublicModelPluginContext } from '@felce/lowcode-types'; const SetterRegistry = (ctx: IPublicModelPluginContext) => { return { @@ -155,7 +155,7 @@ export default class AltStringSetter extends React.PureComponent ## 使用示例 ```typescript -import { skeleton } from '@lce/lowcode-engine'; +import { skeleton } from '@felce/lowcode-engine'; skeleton.add({ name: 'logo', @@ -553,7 +553,7 @@ skeleton.disableWidget('sourceEditor'); ### bottomArea 示例 ```typescript -import { skeleton } from '@lce/lowcode-engine'; +import { skeleton } from '@felce/lowcode-engine'; skeleton.add({ name: 'bottomAreaPanelName', diff --git a/docs/docs/demoUsage/panels/datasource.md b/docs/docs/demoUsage/panels/datasource.md index f198adc724..29a0b0900e 100644 --- a/docs/docs/demoUsage/panels/datasource.md +++ b/docs/docs/demoUsage/panels/datasource.md @@ -97,7 +97,7 @@ export function createAxiosFetchHandler(config?: Record) { ```tsx import React, { memo } from 'react'; -import ReactRenderer from '@lce/lowcode-react-renderer'; +import ReactRenderer from '@felce/lowcode-react-renderer'; const SamplePreview = memo(() => { return ( @@ -124,7 +124,7 @@ const SamplePreview = memo(() => { > 默认情况下设计态没有开启数据源引擎,我们可以在设计器 init 的时候来传递`requstHandlersMap`来开启;具体代码如下: ```javascript -import { init, plugins } from '@lce/lowcode-engine'; +import { init, plugins } from '@felce/lowcode-engine'; import { RequestHandlersMap } from '@alilc/lowcode-datasource-types'; const preference = new Map(); @@ -143,8 +143,8 @@ const preference = new Map(); // simulatorUrl 在当 engine-core.js 同一个父路径下时是不需要配置的!!! // 这里因为用的是 alifd cdn,在不同 npm 包,engine-core.js 和 react-simulator-renderer.js 是不同路径 simulatorUrl: [ - 'https://alifd.alicdn.com/npm/@lce/lowcode-react-simulator-renderer@latest/dist/css/react-simulator-renderer.css', - 'https://alifd.alicdn.com/npm/@lce/lowcode-react-simulator-renderer@latest/dist/js/react-simulator-renderer.js' + 'https://alifd.alicdn.com/npm/@felce/lowcode-react-simulator-renderer@latest/dist/css/react-simulator-renderer.css', + 'https://alifd.alicdn.com/npm/@felce/lowcode-react-simulator-renderer@latest/dist/js/react-simulator-renderer.js' ], requestHandlersMap: { fetch: createAxiosFetchHandler() diff --git a/docs/docs/demoUsage/panels/settings.md b/docs/docs/demoUsage/panels/settings.md index 5806bf170f..79e50a85f3 100644 --- a/docs/docs/demoUsage/panels/settings.md +++ b/docs/docs/demoUsage/panels/settings.md @@ -151,7 +151,7 @@ bindFunction = () => { ```javascript import AltStringSetter from './AltStringSetter'; -import { setters } from '@lce/lowcode-engine'; +import { setters } from '@felce/lowcode-engine'; setters.registerSetter({ AltStringSetter: { component: AltStringSetter, diff --git a/docs/docs/faq/faq009.md b/docs/docs/faq/faq009.md index d1375b100c..8b58786758 100644 --- a/docs/docs/faq/faq009.md +++ b/docs/docs/faq/faq009.md @@ -7,7 +7,7 @@ tags: [FAQ] ## 预览态,antd 资产包按顺序加载,但是没有按顺序执行 资产包按顺序加载,但是没有按顺序执行,导致部分 js 执行的时候,依赖的资源没有准备好,报错了。 -传给 @lce/lowcode-react-renderer 的 components 值为空。 +传给 @felce/lowcode-react-renderer 的 components 值为空。 **解决方案** LowCodeEngine 升级到 1.0.8 diff --git a/docs/docs/faq/faq013.md b/docs/docs/faq/faq013.md index 23b83e93bb..303a32e31d 100644 --- a/docs/docs/faq/faq013.md +++ b/docs/docs/faq/faq013.md @@ -21,8 +21,8 @@ tags: [FAQ] 通过新增 Save 态的 propsReducer,将 hidden props 去掉。可以参考下面的代码: ```typescript -import { project } from '@lce/lowcode-engine'; -import { IPublicEnumTransformStage } from '@lce/lowcode-types'; +import { project } from '@felce/lowcode-engine'; +import { IPublicEnumTransformStage } from '@felce/lowcode-types'; export const deleteHiddenTransducer = (ctx: any) => { return { @@ -42,7 +42,7 @@ deleteHiddenTransducer.pluginName = 'deleteHiddenTransducer'; ### 导出 schema 使用 Save 态 ```typescript -import { TransformStage } from '@lce/lowcode-types'; +import { TransformStage } from '@felce/lowcode-types'; const schema = project.exportSchema(TransformStage.Save); ``` diff --git a/docs/docs/faq/faq024.md b/docs/docs/faq/faq024.md index d386650e74..4dfc4acbfa 100644 --- a/docs/docs/faq/faq024.md +++ b/docs/docs/faq/faq024.md @@ -28,14 +28,14 @@ tags: [FAQ] #### 如何在全局插件中获取视图的上下文? -- 在阿里低代码引擎的全局插件中获取视图的上下文,可以通过使用 **ProvideViewPluginContext** 函数实现。这个函数来自 **@lce/lowcode-utils** 库,它使得您的 React 组件能够接收 **pluginContext** 作为 props,进而访问和操作当前视图的状态和属性。 +- 在阿里低代码引擎的全局插件中获取视图的上下文,可以通过使用 **ProvideViewPluginContext** 函数实现。这个函数来自 **@felce/lowcode-utils** 库,它使得您的 React 组件能够接收 **pluginContext** 作为 props,进而访问和操作当前视图的状态和属性。 **步骤** **引入依赖**:首先,确保您的插件文件中已经引入了 **ProvideViewPluginContext** 以及其他必要的依赖。 ``` -import { ProvideViewPluginContext } from '@lce/lowcode-utils +import { ProvideViewPluginContext } from '@felce/lowcode-utils ``` **定义 React 组件**:创建一个 React 组件,它将使用来自 **ProvideViewPluginContext** 的 **pluginContext**。 diff --git a/docs/docs/guide/appendix/npms.md b/docs/docs/guide/appendix/npms.md index e1f016ae34..71b8e8ff59 100644 --- a/docs/docs/guide/appendix/npms.md +++ b/docs/docs/guide/appendix/npms.md @@ -5,20 +5,20 @@ sidebar_position: 3 | 包名 | 仓库 | 路径 | | -------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------ | -| @lce/lowcode-code-generator | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/code-generator | -| @lce/lowcode-material-parser | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/material-parser | -| @lce/lowcode-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/designer | -| @lce/lowcode-editor-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-core | -| @lce/lowcode-editor-skeleton | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-skeleton | -| @lce/lowcode-engine | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/engine | -| @lce/lowcode-plugin-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-designer | -| @lce/lowcode-plugin-outline-pane | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-outline-pane | -| @lce/lowcode-react-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-renderer | -| @lce/lowcode-react-simulator-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-simulator-renderer | -| @lce/lowcode-renderer-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/renderer-core | -| @lce/lowcode-shell | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/shell | -| @lce/lowcode-types | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/types | -| @lce/lowcode-utils | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/utils | +| @felce/lowcode-code-generator | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/code-generator | +| @felce/lowcode-material-parser | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | modules/material-parser | +| @felce/lowcode-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/designer | +| @felce/lowcode-editor-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-core | +| @felce/lowcode-editor-skeleton | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/editor-skeleton | +| @felce/lowcode-engine | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/engine | +| @felce/lowcode-plugin-designer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-designer | +| @felce/lowcode-plugin-outline-pane | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/plugin-outline-pane | +| @felce/lowcode-react-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-renderer | +| @felce/lowcode-react-simulator-renderer | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/react-simulator-renderer | +| @felce/lowcode-renderer-core | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/renderer-core | +| @felce/lowcode-shell | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/shell | +| @felce/lowcode-types | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/types | +| @felce/lowcode-utils | [https://github.com/fe-lce/lowcode-engine](https://github.com/fe-lce/lowcode-engine) | packages/utils | | @alilc/lowcode-datasource-engine | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-engine | | @alilc/lowcode-datasource-fetch-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-fetch-handler | | @alilc/lowcode-datasource-jsonp-handler | [https://github.com/fe-lce/lowcode-datasource](https://github.com/fe-lce/lowcode-datasource) | packages/datasource-jsonp-handler | diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 5c8bb646aa..151e6cd5af 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -60,7 +60,7 @@ sidebar_position: 0 @@ -91,7 +91,7 @@ sidebar_position: 0 ``` -> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 CDN 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 CDN 替代 +> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 cnpm CDN 来获得确定版本的低代码引擎,如对于引擎的 1.4.0 版本,可用以下cnpm CDN 替代 > -> - [https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/1.0.18/dist/js/engine-core.js) +> - [https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js](https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js) ### 配置打包 @@ -116,7 +124,7 @@ sidebar_position: 0 "prop-types": "var window.PropTypes", "@alifd/next": "var window.Next", "@felce/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var window.moment", "lodash": "var window._" } diff --git a/docs/docs/guide/design/setter.md b/docs/docs/guide/design/setter.md index 62b795d9b7..5bd6c33ad4 100644 --- a/docs/docs/guide/design/setter.md +++ b/docs/docs/guide/design/setter.md @@ -18,7 +18,7 @@ sidebar_position: 6 ## npm 包与仓库信息 -- npm 包:@alilc/lowcode-engine-ext +- npm 包:@felce/lowcode-engine-ext - 仓库:[https://github.com/fe-lce/lowcode-engine-ext](https://github.com/fe-lce/lowcode-engine-ext) ## 设置器模块原理 diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md index 1a602a73bf..f468bad42a 100644 --- a/docs/docs/participate/index.md +++ b/docs/docs/participate/index.md @@ -34,19 +34,19 @@ npm install && npm run setup { "proxy": [ [ - "https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/js/engine-core.js", + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/js/engine-core.js", "http://localhost:5555/js/AliLowCodeEngine.js" ], [ - "https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/css/engine-core.css", + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/engine-core.css", "http://localhost:5555/css/AliLowCodeEngine.css" ], [ - "https?://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js", + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js", "http://localhost:5555/js/ReactSimulatorRenderer.js" ], [ - "https?://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", "http://localhost:5555/css/ReactSimulatorRenderer.css" ] ] diff --git a/packages/engine/README-en_US.md b/packages/engine/README-en_US.md index 6f889e5e5b..c08b1e64f7 100644 --- a/packages/engine/README-en_US.md +++ b/packages/engine/README-en_US.md @@ -101,7 +101,7 @@ init(document.getElementById('lce')); { "externals": { "@felce/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` @@ -111,22 +111,22 @@ init(document.getElementById('lce')); #### unpkg ```html -https://unpkg.com/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js -https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js +https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js ``` #### npmmirror ```html -https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0-beta.0/files/dist/js/engine-core.js -https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0-beta.0/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js +https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js ``` #### jsdelivr ```html -https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js ``` #### Method 5: Use your own cdn diff --git a/packages/engine/README.md b/packages/engine/README.md index e4a896ff98..ee9b288a1e 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -112,7 +112,7 @@ init(document.getElementById('lce')); { "externals": { "@felce/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt" + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt" } } ``` @@ -122,22 +122,22 @@ init(document.getElementById('lce')); #### unpkg ```html -https://unpkg.com/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js -https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js +https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js ``` #### npmmirror ```html -https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0-beta.0/files/dist/js/engine-core.js -https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0-beta.0/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js +https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js ``` #### jsdelivr ```html -https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js ``` #### 使用自有 cdn From dd25dccdeb2be16fb4e6b36249300946d889f980 Mon Sep 17 00:00:00 2001 From: taojiu Date: Wed, 16 Oct 2024 18:15:15 +0800 Subject: [PATCH 22/94] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=94=B9ext?= =?UTF-8?q?=E6=8C=87=E5=90=91=E5=88=B0felce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/engine/build.umd.json | 2 +- packages/engine/package.json | 2 +- packages/engine/src/inner-plugins/setter-registry.ts | 2 +- packages/ignitor/build.json | 2 +- packages/react-simulator-renderer/build.umd.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/engine/build.umd.json b/packages/engine/build.umd.json index 92d5a1bfd3..32d150b215 100644 --- a/packages/engine/build.umd.json +++ b/packages/engine/build.umd.json @@ -15,7 +15,7 @@ "monaco-editor/esm/vs/editor/editor.api": "var window.monaco", "monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco", "@alifd/next": "var Next", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/packages/engine/package.json b/packages/engine/package.json index b6e167d96e..a9eddba852 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -19,7 +19,7 @@ "license": "MIT", "dependencies": { "@alifd/next": "^1.26.0", - "@alilc/lowcode-engine-ext": "^1.0.0", + "@felce/lowcode-engine-ext": "^1.1.0", "@felce/lowcode-designer": "1.4.0", "@felce/lowcode-editor-core": "1.4.0", "@felce/lowcode-editor-skeleton": "1.4.0", diff --git a/packages/engine/src/inner-plugins/setter-registry.ts b/packages/engine/src/inner-plugins/setter-registry.ts index cdb6092d14..e2c857642d 100644 --- a/packages/engine/src/inner-plugins/setter-registry.ts +++ b/packages/engine/src/inner-plugins/setter-registry.ts @@ -6,7 +6,7 @@ export const setterRegistry = (ctx: IPublicModelPluginContext) => { init() { const { config } = ctx; if (config.get('disableDefaultSetters')) return; - const builtinSetters = require('@alilc/lowcode-engine-ext')?.setters; + const builtinSetters = require('@felce/lowcode-engine-ext')?.setters; if (builtinSetters) { ctx.setters.registerSetter(builtinSetters); } diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json index 5b7ec07d65..6055d193ba 100644 --- a/packages/ignitor/build.json +++ b/packages/ignitor/build.json @@ -17,7 +17,7 @@ "@alifd/next": "var window.Next", "rax": "var window.Rax", "@felce/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, diff --git a/packages/react-simulator-renderer/build.umd.json b/packages/react-simulator-renderer/build.umd.json index 1052bb0765..ff20a23782 100644 --- a/packages/react-simulator-renderer/build.umd.json +++ b/packages/react-simulator-renderer/build.umd.json @@ -10,7 +10,7 @@ "react-dom": "var window.ReactDOM", "prop-types": "var window.PropTypes", "@alifd/next": "var Next", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", + "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt", "moment": "var moment", "lodash": "var _" }, From c885587d2b67ab2095bc5f760ea8620d251fe380 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 21 Oct 2024 22:49:07 +0800 Subject: [PATCH 23/94] =?UTF-8?q?chore:=20=E4=BF=AE=E5=A4=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AE=9A=E4=B9=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除dragon中不再支持的util,修改相关引用 --- packages/designer/src/context-menu-actions.ts | 29 ++++++---- .../designer/src/designer/active-tracker.ts | 7 ++- packages/designer/src/designer/designer.ts | 18 ++++--- .../src/designer/drag-ghost/index.tsx | 18 ++++--- packages/designer/src/designer/dragon.ts | 54 +++++-------------- .../designer/src/document/document-view.tsx | 9 ++-- .../designer/tests/designer/dragon.test.ts | 4 +- packages/editor-skeleton/src/area.ts | 23 ++++---- packages/editor-skeleton/src/skeleton.ts | 9 ++-- packages/editor-skeleton/src/widget/widget.ts | 24 ++------- packages/plugin-designer/src/index.tsx | 3 ++ packages/types/src/shell/model/area.ts | 8 +++ packages/types/src/shell/model/drag-object.ts | 4 +- packages/types/src/shell/model/dragon.ts | 29 +++++++--- packages/types/src/shell/model/index.ts | 2 + packages/types/src/shell/model/widget.ts | 23 ++++++++ packages/utils/src/is-plain-object.ts | 2 +- 17 files changed, 143 insertions(+), 123 deletions(-) create mode 100644 packages/types/src/shell/model/area.ts create mode 100644 packages/types/src/shell/model/widget.ts diff --git a/packages/designer/src/context-menu-actions.ts b/packages/designer/src/context-menu-actions.ts index 4bb052aa3a..17a277dd22 100644 --- a/packages/designer/src/context-menu-actions.ts +++ b/packages/designer/src/context-menu-actions.ts @@ -19,7 +19,7 @@ import './context-menu-actions.scss'; export interface IContextMenuActions { actions: IPublicTypeContextMenuAction[]; - adjustMenuLayoutFn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]; + // adjustMenuLayoutFn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]; addMenuAction: IPublicApiMaterial['addContextMenuOption']; @@ -57,7 +57,11 @@ export class GlobalContextMenuActions { event.preventDefault(); const actions: IPublicTypeContextMenuAction[] = []; - let contextMenu: ContextMenuActions = this.contextMenuActionsMap.values().next().value; + let contextMenu: ContextMenuActions | undefined = this.contextMenuActionsMap + .values() + .next().value; + if (!contextMenu) return; + this.contextMenuActionsMap.forEach((contextMenu) => { actions.push(...contextMenu.actions); }); @@ -90,12 +94,17 @@ export class GlobalContextMenuActions { pluginContext, }); - const target = event.target; + const target = event.target as HTMLElement; + + if (!target) { + console.warn('context menu target is null'); + return; + } - const { top, left } = target?.getBoundingClientRect(); + const { top, left } = target.getBoundingClientRect(); const menuInstance = Menu.create({ - target: event.target, + target: target, offset: [event.clientX - left, event.clientY - top], children: menuNode, className: 'engine-context-menu', @@ -177,7 +186,7 @@ export class ContextMenuActions implements IContextMenuActions { ) as IPublicModelPluginContext; const menus: IPublicTypeContextMenuItem[] = parseContextMenuProperties(actions, { - nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!), + nodes: nodes.map((d) => designer.shellModelFactory!.createNode(d)!), destroy, event, pluginContext, @@ -191,7 +200,7 @@ export class ContextMenuActions implements IContextMenuActions { const menuNode = parseContextMenuAsReactNode(layoutMenu, { destroy, - nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!), + nodes: nodes.map((d) => designer.shellModelFactory!.createNode(d)!), pluginContext, }); @@ -210,10 +219,10 @@ export class ContextMenuActions implements IContextMenuActions { originalEvent.stopPropagation(); originalEvent.preventDefault(); // 如果右键的节点不在 当前选中的节点中,选中该节点 - if (!designer.currentSelection.has(node.id)) { - designer.currentSelection.select(node.id); + if (!designer.currentSelection!.has(node.id)) { + designer.currentSelection!.select(node.id); } - const nodes = designer.currentSelection.getNodes(); + const nodes = designer.currentSelection!.getNodes(); this.handleContextMenu(nodes, originalEvent); }, ), diff --git a/packages/designer/src/designer/active-tracker.ts b/packages/designer/src/designer/active-tracker.ts index 69ce1122b9..2b08dc380c 100644 --- a/packages/designer/src/designer/active-tracker.ts +++ b/packages/designer/src/designer/active-tracker.ts @@ -3,9 +3,8 @@ import { obx, IEventBus, createModuleEventBus } from '@felce/lowcode-editor-core import { IPublicTypeActiveTarget, IPublicModelActiveTracker } from '@felce/lowcode-types'; import { isNode } from '@felce/lowcode-utils'; -export interface IActiveTracker extends Omit { - _target: ActiveTarget | INode; - +export interface IActiveTracker + extends Omit { track(originalTarget: ActiveTarget | INode): void; onChange(fn: (target: ActiveTarget) => void): () => void; @@ -16,7 +15,7 @@ export interface ActiveTarget extends Omit { } export class ActiveTracker implements IActiveTracker { - @obx.ref private _target?: ActiveTarget | INode; + @obx.ref private _target: ActiveTarget | INode; private emitter: IEventBus = createModuleEventBus('ActiveTracker'); diff --git a/packages/designer/src/designer/designer.ts b/packages/designer/src/designer/designer.ts index 70ceaa4442..b01bc873c8 100644 --- a/packages/designer/src/designer/designer.ts +++ b/packages/designer/src/designer/designer.ts @@ -1,3 +1,4 @@ +import { BuiltinSimulatorProps } from './../builtin-simulator/host'; import { ComponentType } from 'react'; import { obx, @@ -55,13 +56,13 @@ const logger = new Logger({ level: 'warn', bizName: 'designer' }); export interface DesignerProps { [key: string]: any; editor: IPublicModelEditor; - shellModelFactory: IShellModelFactory; + shellModelFactory?: IShellModelFactory; className?: string; style?: object; defaultSchema?: IPublicTypeProjectSchema; hotkeys?: object; viewName?: string; - simulatorProps?: Record | ((document: DocumentModel) => object); + simulatorProps?: ((project: Project) => BuiltinSimulatorProps) | BuiltinSimulatorProps; simulatorComponent?: ComponentType; dragGhostComponent?: ComponentType; suspensed?: boolean; @@ -71,13 +72,13 @@ export interface DesignerProps { onDragstart?: (e: IPublicModelLocateEvent) => void; onDrag?: (e: IPublicModelLocateEvent) => void; onDragend?: ( - e: { dragObject: IPublicModelDragObject; copy: boolean }, + e: { dragObject: IPublicModelDragObject; copy?: boolean }, loc?: DropLocation, ) => void; } export interface IDesigner { - readonly shellModelFactory: IShellModelFactory; + readonly shellModelFactory?: IShellModelFactory; viewName: string | undefined; @@ -89,7 +90,7 @@ export interface IDesigner { get componentActions(): ComponentActions; - get contextMenuActions(): ContextMenuActions; + get contextMenuActions(): IContextMenuActions; get editor(): IPublicModelEditor; @@ -97,7 +98,7 @@ export interface IDesigner { get simulatorComponent(): ComponentType | undefined; - get currentSelection(): ISelection; + get currentSelection(): ISelection | undefined; createScroller(scrollable: IPublicTypeScrollable): IPublicModelScroller; @@ -162,7 +163,7 @@ export class Designer implements IDesigner { readonly bemToolsManager = new BemToolsManager(this); - readonly shellModelFactory: IShellModelFactory; + readonly shellModelFactory?: IShellModelFactory; private _dropLocation?: DropLocation; @@ -448,9 +449,10 @@ export class Designer implements IDesigner { this._simulatorComponent = props.simulatorComponent; } if (props.simulatorProps !== this.props.simulatorProps) { + const oldDesignMode = this.simulatorProps?.designMode; this._simulatorProps = props.simulatorProps; // 重新 setupSelection - if (props.simulatorProps?.designMode !== this.props.simulatorProps?.designMode) { + if (this.simulatorProps?.designMode !== oldDesignMode) { this.setupSelection(); } } diff --git a/packages/designer/src/designer/drag-ghost/index.tsx b/packages/designer/src/designer/drag-ghost/index.tsx index 8fd4d6e9fe..d1d12d52c6 100644 --- a/packages/designer/src/designer/drag-ghost/index.tsx +++ b/packages/designer/src/designer/drag-ghost/index.tsx @@ -1,7 +1,6 @@ import { Component, ReactElement } from 'react'; import { observer, obx, Title, makeObservable } from '@felce/lowcode-editor-core'; import { Designer } from '../designer'; -import { isDragNodeObject } from '../dragon'; import { isSimulatorHost } from '../../simulator'; import './ghost.less'; import { @@ -9,6 +8,7 @@ import { IPublicTypeNodeSchema, IPublicModelDragObject, } from '@felce/lowcode-types'; +import { isDragNodeObject } from '@felce/lowcode-utils'; type offBinding = () => any; @@ -16,7 +16,7 @@ type offBinding = () => any; export default class DragGhost extends Component<{ designer: Designer }> { private dispose: offBinding[] = []; - @obx.ref private titles: (string | IPublicTypeI18nData | ReactElement)[] | null = null; + @obx.ref private titles: (string | IPublicTypeI18nData | ReactElement | null)[] | null = null; @obx.ref private x = 0; @@ -58,17 +58,19 @@ export default class DragGhost extends Component<{ designer: Designer }> { ]; } - getTitles(dragObject: IPublicModelDragObject) { + getTitles(dragObject: IPublicModelDragObject | null) { + if (!dragObject) return null; + if (isDragNodeObject(dragObject)) { - return dragObject.nodes.map((node) => node.title); + return dragObject.nodes.map((node) => node?.title || null); } const dataList = Array.isArray(dragObject.data) ? dragObject.data : [dragObject.data]; - return dataList.map( - (item: IPublicTypeNodeSchema, i) => - this.props.designer.getComponentMeta(item.componentName).title, - ); + return dataList.map((item: IPublicTypeNodeSchema | null) => { + if (!item) return null; + return this.props.designer.getComponentMeta(item.componentName).title; + }); } componentWillUnmount() { diff --git a/packages/designer/src/designer/dragon.ts b/packages/designer/src/designer/dragon.ts index a34273a904..27c3d93be3 100644 --- a/packages/designer/src/designer/dragon.ts +++ b/packages/designer/src/designer/dragon.ts @@ -1,20 +1,16 @@ -import { obx, makeObservable, IEventBus, createModuleEventBus } from '@felce/lowcode-editor-core'; +import { IEventBus, createModuleEventBus, makeObservable, obx } from '@felce/lowcode-editor-core'; import { - IPublicTypeDragNodeObject, - IPublicTypeDragAnyObject, - IPublicEnumDragObjectType, - IPublicTypeDragNodeDataObject, IPublicModelDragObject, - IPublicModelNode, IPublicModelDragon, IPublicModelLocateEvent, + IPublicModelNode, IPublicModelSensor, } from '@felce/lowcode-types'; -import { setNativeSelection, cursor } from '@felce/lowcode-utils'; +import { cursor, isDragNodeObject, setNativeSelection } from '@felce/lowcode-utils'; import { INode, Node } from '../document'; import { ISimulatorHost, isSimulatorHost } from '../simulator'; -import { IDesigner } from './designer'; import { makeEventsHandler } from '../utils/misc'; +import { IDesigner } from './designer'; export interface ILocateEvent extends IPublicModelLocateEvent { readonly type: 'LocateEvent'; @@ -25,31 +21,6 @@ export interface ILocateEvent extends IPublicModelLocateEvent { sensor?: IPublicModelSensor; } -/** - * @deprecated use same function in @felce/lowcode-utils - */ -export function isDragNodeObject(obj: any): obj is IPublicTypeDragNodeObject { - return obj && obj.type === IPublicEnumDragObjectType.Node; -} - -/** - * @deprecated use same function in @felce/lowcode-utils - */ -export function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataObject { - return obj && obj.type === IPublicEnumDragObjectType.NodeData; -} - -/** - * @deprecated use same function in @felce/lowcode-utils - */ -export function isDragAnyObject(obj: any): obj is IPublicTypeDragAnyObject { - return ( - obj && - obj.type !== IPublicEnumDragObjectType.NodeData && - obj.type !== IPublicEnumDragObjectType.Node - ); -} - export function isLocateEvent(e: any): e is ILocateEvent { return e && e.type === 'LocateEvent'; } @@ -88,7 +59,7 @@ export function setShaken(e: any) { e.shaken = true; } -function getSourceSensor(dragObject: IPublicModelDragObject): ISimulatorHost | null { +function getSourceSensor(dragObject: IPublicModelDragObject): ISimulatorHost | null { if (!isDragNodeObject(dragObject)) { return null; } @@ -144,7 +115,7 @@ export class Dragon implements IDragon { * @param shell container element * @param boost boost got a drag object */ - from(shell: Element, boost: (e: MouseEvent) => IPublicModelDragObject | null) { + from(shell: Element, boost: (e: MouseEvent) => IPublicModelDragObject | null) { const mousedown = (e: MouseEvent) => { // ESC or RightClick if (e.which === 3 || e.button === 2) { @@ -172,7 +143,7 @@ export class Dragon implements IDragon { * @param boostEvent 拖拽初始时事件 */ boost( - dragObject: IPublicModelDragObject, + dragObject: IPublicModelDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: INode | IPublicModelNode, ) { @@ -257,7 +228,7 @@ export class Dragon implements IDragon { /* istanbul ignore next */ if (isRGL) { // 禁止被拖拽元素的阻断 - const nodeInst = dragObject.nodes[0].getDOMNode(); + const nodeInst = dragObject.nodes?.[0]?.getDOMNode(); if (nodeInst && nodeInst.style) { this.nodeInstPointerEvents = true; nodeInst.style.pointerEvents = 'none'; @@ -275,7 +246,7 @@ export class Dragon implements IDragon { this.emitter.emit('rgl.add.placeholder', { rglNode, fromRglNode, - node: locateEvent.dragObject?.nodes[0], + node: locateEvent.dragObject?.nodes?.[0], event: e, }); designer.clearLocation(); @@ -349,7 +320,7 @@ export class Dragon implements IDragon { const over = (e?: any) => { // 禁止被拖拽元素的阻断 if (this.nodeInstPointerEvents) { - const nodeInst = dragObject.nodes[0].getDOMNode(); + const nodeInst = dragObject.nodes?.[0]?.getDOMNode(); if (nodeInst && nodeInst.style) { nodeInst.style.pointerEvents = ''; } @@ -361,7 +332,7 @@ export class Dragon implements IDragon { const { isRGL, rglNode } = getRGL(e); /* istanbul ignore next */ if (isRGL && this._canDrop && this._dragging) { - const tarNode = dragObject.nodes[0]; + const tarNode = dragObject.nodes?.[0]; if (rglNode.id !== tarNode.id) { // 避免死循环 this.emitter.emit('rgl.drop', { @@ -489,6 +460,7 @@ export class Dragon implements IDragon { } else if (e.sensor) { sensor = e.sensor; } else if (sourceSensor) { + // FIXME: 这里为什么会把simulator拿过来? sensor = sourceSensor; } } @@ -640,7 +612,7 @@ export class Dragon implements IDragon { }; } - onDragend(func: (x: { dragObject: IPublicModelDragObject; copy: boolean }) => any) { + onDragend(func: (x: { dragObject: IPublicModelDragObject; copy: boolean }) => any) { this.emitter.on('dragend', func); return () => { this.emitter.removeListener('dragend', func); diff --git a/packages/designer/src/document/document-view.tsx b/packages/designer/src/document/document-view.tsx index 1c42ce6a63..9a14d1b66a 100644 --- a/packages/designer/src/document/document-view.tsx +++ b/packages/designer/src/document/document-view.tsx @@ -1,9 +1,12 @@ -import { Component } from 'react'; -import classNames from 'classnames'; import { observer } from '@felce/lowcode-editor-core'; -import { DocumentModel, IDocumentModel } from './document-model'; +import classNames from 'classnames'; +import { Component } from 'react'; import { BuiltinSimulatorHostView } from '../builtin-simulator'; +import { IDocumentModel } from './document-model'; +/** + * @deprecated 暂时没用到 + */ @observer export class DocumentView extends Component<{ document: IDocumentModel }> { render() { diff --git a/packages/designer/tests/designer/dragon.test.ts b/packages/designer/tests/designer/dragon.test.ts index a7bd35655b..b2e88fa023 100644 --- a/packages/designer/tests/designer/dragon.test.ts +++ b/packages/designer/tests/designer/dragon.test.ts @@ -5,9 +5,6 @@ import { DocumentModel } from '../../src/document/document-model'; import { Designer } from '../../src/designer/designer'; import { Dragon, - isDragNodeObject, - isDragNodeDataObject, - isDragAnyObject, isLocateEvent, isShaken, setShaken, @@ -18,6 +15,7 @@ import { IPublicEnumDragObjectType } from '@felce/lowcode-types'; import formSchema from '../fixtures/schema/form'; import { fireEvent } from '@testing-library/react'; import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory'; +import { isDragAnyObject, isDragNodeDataObject, isDragNodeObject } from '@felce/lowcode-utils'; describe('Dragon 测试', () => { let editor: Editor; diff --git a/packages/editor-skeleton/src/area.ts b/packages/editor-skeleton/src/area.ts index c0ad92c894..6c3b45c72c 100644 --- a/packages/editor-skeleton/src/area.ts +++ b/packages/editor-skeleton/src/area.ts @@ -1,23 +1,22 @@ /* eslint-disable max-len */ import { obx, computed, makeObservable } from '@felce/lowcode-editor-core'; import { Logger } from '@felce/lowcode-utils'; -import { IPublicTypeWidgetBaseConfig } from '@felce/lowcode-types'; +import { + IPublicTypeWidgetBaseConfig, + IPublicModelArea, + IPublicModelWidget, +} from '@felce/lowcode-types'; import { WidgetContainer } from './widget/widget-container'; import { ISkeleton } from './skeleton'; -import { IWidget } from './widget/widget'; const logger = new Logger({ level: 'warn', bizName: 'skeleton:area' }); -export interface IArea { - isEmpty(): boolean; - add(config: T | C): T; - remove(config: T | string): number; - setVisible(flag: boolean): void; - hide(): void; - show(): void; -} -export class Area - implements IArea +export interface IArea extends IPublicModelArea {} + +export class Area< + C extends IPublicTypeWidgetBaseConfig = any, + T extends IPublicModelWidget = IPublicModelWidget, +> implements IArea { @obx private _visible = true; diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts index 8b7d46f4cc..45639ee202 100644 --- a/packages/editor-skeleton/src/skeleton.ts +++ b/packages/editor-skeleton/src/skeleton.ts @@ -68,6 +68,9 @@ export interface ISkeleton | 'remove' | 'hideArea' | 'add' + | 'getAreaItems' + | 'onDisableWidget' + | 'onEnableWidget' > { editor: IEditor; @@ -456,14 +459,14 @@ export class Skeleton implements ISkeleton { const { content, ...restConfig } = config; if (content) { if (isPlainObject(content) && !isValidElement(content)) { - Object.keys(content).forEach((key) => { + Object.keys(content).forEach((key: any) => { if (/props$/i.test(key) && restConfig[key]) { restConfig[key] = { ...restConfig[key], - ...content[key], + ...(content as unknown as IPublicTypePanelConfig)[key], }; } else { - restConfig[key] = content[key]; + restConfig[key] = (content as unknown as IPublicTypePanelConfig)[key]; } }); } else { diff --git a/packages/editor-skeleton/src/widget/widget.ts b/packages/editor-skeleton/src/widget/widget.ts index 04c074e5b5..a05860cff8 100644 --- a/packages/editor-skeleton/src/widget/widget.ts +++ b/packages/editor-skeleton/src/widget/widget.ts @@ -5,27 +5,9 @@ import { getEvent } from '@felce/lowcode-shell'; import { WidgetConfig } from '../types'; import { ISkeleton } from '../skeleton'; import { WidgetView } from '../components/widget-views'; -import { IPublicTypeTitleContent, IPublicTypeWidgetBaseConfig } from '@felce/lowcode-types'; +import { IPublicModelWidget, IPublicTypeTitleContent } from '@felce/lowcode-types'; -export interface IWidget { - readonly name: string; - readonly content: ReactNode; - readonly align?: string; - readonly isWidget: true; - readonly visible: boolean; - readonly disabled?: boolean; - readonly body: ReactNode; - readonly skeleton: ISkeleton; - readonly config: IPublicTypeWidgetBaseConfig; - - getName(): string; - getContent(): any; - show(): void; - hide(): void; - toggle(): void; - enable?(): void; - disable?(): void; -} +export interface IWidget extends IPublicModelWidget {} export class Widget implements IWidget { readonly isWidget = true; @@ -138,6 +120,6 @@ export class Widget implements IWidget { } } -export function isWidget(obj: any): obj is IWidget { +export function isWidget(obj: any): obj is IPublicModelWidget { return obj && obj.isWidget; } diff --git a/packages/plugin-designer/src/index.tsx b/packages/plugin-designer/src/index.tsx index 0183cf675b..53898ec324 100644 --- a/packages/plugin-designer/src/index.tsx +++ b/packages/plugin-designer/src/index.tsx @@ -3,14 +3,17 @@ import { Editor, engineConfig } from '@felce/lowcode-editor-core'; import { DesignerView, Designer } from '@felce/lowcode-designer'; import { Asset, getLogger } from '@felce/lowcode-utils'; import './index.scss'; +import { IPublicModelEngineConfig } from '@felce/lowcode-types'; const logger = getLogger({ level: 'warn', bizName: 'plugin:plugin-designer' }); export interface PluginProps { engineEditor: Editor; + engineConfig: IPublicModelEngineConfig; } interface DesignerPluginState { + utilsMetadata?: any[] | null; componentMetadatas?: any[] | null; library?: any[] | null; extraEnvironment?: any[] | null; diff --git a/packages/types/src/shell/model/area.ts b/packages/types/src/shell/model/area.ts new file mode 100644 index 0000000000..a736e99136 --- /dev/null +++ b/packages/types/src/shell/model/area.ts @@ -0,0 +1,8 @@ +export interface IPublicModelArea { + isEmpty(): boolean; + add(config: T | C): T; + remove(config: T | string): number; + setVisible(flag: boolean): void; + hide(): void; + show(): void; +} diff --git a/packages/types/src/shell/model/drag-object.ts b/packages/types/src/shell/model/drag-object.ts index 92d92eca35..0ca749b5e9 100644 --- a/packages/types/src/shell/model/drag-object.ts +++ b/packages/types/src/shell/model/drag-object.ts @@ -2,10 +2,10 @@ import { IPublicEnumDragObjectType } from '../enum'; import { IPublicTypeNodeSchema } from '../type'; import { IPublicModelNode } from './node'; -export class IPublicModelDragObject { +export class IPublicModelDragObject { type: IPublicEnumDragObjectType.Node | IPublicEnumDragObjectType.NodeData; data: IPublicTypeNodeSchema | IPublicTypeNodeSchema[] | null; - nodes: (IPublicModelNode | null)[] | null; + nodes: (Node | null)[] | null; } diff --git a/packages/types/src/shell/model/dragon.ts b/packages/types/src/shell/model/dragon.ts index 917149faf3..4eadde52a2 100644 --- a/packages/types/src/shell/model/dragon.ts +++ b/packages/types/src/shell/model/dragon.ts @@ -1,12 +1,15 @@ /* eslint-disable max-len */ -import { IPublicTypeDisposable, IPublicTypeDragNodeDataObject, IPublicTypeDragObject } from '../type'; -import { IPublicModelDragObject, IPublicModelLocateEvent, IPublicModelNode } from './'; +import { IPublicTypeDisposable, IPublicTypeDragObject } from '../type'; +import { + IPublicModelDragObject, + IPublicModelLocateEvent, + IPublicModelNode, +} from './'; export interface IPublicModelDragon< Node = IPublicModelNode, - LocateEvent = IPublicModelLocateEvent + LocateEvent = IPublicModelLocateEvent, > { - /** * 是否正在拖动 * is dragging or not @@ -35,7 +38,12 @@ export interface IPublicModelDragon< * @param func * @returns */ - onDragend(func: (o: { dragObject: IPublicModelDragObject; copy?: boolean }) => any): IPublicTypeDisposable; + onDragend( + func: (o: { + dragObject: IPublicModelDragObject; + copy?: boolean; + }) => any, + ): IPublicTypeDisposable; /** * 设置拖拽监听的区域 shell,以及自定义拖拽转换函数 boost @@ -45,7 +53,10 @@ export interface IPublicModelDragon< * @param shell 拖拽监听的区域 * @param boost 拖拽转换函数 */ - from(shell: Element, boost: (e: MouseEvent) => IPublicTypeDragNodeDataObject | null): any; + from( + shell: Element, + boost: (e: MouseEvent) => IPublicModelDragObject | null, + ): any; /** * 发射拖拽对象 @@ -54,7 +65,11 @@ export interface IPublicModelDragon< * @param dragObject 拖拽对象 * @param boostEvent 拖拽初始时事件 */ - boost(dragObject: IPublicTypeDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: Node): void; + boost( + dragObject: IPublicTypeDragObject, + boostEvent: MouseEvent | DragEvent, + fromRglNode?: Node, + ): void; /** * 添加投放感应区 diff --git a/packages/types/src/shell/model/index.ts b/packages/types/src/shell/model/index.ts index ffe6347ac2..6fe6b96679 100644 --- a/packages/types/src/shell/model/index.ts +++ b/packages/types/src/shell/model/index.ts @@ -33,3 +33,5 @@ export * from './setting-field'; export * from './editor-view'; export * from './skeleton-item'; export * from './simulator-render'; +export * from './area'; +export * from './widget'; diff --git a/packages/types/src/shell/model/widget.ts b/packages/types/src/shell/model/widget.ts new file mode 100644 index 0000000000..0446e7698a --- /dev/null +++ b/packages/types/src/shell/model/widget.ts @@ -0,0 +1,23 @@ +import { ISkeleton } from '@felce/lowcode-editor-skeleton'; +import { ReactNode } from 'react'; +import { IPublicTypeWidgetBaseConfig } from '../type'; + +export interface IPublicModelWidget { + readonly name: string; + readonly content: ReactNode; + readonly align?: string; + readonly isWidget: true; + readonly visible: boolean; + readonly disabled?: boolean; + readonly body: ReactNode; + readonly skeleton: ISkeleton; + readonly config: IPublicTypeWidgetBaseConfig; + + getName(): string; + getContent(): any; + show(): void; + hide(): void; + toggle(): void; + enable?(): void; + disable?(): void; +} diff --git a/packages/utils/src/is-plain-object.ts b/packages/utils/src/is-plain-object.ts index 17bc6266f1..acca4bc207 100644 --- a/packages/utils/src/is-plain-object.ts +++ b/packages/utils/src/is-plain-object.ts @@ -1,6 +1,6 @@ import { isObject } from './is-object'; -export function isPlainObject(value: any): value is any { +export function isPlainObject(value: any): value is Record { if (!isObject(value)) { return false; } From f4ab840bf647f30278ca1dd61a49fa76d4a2f36d Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 21 Oct 2024 23:06:29 +0800 Subject: [PATCH 24/94] =?UTF-8?q?chore:=20=E4=BF=AE=E5=A4=8D=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E5=A4=84workspace=E3=80=81init=E7=9A=84=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-core/src/config.ts | 2 +- packages/engine/src/engine-core.ts | 13 +++++++------ packages/shell/src/api/common.tsx | 4 ++-- packages/types/src/shell/api/common.ts | 22 ++++++++++------------ packages/workspace/src/workspace.ts | 2 +- 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/packages/editor-core/src/config.ts b/packages/editor-core/src/config.ts index dc6dbdbeb0..1c747fd299 100644 --- a/packages/editor-core/src/config.ts +++ b/packages/editor-core/src/config.ts @@ -270,7 +270,7 @@ export class EngineConfig implements IEngineConfig { * * @param {IPublicTypeEngineOptions} engineOptions */ - setEngineOptions(engineOptions: IPublicTypeEngineOptions) { + setEngineOptions(engineOptions?: IPublicTypeEngineOptions) { if (!engineOptions || !isPlainObject(engineOptions)) { return; } diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index 48b4a21c24..28182c96ac 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -232,27 +232,28 @@ export async function init( await destroy(); let engineOptions = null; if (isPlainObject(container)) { - engineOptions = container; + engineOptions = container as IPublicTypeEngineOptions; engineContainer = document.createElement('div'); engineContainer.id = 'engine'; document.body.appendChild(engineContainer); } else { engineOptions = options; - engineContainer = container; if (!container) { engineContainer = document.createElement('div'); engineContainer.id = 'engine'; document.body.appendChild(engineContainer); + } else { + engineContainer = container; } } - engineConfig.setEngineOptions(engineOptions as any); + engineConfig.setEngineOptions(engineOptions); const { Workbench } = common.skeletonCabin; if (options && options.enableWorkspaceMode) { const disposeFun = await pluginPromise; disposeFun && disposeFun(); render( - createElement(options?.WorkSpaceWorkbench || WorkSpaceWorkbench, { + createElement(options?.WorkSpaceWorkbench || (WorkSpaceWorkbench as any), { workspace: innerWorkspace, // skeleton: workspace.skeleton, className: 'engine-main', @@ -268,10 +269,10 @@ export async function init( return; } - await plugins.init(pluginPreference as any); + await plugins.init(pluginPreference); render( - createElement(options?.Workbench || Workbench, { + createElement(options?.Workbench || (Workbench as any), { skeleton: innerSkeleton, className: 'engine-main', topAreaItemClassName: 'engine-actionitem', diff --git a/packages/shell/src/api/common.tsx b/packages/shell/src/api/common.tsx index a5a3a2fc8c..8647363b6c 100644 --- a/packages/shell/src/api/common.tsx +++ b/packages/shell/src/api/common.tsx @@ -427,7 +427,7 @@ class EditorCabin implements IPublicApiCommonEditorCabin { export class Common implements IPublicApiCommon { private readonly __designerCabin: any; - private readonly __skeletonCabin: any; + private readonly __skeletonCabin: IPublicApiCommonSkeletonCabin; private readonly __editorCabin: any; private readonly __utils: Utils; @@ -460,7 +460,7 @@ export class Common implements IPublicApiCommon { return this.__designerCabin; } - get skeletonCabin(): any { + get skeletonCabin(): IPublicApiCommonSkeletonCabin { return this.__skeletonCabin; } diff --git a/packages/types/src/shell/api/common.ts b/packages/types/src/shell/api/common.ts index 05ef0da17f..26613b2e67 100644 --- a/packages/types/src/shell/api/common.ts +++ b/packages/types/src/shell/api/common.ts @@ -1,10 +1,12 @@ - import { Component, ReactNode } from 'react'; -import { IPublicTypeI18nData, IPublicTypeNodeSchema, IPublicTypeTitleContent } from '../type'; +import { + IPublicTypeI18nData, + IPublicTypeNodeSchema, + IPublicTypeTitleContent, +} from '../type'; import { IPublicEnumTransitionType } from '../enum'; export interface IPublicApiCommonUtils { - /** * 是否为合法的 schema 结构 * check if data is valid NodeSchema @@ -30,9 +32,9 @@ export interface IPublicApiCommonUtils { * @returns {(IPublicTypeNodeSchema | undefined)} */ getNodeSchemaById( - schema: IPublicTypeNodeSchema, - nodeId: string, - ): IPublicTypeNodeSchema | undefined; + schema: IPublicTypeNodeSchema, + nodeId: string, + ): IPublicTypeNodeSchema | undefined; // TODO: add comments getConvertedExtraKey(key: string): string; @@ -76,16 +78,14 @@ export interface IPublicApiCommonUtils { intl(data: IPublicTypeI18nData | string, params?: object): string; } export interface IPublicApiCommonSkeletonCabin { - /** * 编辑器框架 View * get Workbench Component */ - get Workbench(): Component; + get Workbench(): ReactNode; } export interface IPublicApiCommonEditorCabin { - /** * Title 组件 * @experimental unstable API, pay extra caution when trying to use this @@ -103,11 +103,9 @@ export interface IPublicApiCommonEditorCabin { }>; } -export interface IPublicApiCommonDesignerCabin { -} +export interface IPublicApiCommonDesignerCabin {} export interface IPublicApiCommon { - get utils(): IPublicApiCommonUtils; /** diff --git a/packages/workspace/src/workspace.ts b/packages/workspace/src/workspace.ts index f229cbab67..27a4e26401 100644 --- a/packages/workspace/src/workspace.ts +++ b/packages/workspace/src/workspace.ts @@ -37,7 +37,7 @@ const CHANGE_EVENT = 'resource.list.change'; export interface IWorkspace extends Omit< - IPublicApiWorkspace, + IPublicApiWorkspace, 'resourceList' | 'plugins' | 'openEditorWindow' | 'removeEditorWindow' > { readonly registryInnerPlugin: ( From bdd4d4e59131ac7c00cb9554674df91d53cf28e5 Mon Sep 17 00:00:00 2001 From: taojiu Date: Sun, 27 Oct 2024 23:31:32 +0800 Subject: [PATCH 25/94] chore(release): publish 1.4.1 --- lerna.json | 2 +- packages/designer/package.json | 8 ++++---- packages/editor-core/package.json | 6 +++--- packages/editor-skeleton/package.json | 10 +++++----- packages/engine/package.json | 20 +++++++++---------- packages/ignitor/package.json | 2 +- packages/plugin-command/package.json | 6 +++--- packages/plugin-designer/package.json | 8 ++++---- packages/plugin-outline-pane/package.json | 6 +++--- packages/react-renderer/package.json | 4 ++-- .../react-simulator-renderer/package.json | 10 +++++----- packages/renderer-core/package.json | 8 ++++---- packages/shell/package.json | 14 ++++++------- packages/types/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/workspace/package.json | 12 +++++------ 16 files changed, 61 insertions(+), 61 deletions(-) diff --git a/lerna.json b/lerna.json index d0d5e9aea2..4ba0590f28 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "4.0.0", - "version": "1.4.0", + "version": "1.4.1", "npmClient": "yarn", "useWorkspaces": true, "packages": [ diff --git a/packages/designer/package.json b/packages/designer/package.json index 563e3d2979..10608a3504 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-designer", - "version": "1.4.0", + "version": "1.4.1", "description": "Designer for Ali LowCode Engine", "main": "lib/index.js", "module": "es/index.js", @@ -15,9 +15,9 @@ }, "license": "MIT", "dependencies": { - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "react": "^16", "react-dom": "^16.7.0", diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json index 4775509fb9..242d2def51 100644 --- a/packages/editor-core/package.json +++ b/packages/editor-core/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-editor-core", - "version": "1.4.0", + "version": "1.4.1", "description": "Core Api for Ali lowCode engine", "license": "MIT", "main": "lib/index.js", @@ -16,8 +16,8 @@ }, "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "debug": "^4.1.1", "intl-messageformat": "^9.3.1", diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 7840e73ba7..9dde413572 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-editor-skeleton", - "version": "1.4.0", + "version": "1.4.1", "description": "alibaba lowcode editor skeleton", "main": "lib/index.js", "module": "es/index.js", @@ -19,10 +19,10 @@ ], "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "react": "^16.8.1", "react-dom": "^16.8.1" diff --git a/packages/engine/package.json b/packages/engine/package.json index a9eddba852..8aaee62691 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-engine", - "version": "1.4.0", + "version": "1.4.1", "description": "An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系", "main": "lib/engine-core.js", "module": "es/engine-core.js", @@ -19,16 +19,16 @@ "license": "MIT", "dependencies": { "@alifd/next": "^1.26.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-editor-skeleton": "1.4.1", "@felce/lowcode-engine-ext": "^1.1.0", - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-editor-skeleton": "1.4.0", - "@felce/lowcode-plugin-command": "1.4.0", - "@felce/lowcode-plugin-designer": "1.4.0", - "@felce/lowcode-plugin-outline-pane": "1.4.0", - "@felce/lowcode-shell": "1.4.0", - "@felce/lowcode-utils": "1.4.0", - "@felce/lowcode-workspace": "1.4.0", + "@felce/lowcode-plugin-command": "1.4.1", + "@felce/lowcode-plugin-designer": "1.4.1", + "@felce/lowcode-plugin-outline-pane": "1.4.1", + "@felce/lowcode-shell": "1.4.1", + "@felce/lowcode-utils": "1.4.1", + "@felce/lowcode-workspace": "1.4.1", "react": "^16.8.1", "react-dom": "^16.8.1" }, diff --git a/packages/ignitor/package.json b/packages/ignitor/package.json index e71de7e671..186ad28be6 100644 --- a/packages/ignitor/package.json +++ b/packages/ignitor/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-ignitor", - "version": "1.4.0", + "version": "1.4.1", "description": "点火器,bootstrap lce project", "main": "lib/index.js", "private": true, diff --git a/packages/plugin-command/package.json b/packages/plugin-command/package.json index 51bd003ae7..bfcea56483 100644 --- a/packages/plugin-command/package.json +++ b/packages/plugin-command/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-plugin-command", - "version": "1.4.0", + "version": "1.4.1", "description": "> TODO: description", "author": "liujuping ", "homepage": "https://github.com/fe-lce/lowcode-engine#readme", @@ -30,8 +30,8 @@ "url": "https://github.com/fe-lce/lowcode-engine/issues" }, "dependencies": { - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0" + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1" }, "devDependencies": { "@alib/build-scripts": "^0.1.18" diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json index 61b3298efd..348a6a1947 100644 --- a/packages/plugin-designer/package.json +++ b/packages/plugin-designer/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-plugin-designer", - "version": "1.4.0", + "version": "1.4.1", "description": "alibaba lowcode editor designer plugin", "files": [ "es", @@ -18,9 +18,9 @@ ], "author": "xiayang.xy", "dependencies": { - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "react": "^16.8.1", "react-dom": "^16.8.1" }, diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json index 3b57e6df1c..5998e947fe 100644 --- a/packages/plugin-outline-pane/package.json +++ b/packages/plugin-outline-pane/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-plugin-outline-pane", - "version": "1.4.0", + "version": "1.4.1", "description": "Outline pane for Ali lowCode engine", "files": [ "es", @@ -13,8 +13,8 @@ }, "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "react": "^16", "react-dom": "^16.7.0", diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index ac178de6a6..3357a54421 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-react-renderer", - "version": "1.4.0", + "version": "1.4.1", "description": "react renderer for ali lowcode engine", "main": "lib/index.js", "module": "es/index.js", @@ -22,7 +22,7 @@ ], "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-renderer-core": "1.4.0" + "@felce/lowcode-renderer-core": "1.4.1" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json index a6bd187309..daae6b8459 100644 --- a/packages/react-simulator-renderer/package.json +++ b/packages/react-simulator-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-react-simulator-renderer", - "version": "1.4.0", + "version": "1.4.1", "description": "react simulator renderer for alibaba lowcode designer", "main": "lib/index.js", "module": "es/index.js", @@ -17,10 +17,10 @@ "test:cov": "build-scripts test --config build.test.json --jest-coverage" }, "dependencies": { - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-react-renderer": "1.4.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-react-renderer": "1.4.1", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "mobx": "^6.3.0", "mobx-react": "^7.2.0", diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index 9e0b33f1a3..45bac74aa3 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-renderer-core", - "version": "1.4.0", + "version": "1.4.1", "description": "renderer core", "license": "MIT", "main": "lib/index.js", @@ -16,8 +16,8 @@ }, "dependencies": { "@alilc/lowcode-datasource-engine": "^1.0.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "debug": "^4.1.1", "fetch-jsonp": "^1.1.3", @@ -33,7 +33,7 @@ "@alib/build-scripts": "^0.1.18", "@alifd/next": "^1.26.0", "@babel/plugin-transform-typescript": "^7.16.8", - "@felce/lowcode-designer": "1.4.0", + "@felce/lowcode-designer": "1.4.1", "@testing-library/react": "^11.2.2", "@types/classnames": "^2.2.11", "@types/debug": "^4.1.5", diff --git a/packages/shell/package.json b/packages/shell/package.json index 693cfaa2ec..86f42902f1 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-shell", - "version": "1.4.0", + "version": "1.4.1", "description": "Shell Layer for AliLowCodeEngine", "main": "lib/index.js", "module": "es/index.js", @@ -14,12 +14,12 @@ "license": "MIT", "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-editor-skeleton": "1.4.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", - "@felce/lowcode-workspace": "1.4.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-editor-skeleton": "1.4.1", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", + "@felce/lowcode-workspace": "1.4.1", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", diff --git a/packages/types/package.json b/packages/types/package.json index 1a6f8f7430..10362eb7e2 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-types", - "version": "1.4.0", + "version": "1.4.1", "description": "Types for Ali lowCode engine", "files": [ "es", diff --git a/packages/utils/package.json b/packages/utils/package.json index abf50b017c..51b5b2efc9 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-utils", - "version": "1.4.0", + "version": "1.4.1", "description": "Utils for Ali lowCode engine", "files": [ "lib", @@ -14,7 +14,7 @@ }, "dependencies": { "@alifd/next": "^1.26.0", - "@felce/lowcode-types": "1.4.0", + "@felce/lowcode-types": "1.4.1", "events": "^3.3.0", "lodash": "^4.17.21", "mobx": "^6.3.0", diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 0383c958bc..cfb8514c19 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -1,6 +1,6 @@ { "name": "@felce/lowcode-workspace", - "version": "1.4.0", + "version": "1.4.1", "description": "Shell Layer for AliLowCodeEngine", "main": "lib/index.js", "module": "es/index.js", @@ -15,11 +15,11 @@ }, "license": "MIT", "dependencies": { - "@felce/lowcode-designer": "1.4.0", - "@felce/lowcode-editor-core": "1.4.0", - "@felce/lowcode-editor-skeleton": "1.4.0", - "@felce/lowcode-types": "1.4.0", - "@felce/lowcode-utils": "1.4.0", + "@felce/lowcode-designer": "1.4.1", + "@felce/lowcode-editor-core": "1.4.1", + "@felce/lowcode-editor-skeleton": "1.4.1", + "@felce/lowcode-types": "1.4.1", + "@felce/lowcode-utils": "1.4.1", "classnames": "^2.2.6", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", From 92af6b49efa19ee398dab7132e8817331f462d13 Mon Sep 17 00:00:00 2001 From: taojiu Date: Sun, 27 Oct 2024 23:41:37 +0800 Subject: [PATCH 26/94] =?UTF-8?q?docs(README):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E5=88=92=E5=92=8C=E8=BF=9B=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了前言和思想变化等内容,精简了文档结构 - 更新了当前主要任务列表,包括修复积压问题、支持自定义 workbench 等 - 新增了计划部分,列出了具体的开发任务和目标 - 保留了联系方式和致谢等内容 --- packages/engine/README-en_US.md | 36 +++++++++------------ packages/engine/README.md | 57 +++++++++++++++------------------ 2 files changed, 40 insertions(+), 53 deletions(-) diff --git a/packages/engine/README-en_US.md b/packages/engine/README-en_US.md index 6f889e5e5b..527eb6e35e 100644 --- a/packages/engine/README-en_US.md +++ b/packages/engine/README-en_US.md @@ -1,24 +1,3 @@ -## Preface - -This project is forked from [alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) (v1.3.2 on September 6, 2024). -Since the original project's version 1 has been determined to no longer have community open source maintenance, and there is no definite plan for version 2. Therefore, this project was born, and it is expected to continue open source maintenance. -Of course, from now on, related designs will also be completely independent and not related to the design of the original project's version 2. If you expect to continue following the original project's version 2 route in the future, please choose this project carefully. - -### Changes in thinking - -This project will change some ideas, abandon some peripheral function development, mainly provide core low-code functions, and be a pure low-code kernel. Modules such as workspace will have a lower priority. -More internal modules will be transferred to plugins (incomplete) and provided as default plugins instead of being encapsulated inside. The overall development direction is shifting towards a more open one. -At the same time, for each sub-module, more interfaces will be opened through the shell module to support more customized needs. -Finally, the toolchain will be upgraded as appropriate. It is planned to switch to a newer packaging tool, etc., but the priority will be relatively low. - -### Plans - -Currently, the project has just been forked. The main work is to replace the namespace. To avoid naming conflicts with the original project, the namespace of this repository is adjusted to `@felce`, which is taken from the abbreviation of lowcode-engine. -Current main tasks: - -- Adjust the namespace of the main project. -- Fix backlogged issues. -

LowCodeEngine

@@ -176,6 +155,21 @@ About Pull Request: - set the target branch to **develop** other than **main** +### Plan + +Current main tasks: + +- [ ] Fix backlog issues +- [x] Modify namespace +- [x] Support custom workbench +- [ ] Upgrade to React 18 +- [ ] Upgrade build scripts (or replace with Vite) +- [ ] Merge Vue canvas and renderer into the project +- [ ] Core module refactoring to achieve framework independence +- [ ] Independent built-in plugin for custom loading +- [ ] Independent settings plugin +- [ ] Optimize rendering performance + ## ❤️ Contributors Special thanks to everyone who contributed to this project. diff --git a/packages/engine/README.md b/packages/engine/README.md index e4a896ff98..f1a7bb9220 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -1,35 +1,3 @@ -## 前言 - -本工程 fork 于[alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) (2024 年 9 月 6 日 v1.3.2)。 - -由于原工程 V1 确定不再进行社区开源维护,V2 版没有确切计划。因此诞生了本项目,期望继续开源维护。 - -当然,自此开始相关设计也会完全独立,与原工程 V2 的设计不相关联,如果期望后续能继续走原工程 V2 路线,请慎重选择本项目。 - -### 思想变化 - -本项目将转变部分思路,舍弃部分外围的功能开发,以提供核心低码功能为主,做纯粹低代码内核。如 workspace 等模块将降低优先级。 - -更多的内部模块将转移到 plugins 中(未完成),作为默认插件提供,而不是封装到内部。整体向更开放的开发方向转变。 - -同时,针对各子模块,将通过 shell 模块开放更多的接口,以支持更多定制化需求。 - -最后,将酌情升级工具链,计划切换到更新的打包工具等,不过优先级会比较低。 - -### 计划 - -目前工程刚 fork,主要工作是进行命名空间的替换,为避免与原工程命名冲突,本仓库命名空间调整为`@felce`,取自 lowcode-engine 的缩写。 -当前主要任务: - -- 主要工程的命名空间调整 -- 修复积压问题 - -## 联系方式 - -微信搜索 kunsile-002 添加我的微信,或者扫码加群: - - -

LowCodeEngine

@@ -186,6 +154,31 @@ lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-de 关于提交 PR: 请将目标合并分支设置为 **develop**,不要指定 **main** 分支,在发布正式版本后,develop 分支将会合入 main 分支。 +### 计划 + +当前主要任务: + +- [ ] 修复积压问题 +- [x] 修改namespace +- [x] 支持自定义workbentch +- [ ] 升级到react18 +- [ ] 升级build-scripts(或者替换成vite) +- [ ] 合并vue画布和renderer到工程内部 +- [ ] 核心模块重构,实现框架无关 +- [ ] 独立内置插件,实现自定义加载 +- [ ] 独立settings插件 +- [ ] 优化渲染性能 + +## 声明 + +本工程 fork 于[alibaba/lowcode-engine](https://github.com/alibaba/lowcode-engine) (2024 年 9 月 6 日 v1.3.2)。 + +## 联系方式 + +微信搜索 kunsile-002 添加我的微信,或者扫码加群: + + + ## ❤️ 致谢 感谢所有为引擎项目贡献力量的同学们~ From fd42491c3e0adfdf602bd65d1d1a3f8e9a880e24 Mon Sep 17 00:00:00 2001 From: taojiu Date: Mon, 28 Oct 2024 01:39:09 +0800 Subject: [PATCH 27/94] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0vue=E7=9A=84ren?= =?UTF-8?q?derer=E5=92=8Csimulator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/faq/faq017.md | 6 +- docs/docs/participate/index.md | 8 + packages/engine/README-en_US.md | 17 +- packages/engine/README.md | 17 +- packages/ignitor/build.json | 3 +- packages/ignitor/package.json | 1 + packages/react-renderer/package.json | 1 + .../react-simulator-renderer/package.json | 3 + packages/vue-renderer/CHANGELOG.md | 135 +++ packages/vue-renderer/README.md | 1 + packages/vue-renderer/build.json | 3 + packages/vue-renderer/build.plugin.cjs | 10 + packages/vue-renderer/build.umd.json | 24 + packages/vue-renderer/package.json | 40 + packages/vue-renderer/src/config.ts | 27 + packages/vue-renderer/src/core/base.ts | 89 ++ packages/vue-renderer/src/core/hoc.ts | 168 ++++ packages/vue-renderer/src/core/index.ts | 2 + packages/vue-renderer/src/core/live.ts | 54 ++ packages/vue-renderer/src/core/use.ts | 807 ++++++++++++++++++ .../vue-renderer/src/data-source/index.ts | 163 ++++ .../vue-renderer/src/data-source/interface.ts | 26 + .../vue-renderer/src/data-source/request.ts | 140 +++ .../vue-renderer/src/hooks/current-node.ts | 48 ++ packages/vue-renderer/src/hooks/index.ts | 2 + .../src/hooks/renderer-context.ts | 42 + packages/vue-renderer/src/index.ts | 4 + packages/vue-renderer/src/renderer.ts | 113 +++ packages/vue-renderer/src/renderers/index.ts | 6 + packages/vue-renderer/src/renderers/page.ts | 19 + packages/vue-renderer/src/utils/array.ts | 5 + packages/vue-renderer/src/utils/i18n.ts | 25 + packages/vue-renderer/src/utils/index.ts | 4 + packages/vue-renderer/src/utils/parse.ts | 101 +++ packages/vue-renderer/src/utils/scope.ts | 67 ++ packages/vue-renderer/tsconfig.json | 4 + packages/vue-simulator-renderer/CHANGELOG.md | 132 +++ packages/vue-simulator-renderer/README.md | 1 + packages/vue-simulator-renderer/build.json | 3 + .../vue-simulator-renderer/build.plugin.cjs | 10 + .../vue-simulator-renderer/build.umd.json | 29 + packages/vue-simulator-renderer/package.json | 40 + .../vue-simulator-renderer/public/index.html | 10 + .../src/buildin-components/index.ts | 3 + .../src/buildin-components/leaf.ts | 26 + .../src/buildin-components/page.ts | 24 + .../src/buildin-components/slot.ts | 46 + packages/vue-simulator-renderer/src/host.ts | 3 + .../vue-simulator-renderer/src/index.less | 122 +++ packages/vue-simulator-renderer/src/index.ts | 19 + .../vue-simulator-renderer/src/interface.ts | 52 ++ .../src/simulator-view.ts | 72 ++ .../vue-simulator-renderer/src/simulator.ts | 349 ++++++++ .../src/utils/build-components.ts | 94 ++ .../src/utils/check-node.ts | 11 + .../src/utils/closest-node.ts | 71 ++ .../src/utils/comp-node.ts | 65 ++ .../src/utils/cursor.ts | 61 ++ .../src/utils/find-dom-nodes.ts | 57 ++ .../src/utils/get-client-rects.ts | 15 + .../vue-simulator-renderer/src/utils/index.ts | 8 + .../src/utils/logger.ts | 3 + .../src/utils/navtive-selection.ts | 15 + packages/vue-simulator-renderer/tsconfig.json | 4 + scripts/build.sh | 6 + scripts/sync.sh | 4 +- 66 files changed, 3520 insertions(+), 20 deletions(-) create mode 100644 packages/vue-renderer/CHANGELOG.md create mode 100644 packages/vue-renderer/README.md create mode 100644 packages/vue-renderer/build.json create mode 100644 packages/vue-renderer/build.plugin.cjs create mode 100644 packages/vue-renderer/build.umd.json create mode 100644 packages/vue-renderer/package.json create mode 100644 packages/vue-renderer/src/config.ts create mode 100644 packages/vue-renderer/src/core/base.ts create mode 100644 packages/vue-renderer/src/core/hoc.ts create mode 100644 packages/vue-renderer/src/core/index.ts create mode 100644 packages/vue-renderer/src/core/live.ts create mode 100644 packages/vue-renderer/src/core/use.ts create mode 100644 packages/vue-renderer/src/data-source/index.ts create mode 100644 packages/vue-renderer/src/data-source/interface.ts create mode 100644 packages/vue-renderer/src/data-source/request.ts create mode 100644 packages/vue-renderer/src/hooks/current-node.ts create mode 100644 packages/vue-renderer/src/hooks/index.ts create mode 100644 packages/vue-renderer/src/hooks/renderer-context.ts create mode 100644 packages/vue-renderer/src/index.ts create mode 100644 packages/vue-renderer/src/renderer.ts create mode 100644 packages/vue-renderer/src/renderers/index.ts create mode 100644 packages/vue-renderer/src/renderers/page.ts create mode 100644 packages/vue-renderer/src/utils/array.ts create mode 100644 packages/vue-renderer/src/utils/i18n.ts create mode 100644 packages/vue-renderer/src/utils/index.ts create mode 100644 packages/vue-renderer/src/utils/parse.ts create mode 100644 packages/vue-renderer/src/utils/scope.ts create mode 100644 packages/vue-renderer/tsconfig.json create mode 100644 packages/vue-simulator-renderer/CHANGELOG.md create mode 100644 packages/vue-simulator-renderer/README.md create mode 100644 packages/vue-simulator-renderer/build.json create mode 100644 packages/vue-simulator-renderer/build.plugin.cjs create mode 100644 packages/vue-simulator-renderer/build.umd.json create mode 100644 packages/vue-simulator-renderer/package.json create mode 100644 packages/vue-simulator-renderer/public/index.html create mode 100644 packages/vue-simulator-renderer/src/buildin-components/index.ts create mode 100644 packages/vue-simulator-renderer/src/buildin-components/leaf.ts create mode 100644 packages/vue-simulator-renderer/src/buildin-components/page.ts create mode 100644 packages/vue-simulator-renderer/src/buildin-components/slot.ts create mode 100644 packages/vue-simulator-renderer/src/host.ts create mode 100644 packages/vue-simulator-renderer/src/index.less create mode 100644 packages/vue-simulator-renderer/src/index.ts create mode 100644 packages/vue-simulator-renderer/src/interface.ts create mode 100644 packages/vue-simulator-renderer/src/simulator-view.ts create mode 100644 packages/vue-simulator-renderer/src/simulator.ts create mode 100644 packages/vue-simulator-renderer/src/utils/build-components.ts create mode 100644 packages/vue-simulator-renderer/src/utils/check-node.ts create mode 100644 packages/vue-simulator-renderer/src/utils/closest-node.ts create mode 100644 packages/vue-simulator-renderer/src/utils/comp-node.ts create mode 100644 packages/vue-simulator-renderer/src/utils/cursor.ts create mode 100644 packages/vue-simulator-renderer/src/utils/find-dom-nodes.ts create mode 100644 packages/vue-simulator-renderer/src/utils/get-client-rects.ts create mode 100644 packages/vue-simulator-renderer/src/utils/index.ts create mode 100644 packages/vue-simulator-renderer/src/utils/logger.ts create mode 100644 packages/vue-simulator-renderer/src/utils/navtive-selection.ts create mode 100644 packages/vue-simulator-renderer/tsconfig.json diff --git a/docs/docs/faq/faq017.md b/docs/docs/faq/faq017.md index f2c7afa273..33f9576bf7 100644 --- a/docs/docs/faq/faq017.md +++ b/docs/docs/faq/faq017.md @@ -3,9 +3,7 @@ title: vue 画布支持说明 sidebar_position: 17 tags: [FAQ] --- + #### 低代码引擎官方是否支持 Vue 画布 -短期没有支持的计划 -#### 社区研发的 Vue 画布 -##### 肯耐珂萨团队实现的 Vue 画布 -github:[https://github.com/KNXCloud/lowcode-engine-vue](https://github.com/KNXCloud/lowcode-engine-vue) +fork修改自 github:[https://github.com/KNXCloud/lowcode-engine-vue](https://github.com/KNXCloud/lowcode-engine-vue) diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md index f468bad42a..c833dc5463 100644 --- a/docs/docs/participate/index.md +++ b/docs/docs/participate/index.md @@ -48,6 +48,14 @@ npm install && npm run setup [ "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", "http://localhost:5555/css/ReactSimulatorRenderer.css" + ], + [ + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/js/vue-simulator-renderer.js", + "http://localhost:5555/js/VueSimulatorRenderer.js" + ], + [ + "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/vue-simulator-renderer.css", + "http://localhost:5555/css/VueSimulatorRenderer.css" ] ] } diff --git a/packages/engine/README-en_US.md b/packages/engine/README-en_US.md index 1223894fea..b367cb30eb 100644 --- a/packages/engine/README-en_US.md +++ b/packages/engine/README-en_US.md @@ -90,27 +90,30 @@ init(document.getElementById('lce')); #### unpkg ```html -https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js -https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-engine@1.4.1/dist/js/engine-core.js +https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-vue-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js ``` #### npmmirror ```html -https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js -https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-engine/1.4.1/files/dist/js/engine-core.js +https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.1/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-vue-simulator-renderer/1.4.1/files/dist/js/react-simulator-renderer.js ``` #### jsdelivr ```html -https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.1/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-vue-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js ``` #### Method 5: Use your own cdn -Pass the files under packages/engine/dist and packages/react-simulator-renderer/dist in the source code to your cdn provider +Pass the files under packages/engine/dist and packages/react-simulator-renderer/dist(packages/vue-simulator-renderer/dist) in the source code to your cdn provider ## 🔗 Related Links diff --git a/packages/engine/README.md b/packages/engine/README.md index 56353cc436..9688550b72 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -90,27 +90,30 @@ init(document.getElementById('lce')); #### unpkg ```html -https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js -https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-engine@1.4.1/dist/js/engine-core.js +https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js +https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.1/dist/js/vue-simulator-renderer.js ``` #### npmmirror ```html -https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js -https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-engine/1.4.1/files/dist/js/engine-core.js +https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.1/files/dist/js/react-simulator-renderer.js +https://registry.npmmirror.com/@felce/lowcode-vue-simulator-renderer/1.4.1/files/dist/js/react-simulator-renderer.js ``` #### jsdelivr ```html -https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.1/dist/js/engine-core.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js +https://cdn.jsdelivr.net/npm/@felce/lowcode-vue-simulator-renderer@1.4.1/dist/js/react-simulator-renderer.js ``` #### 使用自有 cdn -将源码中 packages/engine/dist 和 packages/react-simulator-renderer/dist 下的文件传至你的 cdn 提供商 +将源码中 packages/engine/dist 和 packages/react-simulator-renderer/dist(packages/vue-simulator-renderer/dist) 下的文件传至你的 cdn 提供商 ## 🔗 相关链接 diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json index 6055d193ba..61c714a654 100644 --- a/packages/ignitor/build.json +++ b/packages/ignitor/build.json @@ -1,7 +1,8 @@ { "entry": { "AliLowCodeEngine": "../engine/src/index.ts", - "ReactSimulatorRenderer": "../react-simulator-renderer/src/index.ts" + "ReactSimulatorRenderer": "../react-simulator-renderer/src/index.ts", + "VueSimulatorRenderer": "../vue-simulator-renderer/src/index.ts" }, "vendor": false, "devServer": { diff --git a/packages/ignitor/package.json b/packages/ignitor/package.json index 186ad28be6..de5442b8bb 100644 --- a/packages/ignitor/package.json +++ b/packages/ignitor/package.json @@ -15,6 +15,7 @@ "license": "MIT", "devDependencies": { "@alib/build-scripts": "^0.1.18", + "build-plugin-react-app": "^1.8.0", "fs-extra": "^10.0.0" }, "repository": { diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index 3357a54421..c11db3dae0 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -28,6 +28,7 @@ "@alib/build-scripts": "^0.1.18", "build-plugin-fusion": "^0.1.0", "build-plugin-moment-locales": "^0.1.0", + "build-plugin-react-app": "^1.8.0", "react": "^16.4.1", "react-dom": "^16.4.1", "react-test-renderer": "^16" diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json index daae6b8459..3532ec0304 100644 --- a/packages/react-simulator-renderer/package.json +++ b/packages/react-simulator-renderer/package.json @@ -29,6 +29,9 @@ }, "devDependencies": { "@alib/build-scripts": "^0.1.18", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "build-plugin-react-app": "^1.8.0", "@types/classnames": "^2.2.7", "@types/node": "^13.7.1", "@types/react": "^16", diff --git a/packages/vue-renderer/CHANGELOG.md b/packages/vue-renderer/CHANGELOG.md new file mode 100644 index 0000000000..b44f8c06aa --- /dev/null +++ b/packages/vue-renderer/CHANGELOG.md @@ -0,0 +1,135 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.4.7](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.6...v1.4.7) (2022-08-30) + +### Bug Fixes + +- **vue-renderer:** 修复数据源初始化无法正常设置值到 state 中 ([97f3b08](https://github.com/fe-lce/lowcode-engine-vue/commit/97f3b08bf5fcb745ccc84bcb537a3170a53b3564)) + +## [1.4.6](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.5...v1.4.6) (2022-08-10) + +### Bug Fixes + +- **vue-renderer:** 修复跨层级更新子组件时组件渲染异常 ([44bbabb](https://github.com/fe-lce/lowcode-engine-vue/commit/44bbabbef9c7b945225a4a60031e479f6faf5b51)) + +## [1.4.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.2...v1.4.3) (2022-07-21) + +### Bug Fixes + +- **vue-renderer:** 调整 dataSource options 处理逻辑 ([9b9642a](https://github.com/fe-lce/lowcode-engine-vue/commit/9b9642ac8bb78bd7f77af9ae99f6596e7aa00106)) + +### Features + +- **hooks:** 提供 hooks 用于自定义组件和画布通讯 ([7af68a9](https://github.com/fe-lce/lowcode-engine-vue/commit/7af68a985fd1374d3a2d6a17b80e735a30bb54fe)) +- **vue-renderer:** 新增 dataSource 对象便于调用数据源接口 ([08c9704](https://github.com/fe-lce/lowcode-engine-vue/commit/08c970457ba5691df14e8d122ba2192a90a3e529)) + +## [1.4.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.1...v1.4.2) (2022-07-14) + +### Bug Fixes + +- **vue-renderer:** 修复 schema id 为纯数字开头时导致的渲染报错 ([f98faa7](https://github.com/fe-lce/lowcode-engine-vue/commit/f98faa78758d76a3af65ba87736424442ec6aada)) + +## [1.4.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.0...v1.4.1) (2022-07-12) + +### Bug Fixes + +- **vue-renderer:** 修复默认插槽错误渲染导致部分组件渲染异常 ([8c116de](https://github.com/fe-lce/lowcode-engine-vue/commit/8c116debd7a2db4526b4d8a51aab4569cd419c1e)) +- **vue-renderer:** 修复组件非根属性更新导致的组件渲染异常 ([95f950e](https://github.com/fe-lce/lowcode-engine-vue/commit/95f950eeda727e48f3a5c9426b8c654f12268d9d)) + +# [1.4.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.5...v1.4.0) (2022-07-06) + +### Bug Fixes + +- **vue-renderer:** fix v-model binding failure ([844f4c2](https://github.com/fe-lce/lowcode-engine-vue/commit/844f4c253c6a4b9e235759cb558852cb4fba390a)) +- **vue-renderer:** ignore hidden in live mode ([9977c0a](https://github.com/fe-lce/lowcode-engine-vue/commit/9977c0ac76f4b6f207a85e4f0cf106c01ce724c5)) + +## [1.3.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.4...v1.3.5) (2022-07-04) + +### Features + +- **vue-renderer:** supports locked default slot ([af706b9](https://github.com/fe-lce/lowcode-engine-vue/commit/af706b94f6557962e36da5d705f921e0bd07a85e)) +- **vue-simulator-renderer:** exports renderer content ([f8f2e62](https://github.com/fe-lce/lowcode-engine-vue/commit/f8f2e629bcda43fe23e30ddae0e1ec633d86c60e)) + +## [1.3.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.1...v1.3.2) (2022-07-03) + +### Bug Fixes + +- **vue-renderer:** dataSource request error when params is empty ([5ddec10](https://github.com/fe-lce/lowcode-engine-vue/commit/5ddec107086a3fe53e5e45da144b18c3df83ca68)) + +## [1.3.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.0...v1.3.1) (2022-07-02) + +### Features + +- **vue-renderer:** supports ref prop ([9883532](https://github.com/fe-lce/lowcode-engine-vue/commit/9883532b717c53a7025dc3cf8f6282de96f7ebf5)) + +# [1.3.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.2.0...v1.3.0) (2022-07-01) + +### Features + +- **vue-renderer:** change slot params handle ([0139b3c](https://github.com/fe-lce/lowcode-engine-vue/commit/0139b3cb62e08a4fc2c29734485b65bef92710c7)) + +# [1.2.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.5...v1.2.0) (2022-06-30) + +### Features + +- **vue-renderer:** enhance slot and optimize scope ([f1454ea](https://github.com/fe-lce/lowcode-engine-vue/commit/f1454eaae738cf8c0a12e0e34bd5a576f43cc85c)) + +## [1.1.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.4...v1.1.5) (2022-06-30) + +### Features + +- **vue-renderer:** adapter naive private props ([2a36671](https://github.com/fe-lce/lowcode-engine-vue/commit/2a36671f0ec8b3295e5664e18549a345be64b2a1)) + +## [1.1.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.3...v1.1.4) (2022-06-27) + +### Bug Fixes + +- **vue-renderer:** extra props obtain failed ([a73ddea](https://github.com/fe-lce/lowcode-engine-vue/commit/a73ddea49688aa56aebebd8bf07db862053bf441)) + +## [1.1.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.2...v1.1.3) (2022-06-27) + +**Note:** Version bump only for package @felce/lowcode-vue-renderer + +## [1.1.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.1...v1.1.2) (2022-06-24) + +**Note:** Version bump only for package @felce/lowcode-vue-renderer + +## [1.1.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.0...v1.1.1) (2022-06-24) + +### Features + +- update versions ([ed20df8](https://github.com/fe-lce/lowcode-engine-vue/commit/ed20df8055dd13c75638774a9b12f409fdec8c94)) +- **vue-renderer|vue-simulator-renderer:** modify the el access method ([af454ea](https://github.com/fe-lce/lowcode-engine-vue/commit/af454ea47d44298ef04fd0ead2359403e2c1e77d)) + +# [1.1.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.5...v1.1.0) (2022-06-16) + +### Features + +- **vue-renderer:** supports v-model prop compile ([0ea42ae](https://github.com/fe-lce/lowcode-engine-vue/commit/0ea42ae71209c01eace47445c33421fef76a9f9e)) + +## [1.0.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.4...v1.0.5) (2022-06-15) + +### Bug Fixes + +- **vue-renderer:** 修复 Hoc 跨层级更新节点导致的渲染异常 ([aa683a0](https://github.com/fe-lce/lowcode-engine-vue/commit/aa683a0b767f1d80a89dbfeb5a1d480f4f08c6a3)) + +## [1.0.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.3...v1.0.4) (2022-06-15) + +### Bug Fixes + +- **vue-renderer:** 修复 hoc 移除节点功能异常 ([051ef81](https://github.com/fe-lce/lowcode-engine-vue/commit/051ef8183bd0ee7c7e3b6c8565543e739c987d5e)) + +## [1.0.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.2...v1.0.3) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-renderer + +## [1.0.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.1...v1.0.2) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-renderer + +## 1.0.1 (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-renderer diff --git a/packages/vue-renderer/README.md b/packages/vue-renderer/README.md new file mode 100644 index 0000000000..fe84005413 --- /dev/null +++ b/packages/vue-renderer/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file diff --git a/packages/vue-renderer/build.json b/packages/vue-renderer/build.json new file mode 100644 index 0000000000..6f284f44f9 --- /dev/null +++ b/packages/vue-renderer/build.json @@ -0,0 +1,3 @@ +{ + "plugins": ["build-plugin-component"] +} diff --git a/packages/vue-renderer/build.plugin.cjs b/packages/vue-renderer/build.plugin.cjs new file mode 100644 index 0000000000..b7589abbc6 --- /dev/null +++ b/packages/vue-renderer/build.plugin.cjs @@ -0,0 +1,10 @@ +module.exports = ({ onGetWebpackConfig }) => { + onGetWebpackConfig((config) => { + config.module + .rule('mjs$') + .test(/\.mjs$/) + .include.add(/node_modules/) + .end() + .type('javascript/auto'); + }); +}; diff --git a/packages/vue-renderer/build.umd.json b/packages/vue-renderer/build.umd.json new file mode 100644 index 0000000000..ef38139cb7 --- /dev/null +++ b/packages/vue-renderer/build.umd.json @@ -0,0 +1,24 @@ +{ + "entry": { + "vue-renderer": "./src/index.ts" + }, + "sourceMap": false, + "library": "LCVueRenderer", + "libraryTarget": "umd", + "externals": { + "vue": "var window.Vue" + }, + "outputAssetsPath": { + "js": "", + "css": "" + }, + "polyfill": false, + "outputDir": "dist", + "vendor": false, + "ignoreHtmlTemplate": true, + "plugins": [ + "build-plugin-react-app", + ["build-plugin-moment-locales", { "locales": ["zh-cn"] }], + "./build.plugin.cjs" + ] +} diff --git a/packages/vue-renderer/package.json b/packages/vue-renderer/package.json new file mode 100644 index 0000000000..868da6d885 --- /dev/null +++ b/packages/vue-renderer/package.json @@ -0,0 +1,40 @@ +{ + "name": "@felce/lowcode-vue-renderer", + "main": "./lib/index.js", + "module": "./es/index.js", + "unpkg": "./dist/vue-renderer.js", + "version": "1.4.1", + "files": [ + "es", + "lib", + "dist" + ], + "scripts": { + "build": "build-scripts build", + "build:umd": "build-scripts build --config=build.umd.json", + "lint:type": "tsc -p ./tsconfig.json --noEmit", + "prepublishOnly": "pnpm build && pnpm build:umd" + }, + "homepage": "https://unpkg.com/@felce/lowcode-vue-renderer@1.4.1/build/index.html", + "dependencies": { + "@felce/lowcode-types": "^1.4.1", + "intl-messageformat": "^10.1.4", + "lodash-es": "^4.17.21" + }, + "devDependencies": { + "@felce/lowcode-designer": "^1.4.1", + "@types/lodash-es": "^4.17.6", + "build-plugin-component": "^1.11.0", + "build-plugin-moment-locales": "^0.1.3", + "build-plugin-react-app": "^1.8.0", + "vue": "^3.2.38" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "repository": { + "type": "http", + "url": "https://github.com/fe-lce/lowcode-engine-vue/tree/main/packages/vue-renderer" + } +} diff --git a/packages/vue-renderer/src/config.ts b/packages/vue-renderer/src/config.ts new file mode 100644 index 0000000000..9608ca5822 --- /dev/null +++ b/packages/vue-renderer/src/config.ts @@ -0,0 +1,27 @@ +import { RendererComponent } from './core'; +import { RENDERER_COMPS } from './renderers'; + +export type RendererModules = Record; + +export class Config { + private renderers: RendererModules = { ...RENDERER_COMPS }; + private configProvider: any = null; + + setConfigProvider(comp: any) { + this.configProvider = comp; + } + + getConfigProvider() { + return this.configProvider; + } + + setRenderers(renderers: RendererModules) { + this.renderers = renderers; + } + + getRenderers() { + return this.renderers; + } +} + +export default new Config(); diff --git a/packages/vue-renderer/src/core/base.ts b/packages/vue-renderer/src/core/base.ts new file mode 100644 index 0000000000..ef7b1cb689 --- /dev/null +++ b/packages/vue-renderer/src/core/base.ts @@ -0,0 +1,89 @@ +import { IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@felce/lowcode-types'; +import { Node } from '@felce/lowcode-designer'; +import { Component, ComponentPublicInstance, PropType, VNodeProps } from 'vue'; +import { BlockScope, I18nMessages, RuntimeScope } from '../utils'; + +export const rendererProps = { + __scope: { + type: Object as PropType, + default: undefined, + }, + __schema: { + type: Object as PropType, + required: true, + }, + __designMode: { + type: String as PropType<'live' | 'design'>, + default: 'live', + }, + __components: { + type: Object as PropType>, + required: true, + }, + __locale: { + type: String, + default: undefined, + }, + __messages: { + type: Object as PropType, + default: () => ({}), + }, + __getNode: { + type: Function as PropType<(id: string) => Node | null>, + required: true, + }, + __triggerCompGetCtx: { + type: Function as PropType< + (schema: IPublicTypeNodeSchema, ref: ComponentPublicInstance) => void + >, + required: true, + }, +} as const; + +export interface RendererProps { + __scope?: BlockScope; + __locale?: string; + __messages?: I18nMessages; + __designMode?: 'live' | 'design'; + __schema: IPublicTypeRootSchema; + __components: Record; + __getNode: (id: string) => Node | null; + __triggerCompGetCtx: (schema: IPublicTypeNodeSchema, ref: ComponentPublicInstance) => void; +} + +export const baseRendererPropKeys = Object.keys(rendererProps) as (keyof RendererProps)[]; + +export type RendererComponent = { + new (...args: any[]): { + $props: VNodeProps & RendererProps; + }; +}; + +export const leafProps = { + comp: { + type: Object as PropType, + default: undefined, + }, + scope: { + type: Object as PropType, + default: () => ({}), + }, + schema: { + type: Object as PropType, + default: () => ({}), + }, +} as const; + +export interface LeafProps { + comp?: Component | null; + scope: RuntimeScope; + schema: IPublicTypeNodeSchema; +} + +export const leafPropKeys = Object.keys(rendererProps) as (keyof LeafProps)[]; + +export type LeafComponent = { + new (...args: any[]): { + $props: VNodeProps & LeafProps; + }; +}; diff --git a/packages/vue-renderer/src/core/hoc.ts b/packages/vue-renderer/src/core/hoc.ts new file mode 100644 index 0000000000..7e3b6c4a81 --- /dev/null +++ b/packages/vue-renderer/src/core/hoc.ts @@ -0,0 +1,168 @@ +import { ISlotNode } from '@felce/lowcode-designer'; +import { IPublicEnumTransformStage } from '@felce/lowcode-types'; +import { isJSSlot } from '@felce/lowcode-utils'; +import { isNil } from 'lodash-es'; +import { ComponentPublicInstance, defineComponent, Fragment, h, onUnmounted, reactive } from 'vue'; +import { useRendererContext } from '../hooks'; +import { ensureArray } from '../utils'; +import { leafProps } from './base'; +import { PropSchemaMap, SlotSchemaMap, useLeaf } from './use'; + +export const Hoc = defineComponent({ + name: 'Hoc', + props: leafProps, + setup(props) { + const { triggerCompGetCtx } = useRendererContext(); + const { node, locked, buildSchema, buildProps, buildSlots, buildLoop, buildShow } = + useLeaf(props); + + const { show, hidden, condition } = buildShow(props.schema); + const { loop, updateLoop, updateLoopArg, buildLoopScope } = buildLoop(props.schema); + + const compProps: PropSchemaMap = reactive({}); + const compSlots: SlotSchemaMap = reactive({}); + const result = buildSchema(); + Object.assign(compProps, result.props); + Object.assign(compSlots, result.slots); + + // hoc + if (node) { + const disposeFunctions: Array = []; + onUnmounted(() => disposeFunctions.forEach((dispose) => dispose?.())); + disposeFunctions.push( + node.onChildrenChange(() => { + const schema = node.export(IPublicEnumTransformStage.Render); + compSlots.default = ensureArray(schema.children); + }), + ); + disposeFunctions.push( + node.onPropChange((info) => { + const { key, prop, newValue, oldValue } = info; + + /** + * 是否为根属性的修改 + * + * @remark + * + * 对于 props + * + * ```js + * { + * color: 'red', + * border: { + * top: 12, + * left: 20, + * } + * } + * ``` + * + * 则,对于属性 `color` 的修改为根属性的修改,而对于 `border.top` 的修改为非根属性的修改 + */ + const isRootProp = prop.path.length === 1; + + /** 根属性的 key 值 */ + const rootPropKey: string = prop.path[0]; + + if (isRootProp && key) { + if (key === '___isLocked___') { + // 设计器控制组件锁定 + locked.value = newValue; + } else if (key === '___hidden___') { + // 设计器控制组件渲染 + hidden(newValue); + } else if (key === '___condition___') { + // 条件渲染更新 v-if + condition(newValue); + } else if (key === '___loop___') { + // 循环数据更新 v-for + updateLoop(newValue); + } else if (key === '___loopArgs___') { + // 循环参数初始化 (item, index) + updateLoopArg(newValue); + } else if (key === 'children') { + // 默认插槽更新 + if (isJSSlot(newValue)) { + const slotNode: ISlotNode = prop.slotNode; + const schema = slotNode.export(IPublicEnumTransformStage.Render); + compSlots.default = schema; + } else if (!isNil(newValue)) { + compSlots.default = ensureArray(newValue); + } else { + delete compSlots.default; + } + } else if (isJSSlot(newValue)) { + // 具名插槽更新 + const slotNode: ISlotNode = prop.slotNode; + const schema = slotNode.export(IPublicEnumTransformStage.Render); + compSlots[key] = schema; + } else if (isNil(newValue) && isJSSlot(oldValue)) { + // 具名插槽移除 + delete compSlots[key]; + } else { + // 普通根属性更新 + compProps[key] = newValue; + } + } else if (rootPropKey === '___loopArgs___') { + // 循环参数更新 (item, index) + updateLoopArg(newValue, key); + } else if (rootPropKey) { + // 普通非根属性更新 + compProps[rootPropKey] = node.getPropValue(rootPropKey); + } + }), + ); + } + + const getRef = (inst: ComponentPublicInstance) => { + triggerCompGetCtx(props.schema, inst); + }; + + return { + show, + loop, + compSlots, + compProps, + getRef, + buildSlots, + buildProps, + buildLoopScope, + }; + }, + render() { + const { + comp, + show, + loop, + compProps, + compSlots, + getRef, + buildSlots, + buildProps, + buildLoopScope, + } = this; + + if (!show) return null; + if (!comp) return h('div', 'component not found'); + + if (!loop) { + const props = buildProps(compProps, null, { ref: getRef }); + const slots = buildSlots(compSlots); + return h(comp, props, slots); + } + + if (!Array.isArray(loop)) { + console.warn('[vue-renderer]: loop must be array', loop); + return null; + } + + return h( + Fragment, + loop.map((item, index, arr) => { + const blockScope = buildLoopScope(item, index, arr.length); + const props = buildProps(compProps, blockScope, { ref: getRef }); + const slots = buildSlots(compSlots, blockScope); + return h(comp, props, slots); + }), + ); + }, +}); diff --git a/packages/vue-renderer/src/core/index.ts b/packages/vue-renderer/src/core/index.ts new file mode 100644 index 0000000000..abb99343c2 --- /dev/null +++ b/packages/vue-renderer/src/core/index.ts @@ -0,0 +1,2 @@ +export * from './base'; +export * from './use'; diff --git a/packages/vue-renderer/src/core/live.ts b/packages/vue-renderer/src/core/live.ts new file mode 100644 index 0000000000..b015b0f6c5 --- /dev/null +++ b/packages/vue-renderer/src/core/live.ts @@ -0,0 +1,54 @@ +import { defineComponent, Fragment, h } from 'vue'; +import { useLeaf } from './use'; +import { leafProps } from './base'; + +export const Live = defineComponent({ + props: leafProps, + setup(props) { + const { buildSchema, buildProps, buildLoop, buildSlots, buildShow } = useLeaf(props); + + const { show } = buildShow(props.schema); + const { loop, loopArgs } = buildLoop(props.schema); + const { props: compProps, slots: compSlots } = buildSchema(); + + return { + show, + loop, + loopArgs, + compProps, + compSlots, + buildSlots, + buildProps, + }; + }, + render() { + const { show, comp, loop, loopArgs, compProps, compSlots, buildProps, buildSlots } = + this; + + if (!show) return null; + if (!comp) return h('div', 'component not found'); + if (!loop) { + return h(comp, buildProps(compProps), buildSlots(compSlots)); + } + + if (!Array.isArray(loop)) { + console.warn('[vue-renderer]: loop must be array', loop); + return null; + } + + return h( + Fragment, + loop.map((item, index) => { + const blockScope = { + [loopArgs[0]]: item, + [loopArgs[1]]: index, + }; + return h( + comp, + buildProps(compProps, blockScope), + buildSlots(compSlots, blockScope) + ); + }) + ); + }, +}); diff --git a/packages/vue-renderer/src/core/use.ts b/packages/vue-renderer/src/core/use.ts new file mode 100644 index 0000000000..b17fd75ab8 --- /dev/null +++ b/packages/vue-renderer/src/core/use.ts @@ -0,0 +1,807 @@ +import { Prop } from '@felce/lowcode-designer'; +import { + CompositeValue, + IPublicEnumTransformStage, + IPublicTypeNodeData, + IPublicTypeNodeSchema, + IPublicTypeSlotSchema, + JSFunction, +} from '@felce/lowcode-types'; +import { + isDOMText, + isJSExpression, + isJSFunction, + isJSSlot, + isNodeSchema, + isObject, +} from '@felce/lowcode-utils'; +import { camelCase, isFunction, isNil, isString, pickBy } from 'lodash-es'; +import { + Component, + computed, + ComputedRef, + createTextVNode, + getCurrentInstance, + h, + inject, + InjectionKey, + isRef, + onBeforeMount, + onBeforeUnmount, + onBeforeUpdate, + onErrorCaptured, + onMounted, + onUnmounted, + onUpdated, + provide, + reactive, + Ref, + ref, + Slot, + Slots, + toDisplayString, + toRaw, + VNode, +} from 'vue'; +import { createDataSourceManager } from '../data-source'; +import { getCurrentNodeKey, getRendererContextKey, useRendererContext } from '../hooks'; +import { + BlockScope, + ensureArray, + getI18n, + MaybeArray, + mergeScope, + parseExpression, + parseSchema, + parseSlotScope, + RuntimeScope, +} from '../utils'; +import { LeafProps, RendererProps } from './base'; +import { Hoc } from './hoc'; +import { Live } from './live'; + +const currentNodeKey = getCurrentNodeKey(); + +const VUE_LIFTCYCLES_MAP = { + beforeMount: onBeforeMount, + mounted: onMounted, + beforeUpdate: onBeforeUpdate, + updated: onUpdated, + beforeUnmount: onBeforeUnmount, + unmounted: onUnmounted, + errorCaptured: onErrorCaptured, +}; + +// 适配 react lifecycle +const REACT_ADATPOR_LIFTCYCLES_MAP = { + componentDidMount: onMounted, + componentDidCatch: onErrorCaptured, + shouldComponentUpdate: onBeforeUpdate, + componentWillUnmount: onBeforeUnmount, +}; + +const LIFTCYCLES_MAP = { + ...VUE_LIFTCYCLES_MAP, + ...REACT_ADATPOR_LIFTCYCLES_MAP, +}; + +export function isLifecycleKey(key: string): key is keyof typeof LIFTCYCLES_MAP { + return key in LIFTCYCLES_MAP; +} + +export type SlotSchemaMap = { + [x: string]: IPublicTypeSlotSchema | IPublicTypeNodeData[] | undefined; +}; + +export type PropSchemaMap = { + [x: string]: unknown; +}; + +export function isNodeData(val: unknown): val is IPublicTypeNodeData | IPublicTypeNodeData[] { + if (Array.isArray(val)) { + return val.every((item) => isNodeData(item)); + } + return isDOMText(val) || isNodeSchema(val) || isJSExpression(val); +} + +export function isVueComponent(val: unknown): val is Component { + if (isFunction(val)) return true; + if (isObject(val) && ('render' in val || 'setup' in val)) { + return true; + } + return false; +} + +const IS_LOCKED: InjectionKey> = Symbol('IS_LOCKED'); + +export function useLocked(defaultValue: boolean) { + const selfLocked = ref(defaultValue); + const parentLocked = inject(IS_LOCKED, null); + + const locked = computed({ + get: () => parentLocked?.value || selfLocked.value, + set: (val) => (selfLocked.value = val), + }); + + provide(IS_LOCKED, locked); + + return locked; +} + +export function useLeaf(props: LeafProps) { + const { components, getNode, designMode } = useRendererContext(); + + const node = props.schema.id ? getNode(props.schema.id) : null; + // 仅在设计模式下生效 + const locked = node ? useLocked(node.isLocked) : ref(false); + + const isDesignMode = designMode === 'design'; + + provide(currentNodeKey, { + mode: designMode, + node: node, + isDesignerEnv: isDesignMode, + }); + + /** + * 渲染节点 vnode + * @param schema - 节点 schema + * @param base - 节点 leaf 组件,根据 designMode 的不同而不同 + * @param blockScope - 节点块级作用域 + * @param comp - 节点渲染的组件,若不传入,则根据节点的 componentName 推断 + */ + const render = ( + schema: IPublicTypeNodeData, + base: Component, + blockScope?: MaybeArray, + comp?: Component, + ) => { + const mergedScope = mergeScope(props.scope, blockScope); + + // 若 schema 不为 NodeSchema,则直接渲染 + if (isString(schema)) { + return createTextVNode(schema); + } else if (isJSExpression(schema)) { + const result = parseExpression(schema, mergedScope); + return createTextVNode(toDisplayString(result)); + } + + // 若不传入 comp,则根据节点的 componentName 推断 + if (!comp) { + const { componentName } = schema; + comp = components[componentName]; + } + + if (!comp) return h('div', 'component not found'); + + // 应用节点组件的私有属性,适配 naive-ui 的 grid,popover 等组件 + const privateProperties = pickBy(comp, (_, k) => { + return !!k.match(/^__[\s\S]+__/); + }); + if (Object.keys(privateProperties).length > 0) { + base = Object.create(base, Object.getOwnPropertyDescriptors(privateProperties)); + } + + // 渲染 leaf 组件 + return h(base, { + key: schema.id, + comp, + scope: mergedScope, + schema: schema, + } as any); + }; + + /** + * 渲染节点vnode (design 模式) + * @param nodeSchema - 节点 schema + * @param blockScope - 节点块级作用域 + * @param comp - 节点渲染的组件,若不传入,则根据节点的 componentName 推断 + */ + const renderHoc = ( + nodeSchema: IPublicTypeNodeData, + blockScope?: MaybeArray, + comp?: Component, + ): VNode | null => { + return render(nodeSchema, Hoc, blockScope, comp); + }; + + /** + * 渲染节点vnode (live 模式) + * @param nodeSchema - 节点 schema + * @param blockScope - 节点块级作用域 + * @param comp - 节点渲染的组件,若不传入,则根据节点的 componentName 推断 + */ + const renderLive = ( + nodeSchema: IPublicTypeNodeData, + blockScope?: MaybeArray, + comp?: Component, + ): VNode | null => { + return render(nodeSchema, Live, blockScope, comp); + }; + + /** + * 渲染组件 + */ + const renderComp = isDesignMode ? renderHoc : renderLive; + + /** + * 构建当前节点的 schema,获取 schema 的属性及插槽 + * + * - node 的 children 会被处理成默认插槽 + * - 类型为 JSSlot 的 prop 会被处理为具名插槽 + * - prop 和 node 中同时存在 children 时,prop children 会覆盖 node children + * - className prop 会被处理为 class prop + */ + const buildSchema = () => { + const schema = node ? node.export(IPublicEnumTransformStage.Render) : props.schema; + + const slotProps: SlotSchemaMap = {}; + const normalProps: PropSchemaMap = {}; + + // 处理节点默认插槽,可能会被属性插槽覆盖 + slotProps.default = ensureArray(schema.children); + + Object.entries(schema.props ?? {}).forEach(([key, val]) => { + if (isJSSlot(val)) { + // 处理具名插槽 + const prop = node?.getProp(key); + if (prop && prop.slotNode) { + // design 模式,从 prop 对象到处 schema + const slotSchema = prop.slotNode.export(IPublicEnumTransformStage.Render); + slotProps[key] = slotSchema; + } else if (val.value) { + // live 模式,直接获取 schema 值,若值为空则不渲染插槽 + slotProps[key] = { + componentName: 'Slot', + params: val.params, + children: val.value, + }; + } + } else if (key === 'className') { + // 适配 react className + normalProps.class = val; + } else if (key === 'children' && isNodeData(val)) { + // 处理属性中的默认插槽,属性的重默认插槽会覆盖节点 chilren 插槽 + slotProps.default = ensureArray(val); + } else { + // 处理普通属性 + normalProps[key] = val; + } + }); + + return { props: normalProps, slots: slotProps }; + }; + + /** + * 将单个属性 schema 转化成真实值 + * + * @param schema - 属性 schema + * @param scope - 当前作用域 + * @param blockScope - 当前块级作用域 + * @param prop - 属性对象,仅在 design 模式下有值 + */ + const buildProp = ( + schema: unknown, + scope: RuntimeScope, + blockScope?: BlockScope | null, + prop?: Prop | null, + ): any => { + if (isJSExpression(schema) || isJSFunction(schema)) { + // 处理表达式和函数 + return parseExpression(schema, scope); + } else if (isJSSlot(schema)) { + // 处理属性插槽 + let slotParams: string[]; + let slotSchema: IPublicTypeNodeData[] | IPublicTypeSlotSchema; + if (prop?.slotNode) { + // design 模式,从 prop 中导出 schema + slotSchema = prop.slotNode.export(IPublicEnumTransformStage.Render); + slotParams = slotSchema.params ?? []; + } else { + // live 模式,直接获取 schema 值 + slotSchema = ensureArray(schema.value); + slotParams = schema.params ?? []; + } + + // 返回 slot 函数 + return (...args: unknown[]) => { + const slotScope = parseSlotScope(args, slotParams); + const vnodes: VNode[] = []; + ensureArray(slotSchema).forEach((item) => { + const vnode = renderComp(item, [blockScope, slotScope]); + vnode && vnodes.push(vnode); + }); + return vnodes; + }; + } else if (Array.isArray(schema)) { + // 属性值为 array,递归处理属性的每一项 + return schema.map((item, idx) => buildProp(item, scope, blockScope, prop?.get(idx))); + } else if (schema && isObject(schema)) { + // 属性值为 object,递归处理属性的每一项 + const res: Record = {}; + Object.keys(schema).forEach((key) => { + if (key.startsWith('__')) return; + const val = schema[key]; + const childProp = prop?.get(key); + res[key] = buildProp(val, scope, blockScope, childProp); + }); + return res; + } + return schema; + }; + + /** + * 构建 ref prop,将 string ref 其转化为 function + * + * @param schema - prop schema + * @param scope - 当前作用域 + * @param blockScope - 当前块级作用域 + * @param prop - 属性对象,仅在 design 模式下有值 + */ + const buildRefProp = ( + schema: unknown, + scope: RuntimeScope, + blockScope?: BlockScope | null, + prop?: Prop | null, + ): any => { + if (isString(schema)) { + const field = schema; + let lastInst: unknown = null; + return (inst: unknown): void => { + let refs = scope.$.refs; + if (Object.keys(refs).length === 0) { + refs = scope.$.refs = {}; + } + if (isNil(scope.__loopRefIndex)) { + refs[field] = inst; + if (field in scope) { + scope[field] = inst; + } + } else { + let target = refs[field] as unknown[]; + if (!Array.isArray(target)) { + target = refs[field] = []; + if (field in scope) { + target = scope[field] = target; + } + } else if (field in scope) { + const scopeTarget = scope[field]; + if (!Array.isArray(scopeTarget) || toRaw(scopeTarget) !== target) { + target = scope[field] = target; + } else { + target = scopeTarget; + } + } + if (isNil(inst)) { + const idx = target.indexOf(lastInst); + idx >= 0 && target.splice(idx, 1); + } else { + target[scope.__loopRefIndex] = inst; + } + } + lastInst = inst; + }; + } else { + const propValue = buildProp(schema, scope, blockScope, prop); + return isString(propValue) ? buildRefProp(propValue, scope, blockScope, prop) : propValue; + } + }; + + /** + * 处理属性 schema,主要处理的目标: + * - ref 逻辑 (合并 ref function) + * - 事件绑定逻辑 (重复注册的事件转化为数组) + * - 双向绑定逻辑 (v-model) + * - 指令绑定逻辑 TODO + * @param target - 组件属性目标对象 + * @param key - 属性名 + * @param val - 属性值 + */ + const processProp = (target: Record, key: string, val: unknown) => { + if (key.startsWith('v-model')) { + // 双向绑定逻辑 + const matched = key.match(/v-model(?::(\w+))?$/); + if (!matched) return target; + + const valueProp = camelCase(matched[1] ?? 'modelValue'); + const eventProp = `onUpdate:${valueProp}`; + + // 若值为表达式,则自定注册 onUpdate 事件,实现双向绑定 + if (isJSExpression(val)) { + const updateEventFn: JSFunction = { + type: 'JSFunction', + value: `function ($event) {${val.value} = $event}`, + }; + target[eventProp] = + eventProp in target + ? ensureArray(target[eventProp]).concat(updateEventFn) + : updateEventFn; + } + target[valueProp] = val; + } else if (key.startsWith('v-') && isJSExpression(val)) { + // TODO: 指令绑定逻辑 + } else if (key.match(/^on[A-Z]/) && isJSFunction(val)) { + // 事件绑定逻辑 + + // normalize: onUpdateXxx => onUpdate:xxx + const matched = key.match(/onUpdate(?::?(\w+))$/); + if (matched) { + key = `onUpdate:${camelCase(matched[1])}`; + } + + // 若事件名称重复,则自动转化为数组 + target[key] = key in target ? ensureArray(target[key]).concat(val) : val; + } else if (key === 'ref' && 'ref' in target) { + // ref 合并逻辑 + const sourceRef = val; + const targetRef = target.ref; + if (isFunction(targetRef) && isFunction(sourceRef)) { + target.ref = (...args: unknown[]) => { + sourceRef(...args); + targetRef(...args); + }; + } else { + target.ref = [targetRef, sourceRef].filter(isFunction).pop(); + } + } else { + target[key] = val; + } + }; + + /** + * 构建属性,将整个属性 schema 转化为真实的属性值 + * @param propsSchema - 属性 schema + * @param blockScope - 当前块级作用域 + * @param extraProps - 运行时附加属性 + */ + const buildProps = ( + propsSchema: Record, + blockScope?: BlockScope | null, + extraProps?: Record, + ): any => { + // 属性预处理 + const processed: Record = {}; + Object.keys(propsSchema).forEach((propKey) => { + processProp(processed, propKey, propsSchema[propKey]); + }); + + // 将属性 schema 转化成真实的属性值 + const parsedProps: Record = {}; + const mergedScope = blockScope ? mergeScope(props.scope, blockScope) : props.scope; + Object.keys(processed).forEach((propName) => { + const schema = processed[propName]; + parsedProps[propName] = + propName === 'ref' + ? buildRefProp(schema, mergedScope, blockScope, node?.getProp(propName)) + : buildProp(schema, mergedScope, blockScope, node?.getProp(propName)); + }); + + // 应用运行时附加的属性值 + if (extraProps) { + Object.keys(extraProps).forEach((propKey) => { + processProp(parsedProps, propKey, extraProps[propKey]); + }); + } + + return parsedProps; + }; + + const buildLoop = (schema: IPublicTypeNodeSchema) => { + const loop = ref() as Ref; + const loopArgs = ref(['item', 'index']) as Ref<[string, string]>; + + if (schema.loop) loop.value = schema.loop; + if (schema.loopArgs) { + schema.loopArgs.forEach((v, i) => { + loopArgs.value[i] = v; + }); + } + + return { + loop: computed(() => { + if (!loop.value) return null; + return parseSchema(loop.value, props.scope); + }), + loopArgs, + updateLoop(value: CompositeValue): void { + loop.value = value; + }, + updateLoopArg(value: string | [string, string], idx?: number): void { + if (Array.isArray(value)) { + value.forEach((v, i) => { + loopArgs.value[i] = v; + }); + } else if (!isNil(idx)) { + loopArgs.value[idx] = value; + } + }, + buildLoopScope(item, index, len): BlockScope { + const scope = props.scope; + const offset = scope.__loopRefOffset ?? 0; + const [itemKey, indexKey] = loopArgs.value; + return { + [itemKey]: item, + [indexKey]: index, + __loopScope: true, + __loopRefIndex: offset + index, + __loopRefOffset: len * index, + }; + }, + } as { + loop: ComputedRef; + loopArgs: Ref<[string, string]>; + updateLoop(value: CompositeValue): void; + /** + * 更新所有循环参数 + * + * @example + * + * updateLoopArg(['item', 'index']) + * + * @param value - 新的参数 + */ + updateLoopArg(value: [string, string]): void; + /** + * 更新指定参数 + * + * @example + * + * updateLoopArg('item', 0); + * + * @param value - 新的参数 + * @param idx - 参数的位置 + */ + updateLoopArg(value: string, idx?: number | string): void; + /** + * 构建循环局部作用域 + * + * @param item - 循环项 + * @param index - 循环索引 + * @param len - 循环目标数组长度 + */ + buildLoopScope(item: unknown, index: number, len: number): BlockScope; + }; + }; + + const buildShow = (schema: IPublicTypeNodeSchema) => { + const hidden = isDesignMode ? ref(schema.hidden ?? false) : ref(false); + const condition = ref(schema.condition ?? true); + + const show = computed(() => { + if (hidden.value) return false; + const { value: showCondition } = condition; + if (typeof showCondition === 'boolean') return showCondition; + return !!parseSchema(showCondition, props.scope); + }); + + return { + show, + hidden: (val: boolean) => { + hidden.value = val; + }, + condition: (val: unknown) => { + condition.value = val; + }, + }; + }; + + /** + * 装饰默认插槽,当插槽为空时,渲染插槽占位符,便于拖拽 + * + * @param slot - 插槽渲染函数 + */ + const decorateDefaultSlot = (slot: Slot): Slot => { + return (...args: unknown[]) => { + const vnodes = slot(...args); + if (!vnodes.length) { + const isLocked = locked.value; + const className = { + 'lc-container-locked': isLocked, + 'lc-container-placeholder': true, + }; + const placeholder = isLocked ? '锁定元素及子元素无法编辑' : '拖拽组件或模板到这里'; + vnodes.push(h('div', { class: className }, placeholder)); + } + return vnodes; + }; + }; + + /** + * 构建所有插槽 schema,将 schema 构建成 slot 函数 + * @param slots - 插槽 schema + * @param blockScope - 插槽块级作用域 + */ + const buildSlots = (slots: SlotSchemaMap, blockScope?: BlockScope | null): Slots => { + return Object.keys(slots).reduce( + (prev, next) => { + const slotSchema = slots[next]; + const isDefaultSlot = next === 'default'; + + // 插槽数据为 null 或 undefined 时不渲染插槽 + if (isNil(slotSchema)) return prev; + + // 默认插槽内容为空,且当前节点不是容器节点时,不渲染默认插槽 + if ( + isDefaultSlot && + !node?.isContainer() && + Array.isArray(slotSchema) && + slotSchema.length === 0 + ) + return prev; + + let renderSlot: Slot; + + if (Array.isArray(slotSchema)) { + // 插槽为数组,则当前插槽不可拖拽编辑,直接渲染插槽内容 + renderSlot = () => { + return slotSchema + .map((item) => renderComp(item, blockScope)) + .filter((vnode): vnode is VNode => !isNil(vnode)); + }; + } else if (slotSchema.id) { + // 存在 slot id,则当前插槽可拖拽编辑,渲染 Hoc + renderSlot = (...args: unknown[]) => { + const vnode = renderComp(slotSchema, [ + blockScope, + parseSlotScope(args, slotSchema.params ?? []), + ]); + return isNil(vnode) ? [] : [vnode]; + }; + } else { + // 不存在 slot id,插槽不可拖拽编辑,直接渲染插槽内容 + renderSlot = (...args: unknown[]) => { + const slotScope = parseSlotScope(args, slotSchema.params ?? []); + return ensureArray(slotSchema.children) + .map((item) => renderComp(item, [blockScope, slotScope])) + .filter((vnode): vnode is VNode => !isNil(vnode)); + }; + } + + prev[next] = + isDefaultSlot && isDesignMode && node?.isContainer() + ? decorateDefaultSlot(renderSlot) // 当节点为容器节点,且为设计模式下,则装饰默认插槽 + : renderSlot; + + return prev; + }, + {} as Record, + ); + }; + + return { + node, + locked, + buildShow, + renderComp, + buildLoop, + buildProps, + buildSlots, + buildSchema, + }; +} + +export function useRenderer(props: RendererProps) { + const { scope } = useRootScope(props); + + const leafProps: LeafProps = reactive({ + comp: null, + scope: scope, + schema: computed(() => props.__schema), + }); + + const contextKey = getRendererContextKey(); + + const designModeRef = computed(() => props.__designMode); + const componentsRef = computed(() => props.__components); + + provide( + contextKey, + reactive({ + designMode: designModeRef, + components: componentsRef, + getNode: (id: string) => props.__getNode?.(id) ?? null, + triggerCompGetCtx: computed(() => props.__triggerCompGetCtx), + }), + ); + + return { scope, designModeRef, componentsRef, ...useLeaf(leafProps) }; +} + +export function useRootScope(rendererProps: RendererProps) { + const { __schema: schema, __scope: extraScope } = rendererProps; + + const { + props: propsSchema, + state: stateSchema, + methods: methodsSchema, + lifeCycles: lifeCyclesSchema, + } = schema ?? {}; + + // 将全局属性配置应用到 scope 中 + const instance = getCurrentInstance()!; + const scope = instance.proxy! as RuntimeScope; + const data = (instance.data = reactive({} as Record)); + + // 处理 props + const props = parseSchema(propsSchema) ?? {}; + Object.assign(instance.props, props); + + // 处理 state + const states = parseSchema(stateSchema) ?? {}; + Object.assign(data, states); + + // 处理 methods + const methods = parseSchema(methodsSchema, scope) ?? {}; + Object.assign(scope, methods); + + // 处理 lifecycle + const lifeCycles = parseSchema(lifeCyclesSchema, scope); + if (isObject(lifeCycles)) { + Object.keys(lifeCycles).forEach((lifeCycle) => { + if (isLifecycleKey(lifeCycle)) { + const callback = lifeCycles[lifeCycle]; + const hook = LIFTCYCLES_MAP[lifeCycle]; + isFunction(callback) && hook(callback, instance); + } + }); + } + + // 处理 css + let style: HTMLStyleElement | null = null; + if (schema.id) { + style = document.querySelector(`style[data-id="${schema.id}"]`); + } + if (schema.css) { + if (!style) { + style = document.createElement('style'); + if (schema.id) { + style.setAttribute('data-id', schema.id); + } + const head = document.head || document.getElementsByTagName('head')[0]; + head.appendChild(style); + } + if (style.innerHTML !== schema.css) { + style.innerHTML = schema.css; + } + } else if (style) { + style.parentElement?.removeChild(style); + } + + /** + * 添加属性到作用域,若属性为 ref,则添加到 data 中,否则添加到 ctx 中 + * + * @param source - 作用域属性来源 + */ + const addToScope = (source: BlockScope) => { + Object.keys(source).forEach((key) => { + const val = source[key]; + const target = isRef(val) ? data : scope; + Reflect.set(target, key, val); + }); + }; + + // 处理 renderer 额外传入的 scope + extraScope && addToScope(extraScope); + + // 处理 i18n + const i18n = (key: string, values?: any) => { + const { __locale: locale, __messages: messages } = rendererProps; + return getI18n(key, values, locale, messages); + }; + + const currentLocale = computed(() => rendererProps.__locale); + addToScope({ i18n, currentLocale }); + + // 处理 dataSource + const { dataSource, dataSourceMap, reloadDataSource } = createDataSourceManager( + schema.dataSource ?? { list: [], dataHandler: undefined }, + scope, + ); + addToScope({ dataSource, dataSourceMap, reloadDataSource }); + reloadDataSource(); + + return { + scope, + addToScope, + }; +} diff --git a/packages/vue-renderer/src/data-source/index.ts b/packages/vue-renderer/src/data-source/index.ts new file mode 100644 index 0000000000..18ff435dad --- /dev/null +++ b/packages/vue-renderer/src/data-source/index.ts @@ -0,0 +1,163 @@ +import { InterpretDataSource, InterpretDataSourceConfig } from '@felce/lowcode-types'; +import { isPlainObject } from '@felce/lowcode-utils'; +import { isBoolean, isFunction, isUndefined } from 'lodash-es'; +import { computed, reactive, ref, shallowRef } from 'vue'; +import { parseSchema, RuntimeScope } from '../utils'; +import { DataSourceStatus, RequestParams } from './interface'; +import { request, Response } from './request'; + +const same = (v: T) => v; +const noop = () => void 0; +const alwaysTrue = () => true; + +export type ExecutionFunc = ( + params?: RequestParams, + otherOptions?: Record, +) => Promise; + +export interface DataSourceItem { + data: T; + error: unknown; + loading: boolean; + status: DataSourceStatus; + isInit: boolean; + load: ExecutionFunc; +} + +export function createDataSourceItem( + config: InterpretDataSourceConfig, + request: CallableFunction | null, + scope: RuntimeScope, +): DataSourceItem { + const data = shallowRef(); + const error = shallowRef(); + const status = ref(DataSourceStatus.Initial); + const loading = computed(() => status.value === DataSourceStatus.Loading); + const isInit = computed(() => !!parseSchema(config.isInit, scope)); + + const { willFetch, shouldFetch, dataHandler, errorHandler } = config; + + const hooks = { + willFetch: willFetch ? parseSchema(willFetch, scope) : same, + shouldFetch: shouldFetch ? parseSchema(shouldFetch, scope) : alwaysTrue, + dataHandler: dataHandler ? parseSchema(dataHandler, scope) : (res: Response) => res.data, + errorHandler: errorHandler ? parseSchema(errorHandler, scope) : noop, + }; + + const load: ExecutionFunc = async (inputParams, otherOptions = {}) => { + try { + const { type, options, id } = config; + const { headers: inputHeaders, assignToScope = true, ...inputOptions } = otherOptions; + if (!request) { + throw new Error('unsupport fetch type: ' + type); + } + + const shouldFetch = isFunction(hooks.shouldFetch) + ? hooks.shouldFetch() + : isBoolean(hooks.shouldFetch) + ? hooks.shouldFetch + : true; + + if (!shouldFetch) { + status.value = DataSourceStatus.Error; + throw new Error(`the ${id} request should not fetch, please check the condition`); + } + + const { + params: parsedParams, + headers: parsedHeaders, + ...parsedOptions + } = parseSchema(options ?? {}, scope); + + status.value = DataSourceStatus.Loading; + const res = await request( + hooks.willFetch({ + ...parsedOptions, + ...inputOptions, + headers: { + ...(parsedHeaders as object), + ...(inputHeaders as object), + }, + params: + isPlainObject(parsedParams) && isPlainObject(inputParams) + ? { + ...parsedParams, + ...inputParams, + } + : (inputParams ?? parsedParams), + }), + ); + status.value = DataSourceStatus.Loaded; + const _data = (data.value = hooks.dataHandler(res)); + if (!isUndefined(data) && assignToScope) { + scope[id] = _data; + } + return _data; + } catch (err) { + status.value = DataSourceStatus.Error; + error.value = err; + hooks.errorHandler(err); + throw err; + } + }; + + return reactive({ + data, + error, + loading, + status, + isInit, + load, + }); +} + +export function createDataSourceManager( + { list, dataHandler }: InterpretDataSource, + scope: RuntimeScope, +) { + const dataSource: Record = {}; + const dataSourceMap: Record = {}; + + list.forEach((next) => { + const config = { dataHandler, ...next }; + const dataSourceItem = createDataSourceItem(config, request, scope); + + const func: ExecutionFunc = (params, otherOptions) => { + const mergedOptions = { + assignToScope: false, + ...otherOptions, + }; + return dataSourceItem.load(params, mergedOptions); + }; + + dataSource[next.id] = func; + dataSourceMap[next.id] = dataSourceItem; + }); + + /** + * 重新加载数据源 + * + * - 若传入 id 则加载对应 id 的数据源 + * - 若不传入 id,则加载 isInit 为 true 的数据源 + */ + const reloadDataSource = ( + id?: string, + params?: RequestParams, + otherOptions?: Record, + ) => { + if (id) { + const dataSource = dataSourceMap[id]; + if (!dataSource) { + throw new Error('dataSource not found, id: ' + id); + } + return dataSource.load(params, otherOptions); + } + const promises = Object.keys(dataSourceMap) + .map((id) => dataSourceMap[id]) + .filter((ds) => ds.isInit) + .map((ds) => ds.load()); + return Promise.all(promises); + }; + + return { dataSource, dataSourceMap, reloadDataSource }; +} diff --git a/packages/vue-renderer/src/data-source/interface.ts b/packages/vue-renderer/src/data-source/interface.ts new file mode 100644 index 0000000000..3c9e43d75e --- /dev/null +++ b/packages/vue-renderer/src/data-source/interface.ts @@ -0,0 +1,26 @@ +export type ResponseType = 'blob' | 'arrayBuffer' | 'formData' | 'text' | 'json'; + +export type RequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS'; + +export type RequestParams = Record; + +export interface RequestOptions { + uri: string; + params: RequestParams; + method: RequestMethod; + isCors: boolean; + timeout: number; + headers: Record; + responseType?: ResponseType; +} + +export enum DataSourceStatus { + /** 初始状态,尚未加载 */ + Initial = 'init', + /** 正在加载 */ + Loading = 'loading', + /** 已加载(无错误) */ + Loaded = 'loaded', + /** 加载出错了 */ + Error = 'error', +} diff --git a/packages/vue-renderer/src/data-source/request.ts b/packages/vue-renderer/src/data-source/request.ts new file mode 100644 index 0000000000..b7ee961c6b --- /dev/null +++ b/packages/vue-renderer/src/data-source/request.ts @@ -0,0 +1,140 @@ +import { isPlainObject } from '@felce/lowcode-utils'; +import { RequestOptions, ResponseType } from './interface'; + +function serializeParams(obj: Record) { + const result: string[] = []; + Object.keys(obj).forEach((key) => { + const val = obj[key]; + if (val === null || val === undefined || val === '') { + return; + } + if (typeof val === 'object') { + result.push(`${key}=${encodeURIComponent(JSON.stringify(val))}`); + } else { + result.push(`${key}=${encodeURIComponent(String(val))}`); + } + }); + return result.join('&'); +} + +function buildUrl(dataAPI: string, params?: Record) { + if (!params) return dataAPI; + const paramStr = serializeParams(params); + if (paramStr) { + return dataAPI.indexOf('?') > 0 ? `${dataAPI}&${paramStr}` : `${dataAPI}?${paramStr}`; + } + return dataAPI; +} + +function find(o: Record, k: string): [string, string] | [] { + for (const key in o) { + if (key.toLowerCase() === k) { + return [o[key], key]; + } + } + return []; +} + +function isValidResponseType(type: string): type is ResponseType { + return ['arrayBuffer', 'blob', 'formData', 'json', 'text'].includes(type); +} + +function createFormData(data: Record): FormData { + const formData = new FormData(); + for (const key in data) { + const value = data[key]; + if (value instanceof Blob) { + formData.append(key, value); + } else { + formData.append(key, String(value)); + } + } + return formData; +} + +const bodyParseStrategies: Record) => BodyInit> = { + 'application/json': (data) => JSON.stringify(data), + 'multipart/form-data': (data) => (isPlainObject(data) ? createFormData(data) : data), + 'application/x-www-form-urlencoded': (data) => serializeParams(data), +}; + +function parseRequestBody(contentType: string, data: Record): BodyInit { + const parser = Object.keys(bodyParseStrategies).find((key) => contentType.includes(key)); + return parser ? bodyParseStrategies[parser](data) : (data as unknown as BodyInit); +} + +export class RequestError extends Error { + constructor( + message: string, + public code: number, + public data?: T, + ) { + super(message); + } +} + +export class Response { + constructor( + public code: number, + public data: T, + ) {} +} + +export async function request(options: RequestOptions): Promise { + const { uri, method, timeout, params = {}, headers = {}, responseType = 'json' } = options; + + let url: string; + const requestHeaders: Record = { + Accept: 'application/json', + ...headers, + }; + + const fetchOptions: RequestInit = { + method, + headers: requestHeaders, + }; + + if (method === 'GET' || method === 'DELETE' || method === 'OPTIONS') { + url = buildUrl(uri, params); + } else { + url = uri; + const [contentType, key] = find(requestHeaders, 'content-type'); + fetchOptions.body = parseRequestBody(contentType ?? 'application/json', params); + + if (contentType === 'multipart/form-data') { + key && delete requestHeaders[key]; + } + } + + if (timeout) { + const controller = new AbortController(); + fetchOptions.signal = controller.signal; + setTimeout(() => controller.abort(), timeout); + } + + const res = await fetch(url, fetchOptions); + const code = res.status; + + if (code >= 200 && code < 300) { + if (code === 204) { + if (method === 'DELETE') { + return new Response(code, null); + } else { + throw new RequestError(res.statusText, code); + } + } else { + if (!isValidResponseType(responseType)) { + throw new RequestError(`invalid response type: ${responseType}`, -1); + } + return new Response(code, await res[responseType]()); + } + } else if (code >= 400) { + try { + const data = await res.json(); + throw new RequestError(res.statusText, code, data); + } catch { + throw new RequestError(res.statusText, code); + } + } + throw new RequestError(res.statusText, code); +} diff --git a/packages/vue-renderer/src/hooks/current-node.ts b/packages/vue-renderer/src/hooks/current-node.ts new file mode 100644 index 0000000000..22eff78e2b --- /dev/null +++ b/packages/vue-renderer/src/hooks/current-node.ts @@ -0,0 +1,48 @@ +import { Node } from '@felce/lowcode-designer'; +import { IPublicTypeNodeSchema } from '@alilc/lowcode-types'; +import { inject, InjectionKey } from 'vue'; +import { DesignMode } from './renderer-context'; + +export interface EnvNode { + mode: DesignMode; + node: Node | null; + isDesignerEnv: boolean; +} + +export interface DesignerEnvNode extends EnvNode { + mode: 'design'; + node: Node; + isDesignerEnv: true; +} + +export interface LiveEnvNode extends EnvNode { + mode: 'live'; + node: null; + isDesignerEnv: false; +} + +export type CurrentNode = DesignerEnvNode | LiveEnvNode; + +export function getCurrentNodeKey(): InjectionKey { + let key = (window as any).__currentNode; + if (!key) { + key = Symbol('__currentNode'); + (window as any).__currentNode = key; + } + return key; +} + +export function useCurrentNode(): CurrentNode { + const key = getCurrentNodeKey(); + return inject( + key, + () => { + return { + mode: 'live', + node: null, + isDesignerEnv: false, + } as LiveEnvNode; + }, + true, + ); +} diff --git a/packages/vue-renderer/src/hooks/index.ts b/packages/vue-renderer/src/hooks/index.ts new file mode 100644 index 0000000000..1b6daacb55 --- /dev/null +++ b/packages/vue-renderer/src/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './current-node'; +export * from './renderer-context'; diff --git a/packages/vue-renderer/src/hooks/renderer-context.ts b/packages/vue-renderer/src/hooks/renderer-context.ts new file mode 100644 index 0000000000..377aa0f900 --- /dev/null +++ b/packages/vue-renderer/src/hooks/renderer-context.ts @@ -0,0 +1,42 @@ +import { Component, ComponentPublicInstance, InjectionKey, inject, getCurrentInstance } from 'vue'; +import { Node } from '@felce/lowcode-designer'; +import { IPublicTypeNodeSchema } from '@alilc/lowcode-types'; + +export type DesignMode = 'live' | 'design'; + +export interface RendererContext { + readonly components: Record; + readonly designMode: DesignMode; + getNode(id: string): Node | null; + triggerCompGetCtx(schema: IPublicTypeNodeSchema, val: ComponentPublicInstance): void; +} + +export function getRendererContextKey(): InjectionKey { + let key = (window as any).__rendererContext; + if (!key) { + key = Symbol('__rendererContext'); + (window as any).__rendererContext = key; + } + return key; +} + +export function useRendererContext() { + const key = getRendererContextKey(); + return inject( + key, + () => { + const props = getCurrentInstance()?.props ?? {}; + return { + components: getPropValue(props, 'components', {}), + designMode: getPropValue(props, 'designMode', 'live'), + getNode: getPropValue(props, 'getNode', () => null), + triggerCompGetCtx: getPropValue(props, 'triggerCompGetCtx', () => void 0), + }; + }, + true, + ); +} + +function getPropValue(props: Record, key: string, defaultValue: T): T { + return (props[key] || props[`__${key}`] || defaultValue) as T; +} diff --git a/packages/vue-renderer/src/index.ts b/packages/vue-renderer/src/index.ts new file mode 100644 index 0000000000..c20a5a7cb8 --- /dev/null +++ b/packages/vue-renderer/src/index.ts @@ -0,0 +1,4 @@ +export * from './core'; +export { default as config, type Config } from './config'; +export { Renderer as default } from './renderer'; +export type { RendererProps } from './renderer'; diff --git a/packages/vue-renderer/src/renderer.ts b/packages/vue-renderer/src/renderer.ts new file mode 100644 index 0000000000..95b99f1998 --- /dev/null +++ b/packages/vue-renderer/src/renderer.ts @@ -0,0 +1,113 @@ +import { IPublicTypeNodeSchema, IPublicTypeRootSchema } from '@felce/lowcode-types'; +import { Node } from '@felce/lowcode-designer'; +import { PropType, Component, ComponentPublicInstance, h, computed, defineComponent } from 'vue'; +import config from './config'; +import { RENDERER_COMPS } from './renderers'; +import { I18nMessages, BlockScope } from './utils'; + +interface RendererProps { + scope?: BlockScope; + schema: IPublicTypeRootSchema; + components: Record; + designMode?: 'live' | 'design'; + device?: string; + locale?: string; + messages?: I18nMessages; + getNode?: (id: string) => Node | null; + onCompGetCtx?: (schema: IPublicTypeNodeSchema, ref: ComponentPublicInstance) => void; +} + +const Renderer = defineComponent({ + props: { + scope: { + type: Object as PropType, + default: undefined, + }, + schema: { + type: Object as PropType, + required: true, + }, + components: { + type: Object as PropType>, + required: true, + }, + /** 设计模式,可选值:live、design */ + designMode: { + type: String as PropType<'live' | 'design'>, + default: 'live', + }, + /** 设备信息 */ + device: { + type: String, + default: undefined, + }, + /** 语言 */ + locale: { + type: String, + default: undefined, + }, + messages: { + type: Object as PropType, + default: () => ({}), + }, + getNode: { + type: Function as PropType<(id: string) => Node | null>, + default: undefined, + }, + /** 组件获取 ref 时触发的钩子 */ + onCompGetCtx: { + type: Function as PropType< + (schema: IPublicTypeNodeSchema, ref: ComponentPublicInstance) => void + >, + default: undefined, + }, + }, + setup(props: RendererProps) { + const triggerCompGetCtx = (schema: IPublicTypeNodeSchema, val: ComponentPublicInstance) => { + val && props.onCompGetCtx?.(schema, val); + }; + + const getNode = (id: string) => props.getNode?.(id) ?? null; + + const componentsRef = computed(() => ({ + ...config.getRenderers(), + ...props.components, + })); + + const renderContent = () => { + const { value: components } = componentsRef; + const { schema, scope, locale, messages, designMode } = props; + if (!schema) return null; + + const { componentName } = schema!; + let Comp = components[componentName] || components[`${componentName}Renderer`]; + if (Comp && !(Comp as any).__renderer__) { + Comp = RENDERER_COMPS[`${componentName}Renderer`]; + } + + return Comp + ? h(Comp, { + key: schema.__ctx ? `${schema.__ctx.lceKey}_${schema.__ctx.idx || '0'}` : schema.id, + __scope: scope, + __schema: schema, + __locale: locale, + __messages: messages, + __components: components, + __designMode: designMode, + __getNode: getNode, + __triggerCompGetCtx: triggerCompGetCtx, + } as any) + : null; + }; + + return () => { + const { device, locale } = props; + const configProvider = config.getConfigProvider(); + return configProvider + ? h(configProvider, { device, locale }, { default: renderContent }) + : renderContent(); + }; + }, +}) as new (...args: any[]) => { $props: RendererProps }; + +export { RendererProps, Renderer }; diff --git a/packages/vue-renderer/src/renderers/index.ts b/packages/vue-renderer/src/renderers/index.ts new file mode 100644 index 0000000000..a7bca30a00 --- /dev/null +++ b/packages/vue-renderer/src/renderers/index.ts @@ -0,0 +1,6 @@ +import { RendererComponent } from '../core'; +import { PageRenderer } from './page'; + +export const RENDERER_COMPS: Record = { + PageRenderer, +}; diff --git a/packages/vue-renderer/src/renderers/page.ts b/packages/vue-renderer/src/renderers/page.ts new file mode 100644 index 0000000000..bd11fa8c72 --- /dev/null +++ b/packages/vue-renderer/src/renderers/page.ts @@ -0,0 +1,19 @@ +import { defineComponent, h } from 'vue'; +import { useRenderer, rendererProps } from '../core'; + +const Page = defineComponent((props, { slots }) => { + return () => h('div', { class: 'lc-page', ...props }, slots); +}); + +export const PageRenderer = defineComponent({ + props: rendererProps, + __renderer__: true, + setup(props) { + const { renderComp, componentsRef } = useRenderer(props); + return () => { + const { __schema: schema } = props; + const { value: components } = componentsRef; + return renderComp(schema, null, components.Page || Page); + }; + }, +}); diff --git a/packages/vue-renderer/src/utils/array.ts b/packages/vue-renderer/src/utils/array.ts new file mode 100644 index 0000000000..6a89bc1a9f --- /dev/null +++ b/packages/vue-renderer/src/utils/array.ts @@ -0,0 +1,5 @@ +export function ensureArray(val: T | T[] | undefined | null): T[] { + return val ? (Array.isArray(val) ? val : [val]) : []; +} + +export type MaybeArray = T | T[]; diff --git a/packages/vue-renderer/src/utils/i18n.ts b/packages/vue-renderer/src/utils/i18n.ts new file mode 100644 index 0000000000..191e01ff66 --- /dev/null +++ b/packages/vue-renderer/src/utils/i18n.ts @@ -0,0 +1,25 @@ +import IntlMessageFormat from 'intl-messageformat'; + +export type I18nMessages = { + [locale: string]: Record; +}; + +/** + * 用于处理国际化字符串 + * @param key - 语料标识 + * @param values - 字符串模版变量 + * @param locale - 国际化标识,例如 zh-CN、en-US + * @param messages - 国际化语言包 + */ +export function getI18n( + key: string, + values = {}, + locale = 'zh-CN', + messages: I18nMessages = {} +) { + if (!messages || !messages[locale] || !messages[locale][key]) { + return ''; + } + const formater = new IntlMessageFormat(messages[locale][key], locale); + return formater.format(values); +} diff --git a/packages/vue-renderer/src/utils/index.ts b/packages/vue-renderer/src/utils/index.ts new file mode 100644 index 0000000000..51d6fa7af6 --- /dev/null +++ b/packages/vue-renderer/src/utils/index.ts @@ -0,0 +1,4 @@ +export { getI18n, type I18nMessages } from './i18n'; +export { mergeScope, type RuntimeScope, type BlockScope } from './scope'; +export { ensureArray, type MaybeArray } from './array'; +export { parseSchema, parseExpression, parseI18n, parseSlotScope } from './parse'; diff --git a/packages/vue-renderer/src/utils/parse.ts b/packages/vue-renderer/src/utils/parse.ts new file mode 100644 index 0000000000..6f79bc23fb --- /dev/null +++ b/packages/vue-renderer/src/utils/parse.ts @@ -0,0 +1,101 @@ +import { IPublicTypeI18nData, JSExpression, JSFunction } from '@felce/lowcode-types'; +import { isI18nData, isJSExpression, isJSFunction, isPlainObject } from '@felce/lowcode-utils'; +import { isFunction, isString } from 'lodash-es'; +import { ensureArray } from './array'; +import { BlockScope, RuntimeScope } from './scope'; + +export const EXPRESSION_TYPE = { + JSEXPRESSION: 'JSExpression', + JSFUNCTION: 'JSFunction', + JSSLOT: 'JSSlot', + JSBLOCK: 'JSBlock', + I18N: 'i18n', +} as const; + +export function inSameDomain() { + try { + return window.parent !== window && window.parent.location.host === window.location.host; + } catch (e) { + return false; + } +} + +export function parseI18n(i18nInfo: IPublicTypeI18nData, scope?: RuntimeScope) { + return parseExpression( + { + type: EXPRESSION_TYPE.JSEXPRESSION, + value: `this.i18n('${i18nInfo.key}')`, + }, + scope, + ) as string | undefined; +} + +export function parseExpression(str: JSFunction, scope?: RuntimeScope): CallableFunction; +export function parseExpression(str: JSExpression, scope?: RuntimeScope): unknown; +export function parseExpression( + str: JSExpression | JSFunction, + scope?: RuntimeScope, +): CallableFunction | unknown; +export function parseExpression( + str: JSExpression | JSFunction, + scope?: RuntimeScope, +): CallableFunction | unknown { + try { + const contextArr = ['"use strict";', 'var __self = arguments[0];']; + contextArr.push('return '); + let tarStr: string; + + tarStr = (str.value || '').trim(); + + tarStr = tarStr.replace(/this(\W|$)/g, (_a: string, b: string) => `__self${b}`); + tarStr = contextArr.join('\n') + tarStr; + + // 默认调用顶层窗口的parseObj, 保障new Function的window对象是顶层的window对象 + if (inSameDomain() && (window.parent as any).__newFunc) { + return (window.parent as any).__newFunc(tarStr)(self); + } + return new Function('$scope', `with($scope || {}) { ${tarStr} }`)(scope); + } catch (err) { + console.warn('parseExpression.error', err, str, self); + return undefined; + } +} + +export function parseSchema(schema: IPublicTypeI18nData, scope?: RuntimeScope): string | undefined; +export function parseSchema(schema: JSFunction, scope?: RuntimeScope): CallableFunction; +export function parseSchema(schema: JSExpression, scope?: RuntimeScope): unknown; +export function parseSchema( + schema: T, + scope: RuntimeScope, +): Record; +export function parseSchema(schema: T, scope?: RuntimeScope): T; +export function parseSchema(schema: unknown, scope?: RuntimeScope): unknown { + if (isJSExpression(schema) || isJSFunction(schema)) { + return parseExpression(schema, scope); + } else if (isI18nData(schema)) { + return parseI18n(schema, scope); + } else if (isString(schema)) { + return schema.trim(); + } else if (Array.isArray(schema)) { + return schema.map((item) => parseSchema(item, scope)); + } else if (isFunction(schema)) { + return schema.bind(scope); + } else if (isPlainObject(schema)) { + if (!schema) return schema; + const res: Record = {}; + Object.keys(schema).forEach((key) => { + if (key.startsWith('__')) return; + res[key] = parseSchema(schema[key], scope); + }); + return res; + } + return schema; +} + +export function parseSlotScope(args: unknown[], params: string[]): BlockScope { + const slotParams: BlockScope = {}; + ensureArray(params).forEach((item, idx) => { + slotParams[item] = args[idx]; + }); + return slotParams; +} diff --git a/packages/vue-renderer/src/utils/scope.ts b/packages/vue-renderer/src/utils/scope.ts new file mode 100644 index 0000000000..0191db3c33 --- /dev/null +++ b/packages/vue-renderer/src/utils/scope.ts @@ -0,0 +1,67 @@ +import { ComponentPublicInstance, isProxy, reactive } from 'vue'; +import { MaybeArray } from './array'; +import { DataSourceItem } from '../data-source'; +import { isObject } from '@felce/lowcode-utils'; + +export interface BlockScope { + [x: string]: unknown; +} + +export interface RuntimeScope extends BlockScope, ComponentPublicInstance { + i18n(key: string, values: any): string; + currentLocale: string; + dataSourceMap: Record; + reloadDataSource(): Promise; + __loopScope?: boolean; + __loopRefIndex?: number; + __loopRefOffset?: number; +} + +function isRuntimeScope(scope: object): scope is RuntimeScope { + return '$' in scope; +} + +function isValidScope(scope: unknown): scope is BlockScope | RuntimeScope { + // 为 null、undefined,或者不是对象 + if (!scope || !isObject(scope)) return false; + + // runtime scope + if (isRuntimeScope(scope)) return true; + + // scope 属性不为空 + if (Object.keys(scope).length > 0) return true; + return false; +} + +export function mergeScope( + scope: RuntimeScope, + ...blockScope: MaybeArray[] +): RuntimeScope; +export function mergeScope(...blockScope: MaybeArray[]): BlockScope; +export function mergeScope( + ...scopes: MaybeArray[] +): RuntimeScope | BlockScope { + const normalizedScope: (RuntimeScope | BlockScope)[] = []; + scopes.flat().forEach((scope) => { + isValidScope(scope) && normalizedScope.push(scope); + }); + + if (normalizedScope.length <= 1) return normalizedScope[0]; + + const [rootScope, ...resScopes] = normalizedScope; + return resScopes.reduce((result, scope) => { + if (isRuntimeScope(scope)) { + if (!isRuntimeScope(result)) { + const temp = result; + result = scope; + scope = temp; + } else { + return scope; + } + } + + const descriptors = Object.getOwnPropertyDescriptors(scope); + result = Object.create(result, descriptors); + return isProxy(scope) ? reactive(result) : result; + }, rootScope); +} diff --git a/packages/vue-renderer/tsconfig.json b/packages/vue-renderer/tsconfig.json new file mode 100644 index 0000000000..7513033f03 --- /dev/null +++ b/packages/vue-renderer/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["./src"] +} diff --git a/packages/vue-simulator-renderer/CHANGELOG.md b/packages/vue-simulator-renderer/CHANGELOG.md new file mode 100644 index 0000000000..afd272f42e --- /dev/null +++ b/packages/vue-simulator-renderer/CHANGELOG.md @@ -0,0 +1,132 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.4.7](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.6...v1.4.7) (2022-08-30) + +### Features + +- **vue-simulator-renderer:** slot 组件自动撑满父级容器高度 ([87dd933](https://github.com/fe-lce/lowcode-engine-vue/commit/87dd933f1144481403cff0ecc1b96a470ba0a4de)) + +## [1.4.6](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.5...v1.4.6) (2022-08-10) + +### Bug Fixes + +- **vue-simulator-renderer:** 修复移动画布组件位置导致的渲染错误 ([2fc636d](https://github.com/fe-lce/lowcode-engine-vue/commit/2fc636d8521ecb15bef23c5c3ee2181c3cad42cd)) + +## [1.4.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.4...v1.4.5) (2022-07-29) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.4.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.3...v1.4.4) (2022-07-21) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.4.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.2...v1.4.3) (2022-07-21) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.4.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.1...v1.4.2) (2022-07-14) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.4.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.4.0...v1.4.1) (2022-07-12) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +# [1.4.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.5...v1.4.0) (2022-07-06) + +### Features + +- **vue-simulator-renderer:** 适配模态框组件拖拽及组件元素定位 ([9a4a03a](https://github.com/fe-lce/lowcode-engine-vue/commit/9a4a03afc0b35f520254529650e94a46d30e89fd)) + +## [1.3.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.4...v1.3.5) (2022-07-04) + +### Features + +- **vue-simulator-renderer:** exports renderer content ([f8f2e62](https://github.com/fe-lce/lowcode-engine-vue/commit/f8f2e629bcda43fe23e30ddae0e1ec633d86c60e)) + +## [1.3.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.3...v1.3.4) (2022-07-03) + +### Bug Fixes + +- **vue-simulator-renderer:** disable vue prod devtools ([531ee0e](https://github.com/fe-lce/lowcode-engine-vue/commit/531ee0ec1b4aac96dace063f87f8c59cbc21d996)) + +## [1.3.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.2...v1.3.3) (2022-07-03) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.3.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.1...v1.3.2) (2022-07-03) + +### Features + +- **vue-simulator-renderer:** build vue-router as internal dependency ([91d3d31](https://github.com/fe-lce/lowcode-engine-vue/commit/91d3d31b302f37cb9cebc12d4b0e61c54d26436c)) + +## [1.3.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.3.0...v1.3.1) (2022-07-02) + +### Features + +- **vue-renderer:** supports ref prop ([9883532](https://github.com/fe-lce/lowcode-engine-vue/commit/9883532b717c53a7025dc3cf8f6282de96f7ebf5)) +- **vue-simulator-renderer:** add page builtin-component ([79178ff](https://github.com/fe-lce/lowcode-engine-vue/commit/79178ffb83b02f23ce1505577fe683aab73a2de3)) + +# [1.3.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.2.0...v1.3.0) (2022-07-01) + +### Features + +- **vue-renderer:** change slot params handle ([0139b3c](https://github.com/fe-lce/lowcode-engine-vue/commit/0139b3cb62e08a4fc2c29734485b65bef92710c7)) + +# [1.2.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.5...v1.2.0) (2022-06-30) + +### Features + +- **vue-renderer:** enhance slot and optimize scope ([f1454ea](https://github.com/fe-lce/lowcode-engine-vue/commit/f1454eaae738cf8c0a12e0e34bd5a576f43cc85c)) + +## [1.1.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.4...v1.1.5) (2022-06-30) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.1.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.3...v1.1.4) (2022-06-27) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.1.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.2...v1.1.3) (2022-06-27) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.1.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.1...v1.1.2) (2022-06-24) + +### Bug Fixes + +- **vue-simulator-renderer:** failed to get instance uid ([cdb25ca](https://github.com/fe-lce/lowcode-engine-vue/commit/cdb25ca10fe38eea0000a4ef4889d9e40158c980)) + +## [1.1.1](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.1.0...v1.1.1) (2022-06-24) + +### Features + +- update versions ([ed20df8](https://github.com/fe-lce/lowcode-engine-vue/commit/ed20df8055dd13c75638774a9b12f409fdec8c94)) +- **vue-renderer|vue-simulator-renderer:** modify the el access method ([af454ea](https://github.com/fe-lce/lowcode-engine-vue/commit/af454ea47d44298ef04fd0ead2359403e2c1e77d)) + +# [1.1.0](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.5...v1.1.0) (2022-06-16) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.0.5](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.4...v1.0.5) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.0.4](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.3...v1.0.4) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.0.3](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.2...v1.0.3) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## [1.0.2](https://github.com/fe-lce/lowcode-engine-vue/compare/v1.0.1...v1.0.2) (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer + +## 1.0.1 (2022-06-15) + +**Note:** Version bump only for package @felce/lowcode-vue-simulator-renderer diff --git a/packages/vue-simulator-renderer/README.md b/packages/vue-simulator-renderer/README.md new file mode 100644 index 0000000000..fe84005413 --- /dev/null +++ b/packages/vue-simulator-renderer/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file diff --git a/packages/vue-simulator-renderer/build.json b/packages/vue-simulator-renderer/build.json new file mode 100644 index 0000000000..6f284f44f9 --- /dev/null +++ b/packages/vue-simulator-renderer/build.json @@ -0,0 +1,3 @@ +{ + "plugins": ["build-plugin-component"] +} diff --git a/packages/vue-simulator-renderer/build.plugin.cjs b/packages/vue-simulator-renderer/build.plugin.cjs new file mode 100644 index 0000000000..b7589abbc6 --- /dev/null +++ b/packages/vue-simulator-renderer/build.plugin.cjs @@ -0,0 +1,10 @@ +module.exports = ({ onGetWebpackConfig }) => { + onGetWebpackConfig((config) => { + config.module + .rule('mjs$') + .test(/\.mjs$/) + .include.add(/node_modules/) + .end() + .type('javascript/auto'); + }); +}; diff --git a/packages/vue-simulator-renderer/build.umd.json b/packages/vue-simulator-renderer/build.umd.json new file mode 100644 index 0000000000..9a20deeffd --- /dev/null +++ b/packages/vue-simulator-renderer/build.umd.json @@ -0,0 +1,29 @@ +{ + "entry": { + "vue-simulator-renderer": "./src/index.ts" + }, + "define": { + "__VUE_PROD_DEVTOOLS__": "false" + }, + "sourceMap": true, + "library": "LCVueSimulatorRenderer", + "libraryTarget": "umd", + "externals": { + "vue": "var window.Vue", + "lodash": "var window._", + "moment": "var window.moment" + }, + "outputAssetsPath": { + "js": "", + "css": "" + }, + "polyfill": false, + "outputDir": "dist", + "vendor": false, + "ignoreHtmlTemplate": true, + "plugins": [ + "build-plugin-react-app", + ["build-plugin-moment-locales", { "locales": ["zh-cn"] }], + "./build.plugin.cjs" + ] +} diff --git a/packages/vue-simulator-renderer/package.json b/packages/vue-simulator-renderer/package.json new file mode 100644 index 0000000000..4f912a21b6 --- /dev/null +++ b/packages/vue-simulator-renderer/package.json @@ -0,0 +1,40 @@ +{ + "name": "@felce/lowcode-vue-simulator-renderer", + "main": "./lib/index.js", + "module": "./es/index.js", + "unpkg": "./dist/vue-simulator-renderer.js", + "version": "1.4.1", + "files": [ + "es", + "lib", + "dist" + ], + "scripts": { + "start": "build-scripts start --disable-open --port 5559 --config=build.umd.json", + "build": "build-scripts build", + "build:umd": "build-scripts build --config=build.umd.json", + "lint:type": "tsc -p ./tsconfig.json --noEmit", + "prepublishOnly": "pnpm build && pnpm build:umd" + }, + "homepage": "https://unpkg.com/@felce/lowcode-vue-simulator-renderer@1.4.1/build/index.html", + "dependencies": { + "@felce/lowcode-types": "^1.4.1", + "@felce/lowcode-vue-renderer": "^1.4.1", + "vue-router": "^4.1.5" + }, + "devDependencies": { + "@felce/lowcode-designer": "^1.4.1", + "build-plugin-component": "^1.11.0", + "build-plugin-moment-locales": "^0.1.3", + "build-plugin-react-app": "^1.8.0", + "vue": "^3.2.38" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "repository": { + "type": "http", + "url": "https://github.com/fe-lce/lowcode-engine-vue/tree/main/packages/vue-simulator-renderer" + } +} diff --git a/packages/vue-simulator-renderer/public/index.html b/packages/vue-simulator-renderer/public/index.html new file mode 100644 index 0000000000..e61dd7c6f4 --- /dev/null +++ b/packages/vue-simulator-renderer/public/index.html @@ -0,0 +1,10 @@ + + + + + + + LowCodeEngine VueSimulator + + + diff --git a/packages/vue-simulator-renderer/src/buildin-components/index.ts b/packages/vue-simulator-renderer/src/buildin-components/index.ts new file mode 100644 index 0000000000..8bdb3b825d --- /dev/null +++ b/packages/vue-simulator-renderer/src/buildin-components/index.ts @@ -0,0 +1,3 @@ +export { default as Leaf } from './leaf'; +export { default as Slot } from './slot'; +export { default as Page } from './page'; diff --git a/packages/vue-simulator-renderer/src/buildin-components/leaf.ts b/packages/vue-simulator-renderer/src/buildin-components/leaf.ts new file mode 100644 index 0000000000..d032ffd864 --- /dev/null +++ b/packages/vue-simulator-renderer/src/buildin-components/leaf.ts @@ -0,0 +1,26 @@ +import { defineComponent, renderSlot } from 'vue'; + +const Leaf = defineComponent({ + name: 'Leaf', + render() { + return renderSlot(this.$slots, 'default'); + }, +}); + +Object.assign(Leaf, { + displayName: 'Leaf', + componentMetadata: { + componentName: 'Leaf', + configure: { + props: [ + { + name: 'children', + setter: 'StringSetter', + }, + ], + supports: false, + }, + }, +}); + +export default Leaf; diff --git a/packages/vue-simulator-renderer/src/buildin-components/page.ts b/packages/vue-simulator-renderer/src/buildin-components/page.ts new file mode 100644 index 0000000000..e6bebf587a --- /dev/null +++ b/packages/vue-simulator-renderer/src/buildin-components/page.ts @@ -0,0 +1,24 @@ +import { defineComponent, h } from 'vue'; + +const Page = defineComponent((props, { slots }) => { + return () => h('div', { class: 'lc-page', ...props }, slots); +}); + +Object.assign(Page, { + displayName: 'Page', + componentMetadata: { + componentName: 'Page', + configure: { + supports: { + style: true, + className: true, + }, + component: { + isContainer: true, + disableBehaviors: '*', + }, + }, + }, +}); + +export default Page; diff --git a/packages/vue-simulator-renderer/src/buildin-components/slot.ts b/packages/vue-simulator-renderer/src/buildin-components/slot.ts new file mode 100644 index 0000000000..dc3cedb6ef --- /dev/null +++ b/packages/vue-simulator-renderer/src/buildin-components/slot.ts @@ -0,0 +1,46 @@ +import { defineComponent, h } from 'vue'; + +const Slot = defineComponent({ + render() { + return h('div', { class: 'lc-container' }, this.$slots); + }, +}); + +Object.assign(Slot, { + displayName: 'Slot', + componentMetadata: { + componentName: 'Slot', + configure: { + props: [ + { + name: '___title', + title: '插槽标题', + setter: 'StringSetter', + defaultValue: '插槽容器', + }, + { + name: '___params', + title: '插槽入参', + setter: { + componentName: 'ArraySetter', + props: { + itemSetter: { + componentName: 'StringSetter', + props: { + placeholder: '参数名称', + }, + }, + }, + }, + }, + ], + component: { + isContainer: true, + disableBehaviors: '*', + }, + supports: false, + }, + }, +}); + +export default Slot; diff --git a/packages/vue-simulator-renderer/src/host.ts b/packages/vue-simulator-renderer/src/host.ts new file mode 100644 index 0000000000..eec166a5a0 --- /dev/null +++ b/packages/vue-simulator-renderer/src/host.ts @@ -0,0 +1,3 @@ +import { BuiltinSimulatorHost } from '@felce/lowcode-designer'; + +export const host: BuiltinSimulatorHost = (window as any).LCSimulatorHost; diff --git a/packages/vue-simulator-renderer/src/index.less b/packages/vue-simulator-renderer/src/index.less new file mode 100644 index 0000000000..91ee4a5a91 --- /dev/null +++ b/packages/vue-simulator-renderer/src/index.less @@ -0,0 +1,122 @@ +body, +html { + display: block; + margin: 0; + padding: 0; + background: white; +} + +html.engine-design-mode { + padding-bottom: 0; +} + +html.engine-cursor-move, +html.engine-cursor-move * { + cursor: grabbing !important; +} + +html.engine-cursor-copy, +html.engine-cursor-copy * { + cursor: copy !important; +} + +html.engine-cursor-ew-resize, +html.engine-cursor-ew-resize * { + cursor: ew-resize !important; +} + +html.lc-cursor-dragging, +html.lc-cursor-dragging * { + cursor: move !important; +} + +html.lc-cursor-x-resizing, +html.lc-cursor-x-resizing * { + cursor: col-resize; +} + +html.lc-cursor-y-resizing, +html.lc-cursor-y-resizing * { + cursor: row-resize; +} + +html.lc-cursor-copy, +html.lc-cursor-copy * { + cursor: copy !important; +} + +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-thumb { + background-color: rgb(0 0 0 / 30%); + border-radius: 5px; +} + +.lc-container { + height: 100%; + + &:empty { + display: flex; + align-items: center; + min-width: 140px; + height: 66px; + max-height: 100%; + overflow: hidden; + color: #a7b1bd; + text-align: center; + background: #f2f3f5; + outline: 1px dashed rgb(31 56 88 / 20%); + outline-offset: -1px !important; + + &::before { + z-index: 1; + width: 100%; + font-size: 14px; + white-space: nowrap; + content: '\62D6\62FD\7EC4\4EF6\6216\6A21\677F\5230\8FD9\91CC'; + } + } +} + +.lc-container-placeholder { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + min-height: 60px; + color: rgb(167 177 189); + font-size: 14px; + background-color: rgb(240 240 240); + border: 1px dotted; + + &.lc-container-locked { + background: #eccfcf; + } +} + +body.engine-document { + &::after, + &::before { + display: table; + content: ''; + } + + &::after { + clear: both; + } +} + +.engine-live-editing { + outline: none; + box-shadow: 0 0 0 2px rgb(102 188 92); + cursor: text; + user-select: text; +} + +#app { + height: 100vh; +} diff --git a/packages/vue-simulator-renderer/src/index.ts b/packages/vue-simulator-renderer/src/index.ts new file mode 100644 index 0000000000..8ac19cb175 --- /dev/null +++ b/packages/vue-simulator-renderer/src/index.ts @@ -0,0 +1,19 @@ +import simulator from './simulator'; +import './index.less'; + +const win = window as any; + +if (typeof win !== 'undefined') { + win.SimulatorRenderer = simulator; +} + +win.addEventListener('beforeunload', () => { + win.LCSimulatorHost = null; + win.SimulatorRenderer = null; + simulator.dispose(); +}); + +export default simulator; +export * from '@felce/lowcode-vue-renderer'; +export { config as vueRendererConfig, default as VueRenderer } from '@felce/lowcode-vue-renderer'; +export * from './interface'; diff --git a/packages/vue-simulator-renderer/src/interface.ts b/packages/vue-simulator-renderer/src/interface.ts new file mode 100644 index 0000000000..ff91d5c2e5 --- /dev/null +++ b/packages/vue-simulator-renderer/src/interface.ts @@ -0,0 +1,52 @@ +import { Router } from 'vue-router'; +import { Config } from '@felce/lowcode-vue-renderer'; +import { Component, ComponentPublicInstance, App } from 'vue'; +import { + IPublicTypeComponentSchema, + IPublicTypeNpmInfo, + IPublicTypeRootSchema, +} from '@felce/lowcode-types'; +import { BuiltinSimulatorRenderer, DocumentModel, Node } from '@felce/lowcode-designer'; + +export type MinxedComponent = IPublicTypeNpmInfo | Component | IPublicTypeComponentSchema; + +export type ComponentInstance = ComponentPublicInstance; + +export interface SimulatorViewLayout { + Component?: Component; + componentName?: string; + props?: Record; +} + +export interface VueSimulatorRenderer extends BuiltinSimulatorRenderer { + app: App; + config: Config; + router: Router; + layout: SimulatorViewLayout; + device: string; + locale: string; + designMode: 'design'; + libraryMap: Record; + components: Record; + autoRender: boolean; + componentsMap: Record; + documentInstances: DocumentInstance[]; + requestHandlersMap: Record; + dispose(): void; + rerender(): void; + getCurrentDocument(): DocumentInstance | undefined; +} + +export interface DocumentInstance { + readonly id: string; + readonly key: string; + readonly path: string; + readonly document: DocumentModel; + readonly instancesMap: Map; + readonly schema: IPublicTypeRootSchema; + getComponentInstance(id: number): ComponentInstance | null; + mountInstance(id: string, instance: ComponentInstance): (() => void) | void; + unmountIntance(id: string, instance: ComponentInstance): void; + rerender(): void; + getNode(id: string): Node | null; +} diff --git a/packages/vue-simulator-renderer/src/simulator-view.ts b/packages/vue-simulator-renderer/src/simulator-view.ts new file mode 100644 index 0000000000..862a8b3f58 --- /dev/null +++ b/packages/vue-simulator-renderer/src/simulator-view.ts @@ -0,0 +1,72 @@ +import { defineComponent, h, PropType, renderSlot } from 'vue'; +import LowCodeRenderer from '@felce/lowcode-vue-renderer'; +import { DocumentInstance, VueSimulatorRenderer } from './interface'; +import { RouterView } from 'vue-router'; + +export const Layout = defineComponent({ + props: { + simulator: { + type: Object as PropType, + required: true, + }, + }, + render() { + const { simulator, $slots } = this; + const { layout, getComponent } = simulator; + if (layout) { + const { Component, props = {}, componentName } = layout; + if (Component) { + return h(Component, { ...props, key: 'layout', simulator } as any, $slots); + } + const ComputedComponent = componentName && getComponent(componentName); + if (ComputedComponent) { + return h(ComputedComponent, { ...props, key: 'layout', simulator }, $slots); + } + } + return renderSlot($slots, 'default'); + }, +}); + +export const SimulatorRendererView = defineComponent({ + props: { + simulator: { + type: Object as PropType, + required: true, + }, + }, + render() { + const { simulator } = this; + return h(Layout, { simulator }, { default: () => h(RouterView) }); + }, +}); + +export const Renderer = defineComponent({ + props: { + simulator: { + type: Object as PropType, + required: true, + }, + documentInstance: { + type: Object as PropType, + required: true, + }, + }, + render() { + const { documentInstance, simulator } = this; + const { schema } = documentInstance; + const { designMode, device, locale, components } = simulator; + + if (!simulator.autoRender) return null; + + return h(LowCodeRenderer, { + schema: schema, + components: components, + locale: locale, + messages: {}, + designMode: designMode, + device: device, + getNode: (id) => documentInstance.getNode(id), + onCompGetCtx: (schema, ref) => documentInstance.mountInstance(schema.id!, ref), + }); + }, +}); diff --git a/packages/vue-simulator-renderer/src/simulator.ts b/packages/vue-simulator-renderer/src/simulator.ts new file mode 100644 index 0000000000..bc1fdc797f --- /dev/null +++ b/packages/vue-simulator-renderer/src/simulator.ts @@ -0,0 +1,349 @@ +import { DocumentModel } from '@felce/lowcode-designer'; +import { IPublicEnumTransformStage } from '@felce/lowcode-types'; +import { AssetLoader } from '@felce/lowcode-utils'; +import { config } from '@felce/lowcode-vue-renderer'; +import { + Component, + computed, + createApp, + markRaw, + onUnmounted, + reactive, + Ref, + ref, + shallowRef, +} from 'vue'; +import { createMemoryHistory, createRouter } from 'vue-router'; +import { Leaf, Page, Slot } from './buildin-components'; +import { host } from './host'; +import { + ComponentInstance, + DocumentInstance, + MinxedComponent, + SimulatorViewLayout, + VueSimulatorRenderer, +} from './interface'; +import { Renderer, SimulatorRendererView } from './simulator-view'; +import { + ComponentRecord, + cursor, + findDOMNodes, + getClientRects, + getClosestNodeInstance, + getClosestNodeInstanceByComponent, + getCompRootData, + isComponentRecord, + setCompRootData, + setNativeSelection, +} from './utils'; +import { buildComponents, getSubComponent } from './utils/build-components'; + +const loader = new AssetLoader(); + +const builtinComponents = { Slot, Leaf, Page }; + +function createDocumentInstance(document: DocumentModel): DocumentInstance { + /** 记录单个节点的组件实例列表 */ + const instancesMap = new Map(); + /** 记录 vue 组件实例和组件 uid 的映射关系 */ + const vueInstanceMap = new Map(); + + const timestamp = ref(Date.now()); + + const checkInstanceMounted = (instance: ComponentInstance): boolean => { + return instance.$.isMounted; + }; + + const setHostInstance = ( + docId: string, + nodeId: string, + instances: ComponentInstance[] | null, + ) => { + const instanceRecords = !instances + ? null + : instances.map((inst) => new ComponentRecord(docId, nodeId, inst.$.uid)); + host.setInstance(docId, nodeId, instanceRecords); + }; + + const getComponentInstance = (id: number) => { + return vueInstanceMap.get(id); + }; + + const mountInstance = (id: string, instance: ComponentInstance) => { + const docId = document.id; + if (instance == null) { + let instances = instancesMap.get(id); + if (instances) { + instances = instances.filter(checkInstanceMounted); + if (instances.length > 0) { + instancesMap.set(id, instances); + setHostInstance(docId, id, instances); + } else { + instancesMap.delete(id); + setHostInstance(docId, id, null); + } + } + return; + } + + const el = instance.$el; + + const origId = getCompRootData(el).nodeId; + if (origId && origId !== id) { + // 另外一个节点的 instance 在此被复用了,需要从原来地方卸载 + unmountIntance(origId, instance); + } + + onUnmounted(() => unmountIntance(id, instance), instance.$); + + setCompRootData(el, { + nodeId: id, + docId: docId, + instance: instance, + }); + let instances = instancesMap.get(id); + if (instances) { + const l = instances.length; + instances = instances.filter(checkInstanceMounted); + let updated = instances.length !== l; + if (!instances.includes(instance)) { + instances.push(instance); + updated = true; + } + if (!updated) return; + } else { + instances = [instance]; + } + vueInstanceMap.set(instance.$.uid, instance); + instancesMap.set(id, instances); + setHostInstance(docId, id, instances); + }; + + const unmountIntance = (id: string, instance: ComponentInstance) => { + const instances = instancesMap.get(id); + if (instances) { + const i = instances.indexOf(instance); + if (i > -1) { + const [instance] = instances.splice(i, 1); + vueInstanceMap.delete(instance.$.uid); + setHostInstance(document.id, id, instances); + } + } + }; + + const getNode: DocumentInstance['getNode'] = (id) => { + return id ? document.getNode(id) : null; + }; + + return reactive({ + id: computed(() => document.id), + path: computed(() => { + const { fileName } = document; + return fileName.startsWith('/') ? fileName : `/${fileName}`; + }), + key: computed(() => `${document.id}:${timestamp.value}`), + schema: computed(() => document.export(IPublicEnumTransformStage.Render)), + document: computed(() => document), + instancesMap: computed(() => instancesMap), + getNode, + mountInstance, + unmountIntance, + getComponentInstance, + rerender: () => void (timestamp.value = Date.now()), + }) as DocumentInstance; +} + +function createSimulatorRenderer() { + const layout: Ref = shallowRef({}); + const device: Ref = shallowRef('default'); + const locale: Ref = shallowRef(); + const autoRender = shallowRef(host.autoRender); + const designMode: Ref = shallowRef('design'); + const libraryMap: Ref> = shallowRef({}); + const components: Ref> = shallowRef({}); + const componentsMap: Ref> = shallowRef({}); + const requestHandlersMap: Ref> = shallowRef({}); + const documentInstances: Ref = shallowRef([]); + + const disposeFunctions: Array<() => void> = []; + + const documentInstanceMap = new Map(); + + function _buildComponents() { + components.value = { + ...builtinComponents, + ...buildComponents(libraryMap.value, componentsMap.value, simulator.createComponent), + }; + } + + const simulator = reactive({ + config: markRaw(config), + layout, + device, + designMode, + libraryMap, + components, + autoRender, + componentsMap, + documentInstances, + requestHandlersMap, + isSimulatorRenderer: true, + }) as VueSimulatorRenderer; + + simulator.app = markRaw(createApp(SimulatorRendererView, { simulator })); + simulator.router = markRaw( + createRouter({ + history: createMemoryHistory('/'), + routes: [], + }), + ); + + simulator.getComponent = (componentName) => { + const paths = componentName.split('.'); + const subs: string[] = []; + while (paths.length > 0) { + const component = components.value[componentName]; + if (component) { + return getSubComponent(component, subs); + } + const sub = paths.pop(); + if (!sub) break; + subs.unshift(sub); + componentName = paths.join('.'); + } + return null!; + }; + + simulator.getClosestNodeInstance = (el, specId) => { + if (isComponentRecord(el)) { + const { cid, did } = el; + const documentInstance = documentInstanceMap.get(did); + const instance = documentInstance?.getComponentInstance(cid) ?? null; + return instance && getClosestNodeInstanceByComponent(instance.$, specId); + } + return getClosestNodeInstance(el, specId); + }; + + simulator.findDOMNodes = (instance: ComponentRecord) => { + if (instance) { + const { did, cid } = instance; + const documentInstance = documentInstanceMap.get(did); + const compInst = documentInstance?.getComponentInstance(cid); + return compInst ? findDOMNodes(compInst) : null; + } + return null; + }; + + simulator.getClientRects = (element) => getClientRects(element); + simulator.setNativeSelection = (enable) => setNativeSelection(enable); + simulator.setDraggingState = (state) => cursor.setDragging(state); + simulator.setCopyState = (state) => cursor.setCopy(state); + simulator.clearState = () => cursor.release(); + simulator.createComponent = () => null; + simulator.rerender = () => documentInstances.value.forEach((doc) => doc.rerender()); + simulator.dispose = () => { + simulator.app.unmount(); + disposeFunctions.forEach((fn) => fn()); + }; + simulator.getCurrentDocument = () => { + const crr = host.project.currentDocument; + const docs = documentInstances.value; + return docs.find((doc) => doc.id === crr.id); + }; + + let running = false; + simulator.run = () => { + if (running) return; + running = true; + const containerId = 'app'; + let container = document.getElementById(containerId); + if (!container) { + container = document.createElement('div'); + document.body.appendChild(container); + container.id = containerId; + } + document.documentElement.classList.add('engine-page'); + document.body.classList.add('engine-document'); + simulator.app.use(simulator.router).mount(container); + host.project.setRendererReady(simulator); + }; + + disposeFunctions.push( + host.connect(simulator, () => { + // sync layout config + layout.value = host.project.get('config').layout; + + // todo: split with others, not all should recompute + if ( + libraryMap.value !== host.libraryMap || + componentsMap.value !== host.designer.componentsMap + ) { + libraryMap.value = host.libraryMap || {}; + componentsMap.value = host.designer.componentsMap; + _buildComponents(); + } + + locale.value = host.locale; + + // sync device + device.value = host.device; + + // sync designMode + designMode.value = host.designMode; + + // sync requestHandlersMap + requestHandlersMap.value = host.requestHandlersMap; + }), + ); + + disposeFunctions.push( + host.autorun(() => { + const { router } = simulator; + documentInstances.value = host.project.documents.map((doc) => { + let documentInstance = documentInstanceMap.get(doc.id); + if (!documentInstance) { + documentInstance = createDocumentInstance(doc); + documentInstanceMap.set(doc.id, documentInstance); + router.addRoute({ + name: documentInstance.id, + path: documentInstance.path, + component: Renderer, + props: () => ({ + key: documentInstance?.key, + documentInstance, + simulator, + }), + }); + } + return documentInstance; + }); + router.getRoutes().forEach((route) => { + const id = route.name as string; + const hasDoc = documentInstances.value.some((doc) => doc.id === id); + if (!hasDoc) { + router.removeRoute(id); + documentInstanceMap.delete(id); + } + }); + const inst = simulator.getCurrentDocument(); + if (inst && inst.id !== router.currentRoute.value.name) { + router.replace({ name: inst.id }); + } + }), + ); + + host.componentsConsumer.consume(async (componentsAsset) => { + if (componentsAsset) { + await loader.load(componentsAsset); + _buildComponents(); + } + }); + + host.injectionConsumer.consume(() => { + // TODO: handle designer injection + }); + + return simulator; +} + +export default createSimulatorRenderer(); diff --git a/packages/vue-simulator-renderer/src/utils/build-components.ts b/packages/vue-simulator-renderer/src/utils/build-components.ts new file mode 100644 index 0000000000..c09f986a49 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/build-components.ts @@ -0,0 +1,94 @@ +import { Component, defineComponent, h } from 'vue'; +import type { IPublicTypeComponentSchema, IPublicTypeNpmInfo } from '@felce/lowcode-types'; +import { isComponentSchema, isESModule } from '@felce/lowcode-utils'; +import { isVueComponent } from '@felce/lowcode-vue-renderer'; + +export function accessLibrary(library: string | Record) { + if (typeof library !== 'string') { + return library; + } + + return (window as any)[library] || generateHtmlComp(library); +} + +export function generateHtmlComp(library: string) { + if (['a', 'img', 'div', 'span', 'svg'].includes(library)) { + return defineComponent((_, { attrs, slots }) => { + return () => h(library, attrs, slots); + }); + } +} + +export function getSubComponent(library: any, paths: string[]) { + const l = paths.length; + if (l < 1 || !library) { + return library; + } + let i = 0; + let component: any; + while (i < l) { + const key = paths[i]!; + let ex: any; + try { + component = library[key]; + } catch (e) { + ex = e; + component = null; + } + if (i === 0 && component == null && key === 'default') { + if (ex) { + return l === 1 ? library : null; + } + component = library; + } else if (component == null) { + return null; + } + library = component; + i++; + } + return component; +} + +export function findComponent( + libraryMap: Record, + componentName: string, + npm?: IPublicTypeNpmInfo, +) { + if (!npm) { + return accessLibrary(componentName); + } + const exportName = npm.exportName || npm.componentName || componentName; + const libraryName = libraryMap[npm.package] || exportName; + const library = accessLibrary(libraryName); + const paths = npm.exportName && npm.subName ? npm.subName.split('.') : []; + if (npm.destructuring) { + paths.unshift(exportName); + } else if (isESModule(library)) { + paths.unshift('default'); + } + return getSubComponent(library, paths); +} + +export function buildComponents( + libraryMap: Record, + componentsMap: Record, + createComponent?: (schema: IPublicTypeComponentSchema) => Component | null, +) { + const components: any = {}; + Object.keys(componentsMap).forEach((componentName) => { + let component = componentsMap[componentName]; + if (isComponentSchema(component)) { + if (createComponent) { + components[componentName] = createComponent(component as IPublicTypeComponentSchema); + } + } else if (isVueComponent(component)) { + components[componentName] = component; + } else { + component = findComponent(libraryMap, componentName, component); + if (component) { + components[componentName] = component; + } + } + }); + return components; +} diff --git a/packages/vue-simulator-renderer/src/utils/check-node.ts b/packages/vue-simulator-renderer/src/utils/check-node.ts new file mode 100644 index 0000000000..7a3b69e98c --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/check-node.ts @@ -0,0 +1,11 @@ +export function isCommentNode(el: Element | Text | Comment | Node): el is Comment { + return el.nodeType === 8; +} + +export function isTextNode(el: Element | Text | Comment | Node): el is Text { + return el.nodeType === 3; +} + +export function isEmptyNode(el: Element | Text | Comment | Node): boolean { + return isCommentNode(el) || (isTextNode(el) && el.nodeValue === ''); +} diff --git a/packages/vue-simulator-renderer/src/utils/closest-node.ts b/packages/vue-simulator-renderer/src/utils/closest-node.ts new file mode 100644 index 0000000000..ca878da432 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/closest-node.ts @@ -0,0 +1,71 @@ +// FIXME 不知道要取什么 +import { NodeInstance } from '@felce/lowcode-designer'; +import { ComponentInternalInstance } from 'vue'; +import { isCommentNode } from './check-node'; +import { + ComponentRecord, + getCompRootData, + isVNodeHTMLElement, + isCompRootHTMLElement, +} from './comp-node'; +import { warn } from './logger'; + +export function getClosestNodeInstance( + el: Element, + specId: string | undefined, +): NodeInstance | null { + if (!document.contains(el)) { + return null; + } + if (isVNodeHTMLElement(el)) { + const component = el.__vueParentComponent; + return getClosestNodeInstanceByComponent(component, specId); + } + + if (!isCommentNode(el) && !('__vue_app__' in el)) { + warn('__vnode 没有找到,请使用 vue 非生产环境版本'); + warn('https://unpkg.com/vue/dist/vue.runtime.global.js'); + } + return getClosestNodeInstanceByElement(el, specId); +} + +export function getClosestNodeInstanceByComponent( + instance: ComponentInternalInstance | null, + specId: string | undefined, +): NodeInstance | null { + while (instance) { + const el = instance.vnode.el as Element; + if (el && isCompRootHTMLElement(el)) { + const { nodeId, docId, instance } = getCompRootData(el); + if (!specId || specId === nodeId) { + return { + docId, + nodeId, + instance: new ComponentRecord(docId, nodeId, instance.$.uid), + }; + } + } + instance = instance.parent; + } + return null; +} + +export function getClosestNodeInstanceByElement( + el: Element, + specId: string | undefined, +): NodeInstance | null { + while (el) { + if (isCompRootHTMLElement(el)) { + const { nodeId, docId, instance } = getCompRootData(el); + if (!specId || specId === nodeId) { + return { + docId, + nodeId, + instance: new ComponentRecord(docId, nodeId, instance.$.uid), + }; + } + } + el = el.parentElement as Element; + } + return null; +} diff --git a/packages/vue-simulator-renderer/src/utils/comp-node.ts b/packages/vue-simulator-renderer/src/utils/comp-node.ts new file mode 100644 index 0000000000..7d12fdc319 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/comp-node.ts @@ -0,0 +1,65 @@ +import { isObject } from '@felce/lowcode-utils'; +import { isNil } from 'lodash-es'; +import { ComponentInternalInstance, isProxy, VNode } from 'vue'; +import { ComponentInstance } from '../interface'; + +const SYMBOL_VDID = Symbol('_LCDocId'); +const SYMBOL_VNID = Symbol('_LCNodeId'); +const SYMBOL_VInstance = Symbol('_LCVueInstance'); +const SYMBOL_RECORD_FLAG = Symbol('_LCVueCompRecord'); + +export interface VNodeHTMLElement extends HTMLElement { + __vnode: VNode; + __vueParentComponent: ComponentInternalInstance; +} + +export interface CompRootHTMLElement extends HTMLElement { + [SYMBOL_VDID]: string; + [SYMBOL_VNID]: string; + [SYMBOL_VInstance]: ComponentInstance; +} + +export interface CompRootData { + docId: string; + nodeId: string; + instance: ComponentInstance; +} + +export class ComponentRecord { + [SYMBOL_RECORD_FLAG] = true; + constructor( + public did: string, + public nid: string, + public cid: number, + ) {} +} + +export function isVNodeHTMLElement(el: unknown): el is VNodeHTMLElement { + return isObject(el) && isNil(el.__vueParentComponent); +} + +export function isCompRootHTMLElement(el: Element | null | undefined): el is CompRootHTMLElement { + return isObject(el) && SYMBOL_VDID in el; +} + +export function isComponentRecord(el: unknown): el is ComponentRecord { + return isObject(el) && SYMBOL_RECORD_FLAG in el; +} + +export function isInternalInstance(el: unknown): el is ComponentInternalInstance { + return isObject(el) && isProxy(el.proxy); +} + +export function getCompRootData(el: CompRootHTMLElement): CompRootData { + return { + docId: el[SYMBOL_VDID], + nodeId: el[SYMBOL_VNID], + instance: el[SYMBOL_VInstance], + }; +} + +export function setCompRootData(el: CompRootHTMLElement, data: CompRootData): void { + el[SYMBOL_VDID] = data.docId; + el[SYMBOL_VNID] = data.nodeId; + el[SYMBOL_VInstance] = data.instance; +} diff --git a/packages/vue-simulator-renderer/src/utils/cursor.ts b/packages/vue-simulator-renderer/src/utils/cursor.ts new file mode 100644 index 0000000000..9c5a7ac6f2 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/cursor.ts @@ -0,0 +1,61 @@ +class Cursor { + private states = new Set(); + + setDragging(flag: boolean) { + if (flag) { + this.addState('dragging'); + } else { + this.removeState('dragging'); + } + } + + setXResizing(flag: boolean) { + if (flag) { + this.addState('x-resizing'); + } else { + this.removeState('x-resizing'); + } + } + + setYResizing(flag: boolean) { + if (flag) { + this.addState('y-resizing'); + } else { + this.removeState('y-resizing'); + } + } + + setCopy(flag: boolean) { + if (flag) { + this.addState('copy'); + } else { + this.removeState('copy'); + } + } + + isCopy() { + return this.states.has('copy'); + } + + release() { + for (const state of this.states) { + this.removeState(state); + } + } + + addState(state: string) { + if (!this.states.has(state)) { + this.states.add(state); + document.documentElement.classList.add(`lc-cursor-${state}`); + } + } + + private removeState(state: string) { + if (this.states.has(state)) { + this.states.delete(state); + document.documentElement.classList.remove(`lc-cursor-${state}`); + } + } +} + +export const cursor = new Cursor(); diff --git a/packages/vue-simulator-renderer/src/utils/find-dom-nodes.ts b/packages/vue-simulator-renderer/src/utils/find-dom-nodes.ts new file mode 100644 index 0000000000..510280a594 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/find-dom-nodes.ts @@ -0,0 +1,57 @@ +import { ComponentInternalInstance } from 'vue'; +import { ComponentInstance } from '../interface'; +import { isVNodeHTMLElement } from './comp-node'; +import { isEmptyNode } from './check-node'; + +export function findDOMNodes(instance: ComponentInstance) { + const els: (Element | Text)[] = []; + + const el: Element | Text = instance.$el; + + if (isEmptyNode(el)) { + appendSiblingElement(els, instance.$, el, (node) => { + return node.previousSibling; + }); + appendSiblingElement(els, instance.$, el, (node) => { + return node.nextSibling; + }); + } else { + els.push(el); + } + + return els; +} + +function appendSiblingElement( + target: (Element | Text)[], + instance: ComponentInternalInstance, + el: Element | Text, + next: (el: Node) => Node | null +) { + let nextNode = next(el); + while (nextNode) { + if (isEmptyNode(nextNode)) { + nextNode = next(nextNode); + continue; + } + if (isVNodeHTMLElement(nextNode)) { + const childInstance = nextNode.__vueParentComponent; + if (isChildInstance(instance, childInstance)) { + target.unshift(nextNode); + nextNode = next(nextNode); + continue; + } + } + break; + } +} + +function isChildInstance( + target: ComponentInternalInstance, + source: ComponentInternalInstance | null +): boolean { + if (source == null) return false; + if (target.uid > source.uid) return false; + if (target.uid === source.uid) return true; + return isChildInstance(target, source.parent); +} diff --git a/packages/vue-simulator-renderer/src/utils/get-client-rects.ts b/packages/vue-simulator-renderer/src/utils/get-client-rects.ts new file mode 100644 index 0000000000..5f483d71f8 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/get-client-rects.ts @@ -0,0 +1,15 @@ +import { isElement } from '@felce/lowcode-utils'; + +// a range for test TextNode clientRect +const cycleRange = document.createRange(); + +export function getClientRects(node: Element | Text) { + if (!node.parentNode) return []; + + if (isElement(node)) { + return [node.getBoundingClientRect()]; + } + + cycleRange.selectNode(node); + return Array.from(cycleRange.getClientRects()); +} diff --git a/packages/vue-simulator-renderer/src/utils/index.ts b/packages/vue-simulator-renderer/src/utils/index.ts new file mode 100644 index 0000000000..a384885be9 --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/index.ts @@ -0,0 +1,8 @@ +export * from './get-client-rects'; +export * from './comp-node'; +export * from './check-node'; +export * from './closest-node'; +export * from './find-dom-nodes'; +export * from './logger'; +export * from './cursor'; +export * from './navtive-selection'; diff --git a/packages/vue-simulator-renderer/src/utils/logger.ts b/packages/vue-simulator-renderer/src/utils/logger.ts new file mode 100644 index 0000000000..5a39ae2aea --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/logger.ts @@ -0,0 +1,3 @@ +export function warn(...messages: string[]): void { + return console.warn('[vue-simulator-renderer]:', ...messages); +} diff --git a/packages/vue-simulator-renderer/src/utils/navtive-selection.ts b/packages/vue-simulator-renderer/src/utils/navtive-selection.ts new file mode 100644 index 0000000000..76f51f48aa --- /dev/null +++ b/packages/vue-simulator-renderer/src/utils/navtive-selection.ts @@ -0,0 +1,15 @@ +let nativeSelectionEnabled = true; +const preventSelection = (e: Event) => { + if (nativeSelectionEnabled) { + return null; + } + e.preventDefault(); + e.stopPropagation(); + return false; +}; +document.addEventListener('selectstart', preventSelection, true); +document.addEventListener('dragstart', preventSelection, true); + +export function setNativeSelection(enableFlag: boolean) { + nativeSelectionEnabled = enableFlag; +} diff --git a/packages/vue-simulator-renderer/tsconfig.json b/packages/vue-simulator-renderer/tsconfig.json new file mode 100644 index 0000000000..7513033f03 --- /dev/null +++ b/packages/vue-simulator-renderer/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["./src"] +} diff --git a/scripts/build.sh b/scripts/build.sh index 0be5f8871f..5e098c8496 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -14,6 +14,8 @@ lerna run build \ --scope @felce/lowcode-plugin-outline-pane \ --scope @felce/lowcode-react-renderer \ --scope @felce/lowcode-react-simulator-renderer \ + --scope @felce/lowcode-vue-renderer \ + --scope @felce/lowcode-vue-simulator-renderer \ --scope @felce/lowcode-renderer-core \ --scope @felce/lowcode-workspace \ --scope @felce/lowcode-engine \ @@ -23,7 +25,11 @@ lerna run build:umd \ --scope @felce/lowcode-engine \ --scope @felce/lowcode-react-simulator-renderer \ --scope @felce/lowcode-react-renderer \ + --scope @felce/lowcode-vue-simulator-renderer \ + --scope @felce/lowcode-vue-renderer \ --stream cp ./packages/react-simulator-renderer/dist/js/* ./packages/engine/dist/js/ cp ./packages/react-simulator-renderer/dist/css/* ./packages/engine/dist/css/ +cp ./packages/vue-simulator-renderer/dist/js/* ./packages/engine/dist/js/ +cp ./packages/vue-simulator-renderer/dist/css/* ./packages/engine/dist/css/ diff --git a/scripts/sync.sh b/scripts/sync.sh index dfab8991c3..1f96129172 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -12,6 +12,8 @@ tnpm sync @felce/lowcode-plugin-outline-pane tnpm sync @felce/lowcode-renderer-core tnpm sync @felce/lowcode-react-renderer tnpm sync @felce/lowcode-react-simulator-renderer +tnpm sync @felce/lowcode-vue-renderer +tnpm sync @felce/lowcode-vue-simulator-renderer tnpm sync @felce/lowcode-engine tnpm sync @felce/lowcode-workspace -tnpm sync @felce/lowcode-plugin-command \ No newline at end of file +tnpm sync @felce/lowcode-plugin-command From 044349dd4675a1a960d1a9e2181efa0fbb3988c0 Mon Sep 17 00:00:00 2001 From: mazhaobo Date: Mon, 11 Nov 2024 11:34:38 +0800 Subject: [PATCH 28/94] =?UTF-8?q?chore:=20=E8=BF=81=E7=A7=BBreact=E5=92=8C?= =?UTF-8?q?vue=E7=9A=84renderer=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/code-generator/.gitignore | 122 - modules/code-generator/.prettierrc.js | 7 - modules/code-generator/.versionrc | 3 - modules/code-generator/CHANGELOG.md | 266 - modules/code-generator/CONTRIBUTING.md | 40 - modules/code-generator/README.md | 123 - modules/code-generator/babel.config.js | 1 - .../bin/lowcode-code-generator.js | 52 - modules/code-generator/example-schema.json | 276 - modules/code-generator/example-schema.json5 | 276 - modules/code-generator/jest.config.js | 10 - modules/code-generator/jest.setup.js | 12 - modules/code-generator/package.json | 155 - modules/code-generator/scripts/build-cli.js | 56 - .../scripts/build-standalone-loader.js | 73 - .../scripts/build-standalone-worker.js | 107 - .../scripts/build-standalone.js | 135 - .../scripts/build-template-static-files.js | 125 - modules/code-generator/scripts/build-types | 10 - modules/code-generator/scripts/build.js | 75 - .../scripts/move-files-to-build-dest.js | 24 - .../code-generator/scripts/run-demo-project | 55 - .../code-generator/scripts/test-standalone.js | 17 - .../src/analyzer/componentAnalyzer.ts | 35 - modules/code-generator/src/cli/index.ts | 2 - .../code-generator/src/cli/init-solution.ts | 65 - modules/code-generator/src/cli/run.ts | 146 - .../src/cli/solutions/example-solution.ts | 795 --- modules/code-generator/src/config/env.ts | 3 - modules/code-generator/src/const/file.ts | 3 - modules/code-generator/src/const/generator.ts | 129 - modules/code-generator/src/const/index.ts | 33 - .../jsx/handlers/transformJsExpression.ts | 49 - .../jsx/handlers/transformThis2Context.ts | 29 - .../src/core/jsx/util/isLiteralAtomicExpr.ts | 12 - .../core/jsx/util/isSimpleStraightLiteral.ts | 17 - .../src/generator/ChunkBuilder.ts | 123 - .../src/generator/CodeBuilder.ts | 103 - .../src/generator/ModuleBuilder.ts | 118 - .../src/generator/ProjectBuilder.ts | 372 -- modules/code-generator/src/index.ts | 121 - .../code-generator/src/parser/SchemaParser.ts | 394 -- .../src/plugins/common/esmodule.ts | 479 -- .../src/plugins/common/requireUtils.ts | 25 - .../src/plugins/common/styleImport.ts | 64 - .../src/plugins/component/rax/commonDeps.ts | 35 - .../src/plugins/component/rax/const.ts | 18 - .../plugins/component/rax/containerClass.ts | 157 - .../component/rax/containerInitState.ts | 66 - .../component/rax/containerInjectContext.ts | 145 - .../rax/containerInjectDataSourceEngine.ts | 196 - .../component/rax/containerInjectUtils.ts | 69 - .../component/rax/containerLifeCycle.ts | 146 - .../plugins/component/rax/containerMethods.ts | 84 - .../src/plugins/component/rax/jsx.ts | 327 - .../src/plugins/component/react/const.ts | 9 - .../plugins/component/react/containerClass.ts | 145 - .../component/react/containerInitState.ts | 63 - .../react/containerInjectConstants.ts | 55 - .../component/react/containerInjectContext.ts | 91 - .../react/containerInjectDataSourceEngine.ts | 206 - .../component/react/containerInjectI18n.ts | 56 - .../component/react/containerInjectUtils.ts | 125 - .../component/react/containerLifeCycle.ts | 117 - .../component/react/containerMethod.ts | 70 - .../src/plugins/component/react/jsx.ts | 153 - .../component/react/reactCommonDeps.ts | 33 - .../src/plugins/component/style/css.ts | 52 - .../src/plugins/project/constants.ts | 59 - .../plugins/project/framework/icejs/index.ts | 17 - .../project/framework/icejs/plugins/entry.ts | 56 - .../framework/icejs/plugins/entryHtml.ts | 46 - .../framework/icejs/plugins/globalStyle.ts | 56 - .../framework/icejs/plugins/packageJSON.ts | 125 - .../project/framework/icejs/plugins/router.ts | 84 - .../icejs/template/files/README.md.ts | 73 - .../icejs/template/files/abc.json.ts | 17 - .../icejs/template/files/build.json.ts | 32 - .../icejs/template/files/editorconfig.ts | 25 - .../icejs/template/files/eslintignore.ts | 28 - .../icejs/template/files/eslintrc.js.ts | 16 - .../icejs/template/files/gitignore.ts | 36 - .../icejs/template/files/jsconfig.json.ts | 24 - .../icejs/template/files/prettierignore.ts | 22 - .../icejs/template/files/prettierrc.js.ts | 16 - .../components/Footer/index.jsx.ts | 25 - .../components/Footer/index.style.ts | 26 - .../BasicLayout/components/Logo/index.jsx.ts | 27 - .../components/Logo/index.style.ts | 31 - .../components/PageNav/index.jsx.ts | 81 - .../src/layouts/BasicLayout/index.jsx.ts | 92 - .../src/layouts/BasicLayout/menuConfig.js.ts | 22 - .../icejs/template/files/stylelintignore.ts | 20 - .../icejs/template/files/stylelintrc.js.ts | 16 - .../icejs/template/files/tsconfig.json.ts | 46 - .../project/framework/icejs/template/index.ts | 52 - .../framework/icejs/template/static-files.ts | 50 - .../plugins/project/framework/icejs3/index.ts | 17 - .../framework/icejs3/plugins/appConfig.ts | 50 - .../framework/icejs3/plugins/buildConfig.ts | 165 - .../framework/icejs3/plugins/globalStyle.ts | 56 - .../framework/icejs3/plugins/layout.ts | 41 - .../framework/icejs3/plugins/packageJSON.ts | 117 - .../icejs3/template/files/README.md.ts | 12 - .../icejs3/template/files/browserslistrc.ts | 14 - .../icejs3/template/files/document.ts | 41 - .../icejs3/template/files/gitignore.ts | 36 - .../components/Footer/index.jsx.ts | 25 - .../components/Footer/index.style.ts | 26 - .../BasicLayout/components/Logo/index.jsx.ts | 27 - .../components/Logo/index.style.ts | 31 - .../components/PageNav/index.jsx.ts | 79 - .../src/layouts/BasicLayout/index.jsx.ts | 92 - .../src/layouts/BasicLayout/menuConfig.js.ts | 22 - .../icejs3/template/files/tsconfig.ts | 38 - .../icejs3/template/files/typings.ts | 20 - .../framework/icejs3/template/index.ts | 57 - .../framework/icejs3/template/static-files.ts | 33 - .../plugins/project/framework/rax/index.ts | 19 - .../framework/rax/plugins/appConfig.ts | 50 - .../framework/rax/plugins/buildConfig.ts | 51 - .../project/framework/rax/plugins/entry.ts | 61 - .../framework/rax/plugins/entryDocument.ts | 63 - .../framework/rax/plugins/globalStyle.ts | 64 - .../framework/rax/plugins/packageJSON.ts | 120 - .../rax/template/files/.eslintignore.ts | 15 - .../rax/template/files/.eslintrc.js.ts | 16 - .../rax/template/files/.gitignore.ts | 16 - .../rax/template/files/.prettierignore.ts | 15 - .../rax/template/files/.prettierrc.js.ts | 16 - .../rax/template/files/.stylelintignore.ts | 15 - .../rax/template/files/.stylelintrc.js.ts | 16 - .../framework/rax/template/files/README.md.ts | 16 - .../rax/template/files/jsconfig.json.ts | 16 - .../rax/template/files/tsconfig.json.ts | 16 - .../project/framework/rax/template/index.ts | 60 - .../framework/rax/template/static-files.ts | 29 - .../rax/types/RaxFrameworkOptions.ts | 81 - .../src/plugins/project/i18n.ts | 132 - .../src/plugins/project/utils.ts | 155 - .../code-generator/src/polyfills/buffer.ts | 9 - .../code-generator/src/postprocessor/index.ts | 3 - .../src/postprocessor/prettier/index.ts | 46 - .../src/publisher/disk/index.ts | 72 - .../src/publisher/disk/utils.ts | 78 - .../code-generator/src/publisher/zip/index.ts | 72 - .../code-generator/src/publisher/zip/utils.ts | 63 - modules/code-generator/src/solutions/icejs.ts | 117 - .../code-generator/src/solutions/icejs3.ts | 113 - .../code-generator/src/solutions/rax-app.ts | 89 - .../code-generator/src/standalone-loader.ts | 133 - .../code-generator/src/standalone-worker.ts | 81 - modules/code-generator/src/standalone.ts | 120 - modules/code-generator/src/types/analyze.ts | 7 - modules/code-generator/src/types/core.ts | 255 - modules/code-generator/src/types/deps.ts | 38 - modules/code-generator/src/types/error.ts | 17 - modules/code-generator/src/types/file.ts | 14 - modules/code-generator/src/types/index.ts | 7 - .../code-generator/src/types/intermediate.ts | 83 - modules/code-generator/src/types/jsx.ts | 40 - modules/code-generator/src/types/publisher.ts | 17 - modules/code-generator/src/typings.d.ts | 1 - .../code-generator/src/utils/OrderedSet.ts | 33 - modules/code-generator/src/utils/Scope.ts | 28 - .../code-generator/src/utils/ScopeBindings.ts | 56 - modules/code-generator/src/utils/aopHelper.ts | 27 - modules/code-generator/src/utils/common.ts | 55 - .../code-generator/src/utils/compositeType.ts | 232 - .../code-generator/src/utils/dataSource.ts | 47 - modules/code-generator/src/utils/debug.ts | 3 - .../src/utils/encodeJsxAttrString.ts | 18 - modules/code-generator/src/utils/errors.ts | 26 - .../src/utils/expressionParser.ts | 386 -- modules/code-generator/src/utils/format.ts | 12 - modules/code-generator/src/utils/index.ts | 32 - .../code-generator/src/utils/jsExpression.ts | 151 - modules/code-generator/src/utils/jsSlot.ts | 69 - .../code-generator/src/utils/jsxHelpers.ts | 11 - modules/code-generator/src/utils/nodeToJSX.ts | 416 -- .../code-generator/src/utils/pathHelper.ts | 41 - .../code-generator/src/utils/resultHelper.ts | 251 - modules/code-generator/src/utils/schema.ts | 152 - .../src/utils/templateHelper.ts | 30 - modules/code-generator/src/utils/theme.ts | 20 - modules/code-generator/src/utils/validate.ts | 14 - modules/code-generator/src/utils/version.ts | 29 - .../code-generator/standalone-loader/index.js | 2 - .../standalone-loader/package.json | 6 - .../code-generator/standalone-worker/index.js | 6 - .../standalone-worker/package.json | 5 - modules/code-generator/standalone/index.js | 6 - .../code-generator/standalone/package.json | 5 - .../static-files/rax/.eslintignore.template | 8 - .../static-files/rax/.eslintrc.js.template | 15 - .../static-files/rax/.gitignore.template | 18 - .../static-files/rax/.prettierignore.template | 8 - .../static-files/rax/.prettierrc.js.template | 3 - .../rax/.stylelintignore.template | 8 - .../static-files/rax/.stylelintrc.js.template | 3 - .../static-files/rax/README.md.template | 15 - .../static-files/rax/jsconfig.json.template | 10 - .../static-files/rax/tsconfig.json.template | 33 - .../code-generator/tests/bugfix/.gitignore | 1 - .../tests/bugfix/i18n-with-params.schema.json | 52 - .../tests/bugfix/i18n-with-params.test.ts | 54 - .../icejs-import-wrong-naming.schema.json | 34 - .../bugfix/icejs-import-wrong-naming.test.ts | 222 - .../bugfix/icejs-js-function1.schema.json | 1308 ---- .../tests/bugfix/icejs-js-function1.test.ts | 44 - .../icejs-missing-imports-1.schema.json | 903 --- .../bugfix/icejs-missing-imports-1.test.ts | 44 - ...cejs-package-json-dependencies.schema.json | 57 - .../icejs-package-json-dependencies.test.ts | 50 - .../tests/bugfix/icejs-page-map1.schema.json | 47 - .../tests/bugfix/icejs-page-map1.test.ts | 38 - .../tests/bugfix/page-element1.schema.json | 844 --- .../tests/bugfix/page-element1.test.ts | 80 - .../tests/bugfix/page-element2.schema.json | 844 --- .../tests/bugfix/page-element2.test.ts | 80 - .../bugfix/strict-mode-context-1.schema.json | 677 -- .../bugfix/strict-mode-context-1.test.ts | 57 - .../tolerate-eval-errors-1-loop.schema.json | 58 - .../tolerate-eval-errors-1-loop.test.ts | 52 - ...rate-eval-errors-2-nested-loop.schema.json | 70 - ...tolerate-eval-errors-2-nested-loop.test.ts | 56 - modules/code-generator/tests/cli.test.ts | 43 - .../tests/fixtures/test-cases/.gitignore | 1 - .../expected/demo-project/.browserslistrc | 3 - .../demo1/expected/demo-project/.gitignore | 25 - .../demo1/expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../demo1/expected/demo-project/package.json | 44 - .../demo1/expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 13 - .../demo1/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 205 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../demo1/expected/demo-project/src/utils.js | 47 - .../test-cases/icejs3-app/demo1/schema.json5 | 276 - .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 48 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Aaaa/index.css | 0 .../demo-project/src/pages/Aaaa/index.jsx | 118 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 61 - .../demo2-utils-name-alias/schema.json5 | 123 - .../expected/demo-project/.browserslistrc | 3 - .../demo2/expected/demo-project/.gitignore | 25 - .../demo2/expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../demo2/expected/demo-project/package.json | 42 - .../demo2/expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 13 - .../demo2/expected/demo-project/src/i18n.js | 86 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 129 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../demo2/expected/demo-project/src/utils.js | 47 - .../test-cases/icejs3-app/demo2/schema.json5 | 256 - .../expected/demo-project/.browserslistrc | 3 - .../demo3/expected/demo-project/.gitignore | 25 - .../demo3/expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../demo3/expected/demo-project/package.json | 42 - .../demo3/expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 13 - .../demo3/expected/demo-project/src/i18n.js | 86 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 107 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../demo3/expected/demo-project/src/utils.js | 47 - .../test-cases/icejs3-app/demo3/schema.json5 | 159 - .../expected/demo-project/.browserslistrc | 3 - .../demo4/expected/demo-project/.gitignore | 25 - .../demo4/expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../demo4/expected/demo-project/package.json | 45 - .../demo4/expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../demo4/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 292 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../demo4/expected/demo-project/src/utils.js | 47 - .../test-cases/icejs3-app/demo4/schema.json5 | 353 - .../expected/demo-project/.browserslistrc | 3 - .../demo5/expected/demo-project/.gitignore | 25 - .../demo5/expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../demo5/expected/demo-project/package.json | 46 - .../demo5/expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../demo5/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 389 -- .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../demo5/expected/demo-project/src/utils.js | 47 - .../test-cases/icejs3-app/demo5/schema.json5 | 677 -- .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 44 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 13 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 205 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../demo6-literal-condition/schema.json5 | 273 - .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 45 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 1076 --- .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../demo7-literal-condition2/schema.json5 | 1703 ----- .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 44 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Example/index.css | 0 .../demo-project/src/pages/Example/index.jsx | 116 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../demo8-datasource-prop/schema.json5 | 65 - .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 43 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/$/index.css | 0 .../demo-project/src/pages/$/index.jsx | 125 - .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../demo9-datasource-engine/schema.json5 | 59 - .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 46 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 822 --- .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../icejs3-app/demo_10-jsslot/schema.json5 | 1206 ---- .../expected/demo-project/.browserslistrc | 3 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/README.md | 1 - .../expected/demo-project/ice.config.mts | 89 - .../expected/demo-project/package.json | 46 - .../expected/demo-project/src/app.ts | 13 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/document.tsx | 29 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 68 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 976 --- .../demo-project/src/pages/layout.jsx | 10 - .../expected/demo-project/src/typings.d.ts | 9 - .../expected/demo-project/src/utils.js | 47 - .../icejs3-app/demo_11-jsslot-2/schema.json5 | 1457 ----- .../expected/demo-project/.eslintignore | 8 - .../demo01/expected/demo-project/.eslintrc.js | 15 - .../demo01/expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../demo01/expected/demo-project/README.md | 15 - .../demo01/expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../demo01/expected/demo-project/package.json | 29 - .../demo01/expected/demo-project/src/app.js | 9 - .../demo01/expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../demo01/expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 142 - .../demo01/expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../test-cases/rax-app/demo01/schema.json5 | 54 - .../expected/demo-project/.eslintignore | 8 - .../demo02/expected/demo-project/.eslintrc.js | 15 - .../demo02/expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../demo02/expected/demo-project/README.md | 15 - .../demo02/expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../demo02/expected/demo-project/package.json | 35 - .../demo02/expected/demo-project/src/app.js | 9 - .../demo02/expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 9 - .../demo02/expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 347 - .../demo02/expected/demo-project/src/utils.js | 70 - .../expected/demo-project/tsconfig.json | 33 - .../test-cases/rax-app/demo02/schema.json5 | 374 -- .../expected/demo-project/.eslintignore | 8 - .../demo03/expected/demo-project/.eslintrc.js | 15 - .../demo03/expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../demo03/expected/demo-project/README.md | 15 - .../demo03/expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../demo03/expected/demo-project/package.json | 30 - .../demo03/expected/demo-project/src/app.js | 9 - .../demo03/expected/demo-project/src/app.json | 19 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 9 - .../demo03/expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Detail/index.css | 0 .../demo-project/src/pages/Detail/index.jsx | 151 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 151 - .../demo-project/src/pages/List/index.css | 0 .../demo-project/src/pages/List/index.jsx | 154 - .../demo03/expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../test-cases/rax-app/demo03/schema.json5 | 175 - .../test-cases/rax-app/demo04/README.md | 1 - .../expected/demo-project/.eslintignore | 8 - .../demo04/expected/demo-project/.eslintrc.js | 15 - .../demo04/expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../demo04/expected/demo-project/README.md | 15 - .../demo04/expected/demo-project/build.json | 8 - .../expected/demo-project/jsconfig.json | 10 - .../demo04/expected/demo-project/package.json | 30 - .../demo04/expected/demo-project/src/app.js | 9 - .../demo04/expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 9 - .../demo04/expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 146 - .../demo04/expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../test-cases/rax-app/demo04/schema.json5 | 85 - .../expected/demo-project/.eslintignore | 8 - .../demo05/expected/demo-project/.eslintrc.js | 15 - .../demo05/expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../demo05/expected/demo-project/README.md | 15 - .../demo05/expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../demo05/expected/demo-project/package.json | 29 - .../demo05/expected/demo-project/src/app.js | 9 - .../demo05/expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../demo05/expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 148 - .../demo05/expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../test-cases/rax-app/demo05/schema.json5 | 72 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 30 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 154 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../rax-app/demo06-jsslot/schema.json5 | 84 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 29 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 148 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../demo07-newline-in-props/schema.json5 | 78 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 30 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 154 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../schema.json5 | 90 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 30 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 157 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../schema.json5 | 94 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 30 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 159 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../schema.json5 | 89 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 8 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 33 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Aaaa/index.css | 0 .../demo-project/src/pages/Aaaa/index.jsx | 171 - .../expected/demo-project/src/utils.js | 61 - .../expected/demo-project/tsconfig.json | 33 - .../demo11-utils-name-alias/schema.json5 | 136 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 29 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 75 - .../demo-project/src/pages/Home/index.css | 0 .../demo-project/src/pages/Home/index.jsx | 162 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../rax-app/demo12-refs/schema.json5 | 73 - .../expected/demo-project/.eslintignore | 8 - .../expected/demo-project/.eslintrc.js | 15 - .../expected/demo-project/.gitignore | 18 - .../expected/demo-project/.prettierignore | 8 - .../expected/demo-project/.prettierrc.js | 3 - .../expected/demo-project/.stylelintignore | 8 - .../expected/demo-project/.stylelintrc.js | 3 - .../expected/demo-project/README.md | 15 - .../expected/demo-project/build.json | 5 - .../expected/demo-project/jsconfig.json | 10 - .../expected/demo-project/package.json | 29 - .../expected/demo-project/src/app.js | 9 - .../expected/demo-project/src/app.json | 11 - .../expected/demo-project/src/constants.js | 3 - .../demo-project/src/document/index.jsx | 25 - .../expected/demo-project/src/global.css | 3 - .../expected/demo-project/src/i18n.js | 68 - .../demo-project/src/pages/Example/index.css | 0 .../demo-project/src/pages/Example/index.jsx | 173 - .../expected/demo-project/src/utils.js | 45 - .../expected/demo-project/tsconfig.json | 33 - .../demo13-datasource-prop/schema.json5 | 65 - .../demo1/expected/demo-project/.editorconfig | 14 - .../demo1/expected/demo-project/.eslintignore | 17 - .../demo1/expected/demo-project/.eslintrc.js | 5 - .../demo1/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo1/expected/demo-project/README.md | 62 - .../demo1/expected/demo-project/abc.json | 6 - .../demo1/expected/demo-project/build.json | 21 - .../demo1/expected/demo-project/jsconfig.json | 13 - .../demo1/expected/demo-project/package.json | 50 - .../expected/demo-project/public/index.html | 12 - .../demo1/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 13 - .../demo1/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 205 - .../demo1/expected/demo-project/src/routes.js | 18 - .../demo1/expected/demo-project/src/utils.js | 47 - .../demo1/expected/demo-project/tsconfig.json | 35 - .../test-cases/react-app/demo1/schema.json5 | 276 - .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 53 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Aaaa/index.css | 0 .../demo-project/src/pages/Aaaa/index.jsx | 118 - .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 61 - .../expected/demo-project/tsconfig.json | 35 - .../demo2-utils-name-alias/schema.json5 | 123 - .../demo2/expected/demo-project/.editorconfig | 14 - .../demo2/expected/demo-project/.eslintignore | 17 - .../demo2/expected/demo-project/.eslintrc.js | 5 - .../demo2/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo2/expected/demo-project/README.md | 62 - .../demo2/expected/demo-project/abc.json | 6 - .../demo2/expected/demo-project/build.json | 21 - .../demo2/expected/demo-project/jsconfig.json | 13 - .../demo2/expected/demo-project/package.json | 48 - .../expected/demo-project/public/index.html | 12 - .../demo2/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 13 - .../demo2/expected/demo-project/src/i18n.js | 86 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 129 - .../demo2/expected/demo-project/src/routes.js | 18 - .../demo2/expected/demo-project/src/utils.js | 47 - .../demo2/expected/demo-project/tsconfig.json | 35 - .../test-cases/react-app/demo2/schema.json5 | 256 - .../demo3/expected/demo-project/.editorconfig | 14 - .../demo3/expected/demo-project/.eslintignore | 17 - .../demo3/expected/demo-project/.eslintrc.js | 5 - .../demo3/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo3/expected/demo-project/README.md | 62 - .../demo3/expected/demo-project/abc.json | 6 - .../demo3/expected/demo-project/build.json | 21 - .../demo3/expected/demo-project/jsconfig.json | 13 - .../demo3/expected/demo-project/package.json | 48 - .../expected/demo-project/public/index.html | 12 - .../demo3/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 13 - .../demo3/expected/demo-project/src/i18n.js | 86 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 107 - .../demo3/expected/demo-project/src/routes.js | 18 - .../demo3/expected/demo-project/src/utils.js | 47 - .../demo3/expected/demo-project/tsconfig.json | 35 - .../test-cases/react-app/demo3/schema.json5 | 159 - .../demo4/expected/demo-project/.editorconfig | 14 - .../demo4/expected/demo-project/.eslintignore | 17 - .../demo4/expected/demo-project/.eslintrc.js | 5 - .../demo4/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo4/expected/demo-project/README.md | 62 - .../demo4/expected/demo-project/abc.json | 6 - .../demo4/expected/demo-project/build.json | 21 - .../demo4/expected/demo-project/jsconfig.json | 13 - .../demo4/expected/demo-project/package.json | 50 - .../expected/demo-project/public/index.html | 12 - .../demo4/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../demo4/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 292 - .../demo4/expected/demo-project/src/routes.js | 18 - .../demo4/expected/demo-project/src/utils.js | 47 - .../demo4/expected/demo-project/tsconfig.json | 35 - .../test-cases/react-app/demo4/schema.json5 | 353 - .../demo5/expected/demo-project/.editorconfig | 14 - .../demo5/expected/demo-project/.eslintignore | 17 - .../demo5/expected/demo-project/.eslintrc.js | 5 - .../demo5/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo5/expected/demo-project/README.md | 62 - .../demo5/expected/demo-project/abc.json | 6 - .../demo5/expected/demo-project/build.json | 21 - .../demo5/expected/demo-project/jsconfig.json | 13 - .../demo5/expected/demo-project/package.json | 51 - .../expected/demo-project/public/index.html | 12 - .../demo5/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../demo5/expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 389 -- .../demo5/expected/demo-project/src/routes.js | 18 - .../demo5/expected/demo-project/src/utils.js | 47 - .../demo5/expected/demo-project/tsconfig.json | 35 - .../test-cases/react-app/demo5/schema.json5 | 677 -- .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 50 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 13 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 205 - .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../demo6-literal-condition/schema.json5 | 273 - .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 50 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 1076 --- .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../demo7-literal-condition2/schema.json5 | 1703 ----- .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 49 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Example/index.css | 0 .../demo-project/src/pages/Example/index.jsx | 116 - .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../demo8-datasource-prop/schema.json5 | 65 - .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 49 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/$/index.css | 0 .../demo-project/src/pages/$/index.jsx | 125 - .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../demo9-datasource-engine/schema.json5 | 59 - .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 51 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 822 --- .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../react-app/demo_10-jsslot/schema.json5 | 1206 ---- .../expected/demo-project/.editorconfig | 14 - .../expected/demo-project/.eslintignore | 17 - .../expected/demo-project/.eslintrc.js | 5 - .../expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../expected/demo-project/README.md | 62 - .../expected/demo-project/abc.json | 6 - .../expected/demo-project/build.json | 21 - .../expected/demo-project/jsconfig.json | 13 - .../expected/demo-project/package.json | 51 - .../expected/demo-project/public/index.html | 12 - .../expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 6 - .../expected/demo-project/src/i18n.js | 77 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 8 - .../demo-project/src/pages/Test/index.jsx | 976 --- .../expected/demo-project/src/routes.js | 18 - .../expected/demo-project/src/utils.js | 47 - .../expected/demo-project/tsconfig.json | 35 - .../react-app/demo_11-jsslot-2/schema.json5 | 1457 ----- .../demo1/expected/demo-project/.editorconfig | 14 - .../demo1/expected/demo-project/.eslintignore | 17 - .../demo1/expected/demo-project/.eslintrc.js | 5 - .../demo1/expected/demo-project/.gitignore | 25 - .../expected/demo-project/.prettierignore | 11 - .../expected/demo-project/.prettierrc.js | 5 - .../expected/demo-project/.stylelintignore | 9 - .../expected/demo-project/.stylelintrc.js | 5 - .../demo1/expected/demo-project/README.md | 62 - .../demo1/expected/demo-project/abc.json | 6 - .../demo1/expected/demo-project/build.json | 22 - .../demo1/expected/demo-project/jsconfig.json | 13 - .../demo1/expected/demo-project/package.json | 44 - .../expected/demo-project/public/index.html | 12 - .../demo1/expected/demo-project/src/app.js | 11 - .../expected/demo-project/src/constants.js | 3 - .../expected/demo-project/src/global.scss | 13 - .../demo1/expected/demo-project/src/i18n.js | 33 - .../BasicLayout/components/Footer/index.jsx | 14 - .../components/Footer/index.module.scss | 15 - .../BasicLayout/components/Logo/index.jsx | 16 - .../components/Logo/index.module.scss | 20 - .../BasicLayout/components/PageNav/index.jsx | 70 - .../src/layouts/BasicLayout/index.jsx | 81 - .../src/layouts/BasicLayout/menuConfig.js | 11 - .../demo-project/src/pages/Test/index.css | 0 .../demo-project/src/pages/Test/index.jsx | 79 - .../demo1/expected/demo-project/src/routes.js | 18 - .../demo1/expected/demo-project/src/utils.js | 47 - .../demo1/expected/demo-project/tsconfig.json | 35 - .../react-module/demo1/schema.json5 | 296 - .../tests/helpers/solutionHelper.ts | 106 - .../__snapshots__/requireUtils.test.ts.snap | 18 - .../tests/plugins/common/requireUtils.test.ts | 17 - .../p0-condition-at-root.test.ts.snap | 355 - .../plugins/jsx/p0-condition-at-root.test.ts | 104 - .../__snapshots__/prettier.test.ts.snap | 44 - .../tests/postprocessor/prettier.test.ts | 39 - modules/code-generator/tests/public/README.md | 1 - .../__snapshots__/p0-basic.test.ts.snap | 178 - .../SchemaParser/data/schema-with-slot.json | 1457 ----- .../public/SchemaParser/p0-basic.test.ts | 13 - .../code-generator/tests/public/cli.test.ts | 32 - .../tests/public/publisher/disk/disk.test.ts | 56 - .../tests/public/publisher/zip/zip.test.ts | 87 - .../tests/public/solutions/icejs3-app.test.ts | 67 - .../tests/public/solutions/rax-app.test.ts | 68 - .../tests/public/solutions/react-app.test.ts | 67 - .../tests/utils/compositeType.test.ts | 141 - .../code-generator/tests/utils/errors.test.ts | 27 - .../expressionParser/jsExpression.test.ts | 45 - ...parseExpressionConvertThis2Context.test.ts | 95 - .../parseExpressionGetGlobalVariables.test.ts | 134 - .../parseExpressionGetKeywords.test.ts | 31 - .../tests/utils/flattenResult.test.ts | 60 - .../utils/resultHelper/example-result.json | 46 - .../tests/utils/resultHelper/findFile.test.ts | 34 - .../utils/resultHelper/globFiles.test.ts | 67 - .../resultHelper/removeDirsFromResult.test.ts | 101 - .../removeFilesFromResult.test.ts | 102 - .../utils/resultHelper/scanFiles.test.ts | 68 - .../utils/schema/data/schema-with-slot.json | 1457 ----- .../tests/utils/schema/handleSubNodes.test.ts | 92 - .../tests/utils/validate.test.ts | 20 - .../tests/utils/version.test.ts | 33 - modules/code-generator/tsconfig.json | 8 - modules/material-parser/README.md | 22 - modules/material-parser/build.test.json | 5 - modules/material-parser/demo/component.jsx | 81 - modules/material-parser/demo/component.tsx | 54 - modules/material-parser/demo/parse-jsx.js | 11 - modules/material-parser/demo/parse-tsx.js | 11 - modules/material-parser/jest.config.js | 20 - modules/material-parser/package.json | 76 - modules/material-parser/schemas/schema.json | 537 -- modules/material-parser/schemas/schema.yml | 351 - modules/material-parser/scripts/transform.js | 35 - modules/material-parser/src/core/index.ts | 10 - .../material-parser/src/core/schema/types.ts | 163 - modules/material-parser/src/generate.ts | 65 - modules/material-parser/src/index.ts | 70 - modules/material-parser/src/localize.ts | 126 - .../src/parse/dynamic/index.ts | 121 - .../src/parse/dynamic/requireInSandbox.ts | 37 - modules/material-parser/src/parse/index.ts | 80 - .../parse/js/handlers/defaultPropsHandler.ts | 138 - .../src/parse/js/handlers/index.ts | 22 - .../parse/js/handlers/preProcessHandler.ts | 3 - .../src/parse/js/handlers/propTypeHandler.ts | 139 - .../parse/js/handlers/propTypeJsDocHandler.ts | 64 - modules/material-parser/src/parse/js/index.ts | 42 - .../src/parse/js/resolver/checkIsIIFE.ts | 8 - .../parse/js/resolver/findAssignedMethods.ts | 37 - .../src/parse/js/resolver/index.ts | 393 -- .../resolver/isReactComponentStaticMember.ts | 14 - .../src/parse/js/resolver/isStaticMethod.ts | 15 - .../js/resolver/resolveExportDeclaration.ts | 53 - .../src/parse/js/resolver/resolveHOC.ts | 42 - .../src/parse/js/resolver/resolveIIFE.ts | 20 - .../src/parse/js/resolver/resolveImport.ts | 179 - .../js/resolver/resolveTranspiledClass.ts | 31 - .../src/parse/js/utils/cache.ts | 18 - .../src/parse/js/utils/evaluate.ts | 103 - .../src/parse/js/utils/findJSFilePath.ts | 15 - .../src/parse/js/utils/getComposedPath.ts | 52 - .../src/parse/js/utils/getName.ts | 13 - .../src/parse/js/utils/getRoot.ts | 7 - .../src/parse/js/utils/makeProxy.ts | 23 - .../material-parser/src/parse/transform.ts | 306 - .../src/parse/ts/generateDTS.ts | 56 - modules/material-parser/src/parse/ts/index.ts | 609 -- .../src/parse/ts/tsconfig.json | 11 - modules/material-parser/src/scan.ts | 78 - modules/material-parser/src/types/Basic.ts | 5 - .../material-parser/src/types/ChannelType.ts | 9 - modules/material-parser/src/types/DSLType.ts | 4 - .../material-parser/src/types/IAccesser.ts | 14 - .../src/types/IExtensionConfigManifest.ts | 13 - .../src/types/IMaterialParsedModel.ts | 22 - .../src/types/IMaterialScanModel.ts | 23 - .../src/types/IMaterializeOptions.ts | 117 - modules/material-parser/src/types/Meta.ts | 14 - modules/material-parser/src/types/index.ts | 8 - modules/material-parser/src/utils.ts | 138 - modules/material-parser/src/validate/index.ts | 14 - .../material-parser/src/validate/schema.json | 548 -- .../test/__snapshots__/dynamic.test.ts.snap | 27 - .../test/__snapshots__/index.test.ts.snap | 1753 ----- .../test/__snapshots__/online.test.ts.snap | 5780 ----------------- modules/material-parser/test/dynamic.test.ts | 14 - .../test/fixtures/dts-component/index.d.ts | 168 - .../test/fixtures/dts-component/package.json | 5 - .../test/fixtures/dts-component/src/data.js | 1264 ---- .../test/fixtures/dts-component/src/i18n.js | 27 - .../test/fixtures/dts-component/src/index.jsx | 142 - .../test/fixtures/dts-component/src/main.scss | 40 - .../dts-component/src/scss/variable.scss | 12 - .../es/basic/AIMakeBlank/amContainer.js | 11 - .../es/basic/AIMakeBlank/amManifest.js | 144 - .../es/basic/AIMakeBlank/container.js | 6 - .../es/basic/AIMakeBlank/index.js | 74 - .../es/basic/AIMakeBlank/manifest.js | 1 - .../es/basic/AIMakeBlank/manifest.json | 1 - .../es/basic/AIMakeIcon/IconFont.js | 67 - .../es/basic/AIMakeIcon/amContainer.js | 13 - .../es/basic/AIMakeIcon/amManifest.js | 82 - .../es/basic/AIMakeIcon/container.js | 6 - .../es/basic/AIMakeIcon/index.js | 71 - .../es/basic/AIMakeIcon/manifest.js | 1 - .../es/basic/AIMakeIcon/manifest.json | 1 - .../es/basic/AIMakeImage/amContainer.js | 11 - .../es/basic/AIMakeImage/amManifest.js | 86 - .../es/basic/AIMakeImage/container.js | 6 - .../es/basic/AIMakeImage/index.js | 54 - .../es/basic/AIMakeImage/manifest.js | 1 - .../es/basic/AIMakeImage/manifest.json | 1 - .../es/basic/AIMakeLink/amContainer.js | 11 - .../es/basic/AIMakeLink/amManifest.js | 102 - .../es/basic/AIMakeLink/container.js | 6 - .../es/basic/AIMakeLink/index.js | 73 - .../es/basic/AIMakeLink/manifest.js | 1 - .../es/basic/AIMakeLink/manifest.json | 1 - .../es/basic/AIMakePlaceholder/amContainer.js | 11 - .../es/basic/AIMakePlaceholder/amManifest.js | 102 - .../es/basic/AIMakePlaceholder/container.js | 6 - .../es/basic/AIMakePlaceholder/index.js | 65 - .../es/basic/AIMakePlaceholder/manifest.js | 1 - .../es/basic/AIMakePlaceholder/manifest.json | 1 - .../es/basic/AIMakeText/amContainer.js | 11 - .../es/basic/AIMakeText/amManifest.js | 115 - .../es/basic/AIMakeText/container.js | 6 - .../es/basic/AIMakeText/index.js | 95 - .../es/basic/AIMakeText/manifest.js | 1 - .../es/basic/AIMakeText/manifest.json | 1 - .../es/basic/Root/amContainer.js | 11 - .../es/basic/Root/amManifest.js | 25 - .../es/basic/Root/container.js | 6 - .../es/basic/Root/index.js | 51 - .../es/basic/Root/manifest.js | 1 - .../es/basic/Root/manifest.json | 1 - .../es/basic/style/index.css | 15 - .../es/basic/style/index.js | 1 - .../es/basic/style/index.less | 8 - .../es/basic/utils/HOCBackgroundProps.js | 74 - .../es/basic/utils/HOCBoxModelProps.js | 103 - .../es/basic/utils/HOCFlexLayoutProps.js | 90 - .../es/basic/utils/HOCLayoutProps.js | 82 - .../es/basic/utils/HOCTextProps.js | 82 - .../multiple-exported-component/es/index.js | 9 - .../multiple-exported-component/package.json | 22 - .../src/basic/AIMakeBlank/amContainer.js | 6 - .../src/basic/AIMakeBlank/amManifest.js | 158 - .../src/basic/AIMakeBlank/container.js | 5 - .../src/basic/AIMakeBlank/index.js | 61 - .../src/basic/AIMakeBlank/manifest.js | 1 - .../src/basic/AIMakeBlank/manifest.json | 1 - .../src/basic/AIMakeIcon/IconFont.js | 51 - .../src/basic/AIMakeIcon/amContainer.js | 7 - .../src/basic/AIMakeIcon/amManifest.js | 89 - .../src/basic/AIMakeIcon/container.js | 5 - .../src/basic/AIMakeIcon/index.js | 59 - .../src/basic/AIMakeIcon/manifest.js | 1 - .../src/basic/AIMakeIcon/manifest.json | 1 - .../src/basic/AIMakeImage/amContainer.js | 6 - .../src/basic/AIMakeImage/amManifest.js | 99 - .../src/basic/AIMakeImage/container.js | 5 - .../src/basic/AIMakeImage/index.js | 26 - .../src/basic/AIMakeImage/manifest.js | 1 - .../src/basic/AIMakeImage/manifest.json | 1 - .../src/basic/AIMakeLink/amContainer.js | 6 - .../src/basic/AIMakeLink/amManifest.js | 115 - .../src/basic/AIMakeLink/container.js | 5 - .../src/basic/AIMakeLink/index.js | 57 - .../src/basic/AIMakeLink/manifest.js | 1 - .../src/basic/AIMakeLink/manifest.json | 1 - .../basic/AIMakePlaceholder/amContainer.js | 6 - .../src/basic/AIMakePlaceholder/amManifest.js | 115 - .../src/basic/AIMakePlaceholder/container.js | 5 - .../src/basic/AIMakePlaceholder/index.js | 45 - .../src/basic/AIMakePlaceholder/manifest.js | 1 - .../src/basic/AIMakePlaceholder/manifest.json | 1 - .../src/basic/AIMakeText/amContainer.js | 6 - .../src/basic/AIMakeText/amManifest.js | 119 - .../src/basic/AIMakeText/container.js | 5 - .../src/basic/AIMakeText/index.js | 72 - .../src/basic/AIMakeText/manifest.js | 1 - .../src/basic/AIMakeText/manifest.json | 1 - .../src/basic/Root/amContainer.js | 6 - .../src/basic/Root/amManifest.js | 29 - .../src/basic/Root/container.js | 5 - .../src/basic/Root/index.js | 29 - .../src/basic/Root/manifest.js | 1 - .../src/basic/Root/manifest.json | 1 - .../src/basic/style/index.js | 1 - .../src/basic/style/index.less | 8 - .../src/basic/utils/HOCBackgroundProps.js | 44 - .../src/basic/utils/HOCBoxModelProps.js | 75 - .../src/basic/utils/HOCFlexLayoutProps.js | 61 - .../src/basic/utils/HOCLayoutProps.js | 52 - .../src/basic/utils/HOCTextProps.js | 52 - .../multiple-exported-component/src/index.js | 17 - .../test/fixtures/rax-component/package.json | 64 - .../test/fixtures/rax-component/src/index.css | 5 - .../test/fixtures/rax-component/src/index.tsx | 22 - .../single-exported-component/es/container.js | 6 - .../single-exported-component/es/index.js | 97 - .../single-exported-component/es/main.css | 6 - .../single-exported-component/es/main.scss | 11 - .../single-exported-component/es/manifest.js | 1 - .../es/manifest.json | 1 - .../single-exported-component/package.json | 30 - .../single-exported-component/src/index.js | 90 - .../single-exported-component/src/main.scss | 11 - .../transpiled-component/package.json | 8 - .../test/fixtures/ts-component/package.json | 34 - .../test/fixtures/ts-component/src/index.tsx | 9 - .../fixtures/ts-component/src/main-module.tsx | 104 - .../fixtures/ts-component/src/sub-module.tsx | 22 - .../test/fixtures/ts-component2/package.json | 62 - .../test/fixtures/ts-component2/src/empty.tsx | 22 - .../fixtures/ts-component2/src/index.scss | 49 - .../test/fixtures/ts-component2/src/index.tsx | 71 - .../fixtures/without-display-name/index.js | 12 - .../without-display-name/package.json | 9 - modules/material-parser/test/helpers/index.ts | 10 - modules/material-parser/test/index.test.ts | 110 - modules/material-parser/test/localize.test.ts | 6 - modules/material-parser/test/online.test.ts | 53 - .../validate/__snapshots__/index.test.ts.snap | 23 - .../validate/fixtures/basic-error/schema.json | 18 - .../fixtures/basic-success/schema.json | 19 - .../validate/fixtures/configure/schema.json | 68 - .../fixtures/props-basic-type/schema.json | 71 - .../fixtures/props-complex-type/schema.json | 95 - .../test/validate/index.test.ts | 25 - modules/material-parser/tsconfig.json | 19 - modules/material-parser/webpack.config.js | 40 - packages/editor-core/package.json | 3 +- packages/engine/README.md | 35 + packages/ignitor/build.json | 3 +- packages/ignitor/package.json | 3 +- packages/react-renderer/README.md | 0 packages/react-renderer/build.json | 9 - packages/react-renderer/build.test.json | 6 - packages/react-renderer/build.umd.json | 28 - packages/react-renderer/demo/compose.md | 35 - .../demo/config/components/A.jsx | 11 - .../demo/config/components/Div.jsx | 11 - .../demo/config/components/Image.jsx | 15 - .../demo/config/components/Text.jsx | 27 - .../demo/config/components/index.js | 175 - .../react-renderer/demo/config/constants.js | 3 - packages/react-renderer/demo/config/utils.js | 10 - packages/react-renderer/demo/dataSource.md | 35 - packages/react-renderer/demo/i18n.md | 40 - packages/react-renderer/demo/list.md | 35 - .../react-renderer/demo/schemas/compose.js | 61 - .../react-renderer/demo/schemas/dataSource.js | 37 - packages/react-renderer/demo/schemas/i18n.js | 20 - packages/react-renderer/demo/schemas/list.js | 225 - packages/react-renderer/demo/schemas/table.js | 367 -- packages/react-renderer/demo/table.md | 35 - packages/react-renderer/jest.config.js | 26 - packages/react-renderer/package.json | 47 - packages/react-renderer/src/index.ts | 71 - .../tests/__snapshots__/index.test.tsx.snap | 865 --- .../tests/fixtures/schema/basic.ts | 567 -- packages/react-renderer/tests/index.test.tsx | 31 - packages/react-renderer/tsconfig.json | 9 - packages/react-simulator-renderer/.babelrc | 6 - .../react-simulator-renderer/babel.config.js | 1 - packages/react-simulator-renderer/build.json | 3 - .../react-simulator-renderer/build.plugin.js | 5 - .../react-simulator-renderer/build.test.json | 6 - .../react-simulator-renderer/build.umd.json | 37 - .../react-simulator-renderer/jest.config.js | 27 - .../react-simulator-renderer/package.json | 52 - .../react-simulator-renderer/src/README.md | 1 - .../builtin-components/builtin-components.ts | 413 -- .../src/builtin-components/leaf.tsx | 24 - .../src/builtin-components/slot.tsx | 58 - packages/react-simulator-renderer/src/host.ts | 4 - .../react-simulator-renderer/src/index.ts | 17 - .../src/locale/en-US.json | 4 - .../src/locale/index.ts | 21 - .../src/locale/zh-CN.json | 4 - .../src/renderer-view.tsx | 295 - .../src/renderer.less | 95 - .../react-simulator-renderer/src/renderer.ts | 662 -- .../src/utils/get-client-rects.ts | 13 - .../src/utils/is-dom-node.ts | 3 - .../src/utils/misc.ts | 35 - .../src/utils/react-find-dom-nodes.ts | 41 - .../react-simulator-renderer/src/utils/url.ts | 74 - .../test/schema/basic.ts | 81 - .../renderer/__snapshots__/demo.test.tsx.snap | 42 - .../test/src/renderer/demo.test.tsx | 31 - .../test/utils/components.tsx | 7 - .../test/utils/host.ts | 79 - .../react-simulator-renderer/tsconfig.json | 9 - packages/renderer-core/babel.config.js | 1 - packages/renderer-core/build.json | 10 - packages/renderer-core/build.test.json | 6 - packages/renderer-core/jest.config.js | 33 - packages/renderer-core/package.json | 61 - packages/renderer-core/src/adapter/index.ts | 104 - packages/renderer-core/src/components/Div.tsx | 15 - .../src/components/VisualDom/index.css | 19 - .../src/components/VisualDom/index.tsx | 33 - packages/renderer-core/src/context/index.ts | 13 - packages/renderer-core/src/hoc/index.tsx | 88 - packages/renderer-core/src/hoc/leaf.tsx | 629 -- packages/renderer-core/src/index.ts | 9 - packages/renderer-core/src/renderer/addon.tsx | 82 - packages/renderer-core/src/renderer/base.tsx | 1164 ---- packages/renderer-core/src/renderer/block.tsx | 38 - .../renderer-core/src/renderer/component.tsx | 50 - packages/renderer-core/src/renderer/index.ts | 17 - packages/renderer-core/src/renderer/page.tsx | 63 - .../renderer-core/src/renderer/renderer.tsx | 208 - packages/renderer-core/src/renderer/temp.tsx | 60 - packages/renderer-core/src/types/index.ts | 359 - packages/renderer-core/src/utils/common.ts | 400 -- .../renderer-core/src/utils/data-helper.ts | 314 - packages/renderer-core/src/utils/index.ts | 3 - .../renderer-core/src/utils/is-use-loop.ts | 23 - packages/renderer-core/src/utils/logger.ts | 3 - packages/renderer-core/src/utils/request.ts | 198 - .../tests/adapter/adapter.test.ts | 101 - .../tests/fixtures/schema/basic.ts | 567 -- .../tests/fixtures/unhandled-rejection.ts | 7 - .../hoc/__snapshots__/leaf.test.tsx.snap | 148 - .../renderer-core/tests/hoc/leaf.test.tsx | 604 -- packages/renderer-core/tests/mock/loop.ts | 221 - packages/renderer-core/tests/mock/sample.ts | 184 - .../renderer-core/tests/mock/styleMock.js | 5 - .../__snapshots__/renderer.test.tsx.snap | 1395 ---- .../tests/renderer/base.test.tsx | 222 - .../tests/renderer/renderer.test.tsx | 447 -- packages/renderer-core/tests/setup.ts | 14 - .../renderer-core/tests/utils/common.test.ts | 463 -- .../renderer-core/tests/utils/components.tsx | 38 - .../tests/utils/data-helper.test.ts | 559 -- .../tests/utils/is-use-loop.test.ts | 31 - packages/renderer-core/tests/utils/node.ts | 97 - .../tests/utils/react-env-init.ts | 66 - .../renderer-core/tests/utils/request.test.ts | 159 - packages/renderer-core/tsconfig.json | 8 - packages/vue-renderer/CHANGELOG.md | 135 - packages/vue-renderer/README.md | 1 - packages/vue-renderer/build.json | 3 - packages/vue-renderer/build.plugin.cjs | 10 - packages/vue-renderer/build.umd.json | 24 - packages/vue-renderer/package.json | 40 - packages/vue-renderer/src/config.ts | 27 - packages/vue-renderer/src/core/base.ts | 89 - packages/vue-renderer/src/core/hoc.ts | 168 - packages/vue-renderer/src/core/index.ts | 2 - packages/vue-renderer/src/core/live.ts | 54 - packages/vue-renderer/src/core/use.ts | 807 --- .../vue-renderer/src/data-source/index.ts | 163 - .../vue-renderer/src/data-source/interface.ts | 26 - .../vue-renderer/src/data-source/request.ts | 140 - .../vue-renderer/src/hooks/current-node.ts | 48 - packages/vue-renderer/src/hooks/index.ts | 2 - .../src/hooks/renderer-context.ts | 42 - packages/vue-renderer/src/index.ts | 4 - packages/vue-renderer/src/renderer.ts | 113 - packages/vue-renderer/src/renderers/index.ts | 6 - packages/vue-renderer/src/renderers/page.ts | 19 - packages/vue-renderer/src/utils/array.ts | 5 - packages/vue-renderer/src/utils/i18n.ts | 25 - packages/vue-renderer/src/utils/index.ts | 4 - packages/vue-renderer/src/utils/parse.ts | 101 - packages/vue-renderer/src/utils/scope.ts | 67 - packages/vue-renderer/tsconfig.json | 4 - packages/vue-simulator-renderer/CHANGELOG.md | 132 - packages/vue-simulator-renderer/README.md | 1 - packages/vue-simulator-renderer/build.json | 3 - .../vue-simulator-renderer/build.plugin.cjs | 10 - .../vue-simulator-renderer/build.umd.json | 29 - packages/vue-simulator-renderer/package.json | 40 - .../vue-simulator-renderer/public/index.html | 10 - .../src/buildin-components/index.ts | 3 - .../src/buildin-components/leaf.ts | 26 - .../src/buildin-components/page.ts | 24 - .../src/buildin-components/slot.ts | 46 - packages/vue-simulator-renderer/src/host.ts | 3 - .../vue-simulator-renderer/src/index.less | 122 - packages/vue-simulator-renderer/src/index.ts | 19 - .../vue-simulator-renderer/src/interface.ts | 52 - .../src/simulator-view.ts | 72 - .../vue-simulator-renderer/src/simulator.ts | 349 - .../src/utils/build-components.ts | 94 - .../src/utils/check-node.ts | 11 - .../src/utils/closest-node.ts | 71 - .../src/utils/comp-node.ts | 65 - .../src/utils/cursor.ts | 61 - .../src/utils/find-dom-nodes.ts | 57 - .../src/utils/get-client-rects.ts | 15 - .../vue-simulator-renderer/src/utils/index.ts | 8 - .../src/utils/logger.ts | 3 - .../src/utils/navtive-selection.ts | 15 - packages/vue-simulator-renderer/tsconfig.json | 4 - scripts/build.sh | 16 +- scripts/sync-oss.js | 47 - scripts/sync.sh | 19 - 1614 files changed, 41 insertions(+), 109544 deletions(-) delete mode 100644 modules/code-generator/.gitignore delete mode 100644 modules/code-generator/.prettierrc.js delete mode 100644 modules/code-generator/.versionrc delete mode 100644 modules/code-generator/CHANGELOG.md delete mode 100644 modules/code-generator/CONTRIBUTING.md delete mode 100644 modules/code-generator/README.md delete mode 100644 modules/code-generator/babel.config.js delete mode 100755 modules/code-generator/bin/lowcode-code-generator.js delete mode 100644 modules/code-generator/example-schema.json delete mode 100644 modules/code-generator/example-schema.json5 delete mode 100644 modules/code-generator/jest.config.js delete mode 100644 modules/code-generator/jest.setup.js delete mode 100644 modules/code-generator/package.json delete mode 100644 modules/code-generator/scripts/build-cli.js delete mode 100644 modules/code-generator/scripts/build-standalone-loader.js delete mode 100644 modules/code-generator/scripts/build-standalone-worker.js delete mode 100644 modules/code-generator/scripts/build-standalone.js delete mode 100644 modules/code-generator/scripts/build-template-static-files.js delete mode 100755 modules/code-generator/scripts/build-types delete mode 100644 modules/code-generator/scripts/build.js delete mode 100644 modules/code-generator/scripts/move-files-to-build-dest.js delete mode 100755 modules/code-generator/scripts/run-demo-project delete mode 100644 modules/code-generator/scripts/test-standalone.js delete mode 100644 modules/code-generator/src/analyzer/componentAnalyzer.ts delete mode 100644 modules/code-generator/src/cli/index.ts delete mode 100644 modules/code-generator/src/cli/init-solution.ts delete mode 100644 modules/code-generator/src/cli/run.ts delete mode 100644 modules/code-generator/src/cli/solutions/example-solution.ts delete mode 100644 modules/code-generator/src/config/env.ts delete mode 100644 modules/code-generator/src/const/file.ts delete mode 100644 modules/code-generator/src/const/generator.ts delete mode 100644 modules/code-generator/src/const/index.ts delete mode 100644 modules/code-generator/src/core/jsx/handlers/transformJsExpression.ts delete mode 100644 modules/code-generator/src/core/jsx/handlers/transformThis2Context.ts delete mode 100644 modules/code-generator/src/core/jsx/util/isLiteralAtomicExpr.ts delete mode 100644 modules/code-generator/src/core/jsx/util/isSimpleStraightLiteral.ts delete mode 100644 modules/code-generator/src/generator/ChunkBuilder.ts delete mode 100644 modules/code-generator/src/generator/CodeBuilder.ts delete mode 100644 modules/code-generator/src/generator/ModuleBuilder.ts delete mode 100644 modules/code-generator/src/generator/ProjectBuilder.ts delete mode 100644 modules/code-generator/src/index.ts delete mode 100644 modules/code-generator/src/parser/SchemaParser.ts delete mode 100644 modules/code-generator/src/plugins/common/esmodule.ts delete mode 100644 modules/code-generator/src/plugins/common/requireUtils.ts delete mode 100644 modules/code-generator/src/plugins/common/styleImport.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/commonDeps.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/const.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerClass.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerInitState.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerInjectContext.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerInjectUtils.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/containerMethods.ts delete mode 100644 modules/code-generator/src/plugins/component/rax/jsx.ts delete mode 100644 modules/code-generator/src/plugins/component/react/const.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerClass.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInitState.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInjectConstants.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInjectContext.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInjectI18n.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerInjectUtils.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerLifeCycle.ts delete mode 100644 modules/code-generator/src/plugins/component/react/containerMethod.ts delete mode 100644 modules/code-generator/src/plugins/component/react/jsx.ts delete mode 100644 modules/code-generator/src/plugins/component/react/reactCommonDeps.ts delete mode 100644 modules/code-generator/src/plugins/component/style/css.ts delete mode 100644 modules/code-generator/src/plugins/project/constants.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/plugins/entry.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/plugins/entryHtml.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/plugins/globalStyle.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/plugins/router.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/plugins/appConfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/plugins/globalStyle.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/plugins/layout.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/appConfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/buildConfig.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/entry.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/entryDocument.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/globalStyle.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/index.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts delete mode 100644 modules/code-generator/src/plugins/project/framework/rax/types/RaxFrameworkOptions.ts delete mode 100644 modules/code-generator/src/plugins/project/i18n.ts delete mode 100644 modules/code-generator/src/plugins/project/utils.ts delete mode 100644 modules/code-generator/src/polyfills/buffer.ts delete mode 100644 modules/code-generator/src/postprocessor/index.ts delete mode 100644 modules/code-generator/src/postprocessor/prettier/index.ts delete mode 100644 modules/code-generator/src/publisher/disk/index.ts delete mode 100644 modules/code-generator/src/publisher/disk/utils.ts delete mode 100644 modules/code-generator/src/publisher/zip/index.ts delete mode 100644 modules/code-generator/src/publisher/zip/utils.ts delete mode 100644 modules/code-generator/src/solutions/icejs.ts delete mode 100644 modules/code-generator/src/solutions/icejs3.ts delete mode 100644 modules/code-generator/src/solutions/rax-app.ts delete mode 100644 modules/code-generator/src/standalone-loader.ts delete mode 100644 modules/code-generator/src/standalone-worker.ts delete mode 100644 modules/code-generator/src/standalone.ts delete mode 100644 modules/code-generator/src/types/analyze.ts delete mode 100644 modules/code-generator/src/types/core.ts delete mode 100644 modules/code-generator/src/types/deps.ts delete mode 100644 modules/code-generator/src/types/error.ts delete mode 100644 modules/code-generator/src/types/file.ts delete mode 100644 modules/code-generator/src/types/index.ts delete mode 100644 modules/code-generator/src/types/intermediate.ts delete mode 100644 modules/code-generator/src/types/jsx.ts delete mode 100644 modules/code-generator/src/types/publisher.ts delete mode 100644 modules/code-generator/src/typings.d.ts delete mode 100644 modules/code-generator/src/utils/OrderedSet.ts delete mode 100644 modules/code-generator/src/utils/Scope.ts delete mode 100644 modules/code-generator/src/utils/ScopeBindings.ts delete mode 100644 modules/code-generator/src/utils/aopHelper.ts delete mode 100644 modules/code-generator/src/utils/common.ts delete mode 100644 modules/code-generator/src/utils/compositeType.ts delete mode 100644 modules/code-generator/src/utils/dataSource.ts delete mode 100644 modules/code-generator/src/utils/debug.ts delete mode 100644 modules/code-generator/src/utils/encodeJsxAttrString.ts delete mode 100644 modules/code-generator/src/utils/errors.ts delete mode 100644 modules/code-generator/src/utils/expressionParser.ts delete mode 100644 modules/code-generator/src/utils/format.ts delete mode 100644 modules/code-generator/src/utils/index.ts delete mode 100644 modules/code-generator/src/utils/jsExpression.ts delete mode 100644 modules/code-generator/src/utils/jsSlot.ts delete mode 100644 modules/code-generator/src/utils/jsxHelpers.ts delete mode 100644 modules/code-generator/src/utils/nodeToJSX.ts delete mode 100644 modules/code-generator/src/utils/pathHelper.ts delete mode 100644 modules/code-generator/src/utils/resultHelper.ts delete mode 100644 modules/code-generator/src/utils/schema.ts delete mode 100644 modules/code-generator/src/utils/templateHelper.ts delete mode 100644 modules/code-generator/src/utils/theme.ts delete mode 100644 modules/code-generator/src/utils/validate.ts delete mode 100644 modules/code-generator/src/utils/version.ts delete mode 100644 modules/code-generator/standalone-loader/index.js delete mode 100644 modules/code-generator/standalone-loader/package.json delete mode 100644 modules/code-generator/standalone-worker/index.js delete mode 100644 modules/code-generator/standalone-worker/package.json delete mode 100644 modules/code-generator/standalone/index.js delete mode 100644 modules/code-generator/standalone/package.json delete mode 100644 modules/code-generator/static-files/rax/.eslintignore.template delete mode 100644 modules/code-generator/static-files/rax/.eslintrc.js.template delete mode 100644 modules/code-generator/static-files/rax/.gitignore.template delete mode 100644 modules/code-generator/static-files/rax/.prettierignore.template delete mode 100644 modules/code-generator/static-files/rax/.prettierrc.js.template delete mode 100644 modules/code-generator/static-files/rax/.stylelintignore.template delete mode 100644 modules/code-generator/static-files/rax/.stylelintrc.js.template delete mode 100644 modules/code-generator/static-files/rax/README.md.template delete mode 100644 modules/code-generator/static-files/rax/jsconfig.json.template delete mode 100644 modules/code-generator/static-files/rax/tsconfig.json.template delete mode 100644 modules/code-generator/tests/bugfix/.gitignore delete mode 100644 modules/code-generator/tests/bugfix/i18n-with-params.schema.json delete mode 100644 modules/code-generator/tests/bugfix/i18n-with-params.test.ts delete mode 100644 modules/code-generator/tests/bugfix/icejs-import-wrong-naming.schema.json delete mode 100644 modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts delete mode 100644 modules/code-generator/tests/bugfix/icejs-js-function1.schema.json delete mode 100644 modules/code-generator/tests/bugfix/icejs-js-function1.test.ts delete mode 100644 modules/code-generator/tests/bugfix/icejs-missing-imports-1.schema.json delete mode 100644 modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts delete mode 100644 modules/code-generator/tests/bugfix/icejs-package-json-dependencies.schema.json delete mode 100644 modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts delete mode 100644 modules/code-generator/tests/bugfix/icejs-page-map1.schema.json delete mode 100644 modules/code-generator/tests/bugfix/icejs-page-map1.test.ts delete mode 100644 modules/code-generator/tests/bugfix/page-element1.schema.json delete mode 100644 modules/code-generator/tests/bugfix/page-element1.test.ts delete mode 100644 modules/code-generator/tests/bugfix/page-element2.schema.json delete mode 100644 modules/code-generator/tests/bugfix/page-element2.test.ts delete mode 100644 modules/code-generator/tests/bugfix/strict-mode-context-1.schema.json delete mode 100644 modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts delete mode 100644 modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.schema.json delete mode 100644 modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts delete mode 100644 modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.schema.json delete mode 100644 modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts delete mode 100644 modules/code-generator/tests/cli.test.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.browserslistrc delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/app.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/document.tsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/layout.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/typings.d.ts delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/document/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/global.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo1/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo3/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo4/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo5/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/schema.json5 delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.editorconfig delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.eslintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.eslintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.gitignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.prettierignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.prettierrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.stylelintignore delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/.stylelintrc.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/README.md delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/abc.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/build.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/jsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/package.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/public/index.html delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/app.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/constants.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/global.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/i18n.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/pages/Test/index.css delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/pages/Test/index.jsx delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/routes.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/utils.js delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/tsconfig.json delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-module/demo1/schema.json5 delete mode 100644 modules/code-generator/tests/helpers/solutionHelper.ts delete mode 100644 modules/code-generator/tests/plugins/common/__snapshots__/requireUtils.test.ts.snap delete mode 100644 modules/code-generator/tests/plugins/common/requireUtils.test.ts delete mode 100644 modules/code-generator/tests/plugins/jsx/__snapshots__/p0-condition-at-root.test.ts.snap delete mode 100644 modules/code-generator/tests/plugins/jsx/p0-condition-at-root.test.ts delete mode 100644 modules/code-generator/tests/postprocessor/__snapshots__/prettier.test.ts.snap delete mode 100644 modules/code-generator/tests/postprocessor/prettier.test.ts delete mode 100644 modules/code-generator/tests/public/README.md delete mode 100644 modules/code-generator/tests/public/SchemaParser/__snapshots__/p0-basic.test.ts.snap delete mode 100644 modules/code-generator/tests/public/SchemaParser/data/schema-with-slot.json delete mode 100644 modules/code-generator/tests/public/SchemaParser/p0-basic.test.ts delete mode 100644 modules/code-generator/tests/public/cli.test.ts delete mode 100644 modules/code-generator/tests/public/publisher/disk/disk.test.ts delete mode 100644 modules/code-generator/tests/public/publisher/zip/zip.test.ts delete mode 100644 modules/code-generator/tests/public/solutions/icejs3-app.test.ts delete mode 100644 modules/code-generator/tests/public/solutions/rax-app.test.ts delete mode 100644 modules/code-generator/tests/public/solutions/react-app.test.ts delete mode 100644 modules/code-generator/tests/utils/compositeType.test.ts delete mode 100644 modules/code-generator/tests/utils/errors.test.ts delete mode 100644 modules/code-generator/tests/utils/expressionParser/jsExpression.test.ts delete mode 100644 modules/code-generator/tests/utils/expressionParser/parseExpressionConvertThis2Context.test.ts delete mode 100644 modules/code-generator/tests/utils/expressionParser/parseExpressionGetGlobalVariables.test.ts delete mode 100644 modules/code-generator/tests/utils/expressionParser/parseExpressionGetKeywords.test.ts delete mode 100644 modules/code-generator/tests/utils/flattenResult.test.ts delete mode 100644 modules/code-generator/tests/utils/resultHelper/example-result.json delete mode 100644 modules/code-generator/tests/utils/resultHelper/findFile.test.ts delete mode 100644 modules/code-generator/tests/utils/resultHelper/globFiles.test.ts delete mode 100644 modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts delete mode 100644 modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts delete mode 100644 modules/code-generator/tests/utils/resultHelper/scanFiles.test.ts delete mode 100644 modules/code-generator/tests/utils/schema/data/schema-with-slot.json delete mode 100644 modules/code-generator/tests/utils/schema/handleSubNodes.test.ts delete mode 100644 modules/code-generator/tests/utils/validate.test.ts delete mode 100644 modules/code-generator/tests/utils/version.test.ts delete mode 100644 modules/code-generator/tsconfig.json delete mode 100644 modules/material-parser/README.md delete mode 100644 modules/material-parser/build.test.json delete mode 100644 modules/material-parser/demo/component.jsx delete mode 100644 modules/material-parser/demo/component.tsx delete mode 100644 modules/material-parser/demo/parse-jsx.js delete mode 100644 modules/material-parser/demo/parse-tsx.js delete mode 100644 modules/material-parser/jest.config.js delete mode 100644 modules/material-parser/package.json delete mode 100644 modules/material-parser/schemas/schema.json delete mode 100644 modules/material-parser/schemas/schema.yml delete mode 100644 modules/material-parser/scripts/transform.js delete mode 100644 modules/material-parser/src/core/index.ts delete mode 100644 modules/material-parser/src/core/schema/types.ts delete mode 100644 modules/material-parser/src/generate.ts delete mode 100644 modules/material-parser/src/index.ts delete mode 100644 modules/material-parser/src/localize.ts delete mode 100644 modules/material-parser/src/parse/dynamic/index.ts delete mode 100644 modules/material-parser/src/parse/dynamic/requireInSandbox.ts delete mode 100644 modules/material-parser/src/parse/index.ts delete mode 100644 modules/material-parser/src/parse/js/handlers/defaultPropsHandler.ts delete mode 100644 modules/material-parser/src/parse/js/handlers/index.ts delete mode 100644 modules/material-parser/src/parse/js/handlers/preProcessHandler.ts delete mode 100644 modules/material-parser/src/parse/js/handlers/propTypeHandler.ts delete mode 100644 modules/material-parser/src/parse/js/handlers/propTypeJsDocHandler.ts delete mode 100644 modules/material-parser/src/parse/js/index.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/checkIsIIFE.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/findAssignedMethods.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/index.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/isReactComponentStaticMember.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/isStaticMethod.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/resolveExportDeclaration.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/resolveHOC.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/resolveIIFE.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/resolveImport.ts delete mode 100644 modules/material-parser/src/parse/js/resolver/resolveTranspiledClass.ts delete mode 100644 modules/material-parser/src/parse/js/utils/cache.ts delete mode 100644 modules/material-parser/src/parse/js/utils/evaluate.ts delete mode 100644 modules/material-parser/src/parse/js/utils/findJSFilePath.ts delete mode 100644 modules/material-parser/src/parse/js/utils/getComposedPath.ts delete mode 100644 modules/material-parser/src/parse/js/utils/getName.ts delete mode 100644 modules/material-parser/src/parse/js/utils/getRoot.ts delete mode 100644 modules/material-parser/src/parse/js/utils/makeProxy.ts delete mode 100644 modules/material-parser/src/parse/transform.ts delete mode 100644 modules/material-parser/src/parse/ts/generateDTS.ts delete mode 100644 modules/material-parser/src/parse/ts/index.ts delete mode 100644 modules/material-parser/src/parse/ts/tsconfig.json delete mode 100644 modules/material-parser/src/scan.ts delete mode 100644 modules/material-parser/src/types/Basic.ts delete mode 100644 modules/material-parser/src/types/ChannelType.ts delete mode 100644 modules/material-parser/src/types/DSLType.ts delete mode 100644 modules/material-parser/src/types/IAccesser.ts delete mode 100644 modules/material-parser/src/types/IExtensionConfigManifest.ts delete mode 100644 modules/material-parser/src/types/IMaterialParsedModel.ts delete mode 100644 modules/material-parser/src/types/IMaterialScanModel.ts delete mode 100644 modules/material-parser/src/types/IMaterializeOptions.ts delete mode 100644 modules/material-parser/src/types/Meta.ts delete mode 100644 modules/material-parser/src/types/index.ts delete mode 100644 modules/material-parser/src/utils.ts delete mode 100644 modules/material-parser/src/validate/index.ts delete mode 100644 modules/material-parser/src/validate/schema.json delete mode 100644 modules/material-parser/test/__snapshots__/dynamic.test.ts.snap delete mode 100644 modules/material-parser/test/__snapshots__/index.test.ts.snap delete mode 100644 modules/material-parser/test/__snapshots__/online.test.ts.snap delete mode 100644 modules/material-parser/test/dynamic.test.ts delete mode 100644 modules/material-parser/test/fixtures/dts-component/index.d.ts delete mode 100644 modules/material-parser/test/fixtures/dts-component/package.json delete mode 100644 modules/material-parser/test/fixtures/dts-component/src/data.js delete mode 100644 modules/material-parser/test/fixtures/dts-component/src/i18n.js delete mode 100644 modules/material-parser/test/fixtures/dts-component/src/index.jsx delete mode 100644 modules/material-parser/test/fixtures/dts-component/src/main.scss delete mode 100644 modules/material-parser/test/fixtures/dts-component/src/scss/variable.scss delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/IconFont.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/style/index.css delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/style/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/style/index.less delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCBackgroundProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCBoxModelProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCFlexLayoutProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCLayoutProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCTextProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/es/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/package.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/IconFont.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/amContainer.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/amManifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/container.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/manifest.json delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/style/index.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/style/index.less delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCBackgroundProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCBoxModelProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCFlexLayoutProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCLayoutProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCTextProps.js delete mode 100644 modules/material-parser/test/fixtures/multiple-exported-component/src/index.js delete mode 100644 modules/material-parser/test/fixtures/rax-component/package.json delete mode 100644 modules/material-parser/test/fixtures/rax-component/src/index.css delete mode 100644 modules/material-parser/test/fixtures/rax-component/src/index.tsx delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/container.js delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/index.js delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/main.css delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/main.scss delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/manifest.js delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/es/manifest.json delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/package.json delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/src/index.js delete mode 100644 modules/material-parser/test/fixtures/single-exported-component/src/main.scss delete mode 100644 modules/material-parser/test/fixtures/transpiled-component/package.json delete mode 100644 modules/material-parser/test/fixtures/ts-component/package.json delete mode 100644 modules/material-parser/test/fixtures/ts-component/src/index.tsx delete mode 100644 modules/material-parser/test/fixtures/ts-component/src/main-module.tsx delete mode 100644 modules/material-parser/test/fixtures/ts-component/src/sub-module.tsx delete mode 100644 modules/material-parser/test/fixtures/ts-component2/package.json delete mode 100644 modules/material-parser/test/fixtures/ts-component2/src/empty.tsx delete mode 100644 modules/material-parser/test/fixtures/ts-component2/src/index.scss delete mode 100644 modules/material-parser/test/fixtures/ts-component2/src/index.tsx delete mode 100644 modules/material-parser/test/fixtures/without-display-name/index.js delete mode 100644 modules/material-parser/test/fixtures/without-display-name/package.json delete mode 100644 modules/material-parser/test/helpers/index.ts delete mode 100644 modules/material-parser/test/index.test.ts delete mode 100644 modules/material-parser/test/localize.test.ts delete mode 100644 modules/material-parser/test/online.test.ts delete mode 100644 modules/material-parser/test/validate/__snapshots__/index.test.ts.snap delete mode 100644 modules/material-parser/test/validate/fixtures/basic-error/schema.json delete mode 100644 modules/material-parser/test/validate/fixtures/basic-success/schema.json delete mode 100644 modules/material-parser/test/validate/fixtures/configure/schema.json delete mode 100644 modules/material-parser/test/validate/fixtures/props-basic-type/schema.json delete mode 100644 modules/material-parser/test/validate/fixtures/props-complex-type/schema.json delete mode 100644 modules/material-parser/test/validate/index.test.ts delete mode 100644 modules/material-parser/tsconfig.json delete mode 100644 modules/material-parser/webpack.config.js delete mode 100644 packages/react-renderer/README.md delete mode 100644 packages/react-renderer/build.json delete mode 100644 packages/react-renderer/build.test.json delete mode 100644 packages/react-renderer/build.umd.json delete mode 100644 packages/react-renderer/demo/compose.md delete mode 100644 packages/react-renderer/demo/config/components/A.jsx delete mode 100644 packages/react-renderer/demo/config/components/Div.jsx delete mode 100644 packages/react-renderer/demo/config/components/Image.jsx delete mode 100644 packages/react-renderer/demo/config/components/Text.jsx delete mode 100644 packages/react-renderer/demo/config/components/index.js delete mode 100644 packages/react-renderer/demo/config/constants.js delete mode 100644 packages/react-renderer/demo/config/utils.js delete mode 100644 packages/react-renderer/demo/dataSource.md delete mode 100644 packages/react-renderer/demo/i18n.md delete mode 100644 packages/react-renderer/demo/list.md delete mode 100644 packages/react-renderer/demo/schemas/compose.js delete mode 100644 packages/react-renderer/demo/schemas/dataSource.js delete mode 100644 packages/react-renderer/demo/schemas/i18n.js delete mode 100644 packages/react-renderer/demo/schemas/list.js delete mode 100644 packages/react-renderer/demo/schemas/table.js delete mode 100644 packages/react-renderer/demo/table.md delete mode 100644 packages/react-renderer/jest.config.js delete mode 100644 packages/react-renderer/package.json delete mode 100644 packages/react-renderer/src/index.ts delete mode 100644 packages/react-renderer/tests/__snapshots__/index.test.tsx.snap delete mode 100644 packages/react-renderer/tests/fixtures/schema/basic.ts delete mode 100644 packages/react-renderer/tests/index.test.tsx delete mode 100644 packages/react-renderer/tsconfig.json delete mode 100644 packages/react-simulator-renderer/.babelrc delete mode 100644 packages/react-simulator-renderer/babel.config.js delete mode 100644 packages/react-simulator-renderer/build.json delete mode 100644 packages/react-simulator-renderer/build.plugin.js delete mode 100644 packages/react-simulator-renderer/build.test.json delete mode 100644 packages/react-simulator-renderer/build.umd.json delete mode 100644 packages/react-simulator-renderer/jest.config.js delete mode 100644 packages/react-simulator-renderer/package.json delete mode 100644 packages/react-simulator-renderer/src/README.md delete mode 100644 packages/react-simulator-renderer/src/builtin-components/builtin-components.ts delete mode 100644 packages/react-simulator-renderer/src/builtin-components/leaf.tsx delete mode 100644 packages/react-simulator-renderer/src/builtin-components/slot.tsx delete mode 100644 packages/react-simulator-renderer/src/host.ts delete mode 100644 packages/react-simulator-renderer/src/index.ts delete mode 100644 packages/react-simulator-renderer/src/locale/en-US.json delete mode 100644 packages/react-simulator-renderer/src/locale/index.ts delete mode 100644 packages/react-simulator-renderer/src/locale/zh-CN.json delete mode 100644 packages/react-simulator-renderer/src/renderer-view.tsx delete mode 100644 packages/react-simulator-renderer/src/renderer.less delete mode 100644 packages/react-simulator-renderer/src/renderer.ts delete mode 100644 packages/react-simulator-renderer/src/utils/get-client-rects.ts delete mode 100644 packages/react-simulator-renderer/src/utils/is-dom-node.ts delete mode 100644 packages/react-simulator-renderer/src/utils/misc.ts delete mode 100644 packages/react-simulator-renderer/src/utils/react-find-dom-nodes.ts delete mode 100644 packages/react-simulator-renderer/src/utils/url.ts delete mode 100644 packages/react-simulator-renderer/test/schema/basic.ts delete mode 100644 packages/react-simulator-renderer/test/src/renderer/__snapshots__/demo.test.tsx.snap delete mode 100644 packages/react-simulator-renderer/test/src/renderer/demo.test.tsx delete mode 100644 packages/react-simulator-renderer/test/utils/components.tsx delete mode 100644 packages/react-simulator-renderer/test/utils/host.ts delete mode 100644 packages/react-simulator-renderer/tsconfig.json delete mode 100644 packages/renderer-core/babel.config.js delete mode 100644 packages/renderer-core/build.json delete mode 100644 packages/renderer-core/build.test.json delete mode 100644 packages/renderer-core/jest.config.js delete mode 100644 packages/renderer-core/package.json delete mode 100644 packages/renderer-core/src/adapter/index.ts delete mode 100644 packages/renderer-core/src/components/Div.tsx delete mode 100644 packages/renderer-core/src/components/VisualDom/index.css delete mode 100644 packages/renderer-core/src/components/VisualDom/index.tsx delete mode 100644 packages/renderer-core/src/context/index.ts delete mode 100644 packages/renderer-core/src/hoc/index.tsx delete mode 100644 packages/renderer-core/src/hoc/leaf.tsx delete mode 100644 packages/renderer-core/src/index.ts delete mode 100644 packages/renderer-core/src/renderer/addon.tsx delete mode 100644 packages/renderer-core/src/renderer/base.tsx delete mode 100644 packages/renderer-core/src/renderer/block.tsx delete mode 100644 packages/renderer-core/src/renderer/component.tsx delete mode 100644 packages/renderer-core/src/renderer/index.ts delete mode 100644 packages/renderer-core/src/renderer/page.tsx delete mode 100644 packages/renderer-core/src/renderer/renderer.tsx delete mode 100644 packages/renderer-core/src/renderer/temp.tsx delete mode 100644 packages/renderer-core/src/types/index.ts delete mode 100644 packages/renderer-core/src/utils/common.ts delete mode 100644 packages/renderer-core/src/utils/data-helper.ts delete mode 100644 packages/renderer-core/src/utils/index.ts delete mode 100644 packages/renderer-core/src/utils/is-use-loop.ts delete mode 100644 packages/renderer-core/src/utils/logger.ts delete mode 100644 packages/renderer-core/src/utils/request.ts delete mode 100644 packages/renderer-core/tests/adapter/adapter.test.ts delete mode 100644 packages/renderer-core/tests/fixtures/schema/basic.ts delete mode 100644 packages/renderer-core/tests/fixtures/unhandled-rejection.ts delete mode 100644 packages/renderer-core/tests/hoc/__snapshots__/leaf.test.tsx.snap delete mode 100644 packages/renderer-core/tests/hoc/leaf.test.tsx delete mode 100644 packages/renderer-core/tests/mock/loop.ts delete mode 100644 packages/renderer-core/tests/mock/sample.ts delete mode 100644 packages/renderer-core/tests/mock/styleMock.js delete mode 100644 packages/renderer-core/tests/renderer/__snapshots__/renderer.test.tsx.snap delete mode 100644 packages/renderer-core/tests/renderer/base.test.tsx delete mode 100644 packages/renderer-core/tests/renderer/renderer.test.tsx delete mode 100644 packages/renderer-core/tests/setup.ts delete mode 100644 packages/renderer-core/tests/utils/common.test.ts delete mode 100644 packages/renderer-core/tests/utils/components.tsx delete mode 100644 packages/renderer-core/tests/utils/data-helper.test.ts delete mode 100644 packages/renderer-core/tests/utils/is-use-loop.test.ts delete mode 100644 packages/renderer-core/tests/utils/node.ts delete mode 100644 packages/renderer-core/tests/utils/react-env-init.ts delete mode 100644 packages/renderer-core/tests/utils/request.test.ts delete mode 100644 packages/renderer-core/tsconfig.json delete mode 100644 packages/vue-renderer/CHANGELOG.md delete mode 100644 packages/vue-renderer/README.md delete mode 100644 packages/vue-renderer/build.json delete mode 100644 packages/vue-renderer/build.plugin.cjs delete mode 100644 packages/vue-renderer/build.umd.json delete mode 100644 packages/vue-renderer/package.json delete mode 100644 packages/vue-renderer/src/config.ts delete mode 100644 packages/vue-renderer/src/core/base.ts delete mode 100644 packages/vue-renderer/src/core/hoc.ts delete mode 100644 packages/vue-renderer/src/core/index.ts delete mode 100644 packages/vue-renderer/src/core/live.ts delete mode 100644 packages/vue-renderer/src/core/use.ts delete mode 100644 packages/vue-renderer/src/data-source/index.ts delete mode 100644 packages/vue-renderer/src/data-source/interface.ts delete mode 100644 packages/vue-renderer/src/data-source/request.ts delete mode 100644 packages/vue-renderer/src/hooks/current-node.ts delete mode 100644 packages/vue-renderer/src/hooks/index.ts delete mode 100644 packages/vue-renderer/src/hooks/renderer-context.ts delete mode 100644 packages/vue-renderer/src/index.ts delete mode 100644 packages/vue-renderer/src/renderer.ts delete mode 100644 packages/vue-renderer/src/renderers/index.ts delete mode 100644 packages/vue-renderer/src/renderers/page.ts delete mode 100644 packages/vue-renderer/src/utils/array.ts delete mode 100644 packages/vue-renderer/src/utils/i18n.ts delete mode 100644 packages/vue-renderer/src/utils/index.ts delete mode 100644 packages/vue-renderer/src/utils/parse.ts delete mode 100644 packages/vue-renderer/src/utils/scope.ts delete mode 100644 packages/vue-renderer/tsconfig.json delete mode 100644 packages/vue-simulator-renderer/CHANGELOG.md delete mode 100644 packages/vue-simulator-renderer/README.md delete mode 100644 packages/vue-simulator-renderer/build.json delete mode 100644 packages/vue-simulator-renderer/build.plugin.cjs delete mode 100644 packages/vue-simulator-renderer/build.umd.json delete mode 100644 packages/vue-simulator-renderer/package.json delete mode 100644 packages/vue-simulator-renderer/public/index.html delete mode 100644 packages/vue-simulator-renderer/src/buildin-components/index.ts delete mode 100644 packages/vue-simulator-renderer/src/buildin-components/leaf.ts delete mode 100644 packages/vue-simulator-renderer/src/buildin-components/page.ts delete mode 100644 packages/vue-simulator-renderer/src/buildin-components/slot.ts delete mode 100644 packages/vue-simulator-renderer/src/host.ts delete mode 100644 packages/vue-simulator-renderer/src/index.less delete mode 100644 packages/vue-simulator-renderer/src/index.ts delete mode 100644 packages/vue-simulator-renderer/src/interface.ts delete mode 100644 packages/vue-simulator-renderer/src/simulator-view.ts delete mode 100644 packages/vue-simulator-renderer/src/simulator.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/build-components.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/check-node.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/closest-node.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/comp-node.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/cursor.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/find-dom-nodes.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/get-client-rects.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/index.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/logger.ts delete mode 100644 packages/vue-simulator-renderer/src/utils/navtive-selection.ts delete mode 100644 packages/vue-simulator-renderer/tsconfig.json delete mode 100644 scripts/sync-oss.js delete mode 100755 scripts/sync.sh diff --git a/modules/code-generator/.gitignore b/modules/code-generator/.gitignore deleted file mode 100644 index bf10c9f823..0000000000 --- a/modules/code-generator/.gitignore +++ /dev/null @@ -1,122 +0,0 @@ -# project custom -build -es -dist -output -package-lock.json -yarn.lock -deploy-space/packages -deploy-space/.env -/demo/ -/demo-output*/ -/generated/ - -# IDE -.vscode -.idea - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release -lib - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# next.js build output -.next - -# nuxt.js build output -.nuxt - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# mac config files -.DS_Store - -# codealike -codealike.json -.node - -# def publish -.package - -# types -/types - -# backup files -*.bak - -# tests -tests/fixtures/**/actual - - - diff --git a/modules/code-generator/.prettierrc.js b/modules/code-generator/.prettierrc.js deleted file mode 100644 index 24c5859e6e..0000000000 --- a/modules/code-generator/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - printWidth: 100, - tabWidth: 2, - semi: true, - singleQuote: true, - trailingComma: 'all', -}; diff --git a/modules/code-generator/.versionrc b/modules/code-generator/.versionrc deleted file mode 100644 index a41c11e264..0000000000 --- a/modules/code-generator/.versionrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "releaseCommitMessageFormat": "chore(release): code-generator - {{currentTag}}" -} \ No newline at end of file diff --git a/modules/code-generator/CHANGELOG.md b/modules/code-generator/CHANGELOG.md deleted file mode 100644 index 8a6c546cd8..0000000000 --- a/modules/code-generator/CHANGELOG.md +++ /dev/null @@ -1,266 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -### [1.0.7-beta.2](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.3...@felce/lowcode-code-generator@1.0.7-beta.2) (2022-11-24) - -### Bug Fixes - -- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([3b9b177](https://github.com/fe-lce/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) -- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/fe-lce/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) -- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([ce531ae](https://github.com/fe-lce/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) -- add support for jsx expression ([453e069](https://github.com/fe-lce/lowcode-engine/commit/453e0699ece06d98e59227e23248baf1de4082aa)) -- 修复生成的 icejs 项目不支持 constants 的问题, fixes [#1259](https://github.com/fe-lce/lowcode-engine/issues/1259) ([a079fbc](https://github.com/fe-lce/lowcode-engine/commit/a079fbc256f8275e8a69eb6d8abb6f6b08179578)) -- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/fe-lce/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) - -### [1.0.7-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.7-beta.0...@felce/lowcode-code-generator@1.0.7-beta.1) (2022-10-26) - -### Bug Fixes - -- fix empty string lost when generate variable ([2cf74cd](https://github.com/fe-lce/lowcode-engine/commit/2cf74cd04b4f48a3501d37329d39784f6964366a)) - -### [1.0.7-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.6-beta.0...@felce/lowcode-code-generator@1.0.7-beta.0) (2022-10-25) - -### [1.0.6-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.3...@felce/lowcode-code-generator@1.0.6-beta.0) (2022-10-25) - -### Features - -- 🎸 设计态支持数据源引擎配置 ([04631f8](https://github.com/fe-lce/lowcode-engine/commit/04631f813782dbf6d175f51c40ccc75ca4c099d2)) -- 大纲树支持节点过滤 ([f30db20](https://github.com/fe-lce/lowcode-engine/commit/f30db20606f5f2fdac0017305b1dda7ab2258c4b)) -- 为 renderer 追加 displayName,以支持后续的反射功能 ([6399cce](https://github.com/fe-lce/lowcode-engine/commit/6399cce05ae494dac6facf4366949b0b97576079)) -- 资产包支持一个package从另一个package异步导出 ([#1150](https://github.com/fe-lce/lowcode-engine/issues/1150)) ([6b78157](https://github.com/fe-lce/lowcode-engine/commit/6b78157b211d6eabf60297b9ce980a3e10cc8272)) -- add availableActions for ComponentMeta ([de1f60b](https://github.com/fe-lce/lowcode-engine/commit/de1f60bbee157267e2c2212df1077cc49ce506f4)) -- add code coverage action ([ed3ddcf](https://github.com/fe-lce/lowcode-engine/commit/ed3ddcf5c942a8e78e1f247e41d4159da97e75a8)) -- add componentMeta getter for setingPropEntry ([2f8b954](https://github.com/fe-lce/lowcode-engine/commit/2f8b9545de0210260001a832b52f608238ac4191)) -- add expanded to shell SettingPropEntry ([534e294](https://github.com/fe-lce/lowcode-engine/commit/534e29429d445d97c71d95d4c4e492868527bb6b)) -- add flag createIfNode for ShellNode#getProp ([152a24d](https://github.com/fe-lce/lowcode-engine/commit/152a24d65528d0a3b7990c9aa87e6d8d09aa9b2a)) -- add getComponentsMap() for DocumentModel ([f956645](https://github.com/fe-lce/lowcode-engine/commit/f9566454ef83eb4c48b68d63a766c3d0ff927c73)) -- add getExtraPropValue setExtraPropValue to shell SettingPropEntry ([70e7c1c](https://github.com/fe-lce/lowcode-engine/commit/70e7c1c2e8998e80d58447759efdf651105724a9)) -- add id setter for DocumentModel ([941ae05](https://github.com/fe-lce/lowcode-engine/commit/941ae0592586334694c48197aaa6692d49cefbce)) -- add importSchema event for documentModel ([4b8ec09](https://github.com/fe-lce/lowcode-engine/commit/4b8ec09e86e3950a9d4066c28e681a59273b4c93)) -- add isGroup & items to shell SettingPropEntry ([7b76ff3](https://github.com/fe-lce/lowcode-engine/commit/7b76ff357e4e638454c31a9b1324fb68966ec522)) -- add mergeChldren API for shell node ([a47d4ee](https://github.com/fe-lce/lowcode-engine/commit/a47d4eea28cf4479e3b3a2bd1d194a6433666825)) -- add onMountNode event for DocumentModel ([dcc247c](https://github.com/fe-lce/lowcode-engine/commit/dcc247c7d54f6af2ed36d46bfd79c7eacf7bd604)) -- add renderer for simulatorHost ([1cfc8d6](https://github.com/fe-lce/lowcode-engine/commit/1cfc8d668b8897ef3a53c11520312cc6d18338f9)) -- add script for synchronizing packages to intranet registry ([b4f463e](https://github.com/fe-lce/lowcode-engine/commit/b4f463e7d45f7b476de04bd4d98ad9f74d53cf13)) -- add scrollToNode for simulator host ([#1075](https://github.com/fe-lce/lowcode-engine/issues/1075)) ([0bcd9ff](https://github.com/fe-lce/lowcode-engine/commit/0bcd9ff78227aeddaf2fdc22d10fbd662fed91d3)) -- add setVisible for Node ([ba90327](https://github.com/fe-lce/lowcode-engine/commit/ba90327eac0f5f82f6349bb9a7684bf51259e9c9)) -- add showArea & hideArea method for skeleton ([8f6b53e](https://github.com/fe-lce/lowcode-engine/commit/8f6b53e67d89ee7af754132f0994a759522b3821)) -- add slotNode for shell prop ([d9a44c5](https://github.com/fe-lce/lowcode-engine/commit/d9a44c5de7861e9180567b4afb787e381cefac61)) -- add some features ([18d1a4f](https://github.com/fe-lce/lowcode-engine/commit/18d1a4fe1d952bcd4715e693def09fee94da49a5)) -- add some necessary methods and attributes ([4fd7f27](https://github.com/fe-lce/lowcode-engine/commit/4fd7f27f8eb33b66324ede279b412940fc1f7032)) -- add some params for onDragstart & onDrag & onDragend ([d1c9838](https://github.com/fe-lce/lowcode-engine/commit/d1c9838343ba1bdd4c02c1cfbf1f920dd8c87e7d)) -- add top attrbute for Shell SettingPropEntry ([51aca3d](https://github.com/fe-lce/lowcode-engine/commit/51aca3d330b6483c05b71867f1b362a9f5db6cfe)) -- added lowcode engine standard specs ([f25feba](https://github.com/fe-lce/lowcode-engine/commit/f25feba63f181efa83f1a8dff530e1c39ab1b34c)) -- added lowcode engine standard specs ([57df803](https://github.com/fe-lce/lowcode-engine/commit/57df803179ca9cec4e8ab1dac1be577175732e65)) -- added thisRequiredInJSE API to control whether JSExpression expression access context must use this ([#702](https://github.com/fe-lce/lowcode-engine/issues/702)) ([da7f77e](https://github.com/fe-lce/lowcode-engine/commit/da7f77ee91b3bf441a4a57614872df32d6a1d041)) -- assetLoader loda scripts with async=false ([f6ad4a1](https://github.com/fe-lce/lowcode-engine/commit/f6ad4a157df8c0ff7db327f4770f454998693d9a)) -- change loop sertter config, set defaultValue prop to JsonSetter ([aa6b9c8](https://github.com/fe-lce/lowcode-engine/commit/aa6b9c8f7a5353771af9f46216310f044e57c533)) -- cp dist files of simulator-renderer to that of engine ([03c5397](https://github.com/fe-lce/lowcode-engine/commit/03c53971df6de8c35620fd77743ac4f57a82d323)) -- export nodeChildrenSymbol && remove some unnecessary editor.set ([e83adce](https://github.com/fe-lce/lowcode-engine/commit/e83adcee815eea73b6b1ed4f43f4d684c11818ca)) -- fix render-core leaf hoc component condition config should get from leaf exportSchema fn ([85704c3](https://github.com/fe-lce/lowcode-engine/commit/85704c36946191a1b88db789cfac59e9d027a371)) -- low-code components support lifecycle and function execution ([176583f](https://github.com/fe-lce/lowcode-engine/commit/176583f48af573d30c0d2c36faa3d901b0541c06)) -- **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/fe-lce/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) -- modify the output method of rendering module parsing errors ([8255b79](https://github.com/fe-lce/lowcode-engine/commit/8255b7945836ee5d25fae73913faa6d0af7b3ff3)) -- pass e to customizeIgnoreSelectors ([900b239](https://github.com/fe-lce/lowcode-engine/commit/900b2394323e85f0dce5df83dfc773f96da23e24)) -- refine nesting drawer ([4c032d0](https://github.com/fe-lce/lowcode-engine/commit/4c032d0d0ead9731c038bd62dccc4a7d96435183)) -- refine nesting drawer ([94a211e](https://github.com/fe-lce/lowcode-engine/commit/94a211e2795f74721cfd2ae3ff38a1d3607e9cd0)) -- refine pop drawer ([abf8fae](https://github.com/fe-lce/lowcode-engine/commit/abf8fae3ef4d62b5688362e1b98f1b508a207029)) -- requestHandlersMap should be optional ([ee7160e](https://github.com/fe-lce/lowcode-engine/commit/ee7160ea3c625d421c07730ef51711b8f14392a0)) -- return unbind function for onChangeDetecting & onChangeSelection ([30267cb](https://github.com/fe-lce/lowcode-engine/commit/30267cb173fca2cd80a61450b9f2fe2bceac0f06)) -- support for hiding settings tabs when there is only one item ([#669](https://github.com/fe-lce/lowcode-engine/issues/669)) ([cbd95a1](https://github.com/fe-lce/lowcode-engine/commit/cbd95a1778415406670f37507ce957af6b3ecd4a)) -- support for NotFoundComponent design state is optional ([#1013](https://github.com/fe-lce/lowcode-engine/issues/1013)) ([d3c891e](https://github.com/fe-lce/lowcode-engine/commit/d3c891e2a46d138e31c81a7f9b804a8240154df5)) -- support opening document with id ([3f7c0cd](https://github.com/fe-lce/lowcode-engine/commit/3f7c0cd5191b7924f2630c58e6439f4d4a936ac9)) -- support SPA mode ([1f9150e](https://github.com/fe-lce/lowcode-engine/commit/1f9150e4b260d522bd7cb31497069b700a1e8576)) -- sync utils/constants ([#506](https://github.com/fe-lce/lowcode-engine/issues/506)) ([2871b5b](https://github.com/fe-lce/lowcode-engine/commit/2871b5ba4c3dbf1ed76bf4d6359fb457190a9b22)) -- the tips when dragging a component from the component panel same with the moving component ([dbe0764](https://github.com/fe-lce/lowcode-engine/commit/dbe0764ff4901450f03ca56b62167fbc87d2524a)) - -### Bug Fixes - -- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([3b9b177](https://github.com/fe-lce/lowcode-engine/commit/3b9b177b052169cd0c1078cf8b488f04cb374dac)) -- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([2cf788c](https://github.com/fe-lce/lowcode-engine/commit/2cf788c1716ae63fef20004348c59a5a65c6b3d2)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) -- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([ce531ae](https://github.com/fe-lce/lowcode-engine/commit/ce531aeb457711fac92d828b431cfc3d643b3682)) -- 🐛 修复数据源引擎请求处理器映射严格模式下被过滤的问题 ([75626d8](https://github.com/fe-lce/lowcode-engine/commit/75626d877db017b8862b1d5e64d75f3af7ff667a)) -- 🐛 修正 i18n 里面的一个参数命名问题 ([20c6fca](https://github.com/fe-lce/lowcode-engine/commit/20c6fca03e99b11fa5c257cbbda0d4d23f410090)) -- 新元素无法在大纲树拖拽 ([3d41fd5](https://github.com/fe-lce/lowcode-engine/commit/3d41fd5d0783048a7cfb54c6f80d058856153d25)) -- 修复React17选中组件bug ([750d282](https://github.com/fe-lce/lowcode-engine/commit/750d282c03a880204fefdef01e180510465b82f8)) -- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([b1a6100](https://github.com/fe-lce/lowcode-engine/commit/b1a61006bba4292790899c7c49c9c611a9384472)) -- 左侧抽屉固定模式层级不足 ([c657cee](https://github.com/fe-lce/lowcode-engine/commit/c657cee0694e3126dee89588a2aa17c4e118f786)) -- add lowcode-designer, lowcode-utils dependencies ([d250242](https://github.com/fe-lce/lowcode-engine/commit/d2502427ca988881747a35bd8da49f024939b833)) -- add support for jsx expression ([1043ef8](https://github.com/fe-lce/lowcode-engine/commit/1043ef82b1e9ceefc3b74fd21eb28e9a740bd1db)) -- addon-combine affect metadata unexpectedly ([fc5fbc6](https://github.com/fe-lce/lowcode-engine/commit/fc5fbc63a04a32bc887754f32e74c76149d74b05)) -- adjust synchronize-order of packages ([81a7304](https://github.com/fe-lce/lowcode-engine/commit/81a73049bd848524e1156761ded08ddf325863ba)) -- change typescript type export to export type ([50e4a03](https://github.com/fe-lce/lowcode-engine/commit/50e4a03b7d810131ce413cc057b43d4a726f1ebe)) -- change typescript type export to export type ([573504b](https://github.com/fe-lce/lowcode-engine/commit/573504b0e3537ca60d234ce2b2f3feedb323405e)) -- declare parameter appHelper for valid engine options ([058a842](https://github.com/fe-lce/lowcode-engine/commit/058a84226af8ca19d8c7d63599d80d0cdf70281c)) -- defaultValue should be evaluated inspite of condition result is falsy, fixes [#1045](https://github.com/fe-lce/lowcode-engine/issues/1045) ([fcfce3c](https://github.com/fe-lce/lowcode-engine/commit/fcfce3cbeb5a53600c40aea07ffef19c9c9591c4)) -- delete the defaultValue configuration outside the loop ([acf7449](https://github.com/fe-lce/lowcode-engine/commit/acf7449ca231d45e8ed7e1d9416817ea11b1266f)) -- delete unused typescript types ([63f5d2c](https://github.com/fe-lce/lowcode-engine/commit/63f5d2ca3e0bda92898fd0df28c9500707812082)) -- delete unused typescript types ([2432aed](https://github.com/fe-lce/lowcode-engine/commit/2432aed83d55407d2f8b5f94910ada7ea78bb59e)) -- designer/loadIncrementalAssets await Sequential ([#841](https://github.com/fe-lce/lowcode-engine/issues/841)) ([8232424](https://github.com/fe-lce/lowcode-engine/commit/823242469743d235923b3b946ec7d2db70887ead)) -- error thrown when triggering undo after save schema on SchemaPane ([9be46e7](https://github.com/fe-lce/lowcode-engine/commit/9be46e7b34e3a40cbc489dbae4bfd0915c2090e3)) -- fallback focusNode to root if empty ([a9a118f](https://github.com/fe-lce/lowcode-engine/commit/a9a118fe6e79080245c6eea42ed26772b7c784ca)) -- **filter:** unique key prop warning ([3fe6e41](https://github.com/fe-lce/lowcode-engine/commit/3fe6e41536cd3a9b9c7eaca5b353de4bd1f91b11)) -- **filter:** unique key prop warning ([06e6920](https://github.com/fe-lce/lowcode-engine/commit/06e6920602bdf21b6e1ffe5cfa3dfe4856e7c57e)) -- fix css resources with parameters not loading correctly ([f859752](https://github.com/fe-lce/lowcode-engine/commit/f85975211814147d40ae5330a76cb21cb6c66916)) -- fix css resources with parameters not loading correctly ([9a5a04a](https://github.com/fe-lce/lowcode-engine/commit/9a5a04ac9560fb6a51bf4e0ed8ea446381d39c35)) -- fix dataSource needs to be compatible due to empty schema ([98bc477](https://github.com/fe-lce/lowcode-engine/commit/98bc477d80dbf7993f89befdb42762d78a55fb1b)) -- fix displayName spell mistake ([2b2bcbd](https://github.com/fe-lce/lowcode-engine/commit/2b2bcbdaebde6a3ce974072f586386ef7ef3497c)) -- fix internal project.getSchema default stage is error ([0d40db2](https://github.com/fe-lce/lowcode-engine/commit/0d40db2581f4fe5a9e22f763f21aec641e366c34)) -- fix lint issues for renderer-core/renderer/base ([d85437d](https://github.com/fe-lce/lowcode-engine/commit/d85437d4af1043371e27dfde98cecf914b93a126)) -- fix lint issues for renderer-core/renderer/base ([4b59190](https://github.com/fe-lce/lowcode-engine/commit/4b59190c7f9d518bc7efac44b7eeee73f1b5d177)) -- fix low-code component rendering problems: 1. thisRequiredInJSE does not take effect 2. jsx components cannot obtain source components ([5dd4625](https://github.com/fe-lce/lowcode-engine/commit/5dd462544fbbbccfa97165f2bcfeed8629fab2a3)) -- fix material-spec demo ([438cccd](https://github.com/fe-lce/lowcode-engine/commit/438cccd58e4341638070c1d8b2d4e78e4e20e3fb)) -- fix misused doc urls ([16a8857](https://github.com/fe-lce/lowcode-engine/commit/16a88578634b9da2f04698df5ca5a5e69151bb97)) -- fix monitor utils incorrect assignment method ([bf280c6](https://github.com/fe-lce/lowcode-engine/commit/bf280c6fa1e46d084fc8f20323164816fad4076f)) -- fix outline-pane invisible occasionally when dragging tree node ([031c7f2](https://github.com/fe-lce/lowcode-engine/commit/031c7f25f10a6cfebfc7929c9226f4e4167a359f)) -- fix outline-tree initialization failed ([a2d5c6f](https://github.com/fe-lce/lowcode-engine/commit/a2d5c6fd90ca0226bbbfea01a4b28c8b8d307a78)) -- fix render module state expression initialization exception ([5bd68ee](https://github.com/fe-lce/lowcode-engine/commit/5bd68ee6b448fa58b022870b3f8175d8b77febde)) -- fix render module state expression initialization exception ([9c545cc](https://github.com/fe-lce/lowcode-engine/commit/9c545cca6004f65e2f206ea001cefa3fa3cfa807)) -- fix setter hooks error ([8a3a0b8](https://github.com/fe-lce/lowcode-engine/commit/8a3a0b824162e25a930711c6fef511b4b369e897)) -- fix test case failures of designer ([4b0521a](https://github.com/fe-lce/lowcode-engine/commit/4b0521a47494f78e120f75021e0a076fb00ce53e)) -- Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/fe-lce/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) -- fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([6ee6b07](https://github.com/fe-lce/lowcode-engine/commit/6ee6b07a10ba4aac583def52d8ff1fa78d111d0b)) -- fix the leaf hoc component fails to monitor Node changes, and modify the logic for get node ([f400172](https://github.com/fe-lce/lowcode-engine/commit/f4001728259047b09db75d76a8c3ef1e1bcb4e0a)) -- fix the problem that material.getComponentMetasMap returns the wrong result ([e02933c](https://github.com/fe-lce/lowcode-engine/commit/e02933c18bc15519b2eba8ad946282502a509611)) -- Fix the rendering error caused by incorrect key value when configuring the loop ([1026763](https://github.com/fe-lce/lowcode-engine/commit/1026763dc5a77d4395a1e86e5a0084ab4fb4230c)) -- fix the unit test failure problem caused by thisRequiredInJSE modification ([c2c59b7](https://github.com/fe-lce/lowcode-engine/commit/c2c59b7ff72ba06156bbcdb952262739d6188209)) -- fix unnecessary props calculation ([f1fed75](https://github.com/fe-lce/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) -- fixed an issue where materials would be rendered multiple times ([9d187cc](https://github.com/fe-lce/lowcode-engine/commit/9d187ccb7de55857e861d3fc881c610506872d03)) -- fixed an issue where materials would be rendered multiple times ([64cc328](https://github.com/fe-lce/lowcode-engine/commit/64cc3283c15342151a8f93c46a276681f3575153)) -- fixed focusNodeSelector configuration not taking effect ([9beae9c](https://github.com/fe-lce/lowcode-engine/commit/9beae9c3269901bf03a29033121c7d480571bce5)) -- fixed the issue that thisRequiredInJSE did not take effect in some scenarios ([7e5a919](https://github.com/fe-lce/lowcode-engine/commit/7e5a919f9352397f11741fd911495996469c0256)) -- in ES require changed to import ([b4d7d6d](https://github.com/fe-lce/lowcode-engine/commit/b4d7d6d8c290a335a2c1f60731d4417b23444941)) -- in ES require changed to import ([7c8cd36](https://github.com/fe-lce/lowcode-engine/commit/7c8cd36a10a7caa61de31a15abd93ab8a97fbe08)) -- leaf should be type of ShellNode other than InnerNode ([5bb8cf5](https://github.com/fe-lce/lowcode-engine/commit/5bb8cf5d12d38d70b69fa28deb2f8aa0afa9b9b9)) -- lowcode component exec lifecycle has error ([f99a47e](https://github.com/fe-lce/lowcode-engine/commit/f99a47e502080134454795f5e361cfa4fba3f03b)) -- lowcode component leaf dont have export prop, exec leaf.export make error ([9d51dcd](https://github.com/fe-lce/lowcode-engine/commit/9d51dcdae38850be0206861f2cae74ca68805c25)) -- missing engine options config info ([a79875c](https://github.com/fe-lce/lowcode-engine/commit/a79875cf8698d3912b50526d97f6ac72e9a21fc9)) -- missing engine options config info ([9ccded0](https://github.com/fe-lce/lowcode-engine/commit/9ccded006ef44cd538abaa140250e519243bf090)) -- npm run clean error in windows ([a176e9d](https://github.com/fe-lce/lowcode-engine/commit/a176e9d245981fb5718c8d144f477202b3796be6)) -- project event listeners will not be invoked sometimes ([a0c772f](https://github.com/fe-lce/lowcode-engine/commit/a0c772fb903cf5eb9e0b811b64bbe3846d4ba8ac)) -- project.exportSchema api lack stage param & setAssets should be a async fn ([0ea76a7](https://github.com/fe-lce/lowcode-engine/commit/0ea76a746fac8ea8e7b999d42434c468c85d6372)) -- project.exportSchema should export componentsMap of all documents ([969a130](https://github.com/fe-lce/lowcode-engine/commit/969a130b373fb028f8051e96cb9d79f1de0a2a1c)) -- removed incorrectly calling childWhitelist hook logic during drag and drop ([#1141](https://github.com/fe-lce/lowcode-engine/issues/1141)) ([6576346](https://github.com/fe-lce/lowcode-engine/commit/6576346b9185bedb090be9c84129e077cf5389b3)) -- renderer not rendering correct components when loading components with loadAsyncLibrary api ([9b3b4f9](https://github.com/fe-lce/lowcode-engine/commit/9b3b4f9b0e35ef3ea2f0117f0cdb2254e15d5389)) -- should pass index param when creating a Prop instance under a list type Prop instance, fix [#780](https://github.com/fe-lce/lowcode-engine/issues/780) ([a8de3f2](https://github.com/fe-lce/lowcode-engine/commit/a8de3f299c7b26fa939d2b2ea1428143e2b5fb01)) -- simulator eclipses setting area [#773](https://github.com/fe-lce/lowcode-engine/issues/773) ([b4b30a3](https://github.com/fe-lce/lowcode-engine/commit/b4b30a359932f5c0e8fde1b28f54a883c87901d8)) -- spec typo ([#1064](https://github.com/fe-lce/lowcode-engine/issues/1064)) ([ecb9dca](https://github.com/fe-lce/lowcode-engine/commit/ecb9dca2b9386ef6fadfd009d161a9203b9b9558)) -- try catch calculation of dynamic setter ([f61e2a2](https://github.com/fe-lce/lowcode-engine/commit/f61e2a2b8a3d8d6754474cd392bc259917c7eb10)) -- type=legao dont make request ([98ececa](https://github.com/fe-lce/lowcode-engine/commit/98ececa9c11f93e5f849b201b5b5e7ff453733d7)) -- **types:** rrror declaration of the children prop ([951d1cb](https://github.com/fe-lce/lowcode-engine/commit/951d1cb103fa46c0e7926d6138657c7d10cc4f88)) -- use the original object if it is not a shell object ([5ea53f7](https://github.com/fe-lce/lowcode-engine/commit/5ea53f706b6571946bcfa56b8655b55717381771)) -- use the outer documentation url of unique key, fixes [#868](https://github.com/fe-lce/lowcode-engine/issues/868) ([d770007](https://github.com/fe-lce/lowcode-engine/commit/d770007ff8c39e6cf527e07a7d6468dbb88c776d)) -- use the outer documentation url of unique key, fixes [#868](https://github.com/fe-lce/lowcode-engine/issues/868) ([912ee22](https://github.com/fe-lce/lowcode-engine/commit/912ee22180a424f63298c319c62fb481513af904)) -- use uppercase resize trigger names based on material spec ([7fda0ef](https://github.com/fe-lce/lowcode-engine/commit/7fda0efe131e0e2e3141849cf3f87307e7ce1b36)) -- when designMode is not design, the hidden attribute does not take effect ([3dd0b6d](https://github.com/fe-lce/lowcode-engine/commit/3dd0b6d0a86267e3029c176ff49aff793ce3e186)) - -### [1.0.4](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.4-beta.0...@felce/lowcode-code-generator@1.0.4) (2022-04-12) - -### Bug Fixes - -- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([eb4cc69](https://github.com/fe-lce/lowcode-engine/commit/eb4cc693f5dbcae54546c569eb8fa331d074e062)) - -### [1.0.4-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.4-beta.0...@felce/lowcode-code-generator@1.0.4-beta.1) (2022-04-11) - -### Bug Fixes - -- 🐛 解决 react 中 jsx 出码的时候对于循环数据漏包 \_\_$evalArray 的问题 ([987f4ce](https://github.com/fe-lce/lowcode-engine/commit/987f4cea54ef8a75d0b63a0268b5a20b2938b8a7)) - -### [1.0.4-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.3...@felce/lowcode-code-generator@1.0.4-beta.0) (2022-04-10) - -### Features - -- **material-parser:** check module before install it; fix default value issue in ts parser ([fc452f7](https://github.com/fe-lce/lowcode-engine/commit/fc452f7166f02acfba6076c1a9425e6f5880b5f6)) - -### Bug Fixes - -- 🐛 修正 i18n 里面的一个参数命名问题 ([1e9e388](https://github.com/fe-lce/lowcode-engine/commit/1e9e388ce9104d76c4f6d9bc513c57e5059d7982)) -- 🐛 解决出码缺乏对于 i18n 数据的 params 的处理的问题 ([1eb9add](https://github.com/fe-lce/lowcode-engine/commit/1eb9addd8df2323f9aabac87af32ac2efcd6bf22)), closes [#288](https://github.com/fe-lce/lowcode-engine/issues/288) -- 🐛 解决小程序环境没有 window, 而 rax 出码中却默认在 \_\_$eval 中用到 window 的问题 ([67dabb0](https://github.com/fe-lce/lowcode-engine/commit/67dabb04beb32b6e94eb1276222e53b416e47c9d)) -- Fix the conversion failure of some props expressions under Slot props of low-code components ([7db5461](https://github.com/fe-lce/lowcode-engine/commit/7db5461706c739fac673b2466bc2fda7661242e4)) -- fix unnecessary props calculation ([f1fed75](https://github.com/fe-lce/lowcode-engine/commit/f1fed75f39be8289ede1ec558b04428a69e25b5f)) -- 修正 react 框架出码中在严格模式对 methods 和 context 的处理 ([79db4ac](https://github.com/fe-lce/lowcode-engine/commit/79db4ac97f34f24b7f7460fb3fc67521967f8cc5)) - -### [1.0.3](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.2...@felce/lowcode-code-generator@1.0.3) (2022-03-29) - -### Features - -- add getConvertedExtraKey / getOriginalExtraKey to utils ([8e7bb9d](https://github.com/fe-lce/lowcode-engine/commit/8e7bb9d4b86454dd77c6928eb769cd764cad8630)) - -### Bug Fixes - -- 🐛 出码: 解决 componentName 和 exportName 不一致时生成的 import 语句的问题 ([eefc091](https://github.com/fe-lce/lowcode-engine/commit/eefc091ee7e86d6214d20d486212cb5aff237946)) -- component cannot be redisplayed by configuration after rendering is closed ([c54f369](https://github.com/fe-lce/lowcode-engine/commit/c54f369e1860d818479dda9d6429f851c0b08fa6)) -- fix loop configuration auto fill empty array issue ([d087092](https://github.com/fe-lce/lowcode-engine/commit/d087092fd712eff0556adacda692d3ff6f2f9f22)) -- make important true by default ([c63b6e1](https://github.com/fe-lce/lowcode-engine/commit/c63b6e1bfadc3fc87ed41840952e02ffbff24fab)) -- make insertAfter & insertBefore work ([70fd372](https://github.com/fe-lce/lowcode-engine/commit/70fd3720d098d6e227acb9281ee22feee66b9c0b)) -- npm源 ([437adcc](https://github.com/fe-lce/lowcode-engine/commit/437adccf5f2dbb400de6e2bef10cfc4b65286f2b)) -- prop should return undefined when all items are undefined ([5bb9ec7](https://github.com/fe-lce/lowcode-engine/commit/5bb9ec7a1dfaabfdb5369226b54d5f63a7999e59)) -- should not create new prop while querying fileName ([19c207d](https://github.com/fe-lce/lowcode-engine/commit/19c207d29de045f473ba73baaf34e7294d40261a)) -- variable binding lost after modify the mock value ([ef95b56](https://github.com/fe-lce/lowcode-engine/commit/ef95b5683273d8302bde1582de8afe3d87a808d8)) -- Workbench should receive the original skeleton other than shell skeleton ([d5c3ca1](https://github.com/fe-lce/lowcode-engine/commit/d5c3ca1068ce2c2140980bd059d0da333574dc34)) - -### [1.0.2](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.2-beta.1...@felce/lowcode-code-generator@1.0.2) (2022-03-08) - -### [1.0.2-beta.1](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.2-beta.0...@felce/lowcode-code-generator@1.0.2-beta.1) (2022-03-08) - -### Bug Fixes - -- 🐛 补充 icejs 模板中缺失的依赖包 ([a94553e](https://github.com/fe-lce/lowcode-engine/commit/a94553e503d439b67478df6a34950d9e3d15a063)) - -### [1.0.2-beta.0](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.0...@felce/lowcode-code-generator@1.0.2-beta.0) (2022-03-08) - -### Features - -- 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/fe-lce/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) -- modify npm private control & version ([ee55d02](https://github.com/fe-lce/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) -- modify yuque link in README ([d522034](https://github.com/fe-lce/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) -- remove CHANGELOG.md ([b996414](https://github.com/fe-lce/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) -- remove module field in material-parser package.json ([6141c27](https://github.com/fe-lce/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) -- rename build:umd ([23c7959](https://github.com/fe-lce/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) -- replace tnpm with npm ([36caf0f](https://github.com/fe-lce/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) -- support UMD packageing for react-renderer ([982d0d6](https://github.com/fe-lce/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) - -### Bug Fixes - -- 🐛 去掉 npm 上没有的依赖 ([#68](https://github.com/fe-lce/lowcode-engine/issues/68)) ([e7ce779](https://github.com/fe-lce/lowcode-engine/commit/e7ce77987eb05871dd1675d2a88367c5569bfbff)) -- 兼容 setters 为空的情况 ([56b459a](https://github.com/fe-lce/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) -- 解决 package.json 中误添加了没有用到的数据源类型的 handler 的包的问题 ([#56](https://github.com/fe-lce/lowcode-engine/issues/56)) ([76341c8](https://github.com/fe-lce/lowcode-engine/commit/76341c8456b227192bb65537dc3d16033db0b3a1)) -- 解决出码的一些问题 ([#87](https://github.com/fe-lce/lowcode-engine/issues/87)) ([4a01c97](https://github.com/fe-lce/lowcode-engine/commit/4a01c97ea6bf23eb677888ba1aba54e5c9f4f630)) -- 修复 setup 的逻辑 ([1cfb15a](https://github.com/fe-lce/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) -- 修正一些对内的地址 ([07cc1f2](https://github.com/fe-lce/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) -- 增加必要的方法 ([1b38a81](https://github.com/fe-lce/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) -- fix tsconfig of material-parser ([46725cb](https://github.com/fe-lce/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) -- lint&fix auto generated types.ts ([7dde970](https://github.com/fe-lce/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) -- The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/fe-lce/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) - -### [1.0.1](https://github.com/fe-lce/lowcode-engine/compare/@felce/lowcode-code-generator@1.0.0...@felce/lowcode-code-generator@1.0.1) (2022-03-08) - -### Features - -- 在 skeleton 增加几个方法和事件 ([a7d436a](https://github.com/fe-lce/lowcode-engine/commit/a7d436a0525a0ce0c7229710077111f283b452f4)) -- modify npm private control & version ([ee55d02](https://github.com/fe-lce/lowcode-engine/commit/ee55d024a7f964ccf35a0efabec817364cea8041)) -- modify yuque link in README ([d522034](https://github.com/fe-lce/lowcode-engine/commit/d522034879d20a7b5ed12f8fe02a30662a2ea7c6)) -- remove CHANGELOG.md ([b996414](https://github.com/fe-lce/lowcode-engine/commit/b996414c436b5d2439c8368eb4e001cdbcd02892)) -- remove module field in material-parser package.json ([6141c27](https://github.com/fe-lce/lowcode-engine/commit/6141c273c9c32eea22b5374679fe625e6ea15394)) -- rename build:umd ([23c7959](https://github.com/fe-lce/lowcode-engine/commit/23c795931e1d5cf43e9c21cd902441c69c1ecc63)) -- replace tnpm with npm ([36caf0f](https://github.com/fe-lce/lowcode-engine/commit/36caf0f18980c16f7ebb82ac845ad6b33e033567)) -- support UMD packageing for react-renderer ([982d0d6](https://github.com/fe-lce/lowcode-engine/commit/982d0d676b3dfbfc10a2190c0040126d6925ed37)) - -### Bug Fixes - -- 🐛 修正一些示例地址 ([8d21283](https://github.com/fe-lce/lowcode-engine/commit/8d212832e77a1ec763db668683917705774acd0d)) -- 兼容 setters 为空的情况 ([56b459a](https://github.com/fe-lce/lowcode-engine/commit/56b459a017a8350a911ef20f0166d1e62b6390e4)) -- 修复 setup 的逻辑 ([1cfb15a](https://github.com/fe-lce/lowcode-engine/commit/1cfb15aebea9796af23b2135f2aa4409d81283d7)) -- 修正一些对内的地址 ([07cc1f2](https://github.com/fe-lce/lowcode-engine/commit/07cc1f2954530c64a1a3d260e8d532c9e19892e8)) -- 增加必要的方法 ([1b38a81](https://github.com/fe-lce/lowcode-engine/commit/1b38a812653656aa02100a3b1b2a581188d1b3ef)) -- fix tsconfig of material-parser ([46725cb](https://github.com/fe-lce/lowcode-engine/commit/46725cb9f3166912c8f5b42f1e0b1177158c1ee3)) -- lint&fix auto generated types.ts ([7dde970](https://github.com/fe-lce/lowcode-engine/commit/7dde9701c7960b29523abddf32421cdbac47016d)) -- The outline tree does not display the loop flag when the loop is an empty array ([191e284](https://github.com/fe-lce/lowcode-engine/commit/191e284f2fa190c2b3aecb4df31849b2bdc99d38)) - -## 1.0.0 (2022-02-17) - -### Features - -- first commit - genesis ([4f4ac51](https://github.com/fe-lce/lowcode-engine/commit/4f4ac5115d18357a7399632860808f6cffc33fad)) diff --git a/modules/code-generator/CONTRIBUTING.md b/modules/code-generator/CONTRIBUTING.md deleted file mode 100644 index 5950d40025..0000000000 --- a/modules/code-generator/CONTRIBUTING.md +++ /dev/null @@ -1,40 +0,0 @@ -# 如何共建 - -1. 拉取最新代码,切换到 develop 分支,基于 develop 分支切出一个 feature 或 hotfix 分支 -2. 到 `lowcode-engine` 项目根目录下,执行 `lerna bootstrap && lerna run build --scope "@felce/lowcode-types"` 来安装依赖并构建 -3. 到 `lowcode-engine/modules/code-generator`下,安装依赖(`npm i`),然后先跑一遍 `npm test` 看看是否所有用例都能通过 (如果网络条件不太好,建议使用 [cnpm - 淘宝提供的中国 NPM 镜像](https://npmmirror.com/)) -4. 在 tests 目录下编写您的需求/问题的测试用例 -5. 修改 src 下的一些代码,然后运行 `npm test` 或 `npm start` 启动 jest 进行调测 -6. 确保所有的测试用例都能通过时,提 MR 给 @牧毅 -- MR 将在 1 个工作日内给您回复意见。 - -当然,欢迎提前私聊沟通 @牧毅,或加入 低代码渲染/出码服务金牌用户群 讨论沟通。 - -# FAQ - -## 如何查看单测覆盖率? - -执行 `npm test:cov` 命令,这样会自动生成单测覆盖率的报告到 `coverage` 目录下。 - -## 如何只执行一个测试用例? - -```sh -npm test -t 'demo2-utils-name-alias' -``` - -## 更新特定测试用例的 expected: - -```sh -npm test:update-snapshots -t 'demo2-utils-name-alias' -``` - -## 如何只执行某个测试用例文件? - -执行 `npx jest 测试用例的文件路径` 即可,如: - -```sh -npx jest tests/plugins/common/requireUtils.test.ts -``` - -## 如何调试某个测试用例? - -建议需要打断点的地方通过 VSCode 打上断点,然后打开 VSCode 的 JavaScript Debug Terminal,在其中执行 `npx jest tests/path/to/your/test/file.ts` 或 `npx jest -t your-test-case-title` 来执行你的测试用例 -- 这样执行到打了断点的语句时会自动断住,以便调试。 diff --git a/modules/code-generator/README.md b/modules/code-generator/README.md deleted file mode 100644 index cf61fba9ce..0000000000 --- a/modules/code-generator/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# 出码 - -所谓出码,即将低代码编排出的 schema 进行解析并转换成最终可执行的代码的过程。本模块提供有 Icejs 和 Rax 两套框架的出码方案,并提供了强大而灵活的扩展机制。 - -## 使用方法 - -### 1) 通过命令行快速体验 - -欢迎使用命令行工具快速体验:`npx @felce/lowcode-code-generator -i example-schema.json -o generated -s icejs` - ---其中 example-schema.json 可以从[这里下载](https://unpkg.com/@felce/lowcode-code-generator@beta/example-schema.json) - -### 2) 通过设计器插件快速体验 - -1. 安装依赖: `npm install --save @alilc/lowcode-plugin-code-generator` -2. 注册插件: - -```ts -import { plugins } from '@felce/lowcode-engine'; -import CodeGenPlugin from '@alilc/lowcode-plugin-code-generator'; - -// 在你的初始化函数中: -await plugins.register(CodeGenPlugin); - -// 如果您不希望自动加上出码按钮,则可以这样注册 -await plugins.register(CodeGenPlugin, { disableCodeGenActionBtn: true }); -``` - -然后运行你的低代码编辑器项目即可 -- 在设计器的右上角会出现一个“出码”按钮,点击即可在浏览器中出码并预览。 - -### 3)服务端出码接入 - -此代码生成器一开始就是为服务端出码设计的,你可以直接这样来在 node.js 环境中使用: - -1. 安装依赖: `npm install --save @felce/lowcode-code-generator` -2. 引入代码生成器: - -```js -import CodeGenerator from '@felce/lowcode-code-generator'; -``` - -3. 创建项目构建器: - -```js -const projectBuilder = CodeGenerator.solutions.icejs(); -``` - -4. 生成代码 - -```js -const project = await projectBuilder.generateProject( - schema, // 编排搭建出来的 schema -); -``` - -5. 将生成的代码写入到磁盘中(也可以生成一个 zip 包) - -```js -// 写入磁盘 -await CodeGenerator.publishers.disk().publish({ - project, // 上一步生成的 project - outputPath: '/path/to/your/output/dir', // 输出目录 - projectSlug: 'your-project-slug', // 项目标识 -}); - -// 写入到 zip 包 -await CodeGenerator.publishers.zip().publish({ - project, // 上一步生成的 project - outputPath: '/path/to/your/output/dir', // 输出目录 - projectSlug: 'your-project-slug', // 项目标识 -- 对应生成 your-project-slug.zip 文件 -}); -``` - -注:一般来说在服务端出码可以跟 github/gitlab, CI 和 CD 流程等一起串起来使用,通常用于优化性能。 - -### 4)浏览器中出码接入 - -随着现在电脑性能和浏览器技术的发展,出码其实已经不必非得在服务端做了,借助于 Web Worker 特性,可以在浏览器中进行出码: - -1. 安装依赖: `npm install --save @felce/lowcode-code-generator` -2. 引入代码生成器: - -```js -import * as CodeGenerator from '@felce/lowcode-code-generator/standalone-loader'; -``` - -3. 【可选】提前初始化代码生成器: - -```js -// 提前初始化下,这样后面用的时候更快(这个 init 内部会提前准备好创建 worker 的一些资源) -await CodeGenerator.init(); -``` - -4. 出码 - -```js -const project = await CodeGenerator.generateCode({ - solution: 'icejs', // 出码方案 (目前内置有 icejs 和 rax ) - schema, // 编排搭建出来的 schema -}); - -console.log(project); // 出码结果(默认是递归结构描述的,可以传 flattenResult: true 以生成扁平结构的结果) -``` - -注:一般来说在浏览器中出码适合做即时预览功能。 - -5. 下载 zip 包 - -```js -// 写入到 zip 包 -await CodeGenerator.publishers.zip().publish({ - project, // 上一步生成的 project - projectSlug: 'your-project-slug', // 项目标识 -- 对应下载 your-project-slug.zip 文件 -}); -``` - -### 5)自定义出码 - -前端框架灵活多变,默认内置的出码方案很难满足所有人的需求,好在此代码生成器支持非常灵活的插件机制 -- 欢迎参考 ./src/plugins/xxx 来编写您自己的出码插件,然后参考 ./src/solutions/xxx 将各种插件组合成一套适合您的业务场景的出码方案。 - -## 参与共建 - -欢迎参与共建,如何共建请参阅:[./CONTRIBUTING.md](https://github.com/fe-lce/lowcode-engine/blob/main/modules/code-generator/CONTRIBUTING.md) diff --git a/modules/code-generator/babel.config.js b/modules/code-generator/babel.config.js deleted file mode 100644 index c5986f2bc0..0000000000 --- a/modules/code-generator/babel.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/modules/code-generator/bin/lowcode-code-generator.js b/modules/code-generator/bin/lowcode-code-generator.js deleted file mode 100755 index 79c36c49a0..0000000000 --- a/modules/code-generator/bin/lowcode-code-generator.js +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable no-var */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable @typescript-eslint/no-require-imports */ - -var program = require('commander'); - -program - .command('generate', { isDefault: true }) - .description('Generate code from ali lowcode schema') - .requiredOption('-s, --solution ', 'specify the solution to use (icejs/rax/recore)') - .option('-i, --input ', 'specify the input schema file') - .option('-o, --output ', 'specify the output directory', 'generated') - .option('-c, --cwd ', 'specify the working directory', '.') - .option('-q, --quiet', 'be quiet, do not output anything unless get error', false) - .option('-v, --verbose', 'be verbose, output more information', false) - .option('--solution-options ', 'specify the solution options', '{}') - .arguments('[input-schema] ali lowcode schema JSON file') - .action(function doGenerate(inputSchema, command) { - var options = command.opts(); - if (options.cwd) { - process.chdir(options.cwd); - } - - require('../dist/cli') - .run(inputSchema ? [inputSchema] : [], options) - .then((retCode) => { - process.exit(retCode); - }); - }); - -program - .command('init-solution') - .option('-c, --cwd ', 'specify the working directory', '.') - .option('-q, --quiet', 'be quiet, do not output anything unless get error', false) - .option('-v, --verbose', 'be verbose, output more information', false) - .arguments('') - .action(function initSolution(solutionName, command) { - var options = command.opts(); - if (options.cwd) { - process.chdir(options.cwd); - } - - require('../dist/cli') - .initSolution([solutionName], options) - .then((retCode) => { - process.exit(retCode); - }); - }); - -program.parse(process.argv); - diff --git a/modules/code-generator/example-schema.json b/modules/code-generator/example-schema.json deleted file mode 100644 index 5e31b1bea9..0000000000 --- a/modules/code-generator/example-schema.json +++ /dev/null @@ -1,276 +0,0 @@ -{ - "version": "1.0.0", - "componentsMap": [ - { - "componentName": "Button", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Button" - }, - { - "componentName": "Button.Group", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Button", - "subName": "Group" - }, - { - "componentName": "Input", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Input" - }, - { - "componentName": "Form", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Form" - }, - { - "componentName": "Form.Item", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Form", - "subName": "Item" - }, - { - "componentName": "NumberPicker", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "NumberPicker" - }, - { - "componentName": "Select", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Select" - } - ], - "componentsTree": [ - { - "componentName": "Page", - "id": "node$1", - "meta": { - "title": "测试", - "router": "/" - }, - "props": { - "ref": "outerView", - "autoLoading": true - }, - "fileName": "test", - "state": { - "text": "outer" - }, - "lifeCycles": { - "componentDidMount": { - "type": "JSFunction", - "value": "function componentDidMount() { console.log('componentDidMount'); }" - } - }, - "dataSource": { - "list": [ - { - "id": "urlParams", - "type": "urlParams" - }, - - { - "id": "user", - "type": "fetch", - "options": { - "method": "GET", - "uri": "https://shs.xxx.com/mock/1458/demo/user", - "isSync": true - }, - "dataHandler": { - "type": "JSFunction", - "value": "function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}" - } - }, - - { - "id": "orders", - "type": "fetch", - "options": { - "method": "GET", - "uri": "https://shs.xxx.com/mock/1458/demo/orders", - "isSync": true - }, - "dataHandler": { - "type": "JSFunction", - "value": "function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}" - } - } - ], - "dataHandler": { - "type": "JSFunction", - "value": "function (dataMap) {\n console.info(\"All datasources loaded:\", dataMap);\n}" - } - }, - "children": [ - { - "componentName": "Form", - "id": "node$2", - "props": { - "labelCol": { - "type": "JSExpression", - "value": "this.state.colNum" - }, - "style": {}, - "ref": "testForm" - }, - "children": [ - { - "componentName": "Form.Item", - "id": "node$3", - "props": { - "label": "姓名:", - "name": "name", - "initValue": "李雷" - }, - "children": [ - { - "componentName": "Input", - "id": "node$4", - "props": { - "placeholder": "请输入", - "size": "medium", - "style": { - "width": 320 - } - } - } - ] - }, - { - "componentName": "Form.Item", - "id": "node$5", - "props": { - "label": "年龄:", - "name": "age", - "initValue": "22" - }, - "children": [ - { - "componentName": "NumberPicker", - "id": "node$6", - "props": { - "size": "medium", - "type": "normal" - } - } - ] - }, - { - "componentName": "Form.Item", - "id": "node$7", - "props": { - "label": "职业:", - "name": "profession" - }, - "children": [ - { - "componentName": "Select", - "id": "node$8", - "props": { - "dataSource": [ - { - "label": "教师", - "value": "t" - }, - { - "label": "医生", - "value": "d" - }, - { - "label": "歌手", - "value": "s" - } - ] - } - } - ] - }, - { - "componentName": "Div", - "id": "node$9", - "props": { - "style": { - "textAlign": "center" - } - }, - "children": [ - { - "componentName": "Button.Group", - "id": "node$a", - "props": {}, - "children": [ - { - "componentName": "Button", - "id": "node$b", - "condition": { - "type": "JSExpression", - "value": "this.index >= 1" - }, - "loop": ["a", "b", "c"], - "props": { - "type": "primary", - "style": { - "margin": "0 5px 0 5px" - } - }, - "children": [ - { - "type": "JSExpression", - "value": "this.item" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ], - "constants": { - "ENV": "prod", - "DOMAIN": "xxx.xxx.com" - }, - "css": "body {font-size: 12px;} .table { width: 100px;}", - "config": { - "sdkVersion": "1.0.3", - "historyMode": "hash", - "targetRootID": "J_Container", - "layout": { - "componentName": "BasicLayout", - "props": { - "logo": "...", - "name": "测试网站" - } - }, - "theme": { - "package": "@alife/theme-fusion", - "version": "^0.1.0", - "primary": "#ff9966" - } - }, - "meta": { - "name": "demo应用", - "git_group": "appGroup", - "project_name": "app_demo", - "description": "这是一个测试应用", - "spma": "spa23d", - "creator": "Test" - } -} diff --git a/modules/code-generator/example-schema.json5 b/modules/code-generator/example-schema.json5 deleted file mode 100644 index 4ab02999ec..0000000000 --- a/modules/code-generator/example-schema.json5 +++ /dev/null @@ -1,276 +0,0 @@ -{ - version: '1.0.0', - componentsMap: [ - { - componentName: 'Button', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Button', - }, - { - componentName: 'Button.Group', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Button', - subName: 'Group', - }, - { - componentName: 'Input', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Input', - }, - { - componentName: 'Form', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Form', - }, - { - componentName: 'Form.Item', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Form', - subName: 'Item', - }, - { - componentName: 'NumberPicker', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'NumberPicker', - }, - { - componentName: 'Select', - package: '@alifd/next', - version: '1.19.18', - destructuring: true, - exportName: 'Select', - }, - ], - componentsTree: [ - { - componentName: 'Page', - id: 'node$1', - meta: { - title: '测试', - router: '/', - }, - props: { - ref: 'outerView', - autoLoading: true, - }, - fileName: 'test', - state: { - text: 'outer', - }, - lifeCycles: { - componentDidMount: { - type: 'JSFunction', - value: "function componentDidMount() { console.log('componentDidMount'); }", - }, - }, - dataSource: { - list: [ - { - id: 'urlParams', - type: 'urlParams', - }, - - { - id: 'user', - type: 'fetch', - options: { - method: 'GET', - uri: 'https://shs.xxx.com/mock/1458/demo/user', - isSync: true, - }, - dataHandler: { - type: 'JSFunction', - value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}', - }, - }, - - { - id: 'orders', - type: 'fetch', - options: { - method: 'GET', - uri: 'https://shs.xxx.com/mock/1458/demo/orders', - isSync: true, - }, - dataHandler: { - type: 'JSFunction', - value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}', - }, - }, - ], - dataHandler: { - type: 'JSFunction', - value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}', - }, - }, - children: [ - { - componentName: 'Form', - id: 'node$2', - props: { - labelCol: { - type: 'JSExpression', - value: 'this.state.colNum', - }, - style: {}, - ref: 'testForm', - }, - children: [ - { - componentName: 'Form.Item', - id: 'node$3', - props: { - label: '姓名:', - name: 'name', - initValue: '李雷', - }, - children: [ - { - componentName: 'Input', - id: 'node$4', - props: { - placeholder: '请输入', - size: 'medium', - style: { - width: 320, - }, - }, - }, - ], - }, - { - componentName: 'Form.Item', - id: 'node$5', - props: { - label: '年龄:', - name: 'age', - initValue: '22', - }, - children: [ - { - componentName: 'NumberPicker', - id: 'node$6', - props: { - size: 'medium', - type: 'normal', - }, - }, - ], - }, - { - componentName: 'Form.Item', - id: 'node$7', - props: { - label: '职业:', - name: 'profession', - }, - children: [ - { - componentName: 'Select', - id: 'node$8', - props: { - dataSource: [ - { - label: '教师', - value: 't', - }, - { - label: '医生', - value: 'd', - }, - { - label: '歌手', - value: 's', - }, - ], - }, - }, - ], - }, - { - componentName: 'Div', - id: 'node$9', - props: { - style: { - textAlign: 'center', - }, - }, - children: [ - { - componentName: 'Button.Group', - id: 'node$a', - props: {}, - children: [ - { - componentName: 'Button', - id: 'node$b', - condition: { - type: 'JSExpression', - value: 'this.index >= 1', - }, - loop: ['a', 'b', 'c'], - props: { - type: 'primary', - style: { - margin: '0 5px 0 5px', - }, - }, - children: [ - { - type: 'JSExpression', - value: 'this.item', - }, - ], - }, - ], - }, - ], - }, - ], - }, - ], - }, - ], - constants: { - ENV: 'prod', - DOMAIN: 'xxx.xxx.com', - }, - css: 'body {font-size: 12px;} .table { width: 100px;}', - config: { - sdkVersion: '1.0.3', - historyMode: 'hash', - targetRootID: 'J_Container', - layout: { - componentName: 'BasicLayout', - props: { - logo: '...', - name: '测试网站', - }, - }, - theme: { - package: '@alife/theme-fusion', - version: '^0.1.0', - primary: '#ff9966', - }, - }, - meta: { - name: 'demo应用', - git_group: 'appGroup', - project_name: 'app_demo', - description: '这是一个测试应用', - spma: 'spa23d', - creator: 'Test', - }, -} diff --git a/modules/code-generator/jest.config.js b/modules/code-generator/jest.config.js deleted file mode 100644 index 0f908143da..0000000000 --- a/modules/code-generator/jest.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transformIgnorePatterns: ['/node_modules/(?!core-js)/'], - moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], - collectCoverage: false, - collectCoverageFrom: ['src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/vendor/**'], - testMatch: ['/tests/**/*.test.ts'], - setupFiles: ['./jest.setup.js'], -}; diff --git a/modules/code-generator/jest.setup.js b/modules/code-generator/jest.setup.js deleted file mode 100644 index 67da56145a..0000000000 --- a/modules/code-generator/jest.setup.js +++ /dev/null @@ -1,12 +0,0 @@ -// 对于 standalone 模式的专门 polyfills -if (process.env.TEST_TARGET === 'standalone') { - // 模拟浏览器环境 - global.window = global; - global.self = global; - - // 将所有测试用例里面的 './src' 都替换为 './dist/standalone' - jest.mock('./src', () => require('./dist/standalone')); -} - -// 如果在调试模式下,则不限制超时时间 -jest.setTimeout(typeof v8debug === 'object' ? Infinity : 30 * 1000); diff --git a/modules/code-generator/package.json b/modules/code-generator/package.json deleted file mode 100644 index 48f7c423aa..0000000000 --- a/modules/code-generator/package.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "name": "@felce/lowcode-code-generator", - "version": "1.1.7", - "description": "出码引擎 for LowCode Engine", - "license": "MIT", - "main": "lib/index.js", - "module": "es/index.js", - "typings": "types/index.d.ts", - "files": [ - "bin", - "lib", - "es", - "demo", - "dist", - "types", - "standalone", - "standalone-worker", - "standalone-loader", - "loader", - "CHANGELOG.md", - "README.md", - "CONTRIBUTING.md", - "example-schema.json", - "example-schema.json5" - ], - "bin": { - "lowcode-code-generator": "bin/lowcode-code-generator.js" - }, - "scripts": { - "start": "jest --watchAll", - "build": "npm run clean && node scripts/build", - "build:standalone": "node scripts/build-standalone", - "clean": "rimraf es lib dist types generated demo coverage output test-cases/*/*/actual", - "lint": "eslint --ext .jsx,.js,.ts,.tsx src/", - "lintfix": "eslint --ext .jsx,.js,.ts,.tsx --fix src/", - "check:types": "tsc --noEmit", - "template": "node ./scripts/build-template-static-files.js", - "test": "npm run test:normal && npm run test:standalone", - "test:normal": "jest", - "test:standalone": "node scripts/test-standalone", - "test:cov": "jest --coverage", - "test:update-snapshots": "cross-env UPDATE_EXPECTED=true jest -u", - "analyze:standalone": "ANALYZE=true node scripts/build-standalone", - "release:beta": "standard-version -t @felce/lowcode-code-generator\\@ -r patch --prerelease beta && git push --follow-tags && npm publish --tag beta", - "release:patch": "standard-version -t @felce/lowcode-code-generator\\@ -r patch && git push --follow-tags && npm publish", - "release:minor": "standard-version -t @felce/lowcode-code-generator\\@ -r minor && git push --follow-tags && npm publish", - "prepublishOnly": "npm run build", - "demo": "node bin/lowcode-code-generator.js -i example-schema.json -o demo -s icejs" - }, - "standard-version": { - "skip": { - "changelog": true - } - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged", - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } - }, - "lint-staged": { - "**/*.{js,jsx,ts,tsx}": "eslint" - }, - "dependencies": { - "@felce/lowcode-types": "^1.0.0", - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/runtime": "^7.12.5", - "@babel/traverse": "^7.12.12", - "@babel/types": "^7.12.12", - "@types/debug": "^4.1.7", - "@types/fs-extra": "^9.0.12", - "@types/glob": "^7.2.0", - "@types/lodash": "^4.14.162", - "@types/node-fetch": "2.x", - "@types/qs": "^6.9.6", - "@types/semver": "^7.3.4", - "buffer": "^6.0.3", - "chalk": "^4.1.0", - "change-case": "^3.1.0", - "commander": "^6.1.0", - "debug": "^4.3.2", - "file-saver": "^2.0.5", - "fp-ts": "^2.11.9", - "fs-extra": "9.x", - "glob": "^7.2.0", - "html-entities": "^2.3.2", - "json5": "^2.2.0", - "jsonc": "^2.0.0", - "jszip": "^3.5.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "mock-fs": "^5.1.2", - "moment": "^2.29.1", - "nanomatch": "^1.2.13", - "node-fetch": "2.x", - "path-browserify": "^1.0.1", - "prettier": "^2.5.1", - "qs": "^6.10.1", - "semver": "^7.3.4", - "short-uuid": "^3.1.1", - "babel-jest": "^26.5.2", - "tslib": "^2.3.1" - }, - "browser": { - "path": "path-browserify", - "lodash": "lodash-es", - "prettier": "prettier/standalone" - }, - "devDependencies": { - "@iceworks/spec": "^1.4.2", - "@types/babel__traverse": "^7.11.0", - "@types/file-saver": "^2.0.7", - "@types/jest": "^27.0.2", - "@types/lodash": "^4.14.162", - "@types/node": "^14.14.20", - "@types/prettier": "^2.4.2", - "@typescript-eslint/eslint-plugin": "^4.12.0", - "@typescript-eslint/parser": "^4.12.0", - "concurrently": "^6.5.1", - "cross-env": "^7.0.3", - "esbuild": "^0.14.5", - "esbuild-plugin-alias": "^0.2.1", - "esbuild-plugin-ignore": "^1.1.0", - "esbuild-visualizer": "^0.3.1", - "eslint": "^7.17.0", - "eslint-config-ali": "^11.4.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-react": "^7.22.0", - "eslint-plugin-react-hooks": "^4.2.0", - "jest": "^26.5.2", - "jest-util": "^27.4.2", - "rimraf": "^3.0.2", - "standard-version": "^9.1.1", - "ts-jest": "^26.5.2", - "ts-loader": "^6.2.2", - "ts-node": "^8.10.2", - "tsconfig-paths": "^3.9.0", - "typescript": "4.x", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": ">=10.0.0" - }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "repository": { - "type": "http", - "url": "https://github.com/fe-lce/lowcode-engine/tree/main/modules/code-generator" - }, - "bugs": "https://github.com/fe-lce/lowcode-engine/issues", - "homepage": "https://github.com/fe-lce/lowcode-engine/#readme" -} diff --git a/modules/code-generator/scripts/build-cli.js b/modules/code-generator/scripts/build-cli.js deleted file mode 100644 index 40fcb731a6..0000000000 --- a/modules/code-generator/scripts/build-cli.js +++ /dev/null @@ -1,56 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-require-imports */ -const esbuild = require('esbuild'); -const ignorePlugin = require('esbuild-plugin-ignore'); - -// 执行脚本 -(async () => { - try { - console.log('building...'); - const result = await esbuild.build({ - entryPoints: ['src/cli/index.ts'], - outfile: 'dist/cli.js', - bundle: true, - platform: 'node', - target: ['node10'], - format: 'cjs', - sourcemap: true, - sourcesContent: true, - plugins: [ - ignorePlugin([ - // @felce/lowcode-types 中误依赖了 react,这里忽略下 - { - resourceRegExp: /^react$/, - contextRegExp: /./, - }, - { - resourceRegExp: /setter-config/, - contextRegExp: /lowcode-types/, - }, - ]), - ], - define: {}, - treeShaking: true, - minify: false, - minifyWhitespace: false, - minifyIdentifiers: false, - minifySyntax: false, - legalComments: 'external', - external: Object.keys(require('../package.json').dependencies), - }); - if (result.errors.length > 0) { - throw result.errors; - } - - if (result.warnings.length > 0) { - result.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - console.log('done'); - } catch (e) { - console.error(e); - process.exit(1); - } -})(); diff --git a/modules/code-generator/scripts/build-standalone-loader.js b/modules/code-generator/scripts/build-standalone-loader.js deleted file mode 100644 index bee318dddb..0000000000 --- a/modules/code-generator/scripts/build-standalone-loader.js +++ /dev/null @@ -1,73 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-require-imports */ -const esbuild = require('esbuild'); - -const packageVersion = require('../package.json').version; -console.log('build standalone-loader: packageVersion=%s', packageVersion); - -const enableAnalyze = process.env.ANALYZE === 'true'; -const buildConfig = { - entryPoints: ['src/standalone-loader.ts'], - outfile: 'dist/standalone-loader.js', - metafile: enableAnalyze, - bundle: true, - target: ['chrome69'], - format: 'cjs', - sourcemap: true, - sourcesContent: true, - external: Object.keys(require('../package.json').dependencies), - define: { - process: JSON.stringify({ - env: { - NODE_ENV: 'production', - STANDALONE: 'true', - }, - }), - __PACKAGE_VERSION__: JSON.stringify(packageVersion), - }, - minify: false, - minifyWhitespace: false, - minifyIdentifiers: false, - minifySyntax: false, - legalComments: 'external', - treeShaking: true, -}; - -// 执行脚本 -(async () => { - try { - console.log('building cjs...'); - const result = await esbuild.build({ - ...buildConfig, - }); - if (result.errors.length > 0) { - throw result.errors; - } - - if (result.warnings.length > 0) { - result.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - const result2 = await esbuild.build({ - ...buildConfig, - outfile: buildConfig.outfile.replace(/\.js$/, '.esm.js'), - format: 'esm', - }); - if (result2.errors.length > 0) { - throw result2.errors; - } - - if (result2.warnings.length > 0) { - result2.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - console.log('done'); - } catch (e) { - console.error(e); - process.exit(1); - } -})(); diff --git a/modules/code-generator/scripts/build-standalone-worker.js b/modules/code-generator/scripts/build-standalone-worker.js deleted file mode 100644 index 3134566b24..0000000000 --- a/modules/code-generator/scripts/build-standalone-worker.js +++ /dev/null @@ -1,107 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-require-imports */ -const esbuild = require('esbuild'); -const { spawnSync } = require('child_process'); -const ignorePlugin = require('esbuild-plugin-ignore'); -const fs = require('fs'); -const path = require('path'); - -const enableAnalyze = process.env.ANALYZE === 'true'; -const buildConfig = { - entryPoints: ['src/standalone-worker.ts'], - outfile: 'dist/standalone-worker.js', - metafile: enableAnalyze, - bundle: true, - target: ['chrome69'], - format: 'iife', - sourcemap: true, - sourcesContent: true, - plugins: [ - ignorePlugin([ - { - resourceRegExp: /^fs$/, - contextRegExp: /./, - }, - // @felce/lowcode-types 中误依赖了 react,这里忽略下 - { - resourceRegExp: /^react$/, - contextRegExp: /./, - }, - { - resourceRegExp: /setter-config/, - contextRegExp: /lowcode-types|..[\\/]types/, - }, - ]), - ], - define: { - process: JSON.stringify({ - env: { - NODE_ENV: 'production', - STANDALONE: 'true', - }, - }), - }, - treeShaking: true, -}; - -// 执行脚本 -(async () => { - try { - console.log('building...'); - const result = await esbuild.build({ - ...buildConfig, - minify: false, - minifyWhitespace: false, - minifyIdentifiers: false, - minifySyntax: false, - legalComments: 'external', - }); - if (result.errors.length > 0) { - throw result.errors; - } - - if (result.warnings.length > 0) { - result.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - if (enableAnalyze) { - const metaFile = buildConfig.outfile.replace(/\.js/, '.meta.json'); - const statsFile = buildConfig.outfile.replace(/\.js/, '.stats.html'); - fs.writeFileSync(metaFile, JSON.stringify(result.metafile || {}), { encoding: 'utf-8' }); - spawnSync('npx', ['esbuild-visualizer', '--metadata', metaFile, '--filename', statsFile], { - shell: true, - stdio: 'inherit', - }); - spawnSync('open', [statsFile], { - shell: true, - stdio: 'inherit', - }); - return; - } - - const outFileContent = fs.readFileSync(buildConfig.outfile, 'utf-8'); - - console.log('minifying...'); - const minifiedOutFile = buildConfig.outfile.replace(/\.js$/, '.min.js'); - const minifiedResult = esbuild.transformSync(outFileContent, { - minify: true, - sourcemap: true, - sourcesContent: true, - sourcefile: path.basename(buildConfig.outfile), - }); - - fs.writeFileSync(minifiedOutFile, minifiedResult.code, { encoding: 'utf-8' }); - fs.writeFileSync(`${minifiedOutFile}.map`, minifiedResult.map, { encoding: 'utf-8' }); - - minifiedResult.warnings.forEach((warnings) => { - console.log(warnings); - }); - - console.log('done'); - } catch (e) { - console.error(e); - process.exit(1); - } -})(); diff --git a/modules/code-generator/scripts/build-standalone.js b/modules/code-generator/scripts/build-standalone.js deleted file mode 100644 index 804a7754db..0000000000 --- a/modules/code-generator/scripts/build-standalone.js +++ /dev/null @@ -1,135 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-require-imports */ -const esbuild = require('esbuild'); -const { spawnSync } = require('child_process'); -const ignorePlugin = require('esbuild-plugin-ignore'); -const fs = require('fs'); -const path = require('path'); - -const UMD_GLOBAL_NAME = 'AliLowCodeCodeGenerator'; - -const enableAnalyze = process.env.ANALYZE === 'true'; -const buildConfig = { - entryPoints: ['src/standalone.ts'], - outfile: 'dist/standalone.js', - metafile: enableAnalyze, - bundle: true, - target: ['chrome69'], - format: 'cjs', - sourcemap: true, - sourcesContent: true, - plugins: [ - ignorePlugin([ - { - resourceRegExp: /^fs$/, - contextRegExp: /./, - }, - // @felce/lowcode-types 中误依赖了 react,这里忽略下 - { - resourceRegExp: /^react$/, - contextRegExp: /./, - }, - { - resourceRegExp: /setter-config/, - contextRegExp: /lowcode-types|..[\\/]types/, - }, - ]), - ], - define: { - process: JSON.stringify({ - env: { - NODE_ENV: 'production', - STANDALONE: 'true', - }, - }), - }, - treeShaking: true, -}; - -// 执行脚本 -(async () => { - try { - console.log('building...'); - const result = await esbuild.build({ - ...buildConfig, - minify: false, - minifyWhitespace: false, - minifyIdentifiers: false, - minifySyntax: false, - legalComments: 'external', - }); - if (result.errors.length > 0) { - throw result.errors; - } - - if (result.warnings.length > 0) { - result.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - if (enableAnalyze) { - const metaFile = buildConfig.outfile.replace(/\.js/, '.meta.json'); - const statsFile = buildConfig.outfile.replace(/\.js/, '.stats.html'); - fs.writeFileSync(metaFile, JSON.stringify(result.metafile || {}), { encoding: 'utf-8' }); - spawnSync('npx', ['esbuild-visualizer', '--metadata', metaFile, '--filename', statsFile], { - shell: true, - stdio: 'inherit', - }); - spawnSync('open', [statsFile], { - shell: true, - stdio: 'inherit', - }); - return; - } - - const outFileContent = transformCjsToUmdFile(buildConfig.outfile); - - console.log('minifying...'); - const minifiedOutFile = buildConfig.outfile.replace(/\.js$/, '.min.js'); - const minifiedResult = esbuild.transformSync(outFileContent, { - minify: true, - sourcemap: true, - sourcesContent: true, - sourcefile: path.basename(buildConfig.outfile), - }); - - fs.writeFileSync(minifiedOutFile, minifiedResult.code, { encoding: 'utf-8' }); - fs.writeFileSync(`${minifiedOutFile}.map`, minifiedResult.map, { encoding: 'utf-8' }); - - minifiedResult.warnings.forEach((warnings) => { - console.log(warnings); - }); - - console.log('done'); - } catch (e) { - console.error(e); - process.exit(1); - } -})(); - -// esbuild 没有直接提供 UMD 格式,所以这里我们自行包装转换下 -function transformCjsToUmdFile(file) { - const globalName = UMD_GLOBAL_NAME; - const fileContent = fs.readFileSync(file, { encoding: 'utf-8' }); - const transformedFileContent = `(function (global, factory) { - if (typeof exports === 'object' && typeof module !== 'undefined'){ - factory(module, exports); - } else if (typeof define === 'function' && define.amd) { - define(['module', 'exports'], factory); - } else { - global = global || self; - var m = { exports: {} }; - factory(m, m.exports); - global.${globalName} = m.exports; - } -}(this, function (module, exports) { - 'use strict'; - ${fileContent}; - return module.exports; -})); -`; - - fs.writeFileSync(file, transformedFileContent, { encoding: 'utf-8' }); - return transformedFileContent; -} diff --git a/modules/code-generator/scripts/build-template-static-files.js b/modules/code-generator/scripts/build-template-static-files.js deleted file mode 100644 index c802498a06..0000000000 --- a/modules/code-generator/scripts/build-template-static-files.js +++ /dev/null @@ -1,125 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/quotes */ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -/* eslint-disable @typescript-eslint/no-require-imports */ -// @ts-check -// 这个文件是用来构建模板中的静态文件的 -const fs = require('fs'); -const glob = require('glob'); -const path = require('path'); -const JSON5 = require('json5'); -const { spawnSync } = require('child_process'); - -const PROJECT_ROOT = path.join(__dirname, '..'); - -const TEMPLATES = [ - { - sourceDir: path.join(PROJECT_ROOT, 'static-files/rax'), - outputDir: path.join(PROJECT_ROOT, 'src/plugins/project/framework/rax/template'), - }, -]; - -try { - TEMPLATES.forEach(buildTemplateStaticFiles); - console.log('All done.'); -} catch (e) { - console.error(e); - process.exit(1); -} - -function buildTemplateStaticFiles({ sourceDir, outputDir }) { - console.log('processing %s template...', path.dirname(sourceDir)); - - // 扫描所有的目录 - const sourceFiles = glob.sync('**/*', { - nodir: true, - dot: true, - cwd: sourceDir, - }); - - console.log('got %d files: %o', sourceFiles.length, sourceFiles); - - const staticFiles = { - imports: [], - runs: [], - }; - - // 生成对应的文件 - sourceFiles.forEach((sourceFileName, index) => { - console.log('processing %s', sourceFileName); - const sourceFileContent = fs.readFileSync(path.join(sourceDir, sourceFileName), 'utf-8'); - const sourceFileRealName = sourceFileName.replace(/\.template$/, ''); - const outputFileName = `${sourceFileRealName}.ts`; - const outputFileFullPath = path.join(outputDir, 'files', outputFileName); - - const sourceFileExtName = path.extname(sourceFileRealName); - const sourceFileBaseName = path.basename(sourceFileRealName, sourceFileExtName); - - // 确保目录存在 - fs.mkdirSync(path.dirname(outputFileFullPath), { recursive: true }); - - // 写入文件 - fs.writeFileSync( - outputFileFullPath, - [ - `/* eslint-disable max-len */`, - `/* Note: this file is generated by "npm run template", please dont modify this file directly */`, - `/* -- instead, you should modify "${path.relative( - PROJECT_ROOT, - path.join(sourceDir, sourceFileName), - )}" and run "npm run template" */`, - `import { ResultFile } from '@felce/lowcode-types';`, - '', - `export default function getFile(): [string[], ResultFile] {`, - ` return ${JSON5.stringify([ - // 文件目录: - path.dirname(sourceFileRealName).split(path.sep).filter(Boolean), - // 文件名和内容: - { - name: sourceFileBaseName, - ext: sourceFileExtName.replace(/^\./, ''), - content: sourceFileContent, - }, - ])};`, - `}`, - '', - ].join('\n'), - { - encoding: 'utf-8', - }, - ); - - staticFiles.imports.push(`import file${index} from './files/${sourceFileRealName}';`); - - staticFiles.runs.push(` runFileGenerator(root, file${index})`); - }); - - console.log('generating static-files.ts...'); - fs.writeFileSync( - path.join(outputDir, 'static-files.ts'), - [ - `/* Note: this file is generated by "npm run template", please dont modify this file directly */`, - `import { ResultDir } from '@felce/lowcode-types'; - - import { createResultDir } from '../../../../../utils/resultHelper'; - import { runFileGenerator } from '../../../../../utils/templateHelper';`, - ...staticFiles.imports, - '', - `export function generateStaticFiles(root = createResultDir('.')): ResultDir {`, - ...staticFiles.runs, - ` return root;`, - `}`, - '', - ].join('\n'), - { encoding: 'utf-8' }, - ); - - // prettier 一把 - console.log('run prettier...'); - spawnSync('npx', ['prettier', '--write', `${outputDir}`], { - stdio: 'inherit', - shell: true, - }); - - console.log('done %s', path.basename(sourceDir)); -} diff --git a/modules/code-generator/scripts/build-types b/modules/code-generator/scripts/build-types deleted file mode 100755 index 61414063c6..0000000000 --- a/modules/code-generator/scripts/build-types +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -echo building types... -tsc --outDir types --declaration --emitDeclarationOnly && \ - echo built types... && \ - rm -rf types/packages && \ - mv types/modules/code-generator/src/* types/ && \ - rm -rf types/modules - - diff --git a/modules/code-generator/scripts/build.js b/modules/code-generator/scripts/build.js deleted file mode 100644 index 841eacab55..0000000000 --- a/modules/code-generator/scripts/build.js +++ /dev/null @@ -1,75 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-require-imports */ -const _ = require('lodash'); -const esbuild = require('esbuild'); -const concurrently = require('concurrently'); -const argv = require('yargs-parser')(process.argv.slice(2)); -const packageJson = require('../package.json'); - -if (!argv.format) { - buildAll(); -} else { - buildFormat(argv.format, argv.out || 'dist'); -} - -function buildAll() { - concurrently( - [ - { name: 'build:types', command: 'sh scripts/build-types' }, - { name: 'build:cjs', command: 'node scripts/build --format=cjs --out=lib' }, - { name: 'build:esm', command: 'node scripts/build --format=esm --out=es' }, - { name: 'build:standalone', command: 'node scripts/build-standalone' }, - { name: 'build:standalone-worker', command: 'node scripts/build-standalone-worker' }, - { name: 'build:standalone-loader', command: 'node scripts/build-standalone-loader' }, - { name: 'build:cli', command: 'node scripts/build-cli' }, - ], - { - prefix: 'name', - killOthers: ['failure'], - restartTries: 0, - }, - ).then( - () => { - console.log('all done.'); - }, - () => { - process.exit(1); - }, - ); -} - -function buildFormat(format, outDir) { - try { - console.log('building %s...', format); - const startTime = Date.now(); - const result = esbuild.buildSync({ - entryPoints: ['src/index.ts'], - outfile: `${outDir}/index.js`, - bundle: true, - platform: 'node', - target: ['node10'], - format, - sourcemap: true, - sourcesContent: true, - define: {}, - treeShaking: true, - external: _.keys(packageJson.dependencies), - minify: false, - legalComments: 'external', - }); - if (result.errors.length > 0) { - throw result.errors; - } - - if (result.warnings.length > 0) { - result.warnings.forEach((warnings) => { - console.warn(warnings); - }); - } - - console.log('built %s in %ds', format, ((Date.now() - startTime) / 1000).toFixed(2)); - } catch (e) { - console.error(e); - process.exit(1); - } -} diff --git a/modules/code-generator/scripts/move-files-to-build-dest.js b/modules/code-generator/scripts/move-files-to-build-dest.js deleted file mode 100644 index 736df9968f..0000000000 --- a/modules/code-generator/scripts/move-files-to-build-dest.js +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable @typescript-eslint/no-require-imports */ -const fs = require('fs'); -const { spawnSync } = require('child_process'); - -const BUILD_DEST = process.env.BUILD_DEST || '.package'; - -fs.mkdirSync(BUILD_DEST, { recursive: true }); - -const distFiles = [...require('../package.json').files, 'package.json']; - -distFiles.forEach((file) => { - console.log('mv %s', file); - if (file === BUILD_DEST) { - fs.mkdirSync(`${BUILD_DEST}/${file}`, { recursive: true }); - spawnSync('mv', [`${file}/*`, `${BUILD_DEST}/${file}/`], { shell: true, stdio: 'inherit' }); - } -}); - -distFiles.forEach((file) => { - console.log('mv %s', file); - if (file !== BUILD_DEST) { - spawnSync('mv', [file, `${BUILD_DEST}/${file}`], { shell: true, stdio: 'inherit' }); - } -}); diff --git a/modules/code-generator/scripts/run-demo-project b/modules/code-generator/scripts/run-demo-project deleted file mode 100755 index 1ad7dce234..0000000000 --- a/modules/code-generator/scripts/run-demo-project +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env node - -// @ts-check -const program = require('commander'); -const { spawnSync } = require('child_process'); -const glob = require('glob'); -const fs = require('fs'); -const path = require('path'); -const _ = require('lodash'); - -program - .option('--npm ', 'specify the npm command location or alias') - .arguments('') - .action((project, options) => { - try { - if (!fs.existsSync(project)) { - throw new Error(`Project ${project} does not exist`); - } - - const getProjectActualPath = [ - () => path.resolve(process.cwd(), project), - () => - path.resolve( - process.cwd(), - path.join( - project, - path.dirname(glob.sync('*/package.json', { cwd: project })[0] || ''), - ), - ), - ] - .map((x) => _.memoize(x)) - .find((x) => fs.existsSync(path.join(x(), 'package.json'))); - - if (!getProjectActualPath) { - throw new Error(`Project ${project} is not a valid project(no package.json)`); - } - - const projectActualPath = getProjectActualPath(); - if (path.resolve(process.cwd(), project) !== projectActualPath) { - console.log('Changing directory to', path.relative(process.cwd(), projectActualPath)); - } - - process.chdir(projectActualPath); - - const npm = options.npm || 'npm'; - const cmd = `${npm} install && ${npm} start`; - console.log('# %s', cmd); - spawnSync(cmd, { stdio: 'inherit', shell: true }); - } catch (err) { - console.log(err); - process.exit(1); - } - }); - -program.parse(process.argv); diff --git a/modules/code-generator/scripts/test-standalone.js b/modules/code-generator/scripts/test-standalone.js deleted file mode 100644 index 55d876d573..0000000000 --- a/modules/code-generator/scripts/test-standalone.js +++ /dev/null @@ -1,17 +0,0 @@ -// 测试 standalone 模式的基本功能 -// 注1:指定文件测试就直接在后面加文件: node scripts/test-standalone.js tests/public/rax-app.test.ts -// 注2:指定测试用例就直接在后面加`-t xxx`: node scripts/test-standalone.js tests/public/rax-app.test.ts -t demo01 -const { spawnSync } = require('child_process'); - -// 一定要先构建 -spawnSync('npm', ['run', 'build:standalone'], { shell: true, stdio: 'inherit' }); - -// 然后只执行特定的一些测试用例 -spawnSync('npx', ['jest', ...process.argv.slice(2)], { - env: { - ...process.env, - TEST_TARGET: 'standalone', - }, - shell: true, - stdio: 'inherit', -}); diff --git a/modules/code-generator/src/analyzer/componentAnalyzer.ts b/modules/code-generator/src/analyzer/componentAnalyzer.ts deleted file mode 100644 index 8a504aeec7..0000000000 --- a/modules/code-generator/src/analyzer/componentAnalyzer.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { IPublicTypeNodeSchema, IPublicTypeCompositeObject } from '@felce/lowcode-types'; -import type { TComponentAnalyzer } from '../types'; - -import { handleSubNodes } from '../utils/schema'; - -export const componentAnalyzer: TComponentAnalyzer = (container) => { - let hasRefAttr = false; - const nodeValidator = (n: IPublicTypeNodeSchema) => { - if (n.props) { - const props = n.props as IPublicTypeCompositeObject; - if (props.ref) { - hasRefAttr = true; - } - } - }; - - nodeValidator(container); - - if (!hasRefAttr && container.children) { - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - handleSubNodes( - container.children, - { - node: nodeValidator, - }, - { - rerun: true, - }, - ); - } - - return { - isUsingRef: hasRefAttr, - }; -}; diff --git a/modules/code-generator/src/cli/index.ts b/modules/code-generator/src/cli/index.ts deleted file mode 100644 index fcbbc8a349..0000000000 --- a/modules/code-generator/src/cli/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './run'; -export * from './init-solution'; diff --git a/modules/code-generator/src/cli/init-solution.ts b/modules/code-generator/src/cli/init-solution.ts deleted file mode 100644 index 63ee66ea87..0000000000 --- a/modules/code-generator/src/cli/init-solution.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* eslint-disable no-console */ -import * as fs from 'fs-extra'; -import * as path from 'path'; -import chalk from 'chalk'; -import * as changeCase from 'change-case'; -import { getErrorMessage } from '../utils/errors'; -import { getLowcodeSolutionTemplateFiles } from './solutions/example-solution'; - - -export async function initSolution(args: string[], options: { - quiet?: boolean; - verbose?: boolean; -}) { - try { - const cwd = process.cwd(); - let solutionName = args[0] || 'hello'; - let solutionPath = path.resolve(cwd, solutionName); - if (solutionName === '.') { - solutionName = path.basename(cwd); - solutionPath = cwd; - } - - const modifyFileContent = (content: string) => - content - .replace(/hello-world/g, changeCase.paramCase(solutionName)) - .replace(/HelloWorld/g, changeCase.pascalCase(solutionName)) - .replace(/Hello World/g, changeCase.titleCase(solutionName)); - - await ensureDirExists(solutionPath); - - const templateFiles = getLowcodeSolutionTemplateFiles(); - for (const templateFile of templateFiles) { - if (options.verbose) { - console.log('%s', chalk.gray(`creating file ${templateFile.file}`)); - } - - const templateFilePath = path.join(solutionPath, templateFile.file); - await ensureDirExists(path.dirname(templateFilePath)); - await fs.writeFile(templateFilePath, modifyFileContent(templateFile.content), { encoding: 'utf-8' }); - } - - if (!options.quiet) { - console.log('%s', chalk.green(`solution ${solutionName} created successfully`)); - } - - return 0; - } catch (e) { - console.log(chalk.red(getErrorMessage(e) || `Unexpected error: ${e}`)); - if (typeof e === 'object' && (e as { stack: string } | null)?.stack && options.verbose) { - console.log(chalk.gray((e as { stack: string }).stack)); - } - return 1; - } -} - -async function ensureDirExists(dirPath: string) { - try { - await fs.mkdir(dirPath, { recursive: true }); - } catch (e) { - if ((e as { code: string }).code === 'EEXIST') { - return;// ignore existing error - } - throw e; - } -} \ No newline at end of file diff --git a/modules/code-generator/src/cli/run.ts b/modules/code-generator/src/cli/run.ts deleted file mode 100644 index 304f5ea9aa..0000000000 --- a/modules/code-generator/src/cli/run.ts +++ /dev/null @@ -1,146 +0,0 @@ -/* eslint-disable no-console */ -import chalk from 'chalk'; -import * as fs from 'fs-extra'; -import JSON5 from 'json5'; -import { jsonc } from 'jsonc'; -import { spawnSync } from 'child_process'; -import * as path from 'path'; - -import { getErrorMessage } from '../utils/errors'; -import CodeGenerator from '..'; -import type { IProjectBuilder } from '..'; -import type { IPublicTypeProjectSchema } from '@felce/lowcode-types'; - -/** - * 执行出码 CLI 命令 - * @param args 入参数组 - * @param options 选项 - * @returns {Promise} 错误码 - */ -export async function run( - args: string[], - options: { - solution: string; - input?: string; - output?: string; - quiet?: boolean; - verbose?: boolean; - solutionOptions?: string; - }, -): Promise { - try { - const schemaFile = options.input || args[0]; - if (!schemaFile) { - throw new Error( - 'a schema file must be specified by `--input ` or by the first positional argument', - ); - } - - if ((options.input && args.length > 0) || args.length > 1) { - throw new Error( - 'only one schema file can be specified, either by `--input ` or by the first positional argument', - ); - } - - let solutionOptions = {}; - - if (options.solutionOptions) { - try { - solutionOptions = JSON.parse(options.solutionOptions); - } catch (err: any) { - throw new Error(`solution options parse error, error message is "${err.message}"`); - } - } - - // 读取 Schema - const schema = await loadSchemaFile(schemaFile); - - // 创建一个项目构建器 - const createProjectBuilder = await getProjectBuilderFactory(options.solution, { - quiet: options.quiet, - }); - const builder = createProjectBuilder(solutionOptions); - - // 生成代码 - const generatedSourceCodes = await builder.generateProject(schema); - - // 输出到磁盘 - const publisher = CodeGenerator.publishers.disk(); - - await publisher.publish({ - project: generatedSourceCodes, - outputPath: options.output || 'generated', - projectSlug: 'example', - createProjectFolder: false, - }); - return 0; - } catch (e) { - console.log(chalk.red(getErrorMessage(e) || `Unexpected error: ${e}`)); - if (typeof e === 'object' && (e as { stack: string } | null)?.stack && options.verbose) { - console.log(chalk.gray((e as { stack: string }).stack)); - } - return 1; - } -} - -async function getProjectBuilderFactory( - solution: string, - { quiet }: { quiet?: boolean }, -): Promise<(options: { [prop: string]: any }) => IProjectBuilder> { - if (solution in CodeGenerator.solutions) { - return CodeGenerator.solutions[solution as 'icejs' | 'rax']; - } - - const solutionPackageName = isLocalSolution(solution) - ? solution - : `${solution.startsWith('@') ? solution : `@alilc/lowcode-solution-${solution}`}`; - - if (!isLocalSolution(solution)) { - if (!quiet) { - console.log(`"${solution}" is not internal, installing it as ${solutionPackageName}...`); - } - - spawnSync('npm', ['i', solutionPackageName], { - stdio: quiet ? 'ignore' : 'inherit', - }); - } - - // eslint-disable-next-line @typescript-eslint/no-require-imports - const solutionExports = require( - !isLocalSolution(solution) - ? solutionPackageName - : `${path.isAbsolute(solution) ? solution : path.join(process.cwd(), solution)}`, - ); - - const projectBuilderFactory = - solutionExports.createProjectBuilder || - solutionExports.createAppBuilder || - solutionExports.default; - - if (typeof projectBuilderFactory !== 'function') { - throw new Error( - `"${solutionPackageName}" should export project builder factory via named export 'createProjectBuilder' or via default export`, - ); - } - - return projectBuilderFactory; -} - -function isLocalSolution(solution: string) { - return solution.startsWith('.') || solution.startsWith('/') || solution.startsWith('~'); -} - -async function loadSchemaFile(schemaFile: string): Promise { - if (!schemaFile) { - throw new Error('invalid schema file name'); - } - - const schemaFileContent = await fs.readFile(schemaFile, 'utf8'); - - if (/\.json5/.test(schemaFile)) { - return JSON5.parse(schemaFileContent); - } - - // 默认用 JSONC 的格式解析(兼容 JSON) - return jsonc.parse(schemaFileContent); -} diff --git a/modules/code-generator/src/cli/solutions/example-solution.ts b/modules/code-generator/src/cli/solutions/example-solution.ts deleted file mode 100644 index 6c779292fe..0000000000 --- a/modules/code-generator/src/cli/solutions/example-solution.ts +++ /dev/null @@ -1,795 +0,0 @@ -export function getLowcodeSolutionTemplateFiles() { - return [ - { - file: '.editorconfig', - content: `root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -quote_type = single - -[*.md] -trim_trailing_whitespace = false -`, - }, - { - file: '.eslintignore', - content: `# 忽略目录 -node_modules/ -build/ -dist/ -test-cases/ -test/ -tests/ -output/ -es/ -lib/ -coverage/ - -# 忽略文件 -**/*.min.js -**/*-min.js -**/*.bundle.js -`, - }, - { - file: '.eslintrc.js', - content: `module.exports = { - extends: 'eslint-config-ali/typescript/react', - rules: { - 'max-len': ['error', { code: 200 }], - 'comma-dangle': 0, - }, -}; -`, - }, - { - file: '.gitignore', - content: `# project custom -build -es -lib -dist -output -package-lock.json -deploy-space/packages -deploy-space/.env -generated - -# IDE -.vscode -.idea - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release -lib - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# next.js build output -.next - -# nuxt.js build output -.nuxt - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# mac config files -.DS_Store - -# codealike -codealike.json -.node -`, - }, - { - file: '.prettierignore', - content: '/test-cases/', - }, - { - file: '.prettierrc', - content: `{ - "tabWidth": 2, - "singleQuote": true, - "trailingComma": "es5" -} -`, - }, - { - file: 'CHANGELOG.md', - content: '', - }, - { - file: 'CONTRIBUTING.md', - content: `# 欢迎共建 - -# 注意 - -- 注意解决 eslint 问题 -- 注意代码格式化 -- 建议安装 prettier 插件 -- 发布前注意要跑通 demo 和所有的单测 - -## 本地调试运行 Demo - -\`\`\`sh -> npm run demo -\`\`\` - -## 本地跑单测 - -\`\`\`sh -> npm test -\`\`\` -`, - }, - { - file: 'README.md', - content: `# 低代码出码自定义方案之 Hello World - -## 直接执行 - -\`\`\`sh -> npx ali-lowcode-solution-hello-world demo-schema.json -\`\`\` - -## 本地调试运行 Demo - -\`\`\`sh -> npm run demo -\`\`\` -`, - }, - { - file: 'demo-schema.json', - content: `{ - "version": "1.0.0", - "componentsMap": [ - { - "componentName": "Button", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Button" - }, - { - "componentName": "Button.Group", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Button", - "subName": "Group" - }, - { - "componentName": "Input", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Input" - }, - { - "componentName": "Form", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Form" - }, - { - "componentName": "Form.Item", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Form", - "subName": "Item" - }, - { - "componentName": "NumberPicker", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "NumberPicker" - }, - { - "componentName": "Select", - "package": "@alifd/next", - "version": "1.19.18", - "destructuring": true, - "exportName": "Select" - } - ], - "componentsTree": [ - { - "componentName": "Page", - "id": "node$1", - "meta": { - "title": "测试", - "router": "/" - }, - "props": { - "ref": "outterView", - "autoLoading": true - }, - "fileName": "test", - "state": { - "text": "outter" - }, - "lifeCycles": { - "componentDidMount": { - "type": "JSFunction", - "value": "function componentDidMount() {\\n console.log('componentDidMount');\\n}" - } - }, - "methodsModule": { - "type": "JSModule", - "source": "export function helloWorld() {\\n console.log('Hello world!');\\n}\\n" - }, - "dataSource": { - "list": [ - { - "id": "urlParams", - "type": "urlParams" - }, - - { - "id": "user", - "type": "fetch", - "options": { - "method": "GET", - "uri": "https://shs.xxx.com/mock/1458/demo/user", - "isSync": true - }, - "dataHandler": { - "type": "JSExpression", - "value": "function (response) {\\nif (!response.data.success){\\n throw new Error(response.data.message);\\n }\\n return response.data.data;\\n}" - } - }, - - { - "id": "orders", - "type": "fetch", - "options": { - "method": "GET", - "uri": "https://shs.xxx.com/mock/1458/demo/orders", - "isSync": true - }, - "dataHandler": { - "type": "JSExpression", - "value": "function (response) {\\nif (!response.data.success){\\n throw new Error(response.data.message);\\n }\\n return response.data.data.result;\\n}" - } - } - ], - "dataHandler": { - "type": "JSExpression", - "value": "function (dataMap) {\\n console.info(\\"All datasources loaded:\\", dataMap);\\n}" - } - }, - "children": [ - { - "componentName": "Form", - "id": "node$2", - "props": { - "labelCol": { - "type": "JSExpression", - "value": "this.state.colNum" - }, - "style": {}, - "ref": "testForm" - }, - "children": [ - { - "componentName": "Form.Item", - "id": "node$3", - "props": { - "label": "姓名:", - "name": "name", - "initValue": "李雷" - }, - "children": [ - { - "componentName": "Input", - "id": "node$4", - "props": { - "placeholder": "请输入", - "size": "medium", - "style": { - "width": 320 - } - } - } - ] - }, - { - "componentName": "Form.Item", - "id": "node$5", - "props": { - "label": "年龄:", - "name": "age", - "initValue": "22" - }, - "children": [ - { - "componentName": "NumberPicker", - "id": "node$6", - "props": { - "size": "medium", - "type": "normal" - } - } - ] - }, - { - "componentName": "Form.Item", - "id": "node$7", - "props": { - "label": "职业:", - "name": "profession" - }, - "children": [ - { - "componentName": "Select", - "id": "node$8", - "props": { - "dataSource": [ - { - "label": "教师", - "value": "t" - }, - { - "label": "医生", - "value": "d" - }, - { - "label": "歌手", - "value": "s" - } - ] - } - } - ] - }, - { - "componentName": "Div", - "id": "node$9", - "props": { - "style": { - "textAlign": "center" - } - }, - "children": [ - { - "componentName": "Button.Group", - "id": "node$a", - "props": {}, - "children": [ - { - "componentName": "Button", - "id": "node$b", - "condition": { - "type": "JSExpression", - "value": "this.index >= 1" - }, - "loop": ["a", "b", "c"], - "props": { - "type": "primary", - "style": { - "margin": "0 5px 0 5px" - } - }, - "children": [ - { - "type": "JSExpression", - "value": "this.item" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ], - "constants": { - "ENV": "prod", - "DOMAIN": "xxx.xxx.com" - }, - "css": "body {font-size: 12px;} .table { width: 100px;}", - "config": { - "sdkVersion": "1.0.3", - "historyMode": "hash", - "targetRootID": "J_Container", - "layout": { - "componentName": "BasicLayout", - "props": { - "logo": "...", - "name": "测试网站" - } - }, - "theme": { - "package": "@alife/theme-fusion", - "version": "^0.1.0", - "primary": "#ff9966" - } - }, - "meta": { - "name": "demo应用", - "git_group": "appGroup", - "project_name": "app_demo", - "description": "这是一个测试应用", - "spma": "spa23d", - "creator": "月飞" - } -} -`, - }, - { - file: 'jest.config.js', - content: `module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['/node_modules/', '/test-cases/', '/static-files/', '/lib/'], -}; -`, - }, - { - file: 'package.json', - content: `{ - "name": "ali-lowcode-solution-hello-world", - "version": "1.0.0", - "description": "AlLowCode Code Generate Solution - Hello World", - "files": [ - "src", - "lib", - "tests", - "jest.config.js", - ".editorconfig", - ".eslintignore", - ".eslintrc.js", - ".gitignore", - ".prettierignore", - ".prettierrc", - "CHANGELOG.md", - "CONTRIBUTING.md", - "demo-schema.json", - "package.json", - "README.md", - "tsconfig.json" - ], - "main": "lib/index.js", - "scripts": { - "start": "jest --watch", - "build": "npm run clean && concurrently 'npm run build:ts' 'npm run lint'", - "build:ts": "tsc", - "check:type": "tsc -p . --noEmit", - "clean": "rm -rf build dist lib generated", - "dev": "build-scripts start", - "lint": "eslint --ext .tsx,.ts,.js,.jsx src", - "lintfix": "eslint --fix --color --ext .tsx,.ts,.js,.jsx src", - "lint-staged": "lint-staged", - "prepublishOnly": "npm run build", - "postpublish": "git push origin master --tags", - "test": "jest", - "test:watch": "jest --watch", - "test:update-snapshots": "cross-env UPDATE_EXPECTED=true npx jest", - "demo": "npm run build && npx @felce/lowcode-code-generator --solution . --output generated demo-schema.json" - }, - "repository": { - "type": "git", - "url": "git@github.com:your-name/ali-lowcode-solution-hello-world.git" - }, - "author": "", - "license": "ISC", - "publishConfig": { - "registry": "https://registry.npm.xxx.com" - }, - "dependencies": { - "@felce/lowcode-code-generator": "^1.0.0", - "@felce/lowcode-types": "^1.0.0", - "tslib": "^2.3.0" - }, - "devDependencies": { - "@types/async": "^3.2.3", - "@types/jest": "^26.0.17", - "@typescript-eslint/eslint-plugin": "^4.28.4", - "@typescript-eslint/parser": "^4.28.4", - "async": "^3.2.0", - "babel-runtime": "^6.26.0", - "concurrently": "^5.2.0", - "cross-env": "^7.0.0", - "debug": "^4.1.1", - "eslint": "^7.31.0", - "eslint-config-ali": "^12.1.0", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0", - "glob": "^7.2.0", - "husky": "4.2.5", - "jest": "^26.6.3", - "json5": "^2.2.0", - "lint-staged": "10.1.x", - "lodash": "^4.17.21", - "md5": "^2.2.1", - "prettier": "^2.3.2", - "ts-jest": "^26.4.4", - "ts-node": "^9.0.0", - "typescript": "4.x" - } -} -`, - }, - { - file: 'tsconfig.json', - content: `{ - "compilerOptions": { - "esModuleInterop": true, - "declaration": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "importHelpers": true, - "incremental": false, - "jsx": "react", - "moduleResolution": "node", - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "stripInternal": true, - "outDir": "./lib", - "declarationDir": "./lib", - "rootDirs": ["./src"], - "target": "es6", - "module": "commonjs", - "lib": ["esnext"], - "types": ["jest", "node"], - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": ["src/**/*", "typings/**/*"] -} -`, - }, - { - file: 'src/index.ts', - content: `import CodeGen from '@felce/lowcode-code-generator'; - -import examplePlugin from './plugins/example'; - -export default function createHelloWorldProjectBuilder() { - return CodeGen.createProjectBuilder({ - template: CodeGen.solutionParts.icejs.template, - plugins: { - components: [ - CodeGen.plugins.icejs.reactCommonDeps(), - CodeGen.plugins.common.esModule({ fileType: 'jsx' }), - CodeGen.plugins.common.styleImport(), - CodeGen.plugins.icejs.containerClass(), - CodeGen.plugins.icejs.containerInjectContext(), - CodeGen.plugins.icejs.containerInjectUtils(), - CodeGen.plugins.icejs.containerInjectDataSourceEngine(), - CodeGen.plugins.icejs.containerInjectI18n(), - CodeGen.plugins.icejs.containerInjectConstants(), - CodeGen.plugins.icejs.containerInitState(), - CodeGen.plugins.icejs.containerLifeCycle(), - CodeGen.plugins.icejs.containerMethod(), - examplePlugin(), - CodeGen.plugins.icejs.jsx({ - nodeTypeMapping: { - Div: 'div', - Component: 'div', - Page: 'div', - Block: 'div', - }, - }), - CodeGen.plugins.style.css(), - ], - pages: [ - CodeGen.plugins.icejs.reactCommonDeps(), - CodeGen.plugins.common.esModule({ fileType: 'jsx' }), - CodeGen.plugins.common.styleImport(), - CodeGen.plugins.icejs.containerClass(), - CodeGen.plugins.icejs.containerInjectContext(), - CodeGen.plugins.icejs.containerInjectUtils(), - CodeGen.plugins.icejs.containerInjectDataSourceEngine(), - CodeGen.plugins.icejs.containerInjectI18n(), - CodeGen.plugins.icejs.containerInjectConstants(), - CodeGen.plugins.icejs.containerInitState(), - CodeGen.plugins.icejs.containerLifeCycle(), - CodeGen.plugins.icejs.containerMethod(), - examplePlugin(), - CodeGen.plugins.icejs.jsx({ - nodeTypeMapping: { - Div: 'div', - Component: 'div', - Page: 'div', - Block: 'div', - }, - }), - CodeGen.plugins.style.css(), - ], - router: [ - CodeGen.plugins.common.esModule(), - CodeGen.solutionParts.icejs.plugins.router(), - ], - entry: [CodeGen.solutionParts.icejs.plugins.entry()], - constants: [CodeGen.plugins.project.constants()], - utils: [ - CodeGen.plugins.common.esModule(), - CodeGen.plugins.project.utils('react'), - ], - i18n: [CodeGen.plugins.project.i18n()], - globalStyle: [CodeGen.solutionParts.icejs.plugins.globalStyle()], - htmlEntry: [CodeGen.solutionParts.icejs.plugins.entryHtml()], - packageJSON: [CodeGen.solutionParts.icejs.plugins.packageJSON()], - }, - postProcessors: [CodeGen.postprocessor.prettier()], - }); -} -`, - }, - { - file: 'src/plugins/example.ts', - content: `import { - ICodeStruct, - BuilderComponentPlugin, - BuilderComponentPluginFactory, - FileType, - ChunkType, - IContainerInfo, - COMMON_CHUNK_NAME, - CLASS_DEFINE_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '@felce/lowcode-code-generator'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = ( - config? -) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo & { - methodsModule?: { - type?: 'JSModule'; - source?: string; - }; - }; - - if (ir.methodsModule?.type !== 'JSModule' || !ir.methodsModule?.source) { - return next; - } - - // 创建 methods.jsx - next.chunks.push({ - type: ChunkType.STRING, - subModule: 'methods', - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.CustomContent, - content: ir.methodsModule.source, - linkAfter: [], - }); - - // 引入对应的模块 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: "import __$$methodsModule from './methods';", - linkAfter: [...DEFAULT_LINK_AFTER[COMMON_CHUNK_NAME.InternalDepsImport]], - }); - - // 将导出的东东都放到 class 上实例方法部分 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: 'Object.assign(this, __$$methodsModule);', - linkAfter: [ - ...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent], - ], - }); - - return next; - }; - - return plugin; -}; - -export default pluginFactory; -`, - }, - { - file: 'tests/basic.test.ts', - content: `test('basic functions should be ok', () => { - // 这里放一些单元测试 - expect(0).toBe(0); -}); -`, - }, - ]; -} diff --git a/modules/code-generator/src/config/env.ts b/modules/code-generator/src/config/env.ts deleted file mode 100644 index 30d564c06e..0000000000 --- a/modules/code-generator/src/config/env.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as path from 'path'; - -export const CODE_GENERATOR_ROOT = path.join(__dirname, '../..'); diff --git a/modules/code-generator/src/const/file.ts b/modules/code-generator/src/const/file.ts deleted file mode 100644 index d29ea43a33..0000000000 --- a/modules/code-generator/src/const/file.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { FileType } from '../types/core'; - -export const FILE_TYPE_FAMILY = [[FileType.TSX, FileType.TS, FileType.JSX, FileType.JS]]; diff --git a/modules/code-generator/src/const/generator.ts b/modules/code-generator/src/const/generator.ts deleted file mode 100644 index 1197458381..0000000000 --- a/modules/code-generator/src/const/generator.ts +++ /dev/null @@ -1,129 +0,0 @@ -export const COMMON_CHUNK_NAME = { - ExternalDepsImport: 'CommonExternalDependencyImport', - InternalDepsImport: 'CommonInternalDependencyImport', - ImportAliasDefine: 'CommonImportAliasDefine', - FileVarDefine: 'CommonFileScopeVarDefine', - FileUtilDefine: 'CommonFileScopeMethodDefine', - FileMainContent: 'CommonFileMainContent', - FileExport: 'CommonFileExport', - StyleDepsImport: 'CommonStyleDepsImport', - StyleCssContent: 'CommonStyleCssContent', - HtmlContent: 'CommonHtmlContent', - CustomContent: 'CommonCustomContent', -}; - -export const CLASS_DEFINE_CHUNK_NAME = { - Start: 'CommonClassDefineStart', - ConstructorStart: 'CommonClassDefineConstructorStart', - ConstructorContent: 'CommonClassDefineConstructorContent', - ConstructorEnd: 'CommonClassDefineConstructorEnd', - StaticVar: 'CommonClassDefineStaticVar', - StaticMethod: 'CommonClassDefineStaticMethod', - InsVar: 'CommonClassDefineInsVar', - InsVarMethod: 'CommonClassDefineInsVarMethod', - InsMethod: 'CommonClassDefineInsMethod', - InsPrivateMethod: 'CommonClassDefineInsPrivateMethod', - End: 'CommonClassDefineEnd', -}; - -export const DEFAULT_LINK_AFTER = { - [COMMON_CHUNK_NAME.ExternalDepsImport]: [], - [COMMON_CHUNK_NAME.InternalDepsImport]: [COMMON_CHUNK_NAME.ExternalDepsImport], - [COMMON_CHUNK_NAME.ImportAliasDefine]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, COMMON_CHUNK_NAME.InternalDepsImport, - ], - [COMMON_CHUNK_NAME.FileVarDefine]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - ], - [COMMON_CHUNK_NAME.FileUtilDefine]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - ], - [CLASS_DEFINE_CHUNK_NAME.Start]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - ], - [CLASS_DEFINE_CHUNK_NAME.ConstructorStart]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsVarMethod, - ], - [CLASS_DEFINE_CHUNK_NAME.ConstructorContent]: [CLASS_DEFINE_CHUNK_NAME.ConstructorStart], - [CLASS_DEFINE_CHUNK_NAME.ConstructorEnd]: [ - CLASS_DEFINE_CHUNK_NAME.ConstructorStart, - CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - ], - [CLASS_DEFINE_CHUNK_NAME.StaticVar]: [CLASS_DEFINE_CHUNK_NAME.Start], - [CLASS_DEFINE_CHUNK_NAME.StaticMethod]: [ - CLASS_DEFINE_CHUNK_NAME.Start, CLASS_DEFINE_CHUNK_NAME.StaticVar, - ], - [CLASS_DEFINE_CHUNK_NAME.InsVar]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - ], - [CLASS_DEFINE_CHUNK_NAME.InsVarMethod]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - CLASS_DEFINE_CHUNK_NAME.InsVar, - ], - [CLASS_DEFINE_CHUNK_NAME.InsMethod]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsVarMethod, - CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - ], - [CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsVarMethod, - CLASS_DEFINE_CHUNK_NAME.InsMethod, - CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - ], - [CLASS_DEFINE_CHUNK_NAME.End]: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.StaticVar, - CLASS_DEFINE_CHUNK_NAME.StaticMethod, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsVarMethod, - CLASS_DEFINE_CHUNK_NAME.InsMethod, - CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - ], - [COMMON_CHUNK_NAME.FileMainContent]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - CLASS_DEFINE_CHUNK_NAME.End, - ], - [COMMON_CHUNK_NAME.FileExport]: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - CLASS_DEFINE_CHUNK_NAME.End, - COMMON_CHUNK_NAME.FileMainContent, - ], - [COMMON_CHUNK_NAME.StyleDepsImport]: [], - [COMMON_CHUNK_NAME.StyleCssContent]: [COMMON_CHUNK_NAME.StyleDepsImport], - [COMMON_CHUNK_NAME.HtmlContent]: [], -}; - -export const COMMON_SUB_MODULE_NAME = 'index'; diff --git a/modules/code-generator/src/const/index.ts b/modules/code-generator/src/const/index.ts deleted file mode 100644 index 24449ca429..0000000000 --- a/modules/code-generator/src/const/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -export const NATIVE_ELE_PKG = 'native'; - -export const CONTAINER_TYPE = { - COMPONENT: 'Component', - BLOCK: 'Block', - PAGE: 'Page', -}; - -export const SUPPORT_SCHEMA_VERSION_LIST = ['0.0.1', '1.0.0']; - -// built-in slot names which have been handled in ProjectBuilder -export const BUILTIN_SLOT_NAMES = [ - 'pages', - 'components', - 'router', - 'entry', - 'appConfig', - 'buildConfig', - 'constants', - 'utils', - 'i18n', - 'globalStyle', - 'htmlEntry', - 'packageJSON', - 'demo', -]; - -export const isBuiltinSlotName = function (name: string) { - return BUILTIN_SLOT_NAMES.includes(name); -}; - -export * from './file'; -export * from './generator'; diff --git a/modules/code-generator/src/core/jsx/handlers/transformJsExpression.ts b/modules/code-generator/src/core/jsx/handlers/transformJsExpression.ts deleted file mode 100644 index 3bdb8fb5c1..0000000000 --- a/modules/code-generator/src/core/jsx/handlers/transformJsExpression.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IScope } from '../../../types'; -import { parseExpression } from '../../../utils/expressionParser'; -import { isLiteralAtomicExpr } from '../util/isLiteralAtomicExpr'; -import { isSimpleStraightLiteral } from '../util/isSimpleStraightLiteral'; -import { transformThis2Context } from './transformThis2Context'; - -export function transformJsExpr( - expr: string, - scope: IScope, - { dontWrapEval = false, dontTransformThis2ContextAtRootScope = false } = {}, -) { - if (!expr) { - return 'undefined'; - } - - if (isLiteralAtomicExpr(expr)) { - return expr; - } - - const exprAst = parseExpression(expr); - - // 对于下面这些比较安全的字面值,可以直接返回对应的表达式,而非包一层 - if (isSimpleStraightLiteral(exprAst)) { - return expr; - } - - if (dontWrapEval) { - return transformThis2Context(exprAst, scope, { - ignoreRootScope: dontTransformThis2ContextAtRootScope, - }); - } - - switch (exprAst.type) { - // 对于直接写个函数的,则不用再包下,因为这样不会抛出异常的 - case 'ArrowFunctionExpression': - case 'FunctionExpression': - return transformThis2Context(exprAst, scope, { - ignoreRootScope: dontTransformThis2ContextAtRootScope, - }); - - default: - break; - } - - // 其他的都需要包一层 - return `__$$eval(() => (${transformThis2Context(exprAst, scope, { - ignoreRootScope: dontTransformThis2ContextAtRootScope, - })}))`; -} diff --git a/modules/code-generator/src/core/jsx/handlers/transformThis2Context.ts b/modules/code-generator/src/core/jsx/handlers/transformThis2Context.ts deleted file mode 100644 index fbb1c17cbc..0000000000 --- a/modules/code-generator/src/core/jsx/handlers/transformThis2Context.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Expression } from '@babel/types'; -import generate from '@babel/generator'; -import { IScope } from '../../../types'; -import { parseExpressionConvertThis2Context } from '../../../utils/expressionParser'; - -/** - * 将所有的 this.xxx 替换为 __$$context.xxx - * @param expr - */ -export function transformThis2Context( - expr: string | Expression, - scope: IScope, - { ignoreRootScope = false } = {}, -): string { - if (ignoreRootScope && scope.parent == null) { - return typeof expr === 'string' ? expr : generate(expr).code; - } - - // 下面这种字符串替换的方式虽然简单直接,但是对于复杂场景会误匹配,故后期改成了解析 AST 然后修改 AST 最后再重新生成代码的方式 - // return expr - // .replace(/\bthis\.item\./g, () => 'item.') - // .replace(/\bthis\.index\./g, () => 'index.') - // .replace(/\bthis\./g, () => '__$$context.'); - return parseExpressionConvertThis2Context( - expr, - '__$$context', - scope.bindings?.getAllBindings() || [], - ); -} diff --git a/modules/code-generator/src/core/jsx/util/isLiteralAtomicExpr.ts b/modules/code-generator/src/core/jsx/util/isLiteralAtomicExpr.ts deleted file mode 100644 index fe0c95a9d1..0000000000 --- a/modules/code-generator/src/core/jsx/util/isLiteralAtomicExpr.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * 判断是否是原子类型的表达式 - */ -export function isLiteralAtomicExpr(expr: string): boolean { - return ( - expr === 'null' || - expr === 'undefined' || - expr === 'true' || - expr === 'false' || - /^-?\d+(\.\d+)?$/.test(expr) - ); -} diff --git a/modules/code-generator/src/core/jsx/util/isSimpleStraightLiteral.ts b/modules/code-generator/src/core/jsx/util/isSimpleStraightLiteral.ts deleted file mode 100644 index 0b071527bd..0000000000 --- a/modules/code-generator/src/core/jsx/util/isSimpleStraightLiteral.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Expression } from '@babel/types'; - -/** 判断是非是一些简单直接的字面值 */ -export function isSimpleStraightLiteral(expr: Expression): boolean { - switch (expr.type) { - case 'BigIntLiteral': - case 'BooleanLiteral': - case 'DecimalLiteral': - case 'NullLiteral': - case 'NumericLiteral': - case 'RegExpLiteral': - case 'StringLiteral': - return true; - default: - return false; - } -} diff --git a/modules/code-generator/src/generator/ChunkBuilder.ts b/modules/code-generator/src/generator/ChunkBuilder.ts deleted file mode 100644 index 6799d5940d..0000000000 --- a/modules/code-generator/src/generator/ChunkBuilder.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { BuilderComponentPlugin, IChunkBuilder, ICodeChunk, ICodeStruct, FileType } from '../types'; - -import { COMMON_SUB_MODULE_NAME } from '../const/generator'; -import { FILE_TYPE_FAMILY } from '../const/file'; - -interface ChunkGroupInfo { - chunk: ICodeChunk; - familyIdx?: number; -} - -function whichFamily(type: FileType): [number, FileType[]] | undefined { - const idx = FILE_TYPE_FAMILY.findIndex((family) => family.indexOf(type) >= 0); - if (idx < 0) { - return undefined; - } - return [idx, FILE_TYPE_FAMILY[idx]]; -} - -export const groupChunks = (chunks: ICodeChunk[]): ICodeChunk[][] => { - const tmp: Record> = {}; - const col = chunks.reduce((chunksSet: Record, chunk) => { - const fileKey = chunk.subModule || COMMON_SUB_MODULE_NAME; - if (!chunksSet[fileKey]) { - // eslint-disable-next-line no-param-reassign - chunksSet[fileKey] = []; - } - const res = whichFamily(chunk.fileType as FileType); - const info: ChunkGroupInfo = { - chunk, - }; - if (res) { - const [familyIdx, family] = res; - const rank = family.indexOf(chunk.fileType as FileType); - if (tmp[fileKey]) { - if (tmp[fileKey][familyIdx] !== undefined) { - if (tmp[fileKey][familyIdx] > rank) { - tmp[fileKey][familyIdx] = rank; - } - } else { - tmp[fileKey][familyIdx] = rank; - } - } else { - tmp[fileKey] = {}; - tmp[fileKey][familyIdx] = rank; - } - info.familyIdx = familyIdx; - } - - chunksSet[fileKey].push(info); - return chunksSet; - }, {}); - - const result: ICodeChunk[][] = []; - Object.keys(col).forEach((key) => { - const byType: Record = {}; - col[key].forEach((info) => { - let t: string = info.chunk.fileType; - if (info.familyIdx !== undefined) { - t = FILE_TYPE_FAMILY[info.familyIdx][tmp[key][info.familyIdx]]; - // eslint-disable-next-line no-param-reassign - info.chunk.fileType = t; - } - if (!byType[t]) { - byType[t] = []; - } - byType[t].push(info.chunk); - }); - result.push(...Object.keys(byType).map((t) => byType[t])); - }); - - return result; -}; - -/** - * 代码片段构建器 - * - * @export - * @class ChunkBuilder - * @template T - */ -export class ChunkBuilder implements IChunkBuilder { - private plugins: BuilderComponentPlugin[]; - - constructor(plugins: BuilderComponentPlugin[] = []) { - this.plugins = plugins; - } - - async run( - ir: unknown, - initialStructure: ICodeStruct = { - ir, - chunks: [], - depNames: [], - contextData: {}, - }, - ) { - const structure = initialStructure; - - const finalStructure: ICodeStruct = await this.plugins.reduce( - async (previousPluginOperation: Promise, plugin) => { - const modifiedStructure = await previousPluginOperation; - return plugin(modifiedStructure); - }, - Promise.resolve(structure), - ); - - const chunks = groupChunks(finalStructure.chunks); - - return { - chunks, - }; - } - - getPlugins() { - return this.plugins; - } - - addPlugin(plugin: BuilderComponentPlugin) { - this.plugins.push(plugin); - } -} - -export default ChunkBuilder; diff --git a/modules/code-generator/src/generator/CodeBuilder.ts b/modules/code-generator/src/generator/CodeBuilder.ts deleted file mode 100644 index e633babbf5..0000000000 --- a/modules/code-generator/src/generator/CodeBuilder.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { - ChunkContent, - ChunkType, - CodeGeneratorError, - CodeGeneratorFunction, - ICodeBuilder, - ICodeChunk, -} from '../types'; - -export class CodeBuilder implements ICodeBuilder { - private chunkDefinitions: ICodeChunk[] = []; - - private generators: { [key: string]: CodeGeneratorFunction } = { - [ChunkType.STRING]: (str: string) => str, // no-op for string chunks - [ChunkType.JSON]: (json: Record) => JSON.stringify(json), // stringify json to string - }; - - constructor(chunkDefinitions: ICodeChunk[] = []) { - this.chunkDefinitions = chunkDefinitions; - } - - /** - * Links all chunks together based on their requirements. Returns an array - * of ordered chunk names which need to be compiled and glued together. - */ - link(chunkDefinitions: ICodeChunk[] = []): string { - const chunks = chunkDefinitions || this.chunkDefinitions; - if (chunks.length <= 0) { - return ''; - } - - const unprocessedChunks = chunks.map((chunk) => { - return { - name: chunk.name, - type: chunk.type, - content: chunk.content, - linkAfter: this.cleanupInvalidChunks(chunk.linkAfter, chunks), - }; - }); - - const resultingString: string[] = []; - - while (unprocessedChunks.length > 0) { - let indexToRemove = 0; - for (let index = 0; index < unprocessedChunks.length; index++) { - if (unprocessedChunks[index].linkAfter.length <= 0) { - indexToRemove = index; - break; - } - } - - if (unprocessedChunks[indexToRemove].linkAfter.length > 0) { - throw new CodeGeneratorError( - 'Operation aborted. Reason: cyclic dependency between chunks.', - ); - } - - const { type, content, name } = unprocessedChunks[indexToRemove]; - const compiledContent = this.generateByType(type, content); - if (compiledContent) { - resultingString.push(`${compiledContent}\n`); - } - - unprocessedChunks.splice(indexToRemove, 1); - if (!unprocessedChunks.some((ch) => ch.name === name)) { - unprocessedChunks.forEach( - // remove the processed chunk from all the linkAfter arrays from the remaining chunks - (ch) => { - // eslint-disable-next-line no-param-reassign - ch.linkAfter = ch.linkAfter.filter((after) => after !== name); - }, - ); - } - } - - return resultingString.join('\n'); - } - - generateByType(type: string, content: unknown): string { - if (!content) { - return ''; - } - if (Array.isArray(content)) { - return content.map((contentItem) => this.generateByType(type, contentItem)).join('\n'); - } - - if (!this.generators[type]) { - throw new Error( - `Attempted to generate unknown type ${type}. Please register a generator for this type in builder/index.ts`, - ); - } - - return this.generators[type](content); - } - - // remove invalid chunks (which did not end up being created) from the linkAfter fields - // one use-case is when you want to remove the import plugin - private cleanupInvalidChunks(linkAfter: string[], chunks: ICodeChunk[]) { - return linkAfter.filter((chunkName) => chunks.some((chunk) => chunk.name === chunkName)); - } -} - -export default CodeBuilder; diff --git a/modules/code-generator/src/generator/ModuleBuilder.ts b/modules/code-generator/src/generator/ModuleBuilder.ts deleted file mode 100644 index d0fc943758..0000000000 --- a/modules/code-generator/src/generator/ModuleBuilder.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { IPublicTypeProjectSchema, ResultFile, ResultDir } from '@felce/lowcode-types'; - -import { - BuilderComponentPlugin, - CodeGeneratorError, - ICodeChunk, - ICompiledModule, - IContextData, - IModuleBuilder, - IParseResult, - ISchemaParser, - PostProcessor, -} from '../types'; - -import { COMMON_SUB_MODULE_NAME } from '../const/generator'; - -import { SchemaParser } from '../parser/SchemaParser'; -import { ChunkBuilder } from './ChunkBuilder'; -import { CodeBuilder } from './CodeBuilder'; -import { createResultFile, createResultDir, addFile } from '../utils/resultHelper'; - -export function createModuleBuilder( - options: { - plugins: BuilderComponentPlugin[]; - postProcessors: PostProcessor[]; - mainFileName?: string; - contextData?: IContextData; - } = { - plugins: [], - postProcessors: [], - }, -): IModuleBuilder { - const chunkGenerator = new ChunkBuilder(options.plugins); - const linker = new CodeBuilder(); - - const generateModule = async (input: unknown): Promise => { - const moduleMainName = options.mainFileName || COMMON_SUB_MODULE_NAME; - if (chunkGenerator.getPlugins().length <= 0) { - throw new CodeGeneratorError( - 'No plugins found. Component generation cannot work without any plugins!', - ); - } - - let files: ResultFile[] = []; - - const { chunks } = await chunkGenerator.run(input, { - ir: input, - chunks: [], - depNames: [], - contextData: options.contextData || {}, - }); - - chunks.forEach((fileChunkList) => { - const content = linker.link(fileChunkList); - const file = createResultFile( - fileChunkList[0].subModule || moduleMainName, - fileChunkList[0].fileType, - content, - ); - files.push(file); - }); - - if (options.postProcessors.length > 0) { - files = files.map((file) => { - let { content, ext: type, name } = file; - options.postProcessors.forEach((processer) => { - content = processer(content, type, name); - }); - - return createResultFile(file.name, type, content); - }); - } - - return { - files, - }; - }; - - const generateModuleCode = async ( - schema: IPublicTypeProjectSchema | string, - ): Promise => { - // Init - const schemaParser: ISchemaParser = new SchemaParser(); - const parseResult: IParseResult = schemaParser.parse(schema); - - const containerInfo = parseResult.containers[0]; - const { files } = await generateModule(containerInfo); - - const dir = createResultDir(containerInfo.moduleName); - files.forEach((file) => addFile(dir, file)); - - return dir; - }; - - const linkCodeChunks = (chunks: Record, fileName: string) => { - const files: ResultFile[] = []; - - Object.keys(chunks).forEach((fileKey) => { - const fileChunkList = chunks[fileKey]; - const content = linker.link(fileChunkList); - const file = createResultFile( - fileChunkList[0].subModule || fileName, - fileChunkList[0].fileType, - content, - ); - files.push(file); - }); - - return files; - }; - - return { - generateModule, - generateModuleCode, - linkCodeChunks, - addPlugin: chunkGenerator.addPlugin.bind(chunkGenerator), - }; -} diff --git a/modules/code-generator/src/generator/ProjectBuilder.ts b/modules/code-generator/src/generator/ProjectBuilder.ts deleted file mode 100644 index 4e6d57e151..0000000000 --- a/modules/code-generator/src/generator/ProjectBuilder.ts +++ /dev/null @@ -1,372 +0,0 @@ -import { ResultDir, ResultFile, IPublicTypeProjectSchema } from '@felce/lowcode-types'; - -import { - IModuleBuilder, - IParseResult, - IProjectBuilder, - IProjectPlugins, - IProjectTemplate, - ISchemaParser, - PostProcessor, -} from '../types'; - -import { SchemaParser } from '../parser/SchemaParser'; -import { createResultDir, addDirectory, addFile } from '../utils/resultHelper'; - -import { createModuleBuilder } from './ModuleBuilder'; -import { ProjectPreProcessor, ProjectPostProcessor, IContextData } from '../types/core'; -import { CodeGeneratorError } from '../types/error'; -import { isBuiltinSlotName } from '../const'; - -interface IModuleInfo { - moduleName?: string; - path: string[]; - files: ResultFile[]; -} - -export interface ProjectBuilderInitOptions { - /** 项目模板 */ - template: IProjectTemplate; - - /** 项目插件 */ - plugins: IProjectPlugins; - - /** 模块后置处理器 */ - postProcessors: PostProcessor[]; - - /** Schema 解析器 */ - schemaParser?: ISchemaParser; - - /** 项目级别的前置处理器 */ - projectPreProcessors?: ProjectPreProcessor[]; - - /** 项目级别的后置处理器 */ - projectPostProcessors?: ProjectPostProcessor[]; - - /** 是否处于严格模式 */ - inStrictMode?: boolean; - - /** 一些额外的上下文数据 */ - extraContextData?: Record; - - /** - * Hook which is used to customize original options, we can reorder/add/remove plugins/processors - * of the existing solution. - */ - customizeBuilderOptions?(originalOptions: ProjectBuilderInitOptions): ProjectBuilderInitOptions; -} - -export class ProjectBuilder implements IProjectBuilder { - /** 项目模板 */ - private template: IProjectTemplate; - - /** 项目插件 */ - private plugins: IProjectPlugins; - - /** 模块后置处理器 */ - private postProcessors: PostProcessor[]; - - /** Schema 解析器 */ - private schemaParser: ISchemaParser; - - /** 项目级别的前置处理器 */ - private projectPreProcessors: ProjectPreProcessor[]; - - /** 项目级别的后置处理器 */ - private projectPostProcessors: ProjectPostProcessor[]; - - /** 是否处于严格模式 */ - readonly inStrictMode: boolean; - - /** 一些额外的上下文数据 */ - readonly extraContextData: IContextData; - - constructor(builderOptions: ProjectBuilderInitOptions) { - let customBuilderOptions = builderOptions; - if (typeof builderOptions.customizeBuilderOptions === 'function') { - customBuilderOptions = builderOptions.customizeBuilderOptions(builderOptions); - } - const { - template, - plugins, - postProcessors, - schemaParser = new SchemaParser(), - projectPreProcessors = [], - projectPostProcessors = [], - inStrictMode = false, - extraContextData = {}, - } = customBuilderOptions; - this.template = template; - this.plugins = plugins; - this.postProcessors = postProcessors; - this.schemaParser = schemaParser; - this.projectPreProcessors = projectPreProcessors; - this.projectPostProcessors = projectPostProcessors; - this.inStrictMode = inStrictMode; - this.extraContextData = extraContextData; - } - - async generateProject(originalSchema: IPublicTypeProjectSchema | string): Promise { - // Init - const { schemaParser } = this; - - let schema: IPublicTypeProjectSchema = - typeof originalSchema === 'string' ? JSON.parse(originalSchema) : originalSchema; - - // Parse / Format - // Preprocess - for (const preProcessor of this.projectPreProcessors) { - // eslint-disable-next-line no-await-in-loop - schema = await preProcessor(schema); - } - - // Validate - if (!schemaParser.validate(schema)) { - throw new CodeGeneratorError('Schema is invalid'); - } - - // Collect Deps - // Parse JSExpression - const parseResult: IParseResult = schemaParser.parse(schema); - - const projectRoot = await this.template.generateTemplate(parseResult); - - let buildResult: IModuleInfo[] = []; - - const builders = this.createModuleBuilders({ - extraContextData: { - projectRemark: parseResult?.project?.projectRemark, - template: this.template, - }, - }); - // Generator Code module - // components - // pages - const containerBuildResult: IModuleInfo[] = await Promise.all( - parseResult.containers.map(async (containerInfo) => { - let builder: IModuleBuilder; - let path: string[]; - if (containerInfo.containerType === 'Page') { - builder = builders.pages; - path = this.template.slots.pages.path; - } else { - builder = builders.components; - path = this.template.slots.components.path; - } - - const { files } = await builder.generateModule(containerInfo); - - return { - moduleName: containerInfo.moduleName, - path, - files, - }; - }), - ); - buildResult = buildResult.concat(containerBuildResult); - - // router - if (parseResult.globalRouter && builders.router) { - const { files } = await builders.router.generateModule(parseResult.globalRouter); - - buildResult.push({ - path: this.template.slots.router.path, - files, - }); - } - - // entry - if (parseResult.project && builders.entry) { - const { files } = await builders.entry.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.entry.path, - files, - }); - } - - // appConfig - if (builders.appConfig) { - const { files } = await builders.appConfig.generateModule(parseResult); - - buildResult.push({ - path: this.template.slots.appConfig.path, - files, - }); - } - - // buildConfig - if (builders.buildConfig) { - const { files } = await builders.buildConfig.generateModule(parseResult); - - buildResult.push({ - path: this.template.slots.buildConfig.path, - files, - }); - } - - // constants? - if (parseResult.project && builders.constants && this.template.slots.constants) { - const { files } = await builders.constants.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.constants.path, - files, - }); - } - - // utils? - if (parseResult.globalUtils && builders.utils && this.template.slots.utils) { - const { files } = await builders.utils.generateModule(parseResult.globalUtils); - - buildResult.push({ - path: this.template.slots.utils.path, - files, - }); - } - - // i18n? - if (builders.i18n && this.template.slots.i18n) { - const { files } = await builders.i18n.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.i18n.path, - files, - }); - } - - // globalStyle - if (parseResult.project && builders.globalStyle) { - const { files } = await builders.globalStyle.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.globalStyle.path, - files, - }); - } - - // htmlEntry - if (parseResult.project && builders.htmlEntry) { - const { files } = await builders.htmlEntry.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.htmlEntry.path, - files, - }); - } - - // packageJSON - if (parseResult.project && builders.packageJSON) { - const { files } = await builders.packageJSON.generateModule(parseResult.project); - - buildResult.push({ - path: this.template.slots.packageJSON.path, - files, - }); - } - - // demo - if (parseResult.project && builders.demo) { - const { files } = await builders.demo.generateModule(parseResult.project); - buildResult.push({ - path: this.template.slots.demo.path, - files, - }); - } - - // handle extra slots - await this.generateExtraSlots(builders, parseResult, buildResult); - - // Post Process - const isSingleComponent = parseResult?.project?.projectRemark?.isSingleComponent; - // Combine Modules - buildResult.forEach((moduleInfo) => { - let targetDir = getDirFromRoot(projectRoot, moduleInfo.path); - // if project only contain single component, skip creation of directory. - if (moduleInfo.moduleName && !isSingleComponent) { - const dir = createResultDir(moduleInfo.moduleName); - addDirectory(targetDir, dir); - targetDir = dir; - } - moduleInfo.files.forEach((file) => addFile(targetDir, file)); - }); - - // post-processors - let finalResult = projectRoot; - for (const projectPostProcessor of this.projectPostProcessors) { - // eslint-disable-next-line no-await-in-loop - finalResult = await projectPostProcessor(finalResult, schema, originalSchema, { - template: this.template, - parseResult, - }); - } - - return finalResult; - } - - private createModuleBuilders( - extraContextData: Record = {}, - ): Record { - const builders: Record = {}; - - Object.keys(this.plugins).forEach((pluginName) => { - if (this.plugins[pluginName].length > 0) { - const options: { mainFileName?: string } = {}; - if (this.template.slots[pluginName] && this.template.slots[pluginName].fileName) { - options.mainFileName = this.template.slots[pluginName].fileName; - } - builders[pluginName] = createModuleBuilder({ - plugins: this.plugins[pluginName], - postProcessors: this.postProcessors, - contextData: { - // template: this.template, - inStrictMode: this.inStrictMode, - tolerateEvalErrors: true, - evalErrorsHandler: '', - ...this.extraContextData, - ...extraContextData, - }, - ...options, - }); - } - }); - - return builders; - } - - private async generateExtraSlots( - builders: Record, - parseResult: IParseResult, - buildResult: IModuleInfo[], - ) { - for (const slotName in this.template.slots) { - if (!isBuiltinSlotName(slotName)) { - const { files } = await builders[slotName].generateModule(parseResult); - buildResult.push({ - path: this.template.slots[slotName].path, - files, - }); - } - } - } -} - -export function createProjectBuilder(initOptions: ProjectBuilderInitOptions): IProjectBuilder { - return new ProjectBuilder(initOptions); -} - -function getDirFromRoot(root: ResultDir, path: string[]): ResultDir { - let current: ResultDir = root; - path.forEach((p) => { - const exist = current.dirs.find((d) => d.name === p); - if (exist) { - current = exist; - } else { - const newDir = createResultDir(p); - addDirectory(current, newDir); - current = newDir; - } - }); - - return current; -} diff --git a/modules/code-generator/src/index.ts b/modules/code-generator/src/index.ts deleted file mode 100644 index da9b12d877..0000000000 --- a/modules/code-generator/src/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -/** - * 低代码引擎的出码模块,负责将编排产出的 Schema 转换成实际可执行的代码。 - * 注意:为了保持 API 的稳定性,这里所有导出的 API 均要显式命名方式导出 - * (即用 export { xxx } from 'xx' 的方式,不要直接 export * from 'xxx') - * 而且所有导出的 API 务必在 tests/public 中编写单元测试 - */ -import { createProjectBuilder } from './generator/ProjectBuilder'; -import { createModuleBuilder } from './generator/ModuleBuilder'; -import { createDiskPublisher } from './publisher/disk'; -import { createZipPublisher } from './publisher/zip'; -import createIceJsProjectBuilder, { plugins as icejsPlugins } from './solutions/icejs'; -import createIceJs3ProjectBuilder, { plugins as icejs3Plugins } from './solutions/icejs3'; -import createRaxAppProjectBuilder, { plugins as raxPlugins } from './solutions/rax-app'; - -// 引入说明 -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'; -import requireUtils from './plugins/common/requireUtils'; -import styleImport from './plugins/common/styleImport'; - -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 globalUtils from './utils'; - -import * as CONSTANTS from './const'; - -// 引入内置解决方案模块 -import icejs from './plugins/project/framework/icejs'; -import icejs3 from './plugins/project/framework/icejs3'; -import rax from './plugins/project/framework/rax'; - -export default { - createProjectBuilder, - createModuleBuilder, - solutions: { - icejs: createIceJsProjectBuilder, - icejs3: createIceJs3ProjectBuilder, - rax: createRaxAppProjectBuilder, - }, - solutionParts: { - icejs, - icejs3, - rax, - }, - publishers: { - disk: createDiskPublisher, - zip: createZipPublisher, - }, - plugins: { - common: { - - /** - * 处理 ES Module - * @deprecated please use esModule - */ - esmodule, - esModule: esmodule, - requireUtils, - styleImport, - }, - style: { - css, - }, - project: { - constants, - i18n, - utils, - }, - icejs: { - ...icejsPlugins, - }, - icejs3: { - ...icejs3Plugins, - }, - rax: { - ...raxPlugins, - }, - - /** - * @deprecated please use icejs - */ - react: { - ...icejsPlugins, - }, - }, - postprocessor: { - prettier, - }, - utils: globalUtils, - chunkNames: { - COMMON_CHUNK_NAME, - CLASS_DEFINE_CHUNK_NAME, - REACT_CHUNK_NAME, - }, - defaultLinkAfter: { - COMMON_DEFAULT_LINK_AFTER: DEFAULT_LINK_AFTER, - }, - constants: CONSTANTS, -}; - -// 一些类型定义 -export * from './types'; - -// 一些常量定义 -export * from './const'; - -// 一些工具函数 -export * from './analyzer/componentAnalyzer'; -export * from './parser/SchemaParser'; -export * from './generator/ChunkBuilder'; -export * from './generator/CodeBuilder'; -export * from './generator/ModuleBuilder'; -export * from './generator/ProjectBuilder'; diff --git a/modules/code-generator/src/parser/SchemaParser.ts b/modules/code-generator/src/parser/SchemaParser.ts deleted file mode 100644 index 83dfc9838b..0000000000 --- a/modules/code-generator/src/parser/SchemaParser.ts +++ /dev/null @@ -1,394 +0,0 @@ -/** - * 解析器是对输入的固定格式数据做拆解,使其符合引擎后续步骤预期,完成统一处理逻辑的步骤。 - * 本解析器面向的是标准 schema 协议。 - */ -import changeCase from 'change-case'; -import { - IPublicTypeUtilItem, - IPublicTypeNodeDataType, - IPublicTypeNodeSchema, - IPublicTypeContainerSchema, - IPublicTypeProjectSchema, - IPublicTypePropsMap, - IPublicTypeNodeData, - IPublicTypeNpmInfo, -} from '@felce/lowcode-types'; -import { - IPageMeta, - CodeGeneratorError, - CompatibilityError, - DependencyType, - IContainerInfo, - IDependency, - IExternalDependency, - IInternalDependency, - InternalDependencyType, - IParseResult, - ISchemaParser, - INpmPackage, - IRouterInfo, -} from '../types'; - -import { SUPPORT_SCHEMA_VERSION_LIST } from '../const'; - -import { getErrorMessage } from '../utils/errors'; -import { handleSubNodes, isValidContainerType, ContainerType } from '../utils/schema'; -import { uniqueArray } from '../utils/common'; -import { componentAnalyzer } from '../analyzer/componentAnalyzer'; -import { ensureValidClassName } from '../utils/validate'; -import type { ProjectRemark } from '../types/intermediate'; - -const defaultContainer: IContainerInfo = { - containerType: 'Component', - componentName: 'Component', - moduleName: 'Index', - fileName: 'Index', - css: '', - props: {}, -}; - -function getRootComponentName(typeName: string, maps: Record): string { - if (maps[typeName]) { - const rec = maps[typeName]; - if (rec.destructuring) { - return rec.componentName || typeName; - } - - const peerName = Object.keys(maps).find((depName: string) => { - const depInfo = maps[depName]; - return ( - depName !== typeName && - !depInfo.destructuring && - depInfo.package === rec.package && - depInfo.version === rec.version && - depInfo.main === rec.main && - depInfo.exportName === rec.exportName && - depInfo.subName === rec.subName - ); - }); - - return peerName || typeName; - } - return typeName; -} - -function processChildren(schema: IPublicTypeNodeSchema): void { - if (schema.props) { - if (Array.isArray(schema.props)) { - // FIXME: is array type props description - } else { - const nodeProps = schema.props as IPublicTypePropsMap; - if (nodeProps.children) { - if (!schema.children) { - // eslint-disable-next-line no-param-reassign - schema.children = nodeProps.children as IPublicTypeNodeDataType; - } else { - let _children: IPublicTypeNodeData[] = []; - - if (Array.isArray(schema.children)) { - _children = _children.concat(schema.children); - } else { - _children.push(schema.children); - } - - if (Array.isArray(nodeProps.children)) { - _children = _children.concat(nodeProps.children as IPublicTypeNodeData[]); - } else { - _children.push(nodeProps.children as IPublicTypeNodeData); - } - - // eslint-disable-next-line no-param-reassign - schema.children = _children; - } - delete nodeProps.children; - } - } - } -} - -function getInternalDep(internalDeps: Record, depName: string) { - const dep = internalDeps[depName]; - return dep && dep.type !== InternalDependencyType.PAGE ? dep : null; -} - -export class SchemaParser implements ISchemaParser { - validate(schema: IPublicTypeProjectSchema): boolean { - if (SUPPORT_SCHEMA_VERSION_LIST.indexOf(schema.version) < 0) { - throw new CompatibilityError(`Not support schema with version [${schema.version}]`); - } - - return true; - } - - parse(schemaSrc: IPublicTypeProjectSchema | string): IParseResult { - // TODO: collect utils depends in JSExpression - const compDeps: Record = {}; - const internalDeps: Record = {}; - let utilsDeps: IExternalDependency[] = []; - - const schema = this.decodeSchema(schemaSrc); - - // 解析三方组件依赖 - schema.componentsMap.forEach((info: any) => { - if (info.componentName) { - compDeps[info.componentName] = { - ...info, - dependencyType: DependencyType.External, - componentName: info.componentName, - exportName: info.exportName ?? info.componentName, - version: info.version || '*', - destructuring: info.destructuring ?? false, - }; - } - }); - - let containers: IContainerInfo[]; - // Test if this is a lowcode component without container - if (schema.componentsTree.length > 0) { - const firstRoot: IPublicTypeContainerSchema = schema - .componentsTree[0] as IPublicTypeContainerSchema; - - if (!firstRoot.fileName && !isValidContainerType(firstRoot)) { - // 整个 schema 描述一个容器,且无根节点定义 - const container: IContainerInfo = { - ...firstRoot, - ...defaultContainer, - props: firstRoot.props || defaultContainer.props, - css: firstRoot.css || defaultContainer.css, - moduleName: (firstRoot as IContainerInfo).moduleName || defaultContainer.moduleName, - children: schema.componentsTree as IPublicTypeNodeSchema[], - }; - containers = [container]; - } else { - // 普通带 1 到多个容器的 schema - containers = schema.componentsTree.map((n) => { - const subRoot = n as IPublicTypeContainerSchema; - const container: IContainerInfo = { - ...subRoot, - componentName: getRootComponentName(subRoot.componentName, compDeps), - containerType: subRoot.componentName, - moduleName: ensureValidClassName( - subRoot.componentName === ContainerType.Component - ? subRoot.fileName - : changeCase.pascalCase(subRoot.fileName), - ), - }; - return container; - }); - } - } else { - throw new CodeGeneratorError("Can't find anything to generate."); - } - - // 分析引用能力的依赖 - containers = containers.map((con) => ({ - ...con, - analyzeResult: componentAnalyzer(con as IPublicTypeContainerSchema), - })); - - // 建立所有容器的内部依赖索引 - containers.forEach((container) => { - let type; - switch (container.containerType) { - case 'Page': - type = InternalDependencyType.PAGE; - break; - case 'Block': - type = InternalDependencyType.BLOCK; - break; - default: - type = InternalDependencyType.COMPONENT; - break; - } - - const dep: IInternalDependency = { - type, - moduleName: container.moduleName, - destructuring: false, - exportName: container.moduleName, - dependencyType: DependencyType.Internal, - }; - - internalDeps[dep.moduleName] = dep; - }); - - const containersDeps = ([] as IDependency[]).concat(...containers.map((c) => c.deps || [])); - // TODO: 不应该在出码部分解决? - // 处理 children 写在了 props 里的情况 - containers.forEach((container) => { - if (container.children) { - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - handleSubNodes( - container.children, - { - node: (i: IPublicTypeNodeSchema) => processChildren(i), - }, - { - rerun: true, - }, - ); - } - }); - - containers.forEach((container) => { - const depNames = this.getComponentNames(container); - // eslint-disable-next-line no-param-reassign - container.deps = uniqueArray(depNames, (i: string) => i) - .map((depName) => getInternalDep(internalDeps, depName) || compDeps[depName]) - .filter(Boolean); - // container.deps = Object.keys(compDeps).map((depName) => compDeps[depName]); - }); - - // 分析路由配置 - const routes: IRouterInfo['routes'] = containers - .filter((container) => container.containerType === 'Page') - .map((page) => { - const { meta } = page; - if (meta) { - return { - path: (meta as IPageMeta).router || `/${page.fileName}`, // 如果无法找到页面路由信息,则用 fileName 做兜底 - fileName: page.fileName, - componentName: page.moduleName, - }; - } - - return { - path: '', - fileName: page.fileName, - componentName: page.moduleName, - }; - }); - - const routerDeps = routes - .map((r) => internalDeps[r.componentName] || compDeps[r.componentName]) - .filter((dep) => !!dep); - - // 分析 Utils 依赖 - let utils: IPublicTypeUtilItem[]; - if (schema.utils) { - utils = schema.utils; - utilsDeps = schema.utils - .filter( - (u): u is { name: string; type: 'npm' | 'tnpm'; content: IPublicTypeNpmInfo } => - u.type !== 'function', - ) - .map( - (u): IExternalDependency => ({ - ...u.content, - componentName: u.name, - version: u.content.version || '*', - destructuring: u.content.destructuring ?? false, - exportName: u.content.exportName ?? u.name, - }), - ); - } else { - utils = []; - } - - // 分析项目 npm 依赖 - let npms: INpmPackage[] = []; - containers.forEach((con) => { - const p = (con.deps || []) - .map((dep) => { - return dep.dependencyType === DependencyType.External ? dep : null; - }) - .filter((dep) => dep !== null); - const npmInfos: INpmPackage[] = p.filter(Boolean).map((i) => ({ - package: (i as IExternalDependency).package, - version: (i as IExternalDependency).version, - })); - npms.push(...npmInfos); - }); - - npms.push( - ...utilsDeps.map((utilsDep) => ({ - package: utilsDep.package, - version: utilsDep.version, - })), - ); - - npms = uniqueArray(npms, (i) => i.package).filter(Boolean); - - return { - containers, - globalUtils: { - utils, - deps: utilsDeps, - }, - globalI18n: schema.i18n, - globalRouter: { - routes, - deps: routerDeps, - }, - project: { - css: schema.css, - constants: schema.constants, - config: schema.config || {}, - meta: schema.meta || {}, - i18n: schema.i18n, - containersDeps, - utilsDeps, - packages: npms || [], - dataSourcesTypes: this.collectDataSourcesTypes(schema), - projectRemark: this.getProjectRemark(containers), - }, - }; - } - - getProjectRemark(containers: IContainerInfo[]): ProjectRemark { - return { - isSingleComponent: containers.length === 1 && containers[0].containerType === 'Component', - }; - } - - getComponentNames(children: IPublicTypeNodeDataType): string[] { - return handleSubNodes( - children, - { - node: (i: IPublicTypeNodeSchema) => i.componentName, - }, - { - rerun: true, - }, - ); - } - - decodeSchema(schemaSrc: string | IPublicTypeProjectSchema): IPublicTypeProjectSchema { - let schema: IPublicTypeProjectSchema; - if (typeof schemaSrc === 'string') { - try { - schema = JSON.parse(schemaSrc); - } catch (error) { - throw new CodeGeneratorError( - `Parse schema failed: ${getErrorMessage(error) || 'unknown reason'}`, - ); - } - } else { - schema = schemaSrc; - } - return schema; - } - - private collectDataSourcesTypes(schema: IPublicTypeProjectSchema): string[] { - const dataSourcesTypes = new Set(); - - // 数据源的默认类型为 fetch - const defaultDataSourceType = 'fetch'; - - // 收集应用级别的数据源 - schema.dataSource?.list?.forEach((ds) => { - dataSourcesTypes.add(ds.type || defaultDataSourceType); - }); - - // 收集容器级别的数据源(页面/组件/区块) - schema.componentsTree.forEach((rootNode) => { - rootNode.dataSource?.list?.forEach((ds) => { - dataSourcesTypes.add(ds.type || defaultDataSourceType); - }); - }); - - return Array.from(dataSourcesTypes.values()); - } -} - -export default SchemaParser; diff --git a/modules/code-generator/src/plugins/common/esmodule.ts b/modules/code-generator/src/plugins/common/esmodule.ts deleted file mode 100644 index 53f3f9418b..0000000000 --- a/modules/code-generator/src/plugins/common/esmodule.ts +++ /dev/null @@ -1,479 +0,0 @@ -import { flatMap, camelCase, get } from 'lodash'; -import { COMMON_CHUNK_NAME } from '../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - CodeGeneratorError, - DependencyType, - FileType, - ICodeChunk, - ICodeStruct, - IDependency, - IExternalDependency, - IInternalDependency, - IWithDependency, -} from '../../types'; - -import { isValidIdentifier } from '../../utils/validate'; - -// TODO: main 这个信息到底怎么用,是不是外部包不需要使用? -const DEP_MAIN_BLOCKLIST = ['lib', 'lib/index', 'es', 'es/index', 'main']; -const DEFAULT_EXPORT_NAME = '__default__'; - -function groupDepsByPack(deps: IDependency[]): Record { - const depMap: Record = {}; - - const addDep = (pkg: string, dep: IDependency) => { - if (!depMap[pkg]) { - depMap[pkg] = []; - } - depMap[pkg].push(dep); - }; - - deps.forEach((dep) => { - if (dep.dependencyType === DependencyType.Internal) { - addDep(`${(dep as IInternalDependency).moduleName}${dep.main ? `/${dep.main}` : ''}`, dep); - } else { - let depMain = ''; - // TODO: 部分类型的 main 暂时认为没用 - if (dep.main && DEP_MAIN_BLOCKLIST.indexOf(dep.main) < 0) { - depMain = dep.main; - } - if (depMain.substring(0, 1) === '/') { - depMain = depMain.substring(1); - } - addDep(`${(dep as IExternalDependency).package}${depMain ? `/${depMain}` : ''}`, dep); - } - }); - - return depMap; -} - -interface IDependencyItem { - exportName: string; - aliasName?: string; - isDefault?: boolean; - subName?: string; - nodeIdentifier?: string; // 与使用处的映射关系,理论上是不可变更的,如需变更需要提供额外信息 - source: IDependency; -} - -interface IExportItem { - exportName: string; - aliasNames: string[]; - isDefault?: boolean; - needOriginExport: boolean; -} - -function getDependencyIdentifier(info: IDependencyItem): string { - return info.aliasName || info.exportName; -} - -function getExportNameOfDep(dep: IDependency): string { - if (dep.destructuring) { - return ( - dep.exportName || - dep.componentName || - throwNewError('destructuring dependency must have exportName or componentName') - ); - } - - if (!dep.subName) { - return ( - dep.componentName || - dep.exportName || - throwNewError('dependency item must have componentName or exportName') - ); - } - - return ( - dep.exportName || - `__$${camelCase( - get(dep, 'moduleName') || - get(dep, 'package') || - throwNewError('dep.moduleName or dep.package is undefined'), - )}_default` - ); -} - -function throwNewError(msg: string): never { - throw new Error(msg); -} - -function buildPackageImport( - pkg: string, - deps: IDependency[], - targetFileType: string, - useAliasName: boolean, -): ICodeChunk[] { - // 如果压根没有包,则不生成对应的 import 语句(生成了没有任何意义) - if (!pkg || pkg === 'undefined' || pkg === 'null') { - // TODO: 要不要加个 warning? - return []; - } - - const chunks: ICodeChunk[] = []; - - const exportItems: Record = {}; - const defaultExportNames: string[] = []; - - const depsInfo: IDependencyItem[] = deps.map((dep) => { - const info: IDependencyItem = { - exportName: getExportNameOfDep(dep), - isDefault: !dep.destructuring, - subName: dep.subName || undefined, - nodeIdentifier: dep.componentName || undefined, - source: dep, - }; - - // 下面 5 个逻辑是清理不必要的冗余信息,做到数据结构归一化 - if (info.isDefault) { - if (defaultExportNames.indexOf(info.exportName) < 0) { - defaultExportNames.push(info.exportName); - } - } - - if (!info.subName) { - if (info.nodeIdentifier === info.exportName) { - info.nodeIdentifier = undefined; - } - - if (info.isDefault) { - info.aliasName = info.nodeIdentifier || info.exportName; - info.exportName = DEFAULT_EXPORT_NAME; - } - - if (info.nodeIdentifier) { - info.aliasName = info.nodeIdentifier; - info.nodeIdentifier = undefined; - } - } else { - if (info.isDefault) { - info.aliasName = info.exportName; - info.exportName = DEFAULT_EXPORT_NAME; - } - - if (info.nodeIdentifier === `${info.exportName}.${info.subName}`) { - info.nodeIdentifier = undefined; - } - } - - return info; - }); - - // 建立 export 项目的列表 - depsInfo.forEach((info) => { - if (!exportItems[info.exportName]) { - exportItems[info.exportName] = { - exportName: info.exportName, - isDefault: info.isDefault, - aliasNames: [], - needOriginExport: false, - }; - } - - if (!info.nodeIdentifier && !info.aliasName) { - exportItems[info.exportName].needOriginExport = true; - } - }); - - // 建立别名字典 - depsInfo.forEach((info) => { - if (info.aliasName) { - const { aliasNames } = exportItems[info.exportName]; - if (aliasNames.indexOf(info.aliasName) < 0) { - aliasNames.push(info.aliasName); - } - } - }); - - // fix: 父组件ImportAliasDefine, 与子组件import的父组件冲突情况 - depsInfo.forEach((info) => { - if (info.nodeIdentifier) { - const exportItem = exportItems[info.exportName]; - if (!exportItem.needOriginExport && exportItem.aliasNames.length > 0) { - // eslint-disable-next-line no-param-reassign - info.aliasName = exportItem.aliasNames[0]; - } - } - }); - - // 发现 nodeIdentifier 与 exportName 或者 aliasName 冲突的场景 - const nodeIdentifiers = depsInfo.map((info) => info.nodeIdentifier).filter(Boolean); - const conflictInfos = flatMap(Object.keys(exportItems), (exportName) => { - const exportItem = exportItems[exportName]; - const usedNames = [ - ...exportItem.aliasNames, - ...(exportItem.needOriginExport || exportItem.aliasNames.length <= 0 ? [exportName] : []), - ]; - const conflictNames = usedNames.filter((n) => nodeIdentifiers.indexOf(n) >= 0); - if (conflictNames.length > 0) { - return [ - ...(conflictNames.indexOf(exportName) >= 0 ? [[exportName, true, exportItem]] : []), - ...conflictNames.filter((n) => n !== exportName).map((n) => [n, false, exportItem]), - ]; - } - return []; - }); - - const conflictExports = conflictInfos.filter((c) => c[1]).map((c) => c[0] as string); - const conflictAlias = conflictInfos.filter((c) => !c[1]).map((c) => c[0] as string); - - const solutions: Record = {}; - - depsInfo.forEach((info) => { - if (info.aliasName && conflictAlias.indexOf(info.aliasName) >= 0) { - // find solution - let solution = solutions[info.aliasName]; - if (!solution) { - solution = `${info.aliasName}Alias`; - const conflictItem = (conflictInfos.find((c) => c[0] === info.aliasName) || - [])[2] as IExportItem; - conflictItem.aliasNames = conflictItem.aliasNames.filter((a) => a !== info.aliasName); - conflictItem.aliasNames.push(solution); - solutions[info.aliasName] = solution; - } - // eslint-disable-next-line no-param-reassign - info.aliasName = solution; - } - - if (conflictExports.indexOf(info.exportName) >= 0) { - // find solution - let solution = solutions[info.exportName]; - if (!solution) { - solution = `${info.exportName}Export`; - const conflictItem = (conflictInfos.find((c) => c[0] === info.exportName) || - [])[2] as IExportItem; - conflictItem.aliasNames.push(solution); - conflictItem.needOriginExport = false; - solutions[info.exportName] = solution; - } - // eslint-disable-next-line no-param-reassign - info.aliasName = solution; - } - }); - - // 判断是否所有依赖都有合法的 Identifier - depsInfo.forEach((info) => { - const name = info.aliasName || info.exportName; - if (!isValidIdentifier(name)) { - throw new CodeGeneratorError(`Invalid Identifier [${name}]`); - } - if (info.nodeIdentifier && !isValidIdentifier(info.nodeIdentifier)) { - throw new CodeGeneratorError(`Invalid Identifier [${info.nodeIdentifier}]`); - } - }); - - const aliasDefineStatements: Record = {}; - if (useAliasName) { - Object.keys(exportItems).forEach((exportName) => { - const aliasList = exportItems[exportName]?.aliasNames || []; - if (aliasList.length > 0) { - const srcName = exportItems[exportName].needOriginExport ? exportName : aliasList[0]; - const aliasNameList = exportItems[exportName].needOriginExport - ? aliasList - : aliasList.slice(1); - aliasNameList.forEach((a) => { - if (!aliasDefineStatements[a]) { - aliasDefineStatements[a] = `const ${a} = ${srcName};`; - } - }); - } - }); - } - - function getDefaultExportName(info: IDependencyItem): string { - if (info.isDefault) { - return defaultExportNames[0]; - } - return info.exportName; - } - - depsInfo.forEach((info) => { - // 如果是子组件,则导出父组件,并且根据自组件命名规则,判断是否需要定义标识符 - if (info.nodeIdentifier) { - // 前提,存在 nodeIdentifier 一定是有 subName 的,不然前面会优化掉 - const ownerName = getDependencyIdentifier(info); - - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ImportAliasDefine, - content: useAliasName ? `const ${info.nodeIdentifier} = ${ownerName}.${info.subName};` : '', - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport, COMMON_CHUNK_NAME.InternalDepsImport], - ext: { - originalName: `${getDefaultExportName(info)}.${info.subName}`, - aliasName: info.nodeIdentifier, - dependency: info.source, - }, - }); - } else if (info.aliasName) { - // default 方式的导入会生成单独de import 语句,无需生成赋值语句 - if (info.isDefault && defaultExportNames.find((n) => n === info.aliasName)) { - delete aliasDefineStatements[info.aliasName]; - return; - } - - let contentStatement = ''; - if (aliasDefineStatements[info.aliasName]) { - contentStatement = aliasDefineStatements[info.aliasName]; - delete aliasDefineStatements[info.aliasName]; - } - - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ImportAliasDefine, - content: contentStatement, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport, COMMON_CHUNK_NAME.InternalDepsImport], - ext: { - originalName: getDefaultExportName(info), - aliasName: info.aliasName, - dependency: info.source, - }, - }); - } - }); - - // 可能会剩余一些存在二次转换的定义 - Object.keys(aliasDefineStatements).forEach((a) => { - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ImportAliasDefine, - content: aliasDefineStatements[a], - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport, COMMON_CHUNK_NAME.InternalDepsImport], - }); - }); - - const exportItemList = Object.keys(exportItems).map((k) => exportItems[k]); - const defaultExport = exportItemList.filter((item) => item.isDefault); - const otherExports = exportItemList.filter((item) => !item.isDefault); - - const statementL = ['import']; - if (defaultExport.length > 0) { - if (useAliasName) { - statementL.push(defaultExportNames[0]); - } else { - statementL.push(defaultExport[0].aliasNames[0]); - } - if (otherExports.length > 0) { - statementL.push(', '); - } - } - if (otherExports.length > 0) { - const items = otherExports.map((item) => { - return !useAliasName || item.needOriginExport || item.aliasNames.length <= 0 - ? item.exportName - : `${item.exportName} as ${item.aliasNames[0]}`; - }); - statementL.push(`{ ${items.join(', ')} }`); - } - statementL.push('from'); - - const getInternalDependencyModuleId = () => `@/${(deps[0] as IInternalDependency).type}/${pkg}`; - - if (deps[0].dependencyType === DependencyType.Internal) { - // TODO: Internal Deps path use project slot setting - statementL.push(`'${getInternalDependencyModuleId()}';`); - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: statementL.join(' '), - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - } else { - statementL.push(`'${pkg}';`); - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: statementL.join(' '), - linkAfter: [], - }); - } - - // 处理下一些额外的 default 方式的导入 - if (defaultExportNames.length > 1) { - if (deps[0].dependencyType === DependencyType.Internal) { - defaultExportNames.slice(1).forEach((exportName) => { - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: `import ${exportName} from '${getInternalDependencyModuleId()}';`, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - }); - } else { - defaultExportNames.slice(1).forEach((exportName) => { - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: `import ${exportName} from '${pkg}';`, - linkAfter: [], - }); - - chunks.push({ - type: ChunkType.STRING, - fileType: targetFileType, - name: COMMON_CHUNK_NAME.ImportAliasDefine, - content: '', - linkAfter: [], - ext: { - aliasName: exportName, - originalName: exportName, - dependency: { - package: pkg, - componentName: exportName, - }, - }, - }); - }); - } - } - - return chunks; -} - -export interface PluginConfig { - fileType?: string; // 导出的文件类型 - useAliasName?: boolean; // 是否使用 componentName 重命名组件 identifier - filter?: (deps: IDependency[]) => IDependency[]; // 支持过滤能力 -} - -const pluginFactory: BuilderComponentPluginFactory = (config?: PluginConfig) => { - const cfg = { - fileType: FileType.JS, - useAliasName: true, - ...(config || {}), - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IWithDependency; - - if (ir && ir.deps && ir.deps.length > 0) { - const deps = cfg.filter ? cfg.filter(ir.deps) : ir.deps; - const packs = groupDepsByPack(deps); - - Object.keys(packs).forEach((pkg) => { - const chunks = buildPackageImport(pkg, packs[pkg], cfg.fileType, cfg.useAliasName); - next.chunks.push(...chunks); - }); - } - - return next; - }; - - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/common/requireUtils.ts b/modules/code-generator/src/plugins/common/requireUtils.ts deleted file mode 100644 index 4dacf68e5a..0000000000 --- a/modules/code-generator/src/plugins/common/requireUtils.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../const/generator'; - -import { BuilderComponentPlugin, BuilderComponentPluginFactory, ChunkType, FileType, ICodeStruct } from '../../types'; - -// TODO: How to merge this logic to common deps -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: 'import * from \'react\';', - linkAfter: [], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/common/styleImport.ts b/modules/code-generator/src/plugins/common/styleImport.ts deleted file mode 100644 index 23e1293025..0000000000 --- a/modules/code-generator/src/plugins/common/styleImport.ts +++ /dev/null @@ -1,64 +0,0 @@ -import changeCase from 'change-case'; -import { - FileType, - BuilderComponentPluginFactory, - BuilderComponentPlugin, - ICodeStruct, - IWithDependency, - ChunkType, -} from '../../types'; - -import { COMMON_CHUNK_NAME } from '../../const/generator'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IWithDependency; - const { chunks } = next; - - if (ir && ir.deps && ir.deps.length > 0) { - let lowcodeMaterialsStyleAdded = false; - let fusionUIStyleAdded = false; - let nextStyleAddedMap: Record = {}; - ir.deps.forEach((dep: any) => { - if (dep.package === '@alifd/next' && !nextStyleAddedMap[dep.exportName]) { - chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: `import '@alifd/next/lib/${changeCase.paramCase(dep.exportName)}/style';`, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - nextStyleAddedMap[dep.exportName] = true; - } else if (dep.package === '@alilc/lowcode-materials' && !lowcodeMaterialsStyleAdded) { - chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: 'import \'@alilc/lowcode-materials/lib/style\';', - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - lowcodeMaterialsStyleAdded = true; - } else if (dep.package === '@alifd/fusion-ui' && !fusionUIStyleAdded) { - chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: 'import \'@alifd/fusion-ui/lib/style\';', - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - fusionUIStyleAdded = true; - } - }); - } - - return next; - }; - - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/commonDeps.ts b/modules/code-generator/src/plugins/component/rax/commonDeps.ts deleted file mode 100644 index 99285aad84..0000000000 --- a/modules/code-generator/src/plugins/component/rax/commonDeps.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, -} from '../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - // 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。 - // 例外:rax 框架的导出名和各种组件名除外。 - import { createElement, Component } from 'rax'; - import { getSearchParams as __$$getSearchParams } from 'rax-app'; - `, - linkAfter: [], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/const.ts b/modules/code-generator/src/plugins/component/rax/const.ts deleted file mode 100644 index a0a07b550c..0000000000 --- a/modules/code-generator/src/plugins/component/rax/const.ts +++ /dev/null @@ -1,18 +0,0 @@ -export const RAX_CHUNK_NAME = { - ClassDidMountBegin: 'RaxComponentClassDidMountBegin', - ClassDidMountContent: 'RaxComponentClassDidMountContent', - ClassDidMountEnd: 'RaxComponentClassDidMountEnd', - ClassWillUnmountBegin: 'RaxComponentClassWillUnmountBegin', - ClassWillUnmountContent: 'RaxComponentClassWillUnmountContent', - ClassWillUnmountEnd: 'RaxComponentClassWillUnmountEnd', - ClassRenderBegin: 'RaxComponentClassRenderBegin', - ClassRenderPre: 'RaxComponentClassRenderPre', - ClassRenderJSX: 'RaxComponentClassRenderJSX', - ClassRenderEnd: 'RaxComponentClassRenderEnd', - MethodsBegin: 'RaxComponentMethodsBegin', - MethodsContent: 'RaxComponentMethodsContent', - MethodsEnd: 'RaxComponentMethodsEnd', - LifeCyclesBegin: 'RaxComponentLifeCyclesBegin', - LifeCyclesContent: 'RaxComponentLifeCyclesContent', - LifeCyclesEnd: 'RaxComponentLifeCyclesEnd', -}; diff --git a/modules/code-generator/src/plugins/component/rax/containerClass.ts b/modules/code-generator/src/plugins/component/rax/containerClass.ts deleted file mode 100644 index 5e923635b4..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerClass.ts +++ /dev/null @@ -1,157 +0,0 @@ -import changeCase from 'change-case'; -import { - COMMON_CHUNK_NAME, - CLASS_DEFINE_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; -import { RAX_CHUNK_NAME } from './const'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { ensureValidClassName } from '../../../utils/validate'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - - // 将模块名转换成 PascalCase 的格式,并添加特定后缀,防止命名冲突 - const componentClassName = ensureValidClassName( - `${changeCase.pascalCase(ir.moduleName)}$$Page`, - ); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.Start, - content: `class ${componentClassName} extends Component {`, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.End, - content: '}', - linkAfter: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - RAX_CHUNK_NAME.ClassRenderEnd, - RAX_CHUNK_NAME.MethodsEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorStart, - content: 'constructor(props, context) { super(props); ', - linkAfter: DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorStart], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - content: '} /* end of constructor */', - linkAfter: DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorEnd], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassDidMountBegin, - content: 'componentDidMount() {', - linkAfter: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsMethod, - CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassDidMountEnd, - content: '} /* end of componentDidMount */', - linkAfter: [RAX_CHUNK_NAME.ClassDidMountBegin, RAX_CHUNK_NAME.ClassDidMountContent], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassWillUnmountBegin, - content: 'componentWillUnmount() {', - linkAfter: [ - CLASS_DEFINE_CHUNK_NAME.Start, - CLASS_DEFINE_CHUNK_NAME.InsVar, - CLASS_DEFINE_CHUNK_NAME.InsMethod, - RAX_CHUNK_NAME.ClassDidMountEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassWillUnmountEnd, - content: '} /* end of componentWillUnmount */', - linkAfter: [RAX_CHUNK_NAME.ClassWillUnmountBegin, RAX_CHUNK_NAME.ClassWillUnmountContent], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassRenderBegin, - content: 'render() {', - linkAfter: [RAX_CHUNK_NAME.ClassDidMountEnd, RAX_CHUNK_NAME.ClassWillUnmountEnd], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: RAX_CHUNK_NAME.ClassRenderEnd, - content: '} /* end of render */', - linkAfter: [ - RAX_CHUNK_NAME.ClassRenderBegin, - RAX_CHUNK_NAME.ClassRenderPre, - RAX_CHUNK_NAME.ClassRenderJSX, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.FileExport, - content: `export default ${componentClassName};`, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - CLASS_DEFINE_CHUNK_NAME.End, - ], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/containerInitState.ts b/modules/code-generator/src/plugins/component/rax/containerInitState.ts deleted file mode 100644 index bf37881a2a..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerInitState.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER } from '../../../const/generator'; - -import { generateCompositeType } from '../../../utils/compositeType'; -import { Scope } from '../../../utils/Scope'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; - -export interface PluginConfig { - fileType: string; - implementType: 'inConstructor' | 'insMember' | 'hooks'; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - implementType: 'insMember', - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const scope = Scope.createRootScope(); - - const state = ir.state || {}; - const fields = Object.keys(state).map((stateName) => { - // TODO: 这里用什么 handlers? - const value = generateCompositeType(state[stateName], scope); - return `${JSON.stringify(stateName)}: ${value}`; - }); - - if (cfg.implementType === 'inConstructor') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: `this.state = { ${fields.join(',')} };`, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - } else if (cfg.implementType === 'insMember') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: `state = { ${fields.join(',')} };`, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], - }); - } - // TODO: hooks state?? - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/containerInjectContext.ts b/modules/code-generator/src/plugins/component/rax/containerInjectContext.ts deleted file mode 100644 index fed943aabc..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerInjectContext.ts +++ /dev/null @@ -1,145 +0,0 @@ -/* eslint-disable @typescript-eslint/indent */ -import { CLASS_DEFINE_CHUNK_NAME, COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { RAX_CHUNK_NAME } from './const'; -import { DEFAULT_LINK_AFTER } from '../../../const'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const useRef = !!ir.analyzeResult?.isUsingRef; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: "import __$$constants from '../../constants';", - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - // TODO: i18n 是可选的,如果没有 i18n 这个文件怎么办?该怎么判断? - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: "import * as __$$i18n from '../../i18n';", - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: ` - __$$i18n._inject2(this); - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _context = this._createContext(); - `, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - // TODO: 按照目前的实现方案,代码的插拔能力太弱了,需要有一些变化。 - // Step 1: 增加前置的分析器 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - content: ` - _createContext() { - const self = this; - const context = { - get state() { - return self.state; - }, - setState(newState, callback) { - self.setState(newState, callback); - }, - get dataSourceMap() { - return self._dataSourceEngine.dataSourceMap || {}; - }, - async reloadDataSource() { - await self._dataSourceEngine.reloadDataSource(); - }, - get utils() { - return self._utils; - }, - get page() { - return context; - }, - get component() { - return context; - }, - get props() { - return self.props; - }, - get constants() { - return __$$constants; - }, - i18n: __$$i18n.i18n, - i18nFormat: __$$i18n.i18nFormat, - getLocale: __$$i18n.getLocale, - setLocale(locale) { - __$$i18n.setLocale(locale); - self.forceUpdate(); - },${ - useRef - ? ` - $(refName) { - return self._refsManager.get(refName); - }, - $$(refName) { - return self._refsManager.getAll(refName); - }, - get _refsManager() { - if (!self._refsManager) { - self._refsManager = new RefsManager(); - } - return self._refsManager; - }, - ` - : '' - } - ...this._methods, - }; - - return context; - } - `, - linkAfter: [RAX_CHUNK_NAME.ClassRenderEnd], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts b/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts deleted file mode 100644 index 930a279e24..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable @typescript-eslint/indent */ - -import { - IPublicTypeCompositeValue, - IPublicTypeJSExpression, - InterpretDataSourceConfig, - isJSExpression, - isJSFunction, -} from '@felce/lowcode-types'; -import changeCase from 'change-case'; - -import { CLASS_DEFINE_CHUNK_NAME, COMMON_CHUNK_NAME } from '../../../const/generator'; -import { Scope } from '../../../utils/Scope'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IScope, -} from '../../../types'; - -import { generateCompositeType } from '../../../utils/compositeType'; -import { parseExpressionConvertThis2Context } from '../../../utils/expressionParser'; -import { isContainerSchema } from '../../../utils/schema'; -import { RaxFrameworkOptions } from '../../project/framework/rax/types/RaxFrameworkOptions'; -import { RAX_CHUNK_NAME } from './const'; - -export interface PluginConfig extends RaxFrameworkOptions { - fileType?: string; - - /** - * 数据源的 handlers 的映射配置 - * @deprecated 请使用 datasourceConfig.handlersPackages 来配置 - */ - dataSourceHandlersPackageMap?: Record; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - dataSourceHandlersPackageMap: - config?.dataSourceHandlersPackageMap || config?.datasourceConfig?.handlersPackages, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const scope = Scope.createRootScope(); - const dataSourceConfig = isContainerSchema(pre.ir) ? pre.ir.dataSource : null; - const dataSourceItems: InterpretDataSourceConfig[] = - (dataSourceConfig && dataSourceConfig.list) || []; - const dataSourceEngineOptions = { runtimeConfig: true }; - if (dataSourceItems.length > 0) { - const requestHandlersMap: Record = {}; - - dataSourceItems.forEach((ds) => { - const dsType = ds.type || 'fetch'; - if (!(dsType in requestHandlersMap) && dsType !== 'custom') { - const handlerFactoryName = `__$$create${changeCase.pascal(dsType)}RequestHandler`; - - requestHandlersMap[dsType] = { - type: 'JSExpression', - value: `${handlerFactoryName}(${ - dsType === 'urlParams' ? '__$$getSearchParams()' : '' - })`, - }; - - const handlerFactoryExportName = `create${changeCase.pascal(dsType)}Handler`; - const handlerPkgName = - cfg.dataSourceHandlersPackageMap?.[dsType] || - `@alilc/lowcode-datasource-${changeCase.kebab(dsType)}-handler`; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - import { ${handlerFactoryExportName} as ${handlerFactoryName} } from '${handlerPkgName}'; - `, - linkAfter: [], - }); - } - }); - - Object.assign(dataSourceEngineOptions, { requestHandlersMap }); - } - - const datasourceEnginePackageName = - cfg.datasourceConfig?.enginePackage || '@alilc/lowcode-datasource-engine'; - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - import { create as __$$createDataSourceEngine } from '${datasourceEnginePackageName}/runtime'; - `, - linkAfter: [], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType!, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _dataSourceConfig = this._defineDataSourceConfig(); - _dataSourceEngine = __$$createDataSourceEngine( - this._dataSourceConfig, - this._context, - ${generateCompositeType(dataSourceEngineOptions, scope)} - );`, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType!, - name: RAX_CHUNK_NAME.ClassDidMountContent, - content: ` - this._dataSourceEngine.reloadDataSource(); - `, - linkAfter: [RAX_CHUNK_NAME.ClassDidMountBegin], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType!, - name: CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - content: ` -_defineDataSourceConfig() { - const __$$context = this._context; - return (${generateCompositeType( - { - ...dataSourceConfig, - list: [ - ...dataSourceItems.map((item) => ({ - // 数据源引擎默认的 errorHandler 是空的,而且并不会触发组件重新渲染…… - // 这会导致页面状态不能正常展示,故这里处理下: - errorHandler: { - type: 'JSFunction', - value: `function (err){ - setTimeout(() => { - this.setState({ __refresh: Date.now() + Math.random() }); - }, 0); - throw err; - }`, - }, - ...item, - isInit: - typeof item.isInit === 'boolean' || typeof item.isInit === 'undefined' - ? (item.isInit ?? true) - : wrapAsFunction(item.isInit, scope), - options: wrapAsFunction(item.options, scope), - })), - ], - }, - scope, - { - handlers: { - function: (jsFunc) => parseExpressionConvertThis2Context(jsFunc.value, '__$$context'), - expression: (jsExpr) => parseExpressionConvertThis2Context(jsExpr.value, '__$$context'), - }, - }, - )}); -} - `, - linkAfter: [RAX_CHUNK_NAME.ClassRenderEnd], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; - -function wrapAsFunction( - value: IPublicTypeCompositeValue, - scope: IScope, -): IPublicTypeCompositeValue { - if (isJSExpression(value) || isJSFunction(value)) { - return { - type: 'JSExpression', - value: `function(){ return ((${value.value}))}`, - }; - } - - return { - type: 'JSExpression', - value: `function(){return((${generateCompositeType(value, scope)}))}`, - }; -} diff --git a/modules/code-generator/src/plugins/component/rax/containerInjectUtils.ts b/modules/code-generator/src/plugins/component/rax/containerInjectUtils.ts deleted file mode 100644 index 32d3f4bb02..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerInjectUtils.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME, COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { RAX_CHUNK_NAME } from './const'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const useRef = !!ir.analyzeResult?.isUsingRef; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - // TODO: 下面这个路径有没有更好的方式来获取?而非写死 - content: ` - import __$$projectUtils${useRef ? ', { RefsManager }' : ''} from '../../utils'; - `, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: '_utils = this._defineUtils();', - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - - content: ` - _defineUtils() { - return { - ...__$$projectUtils, - }; - }`, - linkAfter: [RAX_CHUNK_NAME.ClassRenderEnd], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts b/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts deleted file mode 100644 index 5db72248a8..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts +++ /dev/null @@ -1,146 +0,0 @@ -import _ from 'lodash'; -import { isJSExpression, isJSFunction } from '@felce/lowcode-types'; - -import { CLASS_DEFINE_CHUNK_NAME } from '../../../const/generator'; -import { RAX_CHUNK_NAME } from './const'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - FileType, - ChunkType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { debug } from '../../../utils/debug'; -import { isJSExpressionFn } from '../../../utils/common'; - -export interface PluginConfig { - fileType: string; - exportNameMapping: Record; - normalizeNameMapping: Record; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - exportNameMapping: {}, - normalizeNameMapping: { - didMount: 'componentDidMount', - willUnmount: 'componentWillUnmount', - }, - ...config, - }; - - const exportNameMapping = new Map(Object.entries(cfg.exportNameMapping)); - const normalizeNameMapping = new Map(Object.entries(cfg.normalizeNameMapping)); - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - // Rax 先只支持 didMount 和 willUnmount 吧 - - const ir = next.ir as IContainerInfo; - const { lifeCycles } = ir; - - if (lifeCycles && !_.isEmpty(lifeCycles)) { - Object.entries(lifeCycles).forEach(([lifeCycleName, lifeCycleMethodExpr]) => { - // 过滤掉非法数据(有些场景下会误传入空字符串或 null) - if ( - !isJSFunction(lifeCycles[lifeCycleName]) && - !isJSExpressionFn(lifeCycles[lifeCycleName]) && - !isJSExpression(lifeCycles[lifeCycleName]) - ) { - return; - } - - const normalizeName = normalizeNameMapping.get(lifeCycleName) || lifeCycleName; - const exportName = exportNameMapping.get(lifeCycleName) || lifeCycleName; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.LifeCyclesContent, - content: `${exportName}: (${lifeCycleMethodExpr.value}),`, - linkAfter: [RAX_CHUNK_NAME.LifeCyclesBegin], - }); - - if (normalizeName === 'constructor') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: `this._lifeCycles.${exportName}();`, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.ConstructorStart], - }); - } else if (normalizeName === 'componentDidMount') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.ClassDidMountContent, - content: `this._lifeCycles.${exportName}();`, - linkAfter: [RAX_CHUNK_NAME.ClassDidMountBegin], - }); - } else if (normalizeName === 'componentWillUnmount') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.ClassWillUnmountContent, - content: `this._lifeCycles.${exportName}();`, - linkAfter: [RAX_CHUNK_NAME.ClassWillUnmountBegin], - }); - } else { - debug(`[CodeGen]: unknown life cycle: ${lifeCycleName}`); - } - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: '_lifeCycles = this._defineLifeCycles();', - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.LifeCyclesBegin, - content: ` - _defineLifeCycles() { - const __$$lifeCycles = ({ - `, - linkAfter: [RAX_CHUNK_NAME.ClassRenderEnd, CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.LifeCyclesEnd, - content: ` - }); - - // 为所有的方法绑定上下文 - Object.entries(__$$lifeCycles).forEach(([lifeCycleName, lifeCycleMethod]) => { - if (typeof lifeCycleMethod === 'function') { - __$$lifeCycles[lifeCycleName] = (...args) => { - return lifeCycleMethod.apply(this._context, args); - } - } - }); - - return __$$lifeCycles; - } - `, - linkAfter: [RAX_CHUNK_NAME.LifeCyclesBegin, RAX_CHUNK_NAME.LifeCyclesContent], - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/containerMethods.ts b/modules/code-generator/src/plugins/component/rax/containerMethods.ts deleted file mode 100644 index 6e23dc090f..0000000000 --- a/modules/code-generator/src/plugins/component/rax/containerMethods.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; - -import { RAX_CHUNK_NAME } from './const'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _methods = this._defineMethods(); - `, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.MethodsBegin, - content: ` - _defineMethods() { - return ({ - `, - linkAfter: [ - RAX_CHUNK_NAME.ClassRenderEnd, - CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - RAX_CHUNK_NAME.LifeCyclesEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.MethodsEnd, - content: ` - }); - } - `, - linkAfter: [RAX_CHUNK_NAME.MethodsBegin, RAX_CHUNK_NAME.MethodsContent], - }); - - if (ir.methods && Object.keys(ir.methods).length > 0) { - Object.entries(ir.methods).forEach(([methodName, methodDefine]) => { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.MethodsContent, - content: `${methodName}: (${methodDefine.value}),`, - linkAfter: [RAX_CHUNK_NAME.MethodsBegin], - }); - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/rax/jsx.ts b/modules/code-generator/src/plugins/component/rax/jsx.ts deleted file mode 100644 index 9b10669e6b..0000000000 --- a/modules/code-generator/src/plugins/component/rax/jsx.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { - IPublicTypeNodeSchema, - IPublicTypeJSExpression, - IPublicTypeNpmInfo, - IPublicTypeCompositeValue, - isJSExpression, -} from '@felce/lowcode-types'; - -import _ from 'lodash'; -import changeCase from 'change-case'; -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - CodePiece, - FileType, - ICodeChunk, - ICodeStruct, - IContainerInfo, - PIECE_TYPE, - HandlerSet, - IScope, - NodeGeneratorConfig, - NodePlugin, - AttrPlugin, -} from '../../../types'; - -import { RAX_CHUNK_NAME } from './const'; -import { COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { generateExpression } from '../../../utils/jsExpression'; -import { - createNodeGenerator, - generateConditionReactCtrl, - generateReactExprInJS, -} from '../../../utils/nodeToJSX'; -import { generateCompositeType } from '../../../utils/compositeType'; -import { Scope } from '../../../utils/Scope'; -import { parseExpressionGetGlobalVariables } from '../../../utils/expressionParser'; -import { transformThis2Context } from '../../../core/jsx/handlers/transformThis2Context'; -import { transformJsExpr } from '../../../core/jsx/handlers/transformJsExpression'; - -export interface PluginConfig { - fileType: string; - - /** 是否要忽略小程序 */ - ignoreMiniApp?: boolean; -} - -// TODO: componentName 若并非大写字符打头,甚至并非是一个有效的 JS 标识符怎么办?? -// FIXME: 我想了下,这块应该放到解析阶段就去做掉,对所有 componentName 做 identifier validate,然后对不合法的做统一替换。 -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const rootScope = Scope.createRootScope(); - const { tolerateEvalErrors = true, evalErrorsHandler = '' } = next.contextData; - - // Rax 构建到小程序的时候,不能给组件起起别名,得直接引用,故这里将所有的别名替换掉 - // 先收集下所有的 alias 的映射 - const componentsNameAliasMap = new Map(); - next.chunks.forEach((chunk) => { - if (isImportAliasDefineChunk(chunk)) { - componentsNameAliasMap.set(chunk.ext.aliasName, chunk.ext.originalName); - } - }); - - // 注意:这里其实隐含了一个假设:schema 中的 componentName 应该是一个有效的 JS 标识符,而且是大写字母打头的 - // FIXME: 为了快速修复临时加的逻辑,需要用 pre-process 的方式替代处理。 - const mapComponentNameToAliasOrKeepIt = (componentName: string) => - componentsNameAliasMap.get(componentName) || componentName; - - // 然后过滤掉所有的别名 chunks - next.chunks = next.chunks.filter((chunk) => !isImportAliasDefineChunk(chunk)); - - // 如果直接按目前的 React 的方式之间出码 JSX 的话,会有 3 个问题: - // 1. 小程序出码的时候,循环变量没法拿到 - // 2. 小程序出码的时候,很容易出现 Uncaught TypeError: Cannot read property 'avatar' of undefined 这样的异常(如下图的 50 行) -- 因为若直接出码,Rax 构建到小程序的时候会立即计算所有在视图中用到的变量 - // 3. 通过 this.xxx 能拿到的东西太多了,而且自定义的 methods 可能会无意间破坏 Rax 框架或小程序框架在页面 this 上的东东 - const customHandlers: HandlerSet = { - expression(input: IPublicTypeJSExpression, scope: IScope) { - return transformJsExpr(generateExpression(input, scope), scope, { - dontWrapEval: !tolerateEvalErrors, - }); - }, - function(input, scope: IScope) { - return transformThis2Context(input.value || 'null', scope); - }, - }; - - // 创建代码生成器 - const commonNodeGenerator = createNodeGenerator({ - handlers: customHandlers, - tagMapping: mapComponentNameToAliasOrKeepIt, - nodePlugins: [generateReactExprInJS, generateConditionReactCtrl, generateRaxLoopCtrl], - attrPlugins: [generateNodeAttrForRax.bind({ cfg })], - }); - - // 生成 JSX 代码 - const jsxContent = commonNodeGenerator(ir, rootScope); - - if (!cfg.ignoreMiniApp) { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: "import { isMiniApp as __$$isMiniApp } from 'universal-env';", - linkAfter: [], - }); - } - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.ClassRenderPre, - // TODO: setState, dataSourceMap, reloadDataSource, utils, i18n, i18nFormat, getLocale, setLocale 这些在 Rax 的编译模式下不能在视图中直接访问,需要转化成 this.xxx - content: ` - const __$$context = this._context; - const { state, setState, dataSourceMap, reloadDataSource, utils, constants, i18n, i18nFormat, getLocale, setLocale } = __$$context; - `, - linkAfter: [RAX_CHUNK_NAME.ClassRenderBegin], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: RAX_CHUNK_NAME.ClassRenderJSX, - content: `return ${jsxContent};`, - linkAfter: [RAX_CHUNK_NAME.ClassRenderBegin, RAX_CHUNK_NAME.ClassRenderPre], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.CustomContent, - content: [ - tolerateEvalErrors && - ` - function __$$eval(expr) { - try { - return expr(); - } catch (error) { - ${evalErrorsHandler} - } - } - - function __$$evalArray(expr) { - const res = __$$eval(expr); - return Array.isArray(res) ? res : []; - } - `, - ` - function __$$createChildContext(oldContext, ext) { - return Object.assign({}, oldContext, ext); - } - `, - ] - .filter(Boolean) - .join('\n'), - linkAfter: [COMMON_CHUNK_NAME.FileExport], - }); - - return next; - - function generateRaxLoopCtrl( - nodeItem: IPublicTypeNodeSchema, - scope: IScope, - config?: NodeGeneratorConfig, - next?: NodePlugin, - ): CodePiece[] { - if (nodeItem.loop) { - const loopItemName = nodeItem.loopArgs?.[0] || 'item'; - const loopIndexName = nodeItem.loopArgs?.[1] || 'index'; - const subScope = scope.createSubScope([loopItemName, loopIndexName]); - const pieces: CodePiece[] = next ? next(nodeItem, subScope, config) : []; - - const loopDataExpr = tolerateEvalErrors - ? `__$$evalArray(() => (${transformThis2Context( - generateCompositeType(nodeItem.loop, scope, { handlers: config?.handlers }), - scope, - )}))` - : `(${transformThis2Context( - generateCompositeType(nodeItem.loop, scope, { handlers: config?.handlers }), - scope, - )})`; - - pieces.unshift({ - value: `${loopDataExpr}.map((${loopItemName}, ${loopIndexName}) => ((__$$context) => (`, - type: PIECE_TYPE.BEFORE, - }); - - pieces.push({ - value: `))(__$$createChildContext(__$$context, { ${loopItemName}, ${loopIndexName} })))`, - type: PIECE_TYPE.AFTER, - }); - - return pieces; - } - - return next ? next(nodeItem, scope, config) : []; - } - }; - - return plugin; -}; - -export default pluginFactory; - -function isImportAliasDefineChunk(chunk: ICodeChunk): chunk is ICodeChunk & { - ext: { - aliasName: string; - originalName: string; - dependency: IPublicTypeNpmInfo; - }; -} { - return ( - chunk.name === COMMON_CHUNK_NAME.ImportAliasDefine && - !!chunk.ext && - typeof chunk.ext.aliasName === 'string' && - typeof chunk.ext.originalName === 'string' && - !!(chunk.ext.dependency as IPublicTypeNpmInfo | null)?.componentName - ); -} - -function generateNodeAttrForRax( - this: { cfg: PluginConfig }, - attrData: { attrName: string; attrValue: IPublicTypeCompositeValue }, - scope: IScope, - config?: NodeGeneratorConfig, - next?: AttrPlugin, -): CodePiece[] { - if (!this.cfg.ignoreMiniApp && /^on/.test(attrData.attrName)) { - // else: onXxx 的都是事件处理函数需要特殊处理下 - return generateEventHandlerAttrForRax(attrData.attrName, attrData.attrValue, scope, config); - } - - if (attrData.attrName === 'ref') { - return [ - { - name: attrData.attrName, - value: `__$$context._refsManager.linkRef('${attrData.attrValue}')`, - type: PIECE_TYPE.ATTR, - }, - ]; - } - - return next ? next(attrData, scope, config) : []; -} - -function generateEventHandlerAttrForRax( - attrName: string, - attrValue: IPublicTypeCompositeValue, - scope: IScope, - config?: NodeGeneratorConfig, -): CodePiece[] { - // -- 事件处理函数中 JSExpression 转成 JSFunction 来处理,避免当 JSExpression 处理的时候多包一层 eval 而导致 Rax 转码成小程序的时候出问题 - const valueExpr = generateCompositeType( - isJSExpression(attrValue) ? { type: 'JSFunction', value: attrValue.value } : attrValue, - scope, - { - handlers: config?.handlers, - }, - ); - - // 查询当前作用域下的变量 - const currentScopeVariables = scope.bindings?.getAllBindings() || []; - if (currentScopeVariables.length <= 0) { - return [ - { - type: PIECE_TYPE.ATTR, - name: attrName, - value: valueExpr, - }, - ]; - } - - // 提取出所有的未定义的全局变量 - const undeclaredVariablesInValueExpr = parseExpressionGetGlobalVariables(valueExpr); - const referencedLocalVariables = _.intersection( - undeclaredVariablesInValueExpr, - currentScopeVariables, - ); - if (referencedLocalVariables.length <= 0) { - return [ - { - type: PIECE_TYPE.ATTR, - name: attrName, - value: valueExpr, - }, - ]; - } - - const wrappedAttrValueExpr = [ - '(...__$$args) => {', - ' if (__$$isMiniApp) {', - ' const __$$event = __$$args[0];', - ...referencedLocalVariables.map( - (localVar) => `const ${localVar} = __$$event.target.dataset.${localVar};`, - ), - ` return (${valueExpr}).apply(this, __$$args);`, - ' } else {', - ` return (${valueExpr}).apply(this, __$$args);`, - ' }', - '}', - ].join('\n'); - - return [ - ...referencedLocalVariables.map((localVar) => ({ - type: PIECE_TYPE.ATTR, - name: `data-${changeCase.snake(localVar)}`, - value: localVar, - })), - { - type: PIECE_TYPE.ATTR, - name: attrName, - value: wrappedAttrValueExpr, - }, - ]; -} diff --git a/modules/code-generator/src/plugins/component/react/const.ts b/modules/code-generator/src/plugins/component/react/const.ts deleted file mode 100644 index 6294668276..0000000000 --- a/modules/code-generator/src/plugins/component/react/const.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const REACT_CHUNK_NAME = { - ClassRenderStart: 'ReactComponentClassRenderStart', - ClassRenderPre: 'ReactComponentClassRenderPre', - ClassRenderEnd: 'ReactComponentClassRenderEnd', - ClassRenderJSX: 'ReactComponentClassRenderJSX', - ClassDidMountStart: 'ReactComponentClassDidMountStart', - ClassDidMountEnd: 'ReactComponentClassDidMountEnd', - ClassDidMountContent: 'ReactComponentClassDidMountContent', -}; diff --git a/modules/code-generator/src/plugins/component/react/containerClass.ts b/modules/code-generator/src/plugins/component/react/containerClass.ts deleted file mode 100644 index eab6cbebee..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerClass.ts +++ /dev/null @@ -1,145 +0,0 @@ -import changeCase from 'change-case'; -import { - COMMON_CHUNK_NAME, - CLASS_DEFINE_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; -import { REACT_CHUNK_NAME } from './const'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { ensureValidClassName } from '../../../utils/validate'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - - // 将模块名转换成 PascalCase 的格式,并添加特定后缀,防止命名冲突 - const componentClassName = ensureValidClassName( - `${changeCase.pascalCase(ir.moduleName)}$$${ir.containerType}`, - ); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.Start, - content: `class ${componentClassName} extends React.Component {`, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - ], - }); - - if (ir.containerType === 'Component') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: `static displayName = '${ir.moduleName}';`, - linkAfter: [ - CLASS_DEFINE_CHUNK_NAME.Start, - ], - }); - } - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.End, - content: '}', - linkAfter: [ - ...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.End], - REACT_CHUNK_NAME.ClassRenderEnd, - REACT_CHUNK_NAME.ClassDidMountEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorStart, - content: 'constructor(props, context) { super(props); ', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorStart]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorEnd, - content: '}', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorEnd]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: REACT_CHUNK_NAME.ClassDidMountStart, - content: 'componentDidMount() {', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.End]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: REACT_CHUNK_NAME.ClassDidMountEnd, - content: '}', - linkAfter: [REACT_CHUNK_NAME.ClassDidMountContent, REACT_CHUNK_NAME.ClassDidMountStart], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: REACT_CHUNK_NAME.ClassRenderStart, - content: 'render() {', - linkAfter: [ - ...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.End], - REACT_CHUNK_NAME.ClassDidMountEnd, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: REACT_CHUNK_NAME.ClassRenderEnd, - content: '}', - linkAfter: [ - REACT_CHUNK_NAME.ClassRenderStart, - REACT_CHUNK_NAME.ClassRenderPre, - REACT_CHUNK_NAME.ClassRenderJSX, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.FileExport, - content: `export default ${componentClassName};`, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - CLASS_DEFINE_CHUNK_NAME.End, - ], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerInitState.ts b/modules/code-generator/src/plugins/component/react/containerInitState.ts deleted file mode 100644 index d1dd0d1ddf..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInitState.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER } from '../../../const/generator'; - -import { generateCompositeType } from '../../../utils/compositeType'; -import { Scope } from '../../../utils/Scope'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; - -export interface PluginConfig { - fileType?: string; - implementType: 'inConstructor' | 'insMember' | 'hooks'; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig & { fileType: string } = { - fileType: FileType.JSX, - implementType: 'inConstructor', - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const scope = Scope.createRootScope(); - - const state = ir.state || {}; - const fields = Object.keys(state).map((stateName) => { - const value = generateCompositeType(state[stateName], scope); - return `${stateName}: ${value},`; - }); - - if (cfg.implementType === 'inConstructor') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: `this.state = { ${fields.join('')} };`, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - } else if (cfg.implementType === 'insMember') { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: `state = { ${fields.join('')} };`, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], - }); - } - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts b/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts deleted file mode 100644 index 92cd4a3920..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - CLASS_DEFINE_CHUNK_NAME, - COMMON_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, -} from '../../../types'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: "import __$$constants from '../../constants';", - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - get constants() { - return __$$constants || {}; - } - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerInjectContext.ts b/modules/code-generator/src/plugins/component/react/containerInjectContext.ts deleted file mode 100644 index 434a5cf1c7..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInjectContext.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME } from '../../../const/generator'; - -import { Scope } from '../../../utils/Scope'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { DEFAULT_LINK_AFTER } from '../../../const'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const scope = Scope.createRootScope(); - - const { inStrictMode } = next.contextData; - if (!inStrictMode) { - // 非严格模式下,上下文就是自己 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _context = this; - `, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - } else { - // 严格模式下的上下文只保留协议中规定的那些 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _context = this._createContext(); - `, - linkAfter: [CLASS_DEFINE_CHUNK_NAME.Start], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod, - content: ` - _createContext() { - const self = this; - const context = { - get state() { return self.state; }, - setState(newState, callback) { self.setState(newState, callback); }, - get dataSourceMap() { return self._dataSourceEngine.dataSourceMap || {}; }, - async reloadDataSource() { await self._dataSourceEngine.reloadDataSource(); }, - get utils() { return self.utils; }, - get page() { return context; }, - get component() { return context; }, - get props() { return self.props; }, - get constants() { return self.constants; }, - get $() { return self.$ }, - get $$() { return self.$$ }, - ...this._methods, - }; - - return context; - } - `, - linkAfter: DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsPrivateMethod], - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts b/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts deleted file mode 100644 index ac7aa72ae2..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts +++ /dev/null @@ -1,206 +0,0 @@ -/* eslint-disable @typescript-eslint/indent */ - -import { - IPublicTypeCompositeValue, - IPublicTypeJSExpression, - InterpretDataSourceConfig, - isJSExpression, - isJSFunction, -} from '@felce/lowcode-types'; -import changeCase from 'change-case'; - -import { - CLASS_DEFINE_CHUNK_NAME, - COMMON_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; -import { Scope } from '../../../utils/Scope'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IScope, -} from '../../../types'; - -import { generateCompositeType } from '../../../utils/compositeType'; -import { parseExpressionConvertThis2Context } from '../../../utils/expressionParser'; -import { isValidContainerType } from '../../../utils/schema'; -import { REACT_CHUNK_NAME } from './const'; -import { isJSExpressionFn } from '../../../utils/common'; - -export interface PluginConfig { - fileType?: string; - - /** - * 数据源配置 - */ - datasourceConfig?: { - /** 数据源引擎的版本 */ - engineVersion?: string; - - /** 数据源引擎的包名 */ - enginePackage?: string; - - /** 数据源 handlers 的版本 */ - handlersVersion?: { - [key: string]: string; - }; - - /** 数据源 handlers 的包名 */ - handlersPackages?: { - [key: string]: string; - }; - }; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg = { - ...config, - fileType: config?.fileType || FileType.JSX, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const scope = Scope.createRootScope(); - const dataSourceConfig = isValidContainerType(pre.ir) ? pre.ir.dataSource : null; - const dataSourceItems: InterpretDataSourceConfig[] = - (dataSourceConfig && dataSourceConfig.list) || []; - const dataSourceEngineOptions = { runtimeConfig: true }; - if (dataSourceItems.length > 0) { - const requestHandlersMap: Record = {}; - - dataSourceItems.forEach((ds) => { - const dsType = ds.type || 'fetch'; - if (!(dsType in requestHandlersMap) && dsType !== 'custom') { - const handlerFactoryName = `__$$create${changeCase.pascal(dsType)}RequestHandler`; - - requestHandlersMap[dsType] = { - type: 'JSExpression', - value: - handlerFactoryName + (dsType === 'urlParams' ? '(window.location.search)' : '()'), - }; - - const handlerFactoryExportName = `create${changeCase.pascal(dsType)}Handler`; - const handlerPkgName = - cfg.datasourceConfig?.handlersPackages?.[dsType] || - `@alilc/lowcode-datasource-${changeCase.kebab(dsType)}-handler`; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - import { ${handlerFactoryExportName} as ${handlerFactoryName} } from '${handlerPkgName}'; - `, - linkAfter: [], - }); - } - }); - - Object.assign(dataSourceEngineOptions, { requestHandlersMap }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime'; - `, - linkAfter: [], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: ` - _dataSourceConfig = this._defineDataSourceConfig(); - _dataSourceEngine = __$$createDataSourceEngine( - this._dataSourceConfig, - this, - ${generateCompositeType(dataSourceEngineOptions, scope)} - ); - - get dataSourceMap() { - return this._dataSourceEngine.dataSourceMap || {}; - } - - reloadDataSource = async () => { - await this._dataSourceEngine.reloadDataSource(); - } - - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], - }); - - next.chunks.unshift({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: REACT_CHUNK_NAME.ClassDidMountContent, - content: ` - this._dataSourceEngine.reloadDataSource(); - `, - linkAfter: [REACT_CHUNK_NAME.ClassDidMountStart], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: ` - _defineDataSourceConfig() { - const _this = this; - return (${generateCompositeType( - { - ...dataSourceConfig, - list: [ - ...dataSourceItems.map((item) => ({ - ...item, - isInit: wrapAsFunction(item.isInit, scope), - options: wrapAsFunction(item.options, scope), - })), - ], - }, - scope, - { - handlers: { - function: (jsFunc) => parseExpressionConvertThis2Context(jsFunc.value, '_this'), - expression: (jsExpr) => parseExpressionConvertThis2Context(jsExpr.value, '_this'), - }, - }, - )}); - } - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; - -function wrapAsFunction( - value: IPublicTypeCompositeValue, - scope: IScope, -): IPublicTypeCompositeValue { - if (isJSExpression(value) || isJSFunction(value) || isJSExpressionFn(value)) { - return { - type: 'JSExpression', - value: `function(){ return ((${value.value}))}.bind(this)`, - }; - } - - return { - type: 'JSExpression', - value: `function(){return((${generateCompositeType(value, scope)}))}.bind(this)`, - }; -} diff --git a/modules/code-generator/src/plugins/component/react/containerInjectI18n.ts b/modules/code-generator/src/plugins/component/react/containerInjectI18n.ts deleted file mode 100644 index aff42af15f..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInjectI18n.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - CLASS_DEFINE_CHUNK_NAME, - COMMON_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, -} from '../../../types'; -import { getSlotRelativePath } from '../../../utils/pathHelper'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: ` - import * as __$$i18n from '${getSlotRelativePath({ contextData: next.contextData, from: 'components', to: 'i18n' })}'; - `, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: ` - __$$i18n._inject2(this); - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerInjectUtils.ts b/modules/code-generator/src/plugins/component/react/containerInjectUtils.ts deleted file mode 100644 index d9eb14f769..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerInjectUtils.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { - CLASS_DEFINE_CHUNK_NAME, - COMMON_CHUNK_NAME, - DEFAULT_LINK_AFTER, -} from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { getSlotRelativePath } from '../../../utils/pathHelper'; - -export interface PluginConfig { - fileType?: string; - - /** prefer using class property to define utils */ - preferClassProperty?: boolean; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig & { fileType: string } = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - next.contextData.useRefApi = true; - const useRef = !!ir.analyzeResult?.isUsingRef; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: ` - import utils${useRef ? ', { RefsManager }' : ''} from '${getSlotRelativePath({ contextData: next.contextData, from: 'components', to: 'utils' })}'; - `, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - if (cfg.preferClassProperty) { - // mode: class property - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsVar, - content: 'utils = utils;', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], - }); - } else { - // mode: assign in constructor - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: 'this.utils = utils;', - linkAfter: [CLASS_DEFINE_CHUNK_NAME.ConstructorStart], - }); - } - - if (useRef) { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: 'this._refsManager = new RefsManager();', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: ` - $ = (refName) => { - return this._refsManager.get(refName); - } - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: ` - $$ = (refName) => { - return this._refsManager.getAll(refName); - } - `, - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }); - } else { - // useRef 为 false 的时候是指没有组件在 props 中配置 ref 属性,但这个时候其实也可能有代码访问 this.$/$$ 所以还是加上个空的代码 - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: ' $ = () => null; ', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: ' $$ = () => []; ', - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts b/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts deleted file mode 100644 index ec4c46e8bd..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerLifeCycle.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER } from '../../../const/generator'; -import { REACT_CHUNK_NAME } from './const'; - -import { generateFunction } from '../../../utils/jsExpression'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeChunk, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { isJSFunction, isJSExpression } from '@felce/lowcode-types'; -import { isJSExpressionFn } from '../../../utils/common'; - -export interface PluginConfig { - fileType?: string; - exportNameMapping?: Record; - normalizeNameMapping?: Record; - exclude?: string[]; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg = { - fileType: FileType.JSX, - exportNameMapping: {}, - normalizeNameMapping: {}, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - - if (ir.lifeCycles) { - const { lifeCycles } = ir; - const chunks = Object.keys(lifeCycles) - .map((lifeCycleName) => { - // 过滤掉非法数据(有些场景下会误传入空字符串或 null) - if ( - !isJSFunction(lifeCycles[lifeCycleName]) && - !isJSExpressionFn(lifeCycles[lifeCycleName]) && - !isJSExpression(lifeCycles[lifeCycleName]) - ) { - return null; - } - - let normalizeName; - // constructor会取到对象的构造函数 - if (lifeCycleName === 'constructor') { - normalizeName = lifeCycleName; - } else { - normalizeName = cfg.normalizeNameMapping[lifeCycleName] || lifeCycleName; - } - - if (cfg?.exclude?.includes(normalizeName)) { - return null; - } - - const exportName = cfg.exportNameMapping[lifeCycleName] || lifeCycleName; - if (normalizeName === 'constructor') { - return { - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: generateFunction(lifeCycles[lifeCycleName], { isBlock: true }), - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorStart]], - }; - } - - if (normalizeName === 'componentDidMount') { - return { - type: ChunkType.STRING, - fileType: cfg.fileType, - name: REACT_CHUNK_NAME.ClassDidMountContent, - content: generateFunction(lifeCycles[lifeCycleName], { isBlock: true }), - linkAfter: [REACT_CHUNK_NAME.ClassDidMountStart], - }; - } - - if (normalizeName === 'render') { - return { - type: ChunkType.STRING, - fileType: cfg.fileType, - name: REACT_CHUNK_NAME.ClassRenderPre, - content: generateFunction(lifeCycles[lifeCycleName], { isBlock: true }), - linkAfter: [REACT_CHUNK_NAME.ClassRenderStart], - }; - } - - return { - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: generateFunction(lifeCycles[lifeCycleName], { - name: exportName, - isMember: true, - }), - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - }; - }) - .filter((i) => !!i); - - next.chunks.push(...chunks.filter((x): x is ICodeChunk => x !== null)); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/containerMethod.ts b/modules/code-generator/src/plugins/component/react/containerMethod.ts deleted file mode 100644 index fc4a387057..0000000000 --- a/modules/code-generator/src/plugins/component/react/containerMethod.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER } from '../../../const/generator'; - -import { generateFunction } from '../../../utils/jsExpression'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeChunk, - ICodeStruct, - IContainerInfo, -} from '../../../types'; -import { isValidIdentifier } from '../../../utils/validate'; - -export interface PluginConfig { - fileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - const { inStrictMode } = next.contextData; - - if (!ir.methods) { - return next; - } - - // 将这些 methods 都定义到 class 上 - const { methods } = ir; - const chunks = Object.keys(methods).map((methodName) => ({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.InsMethod, - content: generateFunction(methods[methodName], { name: methodName, isMember: true }), - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsMethod]], - })); - next.chunks.push(...chunks); - - // 严格模式下需要将这些方法都挂到上下文中 - if (inStrictMode) { - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: CLASS_DEFINE_CHUNK_NAME.ConstructorContent, - content: Object.keys(ir.methods) - .map((methodName) => - isValidIdentifier(methodName) ? `.${methodName}` : `[${JSON.stringify(methodName)}]`, - ) - .map((method) => `this._context${method} = this${method};`) - .join('\n'), - linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.ConstructorContent]], - }); - } - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/jsx.ts b/modules/code-generator/src/plugins/component/react/jsx.ts deleted file mode 100644 index f8a46c4825..0000000000 --- a/modules/code-generator/src/plugins/component/react/jsx.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - HandlerSet, - ICodeStruct, - IContainerInfo, - IScope, - NodeGeneratorConfig, - PIECE_TYPE, -} from '../../../types'; - -import { REACT_CHUNK_NAME } from './const'; -import { COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { createReactNodeGenerator } from '../../../utils/nodeToJSX'; -import { Scope } from '../../../utils/Scope'; -import { IPublicTypeJSExpression } from '@felce/lowcode-types'; -import { generateExpression } from '../../../utils/jsExpression'; -import { transformJsExpr } from '../../../core/jsx/handlers/transformJsExpression'; -import { transformThis2Context } from '../../../core/jsx/handlers/transformThis2Context'; -import { generateCompositeType } from '../../../utils/compositeType'; - -export interface PluginConfig { - fileType?: string; - nodeTypeMapping?: Record; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg = { - fileType: FileType.JSX, - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - nodeTypeMapping: {} as Record, - ...config, - }; - - const { nodeTypeMapping } = cfg; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const { tolerateEvalErrors = true, evalErrorsHandler = '' } = next.contextData; - - // 这里会将内部的一些子上下文的访问(this.xxx)转换为 __$$context.xxx 的形式 - // 与 Rax 所不同的是,这里不会将最顶层的 this 转换掉 - const customHandlers: HandlerSet = { - expression(input: IPublicTypeJSExpression, scope: IScope, config) { - return transformJsExpr(generateExpression(input, scope), scope, { - dontWrapEval: !(config?.tolerateEvalErrors ?? tolerateEvalErrors), - dontTransformThis2ContextAtRootScope: true, - }); - }, - function(input, scope: IScope) { - return transformThis2Context( - generateCompositeType( - { - type: 'JSFunction', - value: input.value || 'function () {}', - }, - Scope.createRootScope(), - ), - scope, - { ignoreRootScope: true }, - ); - }, - }; - - const generatorPlugins: NodeGeneratorConfig = { - handlers: customHandlers, - tagMapping: (v) => nodeTypeMapping[v] || v, - tolerateEvalErrors, - }; - - if (next.contextData.useRefApi) { - generatorPlugins.attrPlugins = [ - (attrData, scope, pluginCfg, nextFunc) => { - if (attrData.attrName === 'ref') { - return [ - { - name: attrData.attrName, - value: `this._refsManager.linkRef('${attrData.attrValue}')`, - type: PIECE_TYPE.ATTR, - }, - ]; - } - - return nextFunc ? nextFunc(attrData, scope, pluginCfg) : []; - }, - ]; - } - - const generator = createReactNodeGenerator(generatorPlugins); - - const ir = next.ir as IContainerInfo; - const scope: IScope = Scope.createRootScope(); - const jsxContent = generator(ir, scope); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: REACT_CHUNK_NAME.ClassRenderJSX, - content: ` - const __$$context = this._context || this; - const { state } = __$$context; - return ${jsxContent}; - `, - linkAfter: [REACT_CHUNK_NAME.ClassRenderStart, REACT_CHUNK_NAME.ClassRenderPre], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.CustomContent, - content: [ - tolerateEvalErrors && - ` - function __$$eval(expr) { - try { - return expr(); - } catch (error) { - ${evalErrorsHandler} - } - } - - function __$$evalArray(expr) { - const res = __$$eval(expr); - return Array.isArray(res) ? res : []; - } - `, - ` - function __$$createChildContext(oldContext, ext) { - const childContext = { - ...oldContext, - ...ext, - }; - childContext.__proto__ = oldContext; - return childContext; - } - `, - ] - .filter(Boolean) - .join('\n'), - linkAfter: [COMMON_CHUNK_NAME.FileExport], - }); - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/react/reactCommonDeps.ts b/modules/code-generator/src/plugins/component/react/reactCommonDeps.ts deleted file mode 100644 index f42aaf61bd..0000000000 --- a/modules/code-generator/src/plugins/component/react/reactCommonDeps.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, -} from '../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JSX, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` -// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。 -// 例外:react 框架的导出名和各种组件名除外。 -import React from \'react\';`, - linkAfter: [], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/component/style/css.ts b/modules/code-generator/src/plugins/component/style/css.ts deleted file mode 100644 index 4ef94fdd7c..0000000000 --- a/modules/code-generator/src/plugins/component/style/css.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IContainerInfo, -} from '../../../types'; - -export interface PluginConfig { - fileType: string; - moduleFileType: string; -} - -const pluginFactory: BuilderComponentPluginFactory = (config?) => { - const cfg: PluginConfig = { - fileType: FileType.CSS, - moduleFileType: FileType.JSX, - ...config, - }; - - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IContainerInfo; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.fileType, - name: COMMON_CHUNK_NAME.StyleCssContent, - content: ir.css, - linkAfter: [COMMON_CHUNK_NAME.StyleDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: cfg.moduleFileType, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: `import './index.${cfg.fileType}';`, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/constants.ts b/modules/code-generator/src/plugins/project/constants.ts deleted file mode 100644 index 18b286c934..0000000000 --- a/modules/code-generator/src/plugins/project/constants.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../const/generator'; -import { generateCompositeType } from '../../utils/compositeType'; -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IProjectInfo, -} from '../../types'; -import { Scope } from '../../utils/Scope'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IProjectInfo; - const scope = Scope.createRootScope(); - const constantStr = generateCompositeType(ir.constants || {}, scope); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileVarDefine, - content: ` - const __$$constants = (${constantStr}); - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileExport, - content: ` - export default __$$constants; - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - COMMON_CHUNK_NAME.FileMainContent, - ], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/index.ts b/modules/code-generator/src/plugins/project/framework/icejs/index.ts deleted file mode 100644 index e9c8f255fa..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -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/modules/code-generator/src/plugins/project/framework/icejs/plugins/entry.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/entry.ts deleted file mode 100644 index b5dc2d8f8a..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/entry.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, -} from '../../../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.ExternalDepsImport, - content: ` - import { createApp } from 'ice'; - `, - linkAfter: [], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileMainContent, - content: ` - const appConfig = { - app: { - rootId: 'app', - }, - router: { - type: 'hash', - }, - }; - createApp(appConfig); - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - ], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/plugins/entryHtml.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/entryHtml.ts deleted file mode 100644 index e5837a8dde..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/entryHtml.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IProjectInfo, -} from '../../../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IProjectInfo; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.HTML, - name: COMMON_CHUNK_NAME.HtmlContent, - content: ` - - - - - - - ${ir?.meta?.name || 'Ice App'} - - -
- - - `, - linkAfter: [], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/plugins/globalStyle.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/globalStyle.ts deleted file mode 100644 index 3daaeecdc0..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/globalStyle.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IProjectInfo, -} from '../../../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IProjectInfo; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.SCSS, - name: COMMON_CHUNK_NAME.StyleDepsImport, - content: ` - // 引入默认全局样式 - @import '@alifd/next/reset.scss'; - `, - linkAfter: [], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.SCSS, - name: COMMON_CHUNK_NAME.StyleCssContent, - content: ` - body { - -webkit-font-smoothing: antialiased; - } - `, - linkAfter: [COMMON_CHUNK_NAME.StyleDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.SCSS, - name: COMMON_CHUNK_NAME.StyleCssContent, - content: ir.css || '', - linkAfter: [COMMON_CHUNK_NAME.StyleDepsImport], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts deleted file mode 100644 index cc8003c1e7..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { PackageJSON } from '@felce/lowcode-types'; - -import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IProjectInfo, -} from '../../../../../types'; -import { buildDataSourceDependencies } from '../../../../../utils/dataSource'; - -interface IIceJsPackageJSON extends PackageJSON { - ideMode: { - name: string; - }; - iceworks: { - type: string; - adapter: string; - }; - originTemplate: string; -} - -export type IceJsPackageJsonPluginConfig = { - /** - * 数据源配置 - */ - datasourceConfig?: { - /** 数据源引擎的版本 */ - engineVersion?: string; - /** 数据源引擎的包名 */ - enginePackage?: string; - /** 数据源 handlers 的版本 */ - handlersVersion?: { - [key: string]: string; - }; - /** 数据源 handlers 的包名 */ - handlersPackages?: { - [key: string]: string; - }; - }; - /** 包名 */ - packageName?: string; - /** 版本 */ - packageVersion?: string; -}; - -const pluginFactory: BuilderComponentPluginFactory = (cfg) => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IProjectInfo; - - const packageJson: IIceJsPackageJSON = { - name: cfg?.packageName || 'icejs-demo-app', - version: cfg?.packageVersion || '0.1.5', - description: '轻量级模板,使用 JavaScript,仅包含基础的 Layout。', - dependencies: { - moment: '^2.24.0', - react: '^16.4.1', - 'react-dom': '^16.4.1', - 'react-router': '^5.2.1', - '@alifd/theme-design-pro': '^0.x', - 'intl-messageformat': '^9.3.6', - '@ice/store': '^1.4.3', - '@loadable/component': '^5.15.2', - - // 数据源相关的依赖: - ...buildDataSourceDependencies(ir, cfg?.datasourceConfig), - }, - devDependencies: { - '@ice/spec': '^1.0.0', - 'build-plugin-fusion': '^0.1.0', - 'build-plugin-moment-locales': '^0.1.0', - eslint: '^6.0.1', - 'ice.js': '^1.0.0', - stylelint: '^13.2.0', - }, - scripts: { - start: 'icejs start', - build: 'icejs build', - lint: 'npm run eslint && npm run stylelint', - eslint: 'eslint --cache --ext .js,.jsx ./', - stylelint: 'stylelint ./**/*.scss', - }, - ideMode: { - name: 'ice-react', - }, - iceworks: { - type: 'react', - adapter: 'adapter-react-v3', - }, - engines: { - node: '>=8.0.0', - }, - repository: { - type: 'git', - url: 'http://gitlab.xxx.com/msd/leak-scan/tree/master', - }, - private: true, - originTemplate: '@alifd/scaffold-lite-js', - }; - - ir.packages.forEach((packageInfo) => { - packageJson.dependencies[packageInfo.package] = packageInfo.version; - }); - - next.chunks.push({ - type: ChunkType.JSON, - fileType: FileType.JSON, - name: COMMON_CHUNK_NAME.FileMainContent, - content: packageJson, - linkAfter: [], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/plugins/router.ts b/modules/code-generator/src/plugins/project/framework/icejs/plugins/router.ts deleted file mode 100644 index 0e2e8c1f79..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/plugins/router.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { COMMON_CHUNK_NAME } from '../../../../../const/generator'; - -import { - BuilderComponentPlugin, - BuilderComponentPluginFactory, - ChunkType, - FileType, - ICodeStruct, - IRouterInfo, -} from '../../../../../types'; - -const pluginFactory: BuilderComponentPluginFactory = () => { - const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { - const next: ICodeStruct = { - ...pre, - }; - - const ir = next.ir as IRouterInfo; - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.InternalDepsImport, - content: ` - import BasicLayout from '@/layouts/BasicLayout'; - `, - linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileVarDefine, - content: ` - const routerConfig = [ - { - path: '/', - component: BasicLayout, - children: [ - ${ir.routes - .map( - (route) => ` - { - path: '${route.path}', - component: ${route.componentName}, - } - `, - ) - .join(',')} - ], - }, - ]; - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - ], - }); - - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileExport, - content: ` - export default routerConfig; - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.FileUtilDefine, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileMainContent, - ], - }); - - return next; - }; - return plugin; -}; - -export default pluginFactory; diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts deleted file mode 100644 index 1a0af6c022..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'README', - 'md', - ` -## Scaffold Lite - -> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。 - -## 使用 - -\`\`\`bash -# 安装依赖 -$ npm install - -# 启动服务 -$ npm start # visit http://localhost:3333 -\`\`\` - -[More docs](https://ice.work/docs/guide/about). - -## 目录 - -\`\`\`md -├── build/ # 构建产物 -├── mock/ # 本地模拟数据 -│ ├── index.[j,t]s -├── public/ -│ ├── index.html # 应用入口 HTML -│ └── favicon.png # Favicon -├── src/ # 源码路径 -│ ├── components/ # 自定义业务组件 -│ │ └── Guide/ -│ │ ├── index.[j,t]sx -│ │ ├── index.module.scss -│ ├── layouts/ # 布局组件 -│ │ └── BasicLayout/ -│ │ ├── index.[j,t]sx -│ │ └── index.module.scss -│ ├── pages/ # 页面 -│ │ └── Home/ # home 页面,约定路由转成小写 -│ │ ├── components/ # 页面级自定义业务组件 -│ │ ├── models.[j,t]sx # 页面级数据状态 -│ │ ├── index.[j,t]sx # 页面入口 -│ │ └── index.module.scss # 页面样式文件 -│ ├── configs/ # [可选] 配置文件 -│ │ └── menu.[j,t]s # [可选] 菜单配置 -│ ├── models/ # [可选] 应用级数据状态 -│ │ └── user.[j,t]s -│ ├── utils/ # [可选] 工具库 -│ ├── global.scss # 全局样式 -│ ├── routes.[j,t]s # 路由配置 -│ └── app.[j,t]s[x] # 应用入口脚本 -├── build.json # 工程配置 -├── README.md -├── package.json -├── .editorconfig -├── .eslintignore -├── .eslintrc.[j,t]s -├── .gitignore -├── .stylelintignore -├── .stylelintrc.[j,t]s -├── .gitignore -└── [j,t]sconfig.json -\`\`\` - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts deleted file mode 100644 index 64c69e8c88..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; - -export default function getFile(): [string[], ResultFile] { - return [ - [], - { - name: 'abc', - ext: 'json', - content: ` -{ - "type": "ice-app", - "builder": "@ali/builder-ice-app" -} - `, - }, - ]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts deleted file mode 100644 index 38baba44ad..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; - -export default function getFile(): [string[], ResultFile] { - return [ - [], - { - name: 'build', - ext: 'json', - content: ` -{ - "entry": "src/app.js", - "plugins": [ - [ - "build-plugin-fusion", - { - "themePackage": "@alifd/theme-design-pro" - } - ], - [ - "build-plugin-moment-locales", - { - "locales": [ - "zh-cn" - ] - } - ] - ] -} - `, - }, - ]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts deleted file mode 100644 index 047a28d4c6..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.editorconfig', - '', - ` -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts deleted file mode 100644 index 6f217227b3..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.eslintignore', - '', - ` -# 忽略目录 -build/ -tests/ -demo/ -.ice/ - -# node 覆盖率文件 -coverage/ - -# 忽略文件 -**/*-min.js -**/*.min.js - -package-lock.json -yarn.lock - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts deleted file mode 100644 index 2d2838991f..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.eslintrc', - 'js', - ` -const { eslint } = require('@ice/spec'); - -module.exports = eslint; - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts deleted file mode 100644 index 5f93665286..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.gitignore', - '', - ` -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -node_modules/ - -# production -build/ -dist/ -tmp/ -lib/ - -# misc -.idea/ -.happypack -.DS_Store -*.swp -*.dia~ -.ice - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -index.module.scss.d.ts - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts deleted file mode 100644 index a859c38376..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'jsconfig', - 'json', - ` -{ - "compilerOptions": { - "baseUrl": ".", - "jsx": "react", - "paths": { - "@/*": ["./src/*"], - "ice": [".ice/index.ts"], - "ice/*": [".ice/pages/*"] - } - } -} - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts deleted file mode 100644 index 18e55fd6ed..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.prettierignore', - '', - ` -build/ -tests/ -demo/ -.ice/ -coverage/ -**/*-min.js -**/*.min.js -package-lock.json -yarn.lock - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts deleted file mode 100644 index ae48aaaf17..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - '.prettierrc', - 'js', - ` -const { prettier } = require('@ice/spec'); - -module.exports = prettier; - `, - ); - - return [[], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts deleted file mode 100644 index ae5b302ba1..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'jsx', - ` -import React from 'react'; -import styles from './index.module.scss'; - -export default function Footer() { - return ( -

- Alibaba Fusion -
- © 2019-现在 Alibaba Fusion & ICE -

- ); -} - `, - ); - - return [['src', 'layouts', 'BasicLayout', 'components', 'Footer'], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts deleted file mode 100644 index 7204e9903c..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'module.scss', - ` -.footer { - line-height: 20px; - text-align: center; -} - -.logo { - font-weight: bold; - font-size: 16px; -} - -.copyright { - font-size: 12px; -} - `, - ); - - return [['src', 'layouts', 'BasicLayout', 'components', 'Footer'], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts deleted file mode 100644 index bce1af8443..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'jsx', - ` -import React from 'react'; -import { Link } from 'ice'; -import styles from './index.module.scss'; - -export default function Logo({ image, text, url }) { - return ( -
- - {image && logo} - {text} - -
- ); -} - `, - ); - - return [['src', 'layouts', 'BasicLayout', 'components', 'Logo'], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts deleted file mode 100644 index 50fa8d001c..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'module.scss', - ` -.logo{ - display: flex; - align-items: center; - justify-content: center; - color: $color-text1-1; - font-weight: bold; - font-size: 14px; - line-height: 22px; - - &:visited, &:link { - color: $color-text1-1; - } - - img { - height: 24px; - margin-right: 10px; - } -} - `, - ); - - return [['src', 'layouts', 'BasicLayout', 'components', 'Logo'], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts deleted file mode 100644 index 02b8791bd1..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'jsx', - ` -import React from 'react'; -import PropTypes from 'prop-types'; -import { Link, withRouter } from 'ice'; -import { Nav } from '@alifd/next'; -import { asideMenuConfig } from '../../menuConfig'; - -const { SubNav } = Nav; -const NavItem = Nav.Item; - -function getNavMenuItems(menusData) { - if (!menusData) { - return []; - } - - return menusData - .filter(item => item.name && !item.hideInMenu) - .map((item, index) => getSubMenuOrItem(item, index)); -} - -function getSubMenuOrItem(item, index) { - if (item.children && item.children.some(child => child.name)) { - const childrenItems = getNavMenuItems(item.children); - - if (childrenItems && childrenItems.length > 0) { - const subNav = ( - - {childrenItems} - - ); - return subNav; - } - - return null; - } - - const navItem = ( - - {item.name} - - ); - return navItem; -} - -const Navigation = (props, context) => { - const { location } = props; - const { pathname } = location; - const { isCollapse } = context; - return ( - - ); -}; - -Navigation.contextTypes = { - isCollapse: PropTypes.bool, -}; -const PageNav = withRouter(Navigation); -export default PageNav; - `, - ); - - return [['src', 'layouts', 'BasicLayout', 'components', 'PageNav'], file]; -} diff --git a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts b/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts deleted file mode 100644 index c544e96101..0000000000 --- a/modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { ResultFile } from '@felce/lowcode-types'; -import { createResultFile } from '../../../../../../../../../utils/resultHelper'; - -export default function getFile(): [string[], ResultFile] { - const file = createResultFile( - 'index', - 'jsx', - ` -import React, { useState } from 'react'; -import { Shell, ConfigProvider } from '@alifd/next'; -import PageNav from './components/PageNav'; -import Logo from './components/Logo'; -import Footer from './components/Footer'; - -(function() { - const throttle = function(type, name, obj = window) { - let running = false; - - const func = () => { - if (running) { - return; - } - - running = true; - requestAnimationFrame(() => { - obj.dispatchEvent(new CustomEvent(name)); - running = false; - }); - }; - - obj.addEventListener(type, func); - }; - - throttle('resize', 'optimizedResize'); -})(); - -export default function BasicLayout({ children }) { - const getDevice = width => { - const isPhone = - typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi); - - if (width < 680 || isPhone) { - return 'phone'; - } - if (width < 1280 && width > 680) { - return 'tablet'; - } - return 'desktop'; - }; - - const [device, setDevice] = useState(getDevice(NaN)); - window.addEventListener('optimizedResize', e => { - setDevice(getDevice(e && e.target && e.target.innerWidth)); - }); - return ( - - - - - - - - - - - - {children} - -