Full Code of alibaba/lowcode-engine for AI

main f6305c228495 cached
2530 files
5.4 MB
1.6M tokens
4909 symbols
1 requests
Download .txt
Showing preview only (6,255K chars total). Download the full file or copy to clipboard to get everything.
Repository: alibaba/lowcode-engine
Branch: main
Commit: f6305c228495
Files: 2530
Total size: 5.4 MB

Directory structure:
gitextract_4erw24n6/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   └── bug-report.md
│   └── workflows/
│       ├── check base branch.yml
│       ├── ci.yml
│       ├── cov packages.yml
│       ├── help wanted.yml
│       ├── insufficient information.yml
│       ├── pr comment by chatgpt.yml
│       ├── pre build.yml
│       ├── publish docs.yml
│       ├── publish engine beta.yml
│       ├── publish engine.yml
│       ├── stale.yml
│       ├── test modules.yml
│       └── test packages.yml
├── .gitignore
├── .prettierrc.js
├── .stylelintignore
├── .stylelintrc.js
├── CONTRIBUTOR.md
├── LICENSE
├── abc.json
├── babel.config.js
├── commitlint.config.js
├── deploy-space/
│   ├── lerna.json
│   ├── package.json
│   ├── static/
│   │   ├── index.html
│   │   └── preview.html
│   └── tsconfig.json
├── docs/
│   ├── .gitignore
│   ├── README.md
│   ├── babel.config.js
│   ├── community/
│   │   └── issue.md
│   ├── config/
│   │   ├── navbar.js
│   │   ├── sidebars.js
│   │   └── sidebarsCommunity.js
│   ├── docs/
│   │   ├── api/
│   │   │   ├── canvas.md
│   │   │   ├── command.md
│   │   │   ├── common.md
│   │   │   ├── commonUI.md
│   │   │   ├── config.md
│   │   │   ├── configOptions.md
│   │   │   ├── event.md
│   │   │   ├── hotkey.md
│   │   │   ├── index.md
│   │   │   ├── init.md
│   │   │   ├── logger.md
│   │   │   ├── material.md
│   │   │   ├── model/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── clipboard.md
│   │   │   │   ├── component-meta.md
│   │   │   │   ├── detecting.md
│   │   │   │   ├── document-model.md
│   │   │   │   ├── dragon.md
│   │   │   │   ├── drop-location.md
│   │   │   │   ├── editor-view.md
│   │   │   │   ├── history.md
│   │   │   │   ├── modal-nodes-manager.md
│   │   │   │   ├── node-children.md
│   │   │   │   ├── node.md
│   │   │   │   ├── plugin-instance.md
│   │   │   │   ├── prop.md
│   │   │   │   ├── props.md
│   │   │   │   ├── resource.md
│   │   │   │   ├── selection.md
│   │   │   │   ├── setting-field.md
│   │   │   │   ├── setting-top-entry.md
│   │   │   │   ├── simulatorRender.md
│   │   │   │   └── window.md
│   │   │   ├── plugins.md
│   │   │   ├── project.md
│   │   │   ├── setters.md
│   │   │   ├── simulatorHost.md
│   │   │   ├── skeleton.md
│   │   │   └── workspace.md
│   │   ├── article/
│   │   │   └── index.md
│   │   ├── demoUsage/
│   │   │   ├── advanced/
│   │   │   │   ├── _category_.json
│   │   │   │   └── hotkey.md
│   │   │   ├── appendix/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── api.md
│   │   │   │   └── loop.md
│   │   │   ├── intro.md
│   │   │   ├── makeStuff/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── dialog.md
│   │   │   │   └── table.md
│   │   │   └── panels/
│   │   │       ├── _category_.json
│   │   │       ├── canvas.md
│   │   │       ├── code.md
│   │   │       ├── component.md
│   │   │       ├── datasource.md
│   │   │       └── settings.md
│   │   ├── faq/
│   │   │   ├── faq001.md
│   │   │   ├── faq002.md
│   │   │   ├── faq003.md
│   │   │   ├── faq004.md
│   │   │   ├── faq005.md
│   │   │   ├── faq006.md
│   │   │   ├── faq007.md
│   │   │   ├── faq008.md
│   │   │   ├── faq009.md
│   │   │   ├── faq010.md
│   │   │   ├── faq011.md
│   │   │   ├── faq012.md
│   │   │   ├── faq013.md
│   │   │   ├── faq014.md
│   │   │   ├── faq015.md
│   │   │   ├── faq016.md
│   │   │   ├── faq017.md
│   │   │   ├── faq018.md
│   │   │   ├── faq019.md
│   │   │   ├── faq020.md
│   │   │   ├── faq021.md
│   │   │   ├── faq022.md
│   │   │   ├── faq023.md
│   │   │   ├── faq024.md
│   │   │   └── index.md
│   │   ├── guide/
│   │   │   ├── appendix/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── glossary.md
│   │   │   │   ├── metaSpec.md
│   │   │   │   ├── npms.md
│   │   │   │   ├── repos.md
│   │   │   │   ├── setterDetails/
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   ├── array.md
│   │   │   │   │   ├── behavior.md
│   │   │   │   │   ├── bool.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── event.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── mixed.md
│   │   │   │   │   ├── number.md
│   │   │   │   │   ├── radioGroup.md
│   │   │   │   │   ├── select.md
│   │   │   │   │   ├── slot.md
│   │   │   │   │   ├── string.md
│   │   │   │   │   ├── style.md
│   │   │   │   │   ├── textArea.md
│   │   │   │   │   └── variable.md
│   │   │   │   └── setters.md
│   │   │   ├── create/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── useEditor.md
│   │   │   │   └── useRenderer.md
│   │   │   ├── design/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── datasourceEngine.md
│   │   │   │   ├── editor.md
│   │   │   │   ├── generator.md
│   │   │   │   ├── materialParser.md
│   │   │   │   ├── renderer.md
│   │   │   │   ├── setter.md
│   │   │   │   ├── specs.md
│   │   │   │   └── summary.md
│   │   │   ├── expand/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── editor/
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   ├── cli.md
│   │   │   │   │   ├── graph.md
│   │   │   │   │   ├── material.md
│   │   │   │   │   ├── metaSpec.md
│   │   │   │   │   ├── parts/
│   │   │   │   │   │   ├── _category_.json
│   │   │   │   │   │   ├── partsIntro.md
│   │   │   │   │   │   ├── partsassets.md
│   │   │   │   │   │   ├── partslcc.md
│   │   │   │   │   │   └── prototype.md
│   │   │   │   │   ├── pluginContextMenu.md
│   │   │   │   │   ├── pluginWidget.md
│   │   │   │   │   ├── setter.md
│   │   │   │   │   ├── summary.md
│   │   │   │   │   └── theme.md
│   │   │   │   └── runtime/
│   │   │   │       ├── _category_.json
│   │   │   │       ├── codeGeneration.md
│   │   │   │       └── renderer.md
│   │   │   └── quickStart/
│   │   │       ├── _category_.json
│   │   │       ├── demo.md
│   │   │       ├── intro.md
│   │   │       └── start.md
│   │   ├── participate/
│   │   │   ├── code-specification.md
│   │   │   ├── flow.md
│   │   │   ├── index.md
│   │   │   └── meet.md
│   │   ├── specs/
│   │   │   ├── assets-spec.md
│   │   │   ├── lowcode-spec.md
│   │   │   └── material-spec.md
│   │   └── video/
│   │       └── index.md
│   ├── docusaurus.config.js
│   ├── package.json
│   ├── scripts/
│   │   ├── getDocsFromDir.js
│   │   └── sync-oss.js
│   ├── src/
│   │   ├── css/
│   │   │   └── custom.css
│   │   └── pages/
│   │       ├── index-old.tsx
│   │       ├── index.module.css
│   │       ├── index.tsx
│   │       └── markdown-page.md
│   └── tsconfig.json
├── index.ts
├── lerna.json
├── modules/
│   ├── code-generator/
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .versionrc
│   │   ├── CHANGELOG.md
│   │   ├── CONTRIBUTING.md
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── bin/
│   │   │   └── lowcode-code-generator.js
│   │   ├── example-schema.json
│   │   ├── example-schema.json5
│   │   ├── jest.config.js
│   │   ├── jest.setup.js
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   ├── build-cli.js
│   │   │   ├── build-standalone-loader.js
│   │   │   ├── build-standalone-worker.js
│   │   │   ├── build-standalone.js
│   │   │   ├── build-template-static-files.js
│   │   │   ├── build-types
│   │   │   ├── build.js
│   │   │   ├── move-files-to-build-dest.js
│   │   │   ├── run-demo-project
│   │   │   └── test-standalone.js
│   │   ├── src/
│   │   │   ├── analyzer/
│   │   │   │   └── componentAnalyzer.ts
│   │   │   ├── cli/
│   │   │   │   ├── index.ts
│   │   │   │   ├── init-solution.ts
│   │   │   │   ├── run.ts
│   │   │   │   └── solutions/
│   │   │   │       └── example-solution.ts
│   │   │   ├── config/
│   │   │   │   └── env.ts
│   │   │   ├── const/
│   │   │   │   ├── file.ts
│   │   │   │   ├── generator.ts
│   │   │   │   └── index.ts
│   │   │   ├── core/
│   │   │   │   └── jsx/
│   │   │   │       ├── handlers/
│   │   │   │       │   ├── transformJsExpression.ts
│   │   │   │       │   └── transformThis2Context.ts
│   │   │   │       └── util/
│   │   │   │           ├── isLiteralAtomicExpr.ts
│   │   │   │           └── isSimpleStraightLiteral.ts
│   │   │   ├── generator/
│   │   │   │   ├── ChunkBuilder.ts
│   │   │   │   ├── CodeBuilder.ts
│   │   │   │   ├── ModuleBuilder.ts
│   │   │   │   └── ProjectBuilder.ts
│   │   │   ├── index.ts
│   │   │   ├── parser/
│   │   │   │   └── SchemaParser.ts
│   │   │   ├── plugins/
│   │   │   │   ├── common/
│   │   │   │   │   ├── esmodule.ts
│   │   │   │   │   ├── requireUtils.ts
│   │   │   │   │   └── styleImport.ts
│   │   │   │   ├── component/
│   │   │   │   │   ├── rax/
│   │   │   │   │   │   ├── commonDeps.ts
│   │   │   │   │   │   ├── const.ts
│   │   │   │   │   │   ├── containerClass.ts
│   │   │   │   │   │   ├── containerInitState.ts
│   │   │   │   │   │   ├── containerInjectContext.ts
│   │   │   │   │   │   ├── containerInjectDataSourceEngine.ts
│   │   │   │   │   │   ├── containerInjectUtils.ts
│   │   │   │   │   │   ├── containerLifeCycle.ts
│   │   │   │   │   │   ├── containerMethods.ts
│   │   │   │   │   │   └── jsx.ts
│   │   │   │   │   ├── react/
│   │   │   │   │   │   ├── const.ts
│   │   │   │   │   │   ├── containerClass.ts
│   │   │   │   │   │   ├── containerInitState.ts
│   │   │   │   │   │   ├── containerInjectConstants.ts
│   │   │   │   │   │   ├── containerInjectContext.ts
│   │   │   │   │   │   ├── containerInjectDataSourceEngine.ts
│   │   │   │   │   │   ├── containerInjectI18n.ts
│   │   │   │   │   │   ├── containerInjectUtils.ts
│   │   │   │   │   │   ├── containerLifeCycle.ts
│   │   │   │   │   │   ├── containerMethod.ts
│   │   │   │   │   │   ├── jsx.ts
│   │   │   │   │   │   └── reactCommonDeps.ts
│   │   │   │   │   └── style/
│   │   │   │   │       └── css.ts
│   │   │   │   └── project/
│   │   │   │       ├── constants.ts
│   │   │   │       ├── framework/
│   │   │   │       │   ├── icejs/
│   │   │   │       │   │   ├── index.ts
│   │   │   │       │   │   ├── plugins/
│   │   │   │       │   │   │   ├── entry.ts
│   │   │   │       │   │   │   ├── entryHtml.ts
│   │   │   │       │   │   │   ├── globalStyle.ts
│   │   │   │       │   │   │   ├── packageJSON.ts
│   │   │   │       │   │   │   └── router.ts
│   │   │   │       │   │   └── template/
│   │   │   │       │   │       ├── files/
│   │   │   │       │   │       │   ├── README.md.ts
│   │   │   │       │   │       │   ├── abc.json.ts
│   │   │   │       │   │       │   ├── build.json.ts
│   │   │   │       │   │       │   ├── editorconfig.ts
│   │   │   │       │   │       │   ├── eslintignore.ts
│   │   │   │       │   │       │   ├── eslintrc.js.ts
│   │   │   │       │   │       │   ├── gitignore.ts
│   │   │   │       │   │       │   ├── jsconfig.json.ts
│   │   │   │       │   │       │   ├── prettierignore.ts
│   │   │   │       │   │       │   ├── prettierrc.js.ts
│   │   │   │       │   │       │   ├── src/
│   │   │   │       │   │       │   │   └── layouts/
│   │   │   │       │   │       │   │       └── BasicLayout/
│   │   │   │       │   │       │   │           ├── components/
│   │   │   │       │   │       │   │           │   ├── Footer/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   ├── Logo/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   └── PageNav/
│   │   │   │       │   │       │   │           │       └── index.jsx.ts
│   │   │   │       │   │       │   │           ├── index.jsx.ts
│   │   │   │       │   │       │   │           └── menuConfig.js.ts
│   │   │   │       │   │       │   ├── stylelintignore.ts
│   │   │   │       │   │       │   ├── stylelintrc.js.ts
│   │   │   │       │   │       │   └── tsconfig.json.ts
│   │   │   │       │   │       ├── index.ts
│   │   │   │       │   │       └── static-files.ts
│   │   │   │       │   ├── icejs3/
│   │   │   │       │   │   ├── index.ts
│   │   │   │       │   │   ├── plugins/
│   │   │   │       │   │   │   ├── appConfig.ts
│   │   │   │       │   │   │   ├── buildConfig.ts
│   │   │   │       │   │   │   ├── globalStyle.ts
│   │   │   │       │   │   │   ├── layout.ts
│   │   │   │       │   │   │   └── packageJSON.ts
│   │   │   │       │   │   └── template/
│   │   │   │       │   │       ├── files/
│   │   │   │       │   │       │   ├── README.md.ts
│   │   │   │       │   │       │   ├── browserslistrc.ts
│   │   │   │       │   │       │   ├── document.ts
│   │   │   │       │   │       │   ├── gitignore.ts
│   │   │   │       │   │       │   ├── src/
│   │   │   │       │   │       │   │   └── layouts/
│   │   │   │       │   │       │   │       └── BasicLayout/
│   │   │   │       │   │       │   │           ├── components/
│   │   │   │       │   │       │   │           │   ├── Footer/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   ├── Logo/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   └── PageNav/
│   │   │   │       │   │       │   │           │       └── index.jsx.ts
│   │   │   │       │   │       │   │           ├── index.jsx.ts
│   │   │   │       │   │       │   │           └── menuConfig.js.ts
│   │   │   │       │   │       │   ├── tsconfig.ts
│   │   │   │       │   │       │   └── typings.ts
│   │   │   │       │   │       ├── index.ts
│   │   │   │       │   │       └── static-files.ts
│   │   │   │       │   └── rax/
│   │   │   │       │       ├── index.ts
│   │   │   │       │       ├── plugins/
│   │   │   │       │       │   ├── appConfig.ts
│   │   │   │       │       │   ├── buildConfig.ts
│   │   │   │       │       │   ├── entry.ts
│   │   │   │       │       │   ├── entryDocument.ts
│   │   │   │       │       │   ├── globalStyle.ts
│   │   │   │       │       │   └── packageJSON.ts
│   │   │   │       │       ├── template/
│   │   │   │       │       │   ├── files/
│   │   │   │       │       │   │   ├── .eslintignore.ts
│   │   │   │       │       │   │   ├── .eslintrc.js.ts
│   │   │   │       │       │   │   ├── .gitignore.ts
│   │   │   │       │       │   │   ├── .prettierignore.ts
│   │   │   │       │       │   │   ├── .prettierrc.js.ts
│   │   │   │       │       │   │   ├── .stylelintignore.ts
│   │   │   │       │       │   │   ├── .stylelintrc.js.ts
│   │   │   │       │       │   │   ├── README.md.ts
│   │   │   │       │       │   │   ├── jsconfig.json.ts
│   │   │   │       │       │   │   └── tsconfig.json.ts
│   │   │   │       │       │   ├── index.ts
│   │   │   │       │       │   └── static-files.ts
│   │   │   │       │       └── types/
│   │   │   │       │           └── RaxFrameworkOptions.ts
│   │   │   │       ├── i18n.ts
│   │   │   │       └── utils.ts
│   │   │   ├── polyfills/
│   │   │   │   └── buffer.ts
│   │   │   ├── postprocessor/
│   │   │   │   ├── index.ts
│   │   │   │   └── prettier/
│   │   │   │       └── index.ts
│   │   │   ├── publisher/
│   │   │   │   ├── disk/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── utils.ts
│   │   │   │   └── zip/
│   │   │   │       ├── index.ts
│   │   │   │       └── utils.ts
│   │   │   ├── solutions/
│   │   │   │   ├── icejs.ts
│   │   │   │   ├── icejs3.ts
│   │   │   │   └── rax-app.ts
│   │   │   ├── standalone-loader.ts
│   │   │   ├── standalone-worker.ts
│   │   │   ├── standalone.ts
│   │   │   ├── types/
│   │   │   │   ├── analyze.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── deps.ts
│   │   │   │   ├── error.ts
│   │   │   │   ├── file.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── intermediate.ts
│   │   │   │   ├── jsx.ts
│   │   │   │   └── publisher.ts
│   │   │   ├── typings.d.ts
│   │   │   └── utils/
│   │   │       ├── OrderedSet.ts
│   │   │       ├── Scope.ts
│   │   │       ├── ScopeBindings.ts
│   │   │       ├── aopHelper.ts
│   │   │       ├── common.ts
│   │   │       ├── compositeType.ts
│   │   │       ├── dataSource.ts
│   │   │       ├── debug.ts
│   │   │       ├── encodeJsxAttrString.ts
│   │   │       ├── errors.ts
│   │   │       ├── expressionParser.ts
│   │   │       ├── format.ts
│   │   │       ├── index.ts
│   │   │       ├── jsExpression.ts
│   │   │       ├── jsSlot.ts
│   │   │       ├── jsxHelpers.ts
│   │   │       ├── nodeToJSX.ts
│   │   │       ├── pathHelper.ts
│   │   │       ├── resultHelper.ts
│   │   │       ├── schema.ts
│   │   │       ├── templateHelper.ts
│   │   │       ├── theme.ts
│   │   │       ├── validate.ts
│   │   │       └── version.ts
│   │   ├── standalone/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── standalone-loader/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── standalone-worker/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── static-files/
│   │   │   └── rax/
│   │   │       ├── .eslintignore.template
│   │   │       ├── .eslintrc.js.template
│   │   │       ├── .gitignore.template
│   │   │       ├── .prettierignore.template
│   │   │       ├── .prettierrc.js.template
│   │   │       ├── .stylelintignore.template
│   │   │       ├── .stylelintrc.js.template
│   │   │       ├── README.md.template
│   │   │       ├── jsconfig.json.template
│   │   │       └── tsconfig.json.template
│   │   ├── tests/
│   │   │   ├── bugfix/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── i18n-with-params.schema.json
│   │   │   │   ├── i18n-with-params.test.ts
│   │   │   │   ├── icejs-import-wrong-naming.schema.json
│   │   │   │   ├── icejs-import-wrong-naming.test.ts
│   │   │   │   ├── icejs-js-function1.schema.json
│   │   │   │   ├── icejs-js-function1.test.ts
│   │   │   │   ├── icejs-missing-imports-1.schema.json
│   │   │   │   ├── icejs-missing-imports-1.test.ts
│   │   │   │   ├── icejs-package-json-dependencies.schema.json
│   │   │   │   ├── icejs-package-json-dependencies.test.ts
│   │   │   │   ├── icejs-page-map1.schema.json
│   │   │   │   ├── icejs-page-map1.test.ts
│   │   │   │   ├── page-element1.schema.json
│   │   │   │   ├── page-element1.test.ts
│   │   │   │   ├── page-element2.schema.json
│   │   │   │   ├── page-element2.test.ts
│   │   │   │   ├── strict-mode-context-1.schema.json
│   │   │   │   ├── strict-mode-context-1.test.ts
│   │   │   │   ├── tolerate-eval-errors-1-loop.schema.json
│   │   │   │   ├── tolerate-eval-errors-1-loop.test.ts
│   │   │   │   ├── tolerate-eval-errors-2-nested-loop.schema.json
│   │   │   │   └── tolerate-eval-errors-2-nested-loop.test.ts
│   │   │   ├── cli.test.ts
│   │   │   ├── fixtures/
│   │   │   │   └── test-cases/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── icejs3-app/
│   │   │   │       │   ├── demo1/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Aaaa/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo3/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo4/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo5/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo6-literal-condition/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo7-literal-condition2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo8-datasource-prop/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Example/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo9-datasource-engine/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── $/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo_10-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo_11-jsslot-2/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .browserslistrc
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── ice.config.mts
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       └── src/
│   │   │   │       │       │           ├── app.ts
│   │   │   │       │       │           ├── constants.js
│   │   │   │       │       │           ├── document.tsx
│   │   │   │       │       │           ├── global.scss
│   │   │   │       │       │           ├── i18n.js
│   │   │   │       │       │           ├── layouts/
│   │   │   │       │       │           │   └── BasicLayout/
│   │   │   │       │       │           │       ├── components/
│   │   │   │       │       │           │       │   ├── Footer/
│   │   │   │       │       │           │       │   │   ├── index.jsx
│   │   │   │       │       │           │       │   │   └── index.module.scss
│   │   │   │       │       │           │       │   ├── Logo/
│   │   │   │       │       │           │       │   │   ├── index.jsx
│   │   │   │       │       │           │       │   │   └── index.module.scss
│   │   │   │       │       │           │       │   └── PageNav/
│   │   │   │       │       │           │       │       └── index.jsx
│   │   │   │       │       │           │       ├── index.jsx
│   │   │   │       │       │           │       └── menuConfig.js
│   │   │   │       │       │           ├── pages/
│   │   │   │       │       │           │   ├── Test/
│   │   │   │       │       │           │   │   ├── index.css
│   │   │   │       │       │           │   │   └── index.jsx
│   │   │   │       │       │           │   └── layout.jsx
│   │   │   │       │       │           ├── typings.d.ts
│   │   │   │       │       │           └── utils.js
│   │   │   │       │       └── schema.json5
│   │   │   │       ├── rax-app/
│   │   │   │       │   ├── demo01/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo02/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo03/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   ├── Detail/
│   │   │   │       │   │   │       │   │   │   ├── index.css
│   │   │   │       │   │   │       │   │   │   └── index.jsx
│   │   │   │       │   │   │       │   │   ├── Home/
│   │   │   │       │   │   │       │   │   │   ├── index.css
│   │   │   │       │   │   │       │   │   │   └── index.jsx
│   │   │   │       │   │   │       │   │   └── List/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo04/
│   │   │   │       │   │   ├── README.md
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo05/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo06-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo07-newline-in-props/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo08-jsslot-with-multiple-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo09-jsslot-with-conditional-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo10-jsslot-with-loop-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo11-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Aaaa/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo12-refs/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo13-datasource-prop/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .eslintignore
│   │   │   │       │       │       ├── .eslintrc.js
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── .prettierignore
│   │   │   │       │       │       ├── .prettierrc.js
│   │   │   │       │       │       ├── .stylelintignore
│   │   │   │       │       │       ├── .stylelintrc.js
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── build.json
│   │   │   │       │       │       ├── jsconfig.json
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       ├── src/
│   │   │   │       │       │       │   ├── app.js
│   │   │   │       │       │       │   ├── app.json
│   │   │   │       │       │       │   ├── constants.js
│   │   │   │       │       │       │   ├── document/
│   │   │   │       │       │       │   │   └── index.jsx
│   │   │   │       │       │       │   ├── global.css
│   │   │   │       │       │       │   ├── i18n.js
│   │   │   │       │       │       │   ├── pages/
│   │   │   │       │       │       │   │   └── Example/
│   │   │   │       │       │       │   │       ├── index.css
│   │   │   │       │       │       │   │       └── index.jsx
│   │   │   │       │       │       │   └── utils.js
│   │   │   │       │       │       └── tsconfig.json
│   │   │   │       │       └── schema.json5
│   │   │   │       ├── react-app/
│   │   │   │       │   ├── demo1/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Aaaa/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo3/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo4/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo5/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo6-literal-condition/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo7-literal-condition2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo8-datasource-prop/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Example/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo9-datasource-engine/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── $/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo_10-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo_11-jsslot-2/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .editorconfig
│   │   │   │       │       │       ├── .eslintignore
│   │   │   │       │       │       ├── .eslintrc.js
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── .prettierignore
│   │   │   │       │       │       ├── .prettierrc.js
│   │   │   │       │       │       ├── .stylelintignore
│   │   │   │       │       │       ├── .stylelintrc.js
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── abc.json
│   │   │   │       │       │       ├── build.json
│   │   │   │       │       │       ├── jsconfig.json
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       ├── public/
│   │   │   │       │       │       │   └── index.html
│   │   │   │       │       │       ├── src/
│   │   │   │       │       │       │   ├── app.js
│   │   │   │       │       │       │   ├── constants.js
│   │   │   │       │       │       │   ├── global.scss
│   │   │   │       │       │       │   ├── i18n.js
│   │   │   │       │       │       │   ├── layouts/
│   │   │   │       │       │       │   │   └── BasicLayout/
│   │   │   │       │       │       │   │       ├── components/
│   │   │   │       │       │       │   │       │   ├── Footer/
│   │   │   │       │       │       │   │       │   │   ├── index.jsx
│   │   │   │       │       │       │   │       │   │   └── index.module.scss
│   │   │   │       │       │       │   │       │   ├── Logo/
│   │   │   │       │       │       │   │       │   │   ├── index.jsx
│   │   │   │       │       │       │   │       │   │   └── index.module.scss
│   │   │   │       │       │       │   │       │   └── PageNav/
│   │   │   │       │       │       │   │       │       └── index.jsx
│   │   │   │       │       │       │   │       ├── index.jsx
│   │   │   │       │       │       │   │       └── menuConfig.js
│   │   │   │       │       │       │   ├── pages/
│   │   │   │       │       │       │   │   └── Test/
│   │   │   │       │       │       │   │       ├── index.css
│   │   │   │       │       │       │   │       └── index.jsx
│   │   │   │       │       │       │   ├── routes.js
│   │   │   │       │       │       │   └── utils.js
│   │   │   │       │       │       └── tsconfig.json
│   │   │   │       │       └── schema.json5
│   │   │   │       └── react-module/
│   │   │   │           └── demo1/
│   │   │   │               ├── expected/
│   │   │   │               │   └── demo-project/
│   │   │   │               │       ├── .editorconfig
│   │   │   │               │       ├── .eslintignore
│   │   │   │               │       ├── .eslintrc.js
│   │   │   │               │       ├── .gitignore
│   │   │   │               │       ├── .prettierignore
│   │   │   │               │       ├── .prettierrc.js
│   │   │   │               │       ├── .stylelintignore
│   │   │   │               │       ├── .stylelintrc.js
│   │   │   │               │       ├── README.md
│   │   │   │               │       ├── abc.json
│   │   │   │               │       ├── build.json
│   │   │   │               │       ├── jsconfig.json
│   │   │   │               │       ├── package.json
│   │   │   │               │       ├── public/
│   │   │   │               │       │   └── index.html
│   │   │   │               │       ├── src/
│   │   │   │               │       │   ├── app.js
│   │   │   │               │       │   ├── constants.js
│   │   │   │               │       │   ├── global.scss
│   │   │   │               │       │   ├── i18n.js
│   │   │   │               │       │   ├── layouts/
│   │   │   │               │       │   │   └── BasicLayout/
│   │   │   │               │       │   │       ├── components/
│   │   │   │               │       │   │       │   ├── Footer/
│   │   │   │               │       │   │       │   │   ├── index.jsx
│   │   │   │               │       │   │       │   │   └── index.module.scss
│   │   │   │               │       │   │       │   ├── Logo/
│   │   │   │               │       │   │       │   │   ├── index.jsx
│   │   │   │               │       │   │       │   │   └── index.module.scss
│   │   │   │               │       │   │       │   └── PageNav/
│   │   │   │               │       │   │       │       └── index.jsx
│   │   │   │               │       │   │       ├── index.jsx
│   │   │   │               │       │   │       └── menuConfig.js
│   │   │   │               │       │   ├── pages/
│   │   │   │               │       │   │   └── Test/
│   │   │   │               │       │   │       ├── index.css
│   │   │   │               │       │   │       └── index.jsx
│   │   │   │               │       │   ├── routes.js
│   │   │   │               │       │   └── utils.js
│   │   │   │               │       └── tsconfig.json
│   │   │   │               └── schema.json5
│   │   │   ├── helpers/
│   │   │   │   └── solutionHelper.ts
│   │   │   ├── plugins/
│   │   │   │   ├── common/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── requireUtils.test.ts.snap
│   │   │   │   │   └── requireUtils.test.ts
│   │   │   │   └── jsx/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── p0-condition-at-root.test.ts.snap
│   │   │   │       └── p0-condition-at-root.test.ts
│   │   │   ├── postprocessor/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── prettier.test.ts.snap
│   │   │   │   └── prettier.test.ts
│   │   │   ├── public/
│   │   │   │   ├── README.md
│   │   │   │   ├── SchemaParser/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── p0-basic.test.ts.snap
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── schema-with-slot.json
│   │   │   │   │   └── p0-basic.test.ts
│   │   │   │   ├── cli.test.ts
│   │   │   │   ├── publisher/
│   │   │   │   │   ├── disk/
│   │   │   │   │   │   └── disk.test.ts
│   │   │   │   │   └── zip/
│   │   │   │   │       └── zip.test.ts
│   │   │   │   └── solutions/
│   │   │   │       ├── icejs3-app.test.ts
│   │   │   │       ├── rax-app.test.ts
│   │   │   │       └── react-app.test.ts
│   │   │   └── utils/
│   │   │       ├── compositeType.test.ts
│   │   │       ├── errors.test.ts
│   │   │       ├── expressionParser/
│   │   │       │   ├── jsExpression.test.ts
│   │   │       │   ├── parseExpressionConvertThis2Context.test.ts
│   │   │       │   ├── parseExpressionGetGlobalVariables.test.ts
│   │   │       │   └── parseExpressionGetKeywords.test.ts
│   │   │       ├── flattenResult.test.ts
│   │   │       ├── resultHelper/
│   │   │       │   ├── example-result.json
│   │   │       │   ├── findFile.test.ts
│   │   │       │   ├── globFiles.test.ts
│   │   │       │   ├── removeDirsFromResult.test.ts
│   │   │       │   ├── removeFilesFromResult.test.ts
│   │   │       │   └── scanFiles.test.ts
│   │   │       ├── schema/
│   │   │       │   ├── data/
│   │   │       │   │   └── schema-with-slot.json
│   │   │       │   └── handleSubNodes.test.ts
│   │   │       ├── validate.test.ts
│   │   │       └── version.test.ts
│   │   └── tsconfig.json
│   └── material-parser/
│       ├── README.md
│       ├── build.test.json
│       ├── demo/
│       │   ├── component.jsx
│       │   ├── component.tsx
│       │   ├── parse-jsx.js
│       │   └── parse-tsx.js
│       ├── jest.config.js
│       ├── package.json
│       ├── schemas/
│       │   ├── schema.json
│       │   └── schema.yml
│       ├── scripts/
│       │   └── transform.js
│       ├── src/
│       │   ├── core/
│       │   │   ├── index.ts
│       │   │   └── schema/
│       │   │       └── types.ts
│       │   ├── generate.ts
│       │   ├── index.ts
│       │   ├── localize.ts
│       │   ├── parse/
│       │   │   ├── dynamic/
│       │   │   │   ├── index.ts
│       │   │   │   └── requireInSandbox.ts
│       │   │   ├── index.ts
│       │   │   ├── js/
│       │   │   │   ├── handlers/
│       │   │   │   │   ├── defaultPropsHandler.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── preProcessHandler.ts
│       │   │   │   │   ├── propTypeHandler.ts
│       │   │   │   │   └── propTypeJsDocHandler.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── resolver/
│       │   │   │   │   ├── checkIsIIFE.ts
│       │   │   │   │   ├── findAssignedMethods.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── isReactComponentStaticMember.ts
│       │   │   │   │   ├── isStaticMethod.ts
│       │   │   │   │   ├── resolveExportDeclaration.ts
│       │   │   │   │   ├── resolveHOC.ts
│       │   │   │   │   ├── resolveIIFE.ts
│       │   │   │   │   ├── resolveImport.ts
│       │   │   │   │   └── resolveTranspiledClass.ts
│       │   │   │   └── utils/
│       │   │   │       ├── cache.ts
│       │   │   │       ├── evaluate.ts
│       │   │   │       ├── findJSFilePath.ts
│       │   │   │       ├── getComposedPath.ts
│       │   │   │       ├── getName.ts
│       │   │   │       ├── getRoot.ts
│       │   │   │       └── makeProxy.ts
│       │   │   ├── transform.ts
│       │   │   └── ts/
│       │   │       ├── generateDTS.ts
│       │   │       ├── index.ts
│       │   │       └── tsconfig.json
│       │   ├── scan.ts
│       │   ├── types/
│       │   │   ├── Basic.ts
│       │   │   ├── ChannelType.ts
│       │   │   ├── DSLType.ts
│       │   │   ├── IAccesser.ts
│       │   │   ├── IExtensionConfigManifest.ts
│       │   │   ├── IMaterialParsedModel.ts
│       │   │   ├── IMaterialScanModel.ts
│       │   │   ├── IMaterializeOptions.ts
│       │   │   ├── Meta.ts
│       │   │   └── index.ts
│       │   ├── utils.ts
│       │   └── validate/
│       │       ├── index.ts
│       │       └── schema.json
│       ├── test/
│       │   ├── __snapshots__/
│       │   │   ├── dynamic.test.ts.snap
│       │   │   ├── index.test.ts.snap
│       │   │   └── online.test.ts.snap
│       │   ├── dynamic.test.ts
│       │   ├── fixtures/
│       │   │   ├── dts-component/
│       │   │   │   ├── index.d.ts
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── data.js
│       │   │   │       ├── i18n.js
│       │   │   │       ├── index.jsx
│       │   │   │       ├── main.scss
│       │   │   │       └── scss/
│       │   │   │           └── variable.scss
│       │   │   ├── multiple-exported-component/
│       │   │   │   ├── es/
│       │   │   │   │   ├── basic/
│       │   │   │   │   │   ├── AIMakeBlank/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeIcon/
│       │   │   │   │   │   │   ├── IconFont.js
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeImage/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeLink/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakePlaceholder/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeText/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── Root/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── style/
│       │   │   │   │   │   │   ├── index.css
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   └── index.less
│       │   │   │   │   │   └── utils/
│       │   │   │   │   │       ├── HOCBackgroundProps.js
│       │   │   │   │   │       ├── HOCBoxModelProps.js
│       │   │   │   │   │       ├── HOCFlexLayoutProps.js
│       │   │   │   │   │       ├── HOCLayoutProps.js
│       │   │   │   │   │       └── HOCTextProps.js
│       │   │   │   │   └── index.js
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── basic/
│       │   │   │       │   ├── AIMakeBlank/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeIcon/
│       │   │   │       │   │   ├── IconFont.js
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeImage/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeLink/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakePlaceholder/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeText/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── Root/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── style/
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   └── index.less
│       │   │   │       │   └── utils/
│       │   │   │       │       ├── HOCBackgroundProps.js
│       │   │   │       │       ├── HOCBoxModelProps.js
│       │   │   │       │       ├── HOCFlexLayoutProps.js
│       │   │   │       │       ├── HOCLayoutProps.js
│       │   │   │       │       └── HOCTextProps.js
│       │   │   │       └── index.js
│       │   │   ├── rax-component/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.css
│       │   │   │       └── index.tsx
│       │   │   ├── single-exported-component/
│       │   │   │   ├── es/
│       │   │   │   │   ├── container.js
│       │   │   │   │   ├── index.js
│       │   │   │   │   ├── main.css
│       │   │   │   │   ├── main.scss
│       │   │   │   │   ├── manifest.js
│       │   │   │   │   └── manifest.json
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.js
│       │   │   │       └── main.scss
│       │   │   ├── transpiled-component/
│       │   │   │   └── package.json
│       │   │   ├── ts-component/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.tsx
│       │   │   │       ├── main-module.tsx
│       │   │   │       └── sub-module.tsx
│       │   │   ├── ts-component2/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── empty.tsx
│       │   │   │       ├── index.scss
│       │   │   │       └── index.tsx
│       │   │   └── without-display-name/
│       │   │       ├── index.js
│       │   │       └── package.json
│       │   ├── helpers/
│       │   │   └── index.ts
│       │   ├── index.test.ts
│       │   ├── localize.test.ts
│       │   ├── online.test.ts
│       │   └── validate/
│       │       ├── __snapshots__/
│       │       │   └── index.test.ts.snap
│       │       ├── fixtures/
│       │       │   ├── basic-error/
│       │       │   │   └── schema.json
│       │       │   ├── basic-success/
│       │       │   │   └── schema.json
│       │       │   ├── configure/
│       │       │   │   └── schema.json
│       │       │   ├── props-basic-type/
│       │       │   │   └── schema.json
│       │       │   └── props-complex-type/
│       │       │       └── schema.json
│       │       └── index.test.ts
│       ├── tsconfig.json
│       └── webpack.config.js
├── package.json
├── packages/
│   ├── designer/
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── builtin-simulator/
│   │   │   │   ├── README.md
│   │   │   │   ├── bem-tools/
│   │   │   │   │   ├── bem-tools.less
│   │   │   │   │   ├── border-container.tsx
│   │   │   │   │   ├── border-detecting.tsx
│   │   │   │   │   ├── border-resizing.tsx
│   │   │   │   │   ├── border-selecting.tsx
│   │   │   │   │   ├── borders.less
│   │   │   │   │   ├── drag-resize-engine.ts
│   │   │   │   │   ├── index.tsx
│   │   │   │   │   ├── insertion.less
│   │   │   │   │   ├── insertion.tsx
│   │   │   │   │   └── manager.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── create-simulator.ts
│   │   │   │   ├── host-view.tsx
│   │   │   │   ├── host.less
│   │   │   │   ├── host.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── live-editing/
│   │   │   │   │   └── live-editing.ts
│   │   │   │   ├── node-selector/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── renderer.ts
│   │   │   │   ├── resource-consumer.ts
│   │   │   │   ├── utils/
│   │   │   │   │   ├── clickable.ts
│   │   │   │   │   ├── parse-metadata.ts
│   │   │   │   │   ├── path.ts
│   │   │   │   │   └── throttle.ts
│   │   │   │   └── viewport.ts
│   │   │   ├── component-actions.ts
│   │   │   ├── component-meta.ts
│   │   │   ├── context-menu-actions.scss
│   │   │   ├── context-menu-actions.ts
│   │   │   ├── designer/
│   │   │   │   ├── active-tracker.ts
│   │   │   │   ├── clipboard.ts
│   │   │   │   ├── designer-view.tsx
│   │   │   │   ├── designer.less
│   │   │   │   ├── designer.ts
│   │   │   │   ├── detecting.ts
│   │   │   │   ├── drag-ghost/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ghost.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── dragon.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── location.ts
│   │   │   │   ├── offset-observer.ts
│   │   │   │   ├── scroller.ts
│   │   │   │   └── setting/
│   │   │   │       ├── index.ts
│   │   │   │       ├── setting-entry-type.ts
│   │   │   │       ├── setting-field.ts
│   │   │   │       ├── setting-prop-entry.ts
│   │   │   │       ├── setting-top-entry.ts
│   │   │   │       └── utils.ts
│   │   │   ├── document/
│   │   │   │   ├── document-model.ts
│   │   │   │   ├── document-view.tsx
│   │   │   │   ├── history.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── node/
│   │   │   │   │   ├── exclusive-group.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── modal-nodes-manager.ts
│   │   │   │   │   ├── node-children.ts
│   │   │   │   │   ├── node.ts
│   │   │   │   │   ├── props/
│   │   │   │   │   │   ├── prop.ts
│   │   │   │   │   │   ├── props.ts
│   │   │   │   │   │   └── value-to-source.ts
│   │   │   │   │   └── transform-stage.ts
│   │   │   │   └── selection.ts
│   │   │   ├── icons/
│   │   │   │   ├── clone.tsx
│   │   │   │   ├── component.tsx
│   │   │   │   ├── container.tsx
│   │   │   │   ├── hidden.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── lock.tsx
│   │   │   │   ├── page.tsx
│   │   │   │   ├── remove.tsx
│   │   │   │   ├── setting.tsx
│   │   │   │   └── unlock.tsx
│   │   │   ├── index.ts
│   │   │   ├── less-variables.less
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── plugin/
│   │   │   │   ├── index.ts
│   │   │   │   ├── plugin-context.ts
│   │   │   │   ├── plugin-manager.ts
│   │   │   │   ├── plugin-types.ts
│   │   │   │   ├── plugin-utils.ts
│   │   │   │   ├── plugin.ts
│   │   │   │   └── sequencify.ts
│   │   │   ├── project/
│   │   │   │   ├── index.ts
│   │   │   │   ├── project-view.tsx
│   │   │   │   ├── project.less
│   │   │   │   └── project.ts
│   │   │   ├── simulator.ts
│   │   │   ├── transducers/
│   │   │   │   └── index.ts
│   │   │   ├── types/
│   │   │   │   └── index.ts
│   │   │   └── utils/
│   │   │       ├── index.ts
│   │   │       ├── invariant.ts
│   │   │       ├── misc.ts
│   │   │       ├── slot.ts
│   │   │       └── tree.ts
│   │   ├── tests/
│   │   │   ├── __mocks__/
│   │   │   │   ├── document-model.ts
│   │   │   │   └── node.ts
│   │   │   ├── bugs/
│   │   │   │   ├── misc.ts.bak
│   │   │   │   ├── prop-variable-jse.test.ts
│   │   │   │   └── why.md
│   │   │   ├── builtin-simulator/
│   │   │   │   ├── bem-tools/
│   │   │   │   │   ├── drag-resize-engine.test.ts
│   │   │   │   │   └── manager.test.tsx
│   │   │   │   ├── host.test.ts
│   │   │   │   ├── renderer.test.tsx
│   │   │   │   ├── resource-consumer.test.ts
│   │   │   │   ├── utils/
│   │   │   │   │   ├── parse-metadata.test.ts
│   │   │   │   │   ├── path.test.ts
│   │   │   │   │   └── throttle.test.ts
│   │   │   │   └── viewport.test.ts
│   │   │   ├── designer/
│   │   │   │   ├── active-tracker.test.ts
│   │   │   │   ├── builtin-hotkey.test.ts
│   │   │   │   ├── designer.test.ts
│   │   │   │   ├── detecting.test.ts
│   │   │   │   ├── dragon.test.ts
│   │   │   │   ├── location.test.ts
│   │   │   │   ├── scroller.test.ts
│   │   │   │   └── setting/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── setting-field.test.ts.snap
│   │   │   │       ├── setting-field.test.ts
│   │   │   │       ├── setting-prop-entry.test.ts
│   │   │   │       └── setting-top-entry.test.ts
│   │   │   ├── document/
│   │   │   │   ├── document-model/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── document-model.test.ts.snap
│   │   │   │   │   └── document-model.test.ts
│   │   │   │   ├── history/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── history.test.ts.snap
│   │   │   │   │   ├── history.test.ts
│   │   │   │   │   └── session.test.ts
│   │   │   │   ├── node/
│   │   │   │   │   ├── modal-nodes-manager.test.ts
│   │   │   │   │   ├── node-children.test.ts
│   │   │   │   │   ├── node.add.test.ts
│   │   │   │   │   ├── node.dragdrop.test.ts
│   │   │   │   │   ├── node.modify.test.ts
│   │   │   │   │   ├── node.remove.test.ts
│   │   │   │   │   ├── node.test.ts
│   │   │   │   │   └── props/
│   │   │   │   │       ├── __snapshots__/
│   │   │   │   │       │   └── value-to-source.test.ts.snap
│   │   │   │   │       ├── prop.test.ts
│   │   │   │   │       ├── props.test.ts
│   │   │   │   │       └── value-to-source.test.ts
│   │   │   │   └── selection.test.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── component-metadata/
│   │   │   │   │   ├── abcgroup.ts
│   │   │   │   │   ├── abcitem.ts
│   │   │   │   │   ├── abcnode.ts
│   │   │   │   │   ├── abcoption.ts
│   │   │   │   │   ├── button.ts
│   │   │   │   │   ├── dialog.ts
│   │   │   │   │   ├── div.ts
│   │   │   │   │   ├── div10.ts
│   │   │   │   │   ├── div2.ts
│   │   │   │   │   ├── div3.ts
│   │   │   │   │   ├── div4.ts
│   │   │   │   │   ├── div5.ts
│   │   │   │   │   ├── div6.ts
│   │   │   │   │   ├── div7.ts
│   │   │   │   │   ├── div8.ts
│   │   │   │   │   ├── div9.ts
│   │   │   │   │   ├── form.ts
│   │   │   │   │   ├── other.ts
│   │   │   │   │   ├── page.ts
│   │   │   │   │   ├── page2.ts
│   │   │   │   │   ├── root-content.ts
│   │   │   │   │   ├── root-footer.ts
│   │   │   │   │   └── root-header.ts
│   │   │   │   ├── disable-raf.ts
│   │   │   │   ├── schema/
│   │   │   │   │   ├── form-with-modal.ts
│   │   │   │   │   ├── form.ts
│   │   │   │   │   └── setting.ts
│   │   │   │   ├── silent-console.ts
│   │   │   │   ├── unhandled-rejection.ts
│   │   │   │   └── window.ts
│   │   │   ├── main/
│   │   │   │   ├── meta/
│   │   │   │   │   └── component-meta.test.ts
│   │   │   │   └── simulator.test.ts
│   │   │   ├── plugin/
│   │   │   │   ├── plugin-manager.test.ts
│   │   │   │   ├── plugin-utils.test.ts
│   │   │   │   └── sequencify.test.ts
│   │   │   ├── project/
│   │   │   │   ├── project-methods.test.ts
│   │   │   │   └── project.test.ts
│   │   │   ├── utils/
│   │   │   │   ├── bom.ts
│   │   │   │   ├── event.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── misc.ts
│   │   │   │   └── renderer.ts
│   │   │   └── utils-ut/
│   │   │       ├── invariant.test.ts
│   │   │       ├── misc.test.ts
│   │   │       └── slot.test.ts
│   │   └── tsconfig.json
│   ├── editor-core/
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── command.ts
│   │   │   ├── config.ts
│   │   │   ├── di/
│   │   │   │   ├── index.ts
│   │   │   │   ├── ioc-context.ts
│   │   │   │   └── setter.ts
│   │   │   ├── editor.ts
│   │   │   ├── event-bus.ts
│   │   │   ├── hotkey.ts
│   │   │   ├── index.ts
│   │   │   ├── intl/
│   │   │   │   ├── global-locale.ts
│   │   │   │   └── index.ts
│   │   │   ├── utils/
│   │   │   │   ├── app-preset.ts
│   │   │   │   ├── assets-transform.ts
│   │   │   │   ├── control.ts
│   │   │   │   ├── focus-tracker.ts
│   │   │   │   ├── get-public-path.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── logger.ts
│   │   │   │   ├── obx.ts
│   │   │   │   ├── preference.ts
│   │   │   │   └── request.ts
│   │   │   └── widgets/
│   │   │       ├── index.ts
│   │   │       ├── tip/
│   │   │       │   ├── help-tips.tsx
│   │   │       │   ├── index.ts
│   │   │       │   ├── style.less
│   │   │       │   ├── tip-container.tsx
│   │   │       │   ├── tip-handler.ts
│   │   │       │   ├── tip-item.tsx
│   │   │       │   ├── tip.tsx
│   │   │       │   └── utils.ts
│   │   │       └── title/
│   │   │           ├── index.tsx
│   │   │           └── title.less
│   │   ├── test/
│   │   │   └── command.test.ts
│   │   └── tsconfig.json
│   ├── editor-skeleton/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── area.ts
│   │   │   ├── components/
│   │   │   │   ├── draggable-line/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── field/
│   │   │   │   │   ├── fields.tsx
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── inlinetip.tsx
│   │   │   │   ├── popup/
│   │   │   │   │   ├── index.tsx
│   │   │   │   │   └── style.less
│   │   │   │   ├── settings/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── main.ts
│   │   │   │   │   ├── settings-pane.tsx
│   │   │   │   │   ├── settings-primary-pane.tsx
│   │   │   │   │   ├── style.less
│   │   │   │   │   └── utils.ts
│   │   │   │   ├── stage-box/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── stage-box.tsx
│   │   │   │   │   ├── stage-chain.ts
│   │   │   │   │   └── stage.tsx
│   │   │   │   └── widget-views/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.tsx
│   │   │   │       └── panel-operation-row.tsx
│   │   │   ├── context.ts
│   │   │   ├── icons/
│   │   │   │   ├── arrow.tsx
│   │   │   │   ├── clear.tsx
│   │   │   │   ├── convert.tsx
│   │   │   │   ├── exit.tsx
│   │   │   │   ├── fix.tsx
│   │   │   │   ├── float.tsx
│   │   │   │   ├── slot.tsx
│   │   │   │   └── variable.tsx
│   │   │   ├── index.ts
│   │   │   ├── layouts/
│   │   │   │   ├── bottom-area.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── left-area.tsx
│   │   │   │   ├── left-fixed-pane.tsx
│   │   │   │   ├── left-float-pane.tsx
│   │   │   │   ├── main-area.tsx
│   │   │   │   ├── right-area.tsx
│   │   │   │   ├── sub-top-area.tsx
│   │   │   │   ├── theme.less
│   │   │   │   ├── toolbar.tsx
│   │   │   │   ├── top-area.tsx
│   │   │   │   ├── workbench.less
│   │   │   │   └── workbench.tsx
│   │   │   ├── less-variables.less
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── register-defaults.ts
│   │   │   ├── skeleton.ts
│   │   │   ├── transducers/
│   │   │   │   ├── addon-combine.ts
│   │   │   │   ├── parse-func.ts
│   │   │   │   └── parse-props.ts
│   │   │   ├── types.ts
│   │   │   └── widget/
│   │   │       ├── dialog-dock.ts
│   │   │       ├── dock.ts
│   │   │       ├── index.ts
│   │   │       ├── panel-dock.ts
│   │   │       ├── panel.ts
│   │   │       ├── stage.ts
│   │   │       ├── utils.ts
│   │   │       ├── widget-container.ts
│   │   │       └── widget.ts
│   │   ├── tests/
│   │   │   └── widget/
│   │   │       └── utils.test.ts
│   │   └── tsconfig.json
│   ├── engine/
│   │   ├── README-zh_CN.md
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── engine-core.ts
│   │   │   ├── index.ts
│   │   │   ├── inner-plugins/
│   │   │   │   ├── builtin-hotkey.ts
│   │   │   │   ├── component-meta-parser.ts
│   │   │   │   ├── default-context-menu.ts
│   │   │   │   ├── default-panel-registry.tsx
│   │   │   │   └── setter-registry.ts
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   └── modules/
│   │   │       ├── classes.ts
│   │   │       ├── designer-types.ts
│   │   │       ├── live-editing.ts
│   │   │       ├── lowcode-types.ts
│   │   │       ├── shell-model-factory.ts
│   │   │       ├── skeleton-types.ts
│   │   │       └── symbols.ts
│   │   └── tsconfig.json
│   ├── ignitor/
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── index.html
│   │   └── tsconfig.json
│   ├── plugin-command/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── node-command.test.ts
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   └── src/
│   │       ├── history-command.ts
│   │       ├── index.ts
│   │       └── node-command.ts
│   ├── plugin-designer/
│   │   ├── .gitignore
│   │   ├── build.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.scss
│   │   │   └── index.tsx
│   │   └── tsconfig.json
│   ├── plugin-outline-pane/
│   │   ├── .gitignore
│   │   ├── build.json
│   │   ├── package.json
│   │   └── src/
│   │       ├── README.md
│   │       ├── controllers/
│   │       │   ├── pane-controller.ts
│   │       │   ├── ric-shim.d.ts
│   │       │   ├── tree-master.ts
│   │       │   ├── tree-node.ts
│   │       │   └── tree.ts
│   │       ├── helper/
│   │       │   ├── consts.ts
│   │       │   ├── dwell-timer.ts
│   │       │   └── indent-track.ts
│   │       ├── icons/
│   │       │   ├── arrow-right.tsx
│   │       │   ├── cond.tsx
│   │       │   ├── delete.tsx
│   │       │   ├── eye-close.tsx
│   │       │   ├── eye.tsx
│   │       │   ├── filter.tsx
│   │       │   ├── index.ts
│   │       │   ├── lock.tsx
│   │       │   ├── loop.tsx
│   │       │   ├── outline.tsx
│   │       │   ├── radio-active.tsx
│   │       │   ├── radio.tsx
│   │       │   ├── setting.tsx
│   │       │   └── unlock.tsx
│   │       ├── index.tsx
│   │       ├── locale/
│   │       │   ├── en-US.json
│   │       │   ├── index.ts
│   │       │   └── zh-CN.json
│   │       └── views/
│   │           ├── filter-tree.ts
│   │           ├── filter.tsx
│   │           ├── pane.tsx
│   │           ├── style.less
│   │           ├── tree-branches.tsx
│   │           ├── tree-node.tsx
│   │           ├── tree-title.tsx
│   │           └── tree.tsx
│   ├── react-renderer/
│   │   ├── README.md
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── demo/
│   │   │   ├── compose.md
│   │   │   ├── config/
│   │   │   │   ├── components/
│   │   │   │   │   ├── A.jsx
│   │   │   │   │   ├── Div.jsx
│   │   │   │   │   ├── Image.jsx
│   │   │   │   │   ├── Text.jsx
│   │   │   │   │   └── index.js
│   │   │   │   ├── constants.js
│   │   │   │   └── utils.js
│   │   │   ├── dataSource.md
│   │   │   ├── i18n.md
│   │   │   ├── list.md
│   │   │   ├── schemas/
│   │   │   │   ├── compose.js
│   │   │   │   ├── dataSource.js
│   │   │   │   ├── i18n.js
│   │   │   │   ├── list.js
│   │   │   │   └── table.js
│   │   │   └── table.md
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── tests/
│   │   │   ├── __snapshots__/
│   │   │   │   └── index.test.tsx.snap
│   │   │   ├── fixtures/
│   │   │   │   └── schema/
│   │   │   │       └── basic.ts
│   │   │   └── index.test.tsx
│   │   └── tsconfig.json
│   ├── react-simulator-renderer/
│   │   ├── .babelrc
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── README.md
│   │   │   ├── builtin-components/
│   │   │   │   ├── builtin-components.ts
│   │   │   │   ├── leaf.tsx
│   │   │   │   └── slot.tsx
│   │   │   ├── host.ts
│   │   │   ├── index.ts
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── renderer-view.tsx
│   │   │   ├── renderer.less
│   │   │   ├── renderer.ts
│   │   │   └── utils/
│   │   │       ├── get-client-rects.ts
│   │   │       ├── is-dom-node.ts
│   │   │       ├── misc.ts
│   │   │       ├── react-find-dom-nodes.ts
│   │   │       └── url.ts
│   │   ├── test/
│   │   │   ├── schema/
│   │   │   │   └── basic.ts
│   │   │   ├── src/
│   │   │   │   └── renderer/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── demo.test.tsx.snap
│   │   │   │       └── demo.test.tsx
│   │   │   └── utils/
│   │   │       ├── components.tsx
│   │   │       └── host.ts
│   │   └── tsconfig.json
│   ├── renderer-core/
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter/
│   │   │   │   └── index.ts
│   │   │   ├── components/
│   │   │   │   ├── Div.tsx
│   │   │   │   └── VisualDom/
│   │   │   │       ├── index.css
│   │   │   │       └── index.tsx
│   │   │   ├── context/
│   │   │   │   └── index.ts
│   │   │   ├── hoc/
│   │   │   │   ├── index.tsx
│   │   │   │   └── leaf.tsx
│   │   │   ├── index.ts
│   │   │   ├── renderer/
│   │   │   │   ├── addon.tsx
│   │   │   │   ├── base.tsx
│   │   │   │   ├── block.tsx
│   │   │   │   ├── component.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── page.tsx
│   │   │   │   ├── renderer.tsx
│   │   │   │   └── temp.tsx
│   │   │   ├── types/
│   │   │   │   └── index.ts
│   │   │   └── utils/
│   │   │       ├── common.ts
│   │   │       ├── data-helper.ts
│   │   │       ├── index.ts
│   │   │       ├── is-use-loop.ts
│   │   │       ├── logger.ts
│   │   │       └── request.ts
│   │   ├── tests/
│   │   │   ├── adapter/
│   │   │   │   └── adapter.test.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── schema/
│   │   │   │   │   └── basic.ts
│   │   │   │   └── unhandled-rejection.ts
│   │   │   ├── hoc/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── leaf.test.tsx.snap
│   │   │   │   └── leaf.test.tsx
│   │   │   ├── mock/
│   │   │   │   ├── loop.ts
│   │   │   │   ├── sample.ts
│   │   │   │   └── styleMock.js
│   │   │   ├── renderer/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── renderer.test.tsx.snap
│   │   │   │   ├── base.test.tsx
│   │   │   │   └── renderer.test.tsx
│   │   │   ├── setup.ts
│   │   │   └── utils/
│   │   │       ├── common.test.ts
│   │   │       ├── components.tsx
│   │   │       ├── data-helper.test.ts
│   │   │       ├── is-use-loop.test.ts
│   │   │       ├── node.ts
│   │   │       ├── react-env-init.ts
│   │   │       └── request.test.ts
│   │   └── tsconfig.json
│   ├── shell/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── package.json
│   │   └── src/
│   │       ├── api/
│   │       │   ├── canvas.ts
│   │       │   ├── command.ts
│   │       │   ├── common.tsx
│   │       │   ├── commonUI.tsx
│   │       │   ├── config.ts
│   │       │   ├── event.ts
│   │       │   ├── hotkey.ts
│   │       │   ├── index.ts
│   │       │   ├── logger.ts
│   │       │   ├── material.ts
│   │       │   ├── plugins.ts
│   │       │   ├── project.ts
│   │       │   ├── setters.ts
│   │       │   ├── simulator-host.ts
│   │       │   ├── skeleton.ts
│   │       │   └── workspace.ts
│   │       ├── components/
│   │       │   └── context-menu.tsx
│   │       ├── index.ts
│   │       ├── model/
│   │       │   ├── active-tracker.ts
│   │       │   ├── clipboard.ts
│   │       │   ├── component-meta.ts
│   │       │   ├── condition-group.ts
│   │       │   ├── detecting.ts
│   │       │   ├── document-model.ts
│   │       │   ├── drag-object.ts
│   │       │   ├── dragon.ts
│   │       │   ├── drop-location.ts
│   │       │   ├── editor-view.ts
│   │       │   ├── history.ts
│   │       │   ├── index.ts
│   │       │   ├── locate-event.ts
│   │       │   ├── modal-nodes-manager.ts
│   │       │   ├── node-children.ts
│   │       │   ├── node.ts
│   │       │   ├── plugin-instance.ts
│   │       │   ├── prop.ts
│   │       │   ├── props.ts
│   │       │   ├── resource.ts
│   │       │   ├── selection.ts
│   │       │   ├── setting-field.ts
│   │       │   ├── setting-top-entry.ts
│   │       │   ├── simulator-render.ts
│   │       │   ├── skeleton-item.ts
│   │       │   └── window.ts
│   │       └── symbols.ts
│   ├── types/
│   │   ├── .eslintignore
│   │   ├── .prettierrc.js
│   │   ├── CHANGELOG.md
│   │   ├── build.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── activity.ts
│   │   │   ├── assets.ts
│   │   │   ├── code-intermediate.ts
│   │   │   ├── code-result.ts
│   │   │   ├── deprecated/
│   │   │   │   ├── index.ts
│   │   │   │   ├── isActionContentObject.ts
│   │   │   │   ├── isCustomView.ts
│   │   │   │   ├── isDOMText.ts
│   │   │   │   ├── isDynamicSetter.ts
│   │   │   │   ├── isI18nData.ts
│   │   │   │   ├── isJSBlock.ts
│   │   │   │   ├── isJSExpression.ts
│   │   │   │   ├── isJSFunction.ts
│   │   │   │   ├── isJSSlot.ts
│   │   │   │   ├── isLowCodeComponentType.ts
│   │   │   │   ├── isNodeSchema.ts
│   │   │   │   ├── isPlainObject.ts
│   │   │   │   ├── isProCodeComponentType.ts
│   │   │   │   ├── isProjectSchema.ts
│   │   │   │   ├── isReactClass.ts
│   │   │   │   ├── isReactComponent.ts
│   │   │   │   ├── isSetterConfig.ts
│   │   │   │   └── isTitleConfig.ts
│   │   │   ├── editor.ts
│   │   │   ├── event/
│   │   │   │   ├── index.ts
│   │   │   │   ├── node.ts
│   │   │   │   └── prop.ts
│   │   │   ├── index.ts
│   │   │   ├── shell/
│   │   │   │   ├── api/
│   │   │   │   │   ├── canvas.ts
│   │   │   │   │   ├── command.ts
│   │   │   │   │   ├── common.ts
│   │   │   │   │   ├── commonUI.ts
│   │   │   │   │   ├── event.ts
│   │   │   │   │   ├── hotkey.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── logger.ts
│   │   │   │   │   ├── material.ts
│   │   │   │   │   ├── plugins.ts
│   │   │   │   │   ├── project.ts
│   │   │   │   │   ├── setters.ts
│   │   │   │   │   ├── simulator-host.ts
│   │   │   │   │   ├── skeleton.ts
│   │   │   │   │   └── workspace.ts
│   │   │   │   ├── enum/
│   │   │   │   │   ├── context-menu.ts
│   │   │   │   │   ├── drag-object-type.ts
│   │   │   │   │   ├── event-names.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── plugin-register-level.ts
│   │   │   │   │   ├── prop-value-changed-type.ts
│   │   │   │   │   ├── transform-stage.ts
│   │   │   │   │   └── transition-type.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── model/
│   │   │   │   │   ├── active-tracker.ts
│   │   │   │   │   ├── clipboard.ts
│   │   │   │   │   ├── component-meta.ts
│   │   │   │   │   ├── detecting.ts
│   │   │   │   │   ├── document-model.ts
│   │   │   │   │   ├── drag-object.ts
│   │   │   │   │   ├── dragon.ts
│   │   │   │   │   ├── drop-location.ts
│   │   │   │   │   ├── editor-view.ts
│   │   │   │   │   ├── editor.ts
│   │   │   │   │   ├── engine-config.ts
│   │   │   │   │   ├── exclusive-group.ts
│   │   │   │   │   ├── history.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── locate-event.ts
│   │   │   │   │   ├── modal-nodes-manager.ts
│   │   │   │   │   ├── node-children.ts
│   │   │   │   │   ├── node.ts
│   │   │   │   │   ├── plugin-context.ts
│   │   │   │   │   ├── plugin-instance.ts
│   │   │   │   │   ├── preference.ts
│   │   │   │   │   ├── prop.ts
│   │   │   │   │   ├── props.ts
│   │   │   │   │   ├── resource.ts
│   │   │   │   │   ├── scroll-target.ts
│   │   │   │   │   ├── scroller.ts
│   │   │   │   │   ├── selection.ts
│   │   │   │   │   ├── sensor.ts
│   │   │   │   │   ├── setting-field.ts
│   │   │   │   │   ├── setting-prop-entry.ts
│   │   │   │   │   ├── setting-target.ts
│   │   │   │   │   ├── setting-top-entry.ts
│   │   │   │   │   ├── simulator-render.ts
│   │   │   │   │   ├── skeleton-item.ts
│   │   │   │   │   └── window.ts
│   │   │   │   └── type/
│   │   │   │       ├── action-content-object.ts
│   │   │   │       ├── active-target.ts
│   │   │   │       ├── advanced.ts
│   │   │   │       ├── app-config.ts
│   │   │   │       ├── assets-json.ts
│   │   │   │       ├── block-schema.ts
│   │   │   │       ├── command.ts
│   │   │   │       ├── component-action.ts
│   │   │   │       ├── component-description.ts
│   │   │   │       ├── component-instance.ts
│   │   │   │       ├── component-metadata.ts
│   │   │   │       ├── component-schema.ts
│   │   │   │       ├── component-sort.ts
│   │   │   │       ├── composite-value.ts
│   │   │   │       ├── config-transducer.ts
│   │   │   │       ├── configure.ts
│   │   │   │       ├── container-schema.ts
│   │   │   │       ├── context-menu.ts
│   │   │   │       ├── custom-view.ts
│   │   │   │       ├── disposable.ts
│   │   │   │       ├── dom-text.ts
│   │   │   │       ├── drag-any-object.ts
│   │   │   │       ├── drag-node-data-object.ts
│   │   │   │       ├── drag-node-object.ts
│   │   │   │       ├── drag-object.ts
│   │   │   │       ├── dynamic-props.ts
│   │   │   │       ├── dynamic-setter.ts
│   │   │   │       ├── editor-get-options.ts
│   │   │   │       ├── editor-get-result.ts
│   │   │   │       ├── editor-register-options.ts
│   │   │   │       ├── editor-value-key.ts
│   │   │   │       ├── editor-view-config.ts
│   │   │   │       ├── editor-view.ts
│   │   │   │       ├── engine-options.ts
│   │   │   │       ├── field-config.ts
│   │   │   │       ├── field-extra-props.ts
│   │   │   │       ├── hotkey-callback-config.ts
│   │   │   │       ├── hotkey-callback.ts
│   │   │   │       ├── hotkey-callbacks.ts
│   │   │   │       ├── i18n-map.ts
│   │   │   │       ├── i8n-data.ts
│   │   │   │       ├── icon-config.ts
│   │   │   │       ├── icon-type.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── location.ts
│   │   │   │       ├── metadata-transducer.ts
│   │   │   │       ├── metadata.ts
│   │   │   │       ├── node-data-type.ts
│   │   │   │       ├── node-data.ts
│   │   │   │       ├── node-instance.ts
│   │   │   │       ├── node-schema.ts
│   │   │   │       ├── npm-info.ts
│   │   │   │       ├── npm.ts
│   │   │   │       ├── on-change-options.ts
│   │   │   │       ├── package.ts
│   │   │   │       ├── page-schema.ts
│   │   │   │       ├── plugin-config.ts
│   │   │   │       ├── plugin-creater.ts
│   │   │   │       ├── plugin-declaration-property.ts
│   │   │   │       ├── plugin-declaration.ts
│   │   │   │       ├── plugin-meta.ts
│   │   │   │       ├── plugin-register-options.ts
│   │   │   │       ├── plugin.ts
│   │   │   │       ├── preference-value-type.ts
│   │   │   │       ├── project-schema.ts
│   │   │   │       ├── prop-change-options.ts
│   │   │   │       ├── prop-config.ts
│   │   │   │       ├── prop-types.ts
│   │   │   │       ├── props-list.ts
│   │   │   │       ├── props-map.ts
│   │   │   │       ├── props-transducer.ts
│   │   │   │       ├── reference.ts
│   │   │   │       ├── registered-setter.ts
│   │   │   │       ├── remote-component-description.ts
│   │   │   │       ├── resource-list.ts
│   │   │   │       ├── resource-type-config.ts
│   │   │   │       ├── resource-type.ts
│   │   │   │       ├── root-schema.ts
│   │   │   │       ├── scrollable.ts
│   │   │   │       ├── set-value-options.ts
│   │   │   │       ├── setter-config.ts
│   │   │   │       ├── setter-type.ts
│   │   │   │       ├── simulator-renderer.ts
│   │   │   │       ├── slot-schema.ts
│   │   │   │       ├── snippet.ts
│   │   │   │       ├── tip-config.ts
│   │   │   │       ├── tip-content.ts
│   │   │   │       ├── title-config.ts
│   │   │   │       ├── title-content.ts
│   │   │   │       ├── transformed-component-metadata.ts
│   │   │   │       ├── value-type.ts
│   │   │   │       ├── widget-base-config.ts
│   │   │   │       └── widget-config-area.ts
│   │   │   ├── shell-model-factory.ts
│   │   │   └── utils.ts
│   │   └── tsconfig.json
│   ├── utils/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── jest.setup.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app-helper.ts
│   │   │   ├── asset.ts
│   │   │   ├── build-components.ts
│   │   │   ├── check-prop-types.ts
│   │   │   ├── check-types/
│   │   │   │   ├── index.ts
│   │   │   │   ├── is-action-content-object.ts
│   │   │   │   ├── is-basic-prop-type.ts
│   │   │   │   ├── is-component-schema.ts
│   │   │   │   ├── is-custom-view.ts
│   │   │   │   ├── is-dom-text.ts
│   │   │   │   ├── is-drag-any-object.ts
│   │   │   │   ├── is-drag-node-data-object.ts
│   │   │   │   ├── is-drag-node-object.ts
│   │   │   │   ├── is-dynamic-setter.ts
│   │   │   │   ├── is-function.ts
│   │   │   │   ├── is-i18n-data.ts
│   │   │   │   ├── is-isfunction.ts
│   │   │   │   ├── is-jsblock.ts
│   │   │   │   ├── is-jsexpression.ts
│   │   │   │   ├── is-jsslot.ts
│   │   │   │   ├── is-location-children-detail.ts
│   │   │   │   ├── is-location-data.ts
│   │   │   │   ├── is-lowcode-component-type.ts
│   │   │   │   ├── is-lowcode-project-schema.ts
│   │   │   │   ├── is-node-schema.ts
│   │   │   │   ├── is-node.ts
│   │   │   │   ├── is-object.ts
│   │   │   │   ├── is-procode-component-type.ts
│   │   │   │   ├── is-project-schema.ts
│   │   │   │   ├── is-required-prop-type.ts
│   │   │   │   ├── is-setter-config.ts
│   │   │   │   ├── is-setting-field.ts
│   │   │   │   └── is-title-config.ts
│   │   │   ├── clone-deep.ts
│   │   │   ├── clone-enumerable-property.ts
│   │   │   ├── context-menu.scss
│   │   │   ├── context-menu.tsx
│   │   │   ├── create-content.ts
│   │   │   ├── create-defer.ts
│   │   │   ├── create-icon.tsx
│   │   │   ├── css-helper.ts
│   │   │   ├── cursor.css
│   │   │   ├── cursor.ts
│   │   │   ├── env.ts
│   │   │   ├── get-prototype-of.ts
│   │   │   ├── has-own-property.ts
│   │   │   ├── index.ts
│   │   │   ├── is-css-url.ts
│   │   │   ├── is-element.ts
│   │   │   ├── is-es-module.ts
│   │   │   ├── is-form-event.ts
│   │   │   ├── is-function.ts
│   │   │   ├── is-object.ts
│   │   │   ├── is-plain-object.ts
│   │   │   ├── is-plugin-event-name.ts
│   │   │   ├── is-react.ts
│   │   │   ├── is-shaken.ts
│   │   │   ├── logger.ts
│   │   │   ├── misc.ts
│   │   │   ├── navtive-selection.ts
│   │   │   ├── node-helper.ts
│   │   │   ├── schema.ts
│   │   │   ├── script.ts
│   │   │   ├── set-prototype-of.ts
│   │   │   ├── shallow-equal.ts
│   │   │   ├── svg-icon.tsx
│   │   │   ├── transaction-manager.ts
│   │   │   ├── unique-id.ts
│   │   │   └── workspace.tsx
│   │   ├── test/
│   │   │   └── src/
│   │   │       ├── __snapshots__/
│   │   │       │   ├── is-react.test.tsx.snap
│   │   │       │   └── schema.test.ts.snap
│   │   │       ├── build-components/
│   │   │       │   ├── buildComponents.test.tsx
│   │   │       │   ├── getProjectUtils.test.ts
│   │   │       │   └── getSubComponent.test.ts
│   │   │       ├── check-prop-types.test.ts
│   │   │       ├── check-types/
│   │   │       │   ├── is-action-content-object.test.ts
│   │   │       │   ├── is-basic-prop-type.test.ts
│   │   │       │   ├── is-custom-view.test.tsx
│   │   │       │   ├── is-dom-text.test.ts
│   │   │       │   ├── is-drag-any-object.test.ts
│   │   │       │   ├── is-drag-node-data-object.test.ts
│   │   │       │   ├── is-drag-node-object.test.ts
│   │   │       │   ├── is-dynamic-setter.test.ts
│   │   │       │   ├── is-i18n-data.test.ts
│   │   │       │   ├── is-isfunction.test.ts
│   │   │       │   ├── is-jsblock.test.ts
│   │   │       │   ├── is-jsexpression.test.ts
│   │   │       │   ├── is-jsslot.test.ts
│   │   │       │   ├── is-location-children-detail.test.ts
│   │   │       │   ├── is-location-data.test.ts
│   │   │       │   ├── is-lowcode-component-type.test.ts
│   │   │       │   ├── is-lowcode-project-schema.test.ts
│   │   │       │   ├── is-node-schema.test.ts
│   │   │       │   ├── is-node.test.ts
│   │   │       │   ├── is-procode-component-type.test.ts
│   │   │       │   ├── is-project-schema.test.ts
│   │   │       │   ├── is-required-prop-type.test.ts
│   │   │       │   ├── is-setter-config.test.ts
│   │   │       │   ├── is-setting-field.test.ts
│   │   │       │   └── is-title-config.test.ts
│   │   │       ├── clone-deep.test.ts
│   │   │       ├── clone-enumerable-property.test.ts
│   │   │       ├── create-content.test.tsx
│   │   │       ├── create-defer.test.ts
│   │   │       ├── is-object.test.ts
│   │   │       ├── is-react.test.tsx
│   │   │       ├── is-shaken.test.ts
│   │   │       ├── misc.test.ts
│   │   │       ├── navtive-selection.test.ts
│   │   │       ├── schema.test.ts
│   │   │       ├── script.test.ts
│   │   │       ├── svg-icon.test.tsx
│   │   │       ├── transaction-manager.test.ts
│   │   │       └── unique-id.test.ts
│   │   └── tsconfig.json
│   └── workspace/
│       ├── build.json
│       ├── build.test.json
│       ├── jest.config.js
│       ├── package.json
│       ├── src/
│       │   ├── context/
│       │   │   ├── base-context.ts
│       │   │   └── view-context.ts
│       │   ├── index.ts
│       │   ├── inner-plugins/
│       │   │   └── webview.tsx
│       │   ├── layouts/
│       │   │   └── workbench.tsx
│       │   ├── less-variables.less
│       │   ├── resource-type.ts
│       │   ├── resource.ts
│       │   ├── skeleton-context.ts
│       │   ├── view/
│       │   │   ├── editor-view.tsx
│       │   │   ├── resource-view.less
│       │   │   ├── resource-view.tsx
│       │   │   └── window-view.tsx
│       │   ├── window.ts
│       │   └── workspace.ts
│       └── tsconfig.json
├── scripts/
│   ├── build.sh
│   ├── create.sh
│   ├── set-repo.js
│   ├── setup-for-test.sh
│   ├── setup-skip-build.sh
│   ├── setup.js
│   ├── setup.sh
│   ├── start-server.sh
│   ├── start.js
│   ├── start.sh
│   ├── sync-oss.js
│   ├── sync.sh
│   └── watchdog.js
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
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
================================================
# 忽略目录
node_modules
test-cases
test
output
build
dist
demo
es
lib
tests
.*
~*

# 忽略文件
**/*.min.js
**/*-min.js
**/*.bundle.js


================================================
FILE: .eslintrc.js
================================================
module.exports = {
  extends: 'eslint-config-ali/typescript/react',
  parserOptions: {
    project: [], // for lint performance
    createDefaultProgram: false, // for lint performance
  },
  rules: {
    'react/no-multi-comp': 0,
    'no-unused-expressions': 0,
    'implicit-arrow-linebreak': 1,
    'no-nested-ternary': 1,
    'no-mixed-operators': 1,
    '@typescript-eslint/ban-types': 1,
    'no-shadow': 1,
    'no-prototype-builtins': 1,
    'no-useless-constructor': 1,
    'no-empty-function': 1,
    'lines-between-class-members': 0,
    'no-await-in-loop': 0,
    'no-plusplus': 0,
    '@typescript-eslint/no-parameter-properties': 0,
    'no-restricted-exports': ['error'],
    'no-multi-assign': 1,
    'no-dupe-class-members': 1,
    'react/no-deprecated': 1,
    'no-useless-escape': 1,
    'brace-style': 1,
    '@typescript-eslint/no-inferrable-types': 0,
    'no-proto': 0,
    'prefer-const': 0,
    'eol-last': 0,
    'react/no-find-dom-node': 0,
    'no-case-declarations': 0,
    '@typescript-eslint/indent': 0,
    'import/no-cycle': 0,
    '@typescript-eslint/no-shadow': 0,
    '@typescript-eslint/method-signature-style': 0,
    '@typescript-eslint/consistent-type-assertions': 0,
    '@typescript-eslint/no-useless-constructor': 0,
    '@typescript-eslint/dot-notation': 0, // for lint performance
    '@typescript-eslint/restrict-plus-operands': 0, // for lint performance
    'no-unexpected-multiline': 1,
    'no-multiple-empty-lines': ['error', { max: 1 }],
    'lines-around-comment': ['error', {
      beforeBlockComment: true,
      afterBlockComment: false,
      afterLineComment: false,
      allowBlockStart: true,
    }],
    'comma-dangle': ['error', 'always-multiline'],
    '@typescript-eslint/member-ordering': [
      'error',
      { default: ['signature', 'field', 'constructor', 'method'] }
    ],
    '@typescript-eslint/no-unused-vars': ['error'],
    'no-redeclare': 0,
    '@typescript-eslint/no-redeclare': 1,
  },
};


================================================
FILE: .github/CODEOWNERS
================================================
# ref: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence
* @liujuping @1ncounter

/modules/material-parser @akirakai
/modules/code-generator @qingniaotonghua


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug report / 提交 bug
about: Create a report to help us improve / 提交一个好的 issue 帮助我们优化引擎,[引擎的 issue 说明](https://lowcode-engine.cn/site/community/issue)
title: ''
labels: ''
assignees: ''

---

## **Describe the bug (required)** / **详细描述 bug(必填)**

A clear and concise description of what the bug is. / 请提供清晰且精确的 bug 描述

---

## **To Reproduce (required)** / **如何复现 bug?(必填,非常重要)**

Steps to reproduce the behavior: / 详细复现步骤:

---

English version example:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

中文版示例:
1. 打开 [demo](http://lowcode-engine.cn/demo);
2. 点击标题;
3. 在右侧修改标题内容为「修改后的标题」;
4. 渲染画布标题组件没有更新显示为「修改后的标题」;

## **Expected behavior (required)** / **预期行为(必填,非常重要)**
A clear and concise description of what did you expect to happen. / 请清晰和精确的描述你预期的行为

---

## **Screenshots (optional)** / **bug 截图(可选)**
Sceenshots for further information. (If applicable.) / 一些有用的截图将会帮助我们更好的明确以及定位问题

---

## **Environments (please complete the following information) (required):** / **请提供如下信息(必填)**
 - AliLowCodeEngine version: [e.g. 1.0.0] / 低代码引擎版本
 - AliLowCodeEngineExt version: [e.g. 1.0.0] / 低代码引擎扩展包版本
 - Browser [e.g. chrome, safari] / 浏览器版本
 - materials / plugins / tools / 其他物料 / 插件 / 工具链版本

> (this information can be collected via [the manual plugin](https://img.alicdn.com/imgextra/i1/O1CN0115zonY1IsgbkZ2ir7_!!6000000000949-2-tps-3066-1650.png) / 版本信息可[通过低代码用户手册插件收集](https://img.alicdn.com/imgextra/i1/O1CN0115zonY1IsgbkZ2ir7_!!6000000000949-2-tps-3066-1650.png))

## **Additional context (optional)** / **更多额外信息(可选)**
Any other context of the problem here. / 可以追加更多的额外信息,帮助定位问题


================================================
FILE: .github/workflows/check base branch.yml
================================================
name: Check Base Branch

on:
  pull_request:
    types: [opened]

jobs:
  code-review:
    name: Check
    runs-on: ubuntu-latest

    steps:
      # 判断用户是否有写仓库权限
      - name: 'Check User Permission'
        uses: 'lannonbr/repo-permission-check-action@2.0.0'
        with:
          permission: 'write'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: 'Check base branch name is develop or not'
        if: github.event.pull_request.base.ref != 'develop'   # check the target branch if it's master
        uses: actions-cool/issues-helper@v2
        with:
          actions: 'create-comment'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            感谢你的 PR,根据引擎的 [研发协作流程](https://lowcode-engine.cn/site/docs/participate/flow),请将目标合入分支设置为 **develop**。

            Thanks in advance, according to the [Contribution Guideline](https://lowcode-engine.cn/site/docs/participate/flow), please set the base branch to **develop**.

            @${{ github.event.pull_request.user.login }}

================================================
FILE: .github/workflows/ci.yml
================================================
name: Node CI

on:
 push:
    branches:
      - main
 pull_request:
    branches:
      - main

jobs:
  upload-designer-codecov:
    runs-on: ubuntu-latest
    # if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test designer
        run: cd packages/designer && npm run test:cov && cd ../..

      - name: Upload designer coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          # working-directory: packages/designer
          directory: ./packages/designer/coverage
          token: ${{ secrets.CODECOV_TOKEN }}
          name: designer
          fail_ci_if_error: true
          verbose: true

  upload-renderer-core:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test renderer-core
        run: cd packages/renderer-core && npm run test:cov && cd ../..

      - name: Upload renderer-core coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          # working-directory: packages/designer
          directory: ./packages/renderer-core/coverage
          token: ${{ secrets.CODECOV_TOKEN }}
          name: renderer-core
          fail_ci_if_error: true
          verbose: true

  upload-react-simulator-renderer:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test react-simulator-renderer
        run: cd packages/react-simulator-renderer && npm run test:cov && cd ../..

      - name: Upload react-simulator-renderer coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          # working-directory: packages/designer
          directory: ./packages/react-simulator-renderer/coverage
          token: ${{ secrets.CODECOV_TOKEN }}
          name: react-simulator-renderer
          fail_ci_if_error: true
          verbose: true

  upload-code-generator:
    runs-on: ubuntu-latest
    # if: ${{ github.event.pull_request.head.repo.full_name == 'alibaba/lowcode-engine' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test code-generator
        run: cd modules/code-generator && npm i && npm run build && npm run test:cov && cd ../..

      - name: Upload code-generator coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          # working-directory: packages/designer
          directory: ./modules/code-generator/coverage
          token: ${{ secrets.CODECOV_TOKEN }}
          name: code-generator
          fail_ci_if_error: true
          verbose: true

================================================
FILE: .github/workflows/cov packages.yml
================================================
name: coverage

on:
  pull_request:
    paths:
      - 'packages/**'
      - '!packages/**.md'

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' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - uses: ArtiomTr/jest-coverage-report-action@v2
        with:
          working-directory: packages/designer
          test-script: npm test -- --jest-ci --jest-json --jest-coverage --jest-testLocationInResults --jest-outputFile=report.json
          package-manager: yarn
          annotations: none

  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' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - uses: ArtiomTr/jest-coverage-report-action@v2
        with:
          working-directory: packages/renderer-core
          test-script: npm test -- --jest-ci --jest-json --jest-coverage --jest-testLocationInResults --jest-outputFile=report.json
          package-manager: yarn
          annotations: none

  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' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - uses: ArtiomTr/jest-coverage-report-action@v2
        with:
          working-directory: packages/react-simulator-renderer
          test-script: npm test -- --jest-ci --jest-json --jest-coverage --jest-testLocationInResults --jest-outputFile=report.json
          package-manager: yarn
          annotations: none

  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' }}
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - uses: ArtiomTr/jest-coverage-report-action@v2
        with:
          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

================================================
FILE: .github/workflows/help wanted.yml
================================================
name: Help Wanted

on:
  issues:
    types: [labeled]

jobs:
  reply-helper:
    runs-on: ubuntu-latest
    steps:
      - name: help wanted
        if: github.event.label.name == 'help wanted'
        uses: actions-cool/issues-helper@v2
        with:
          actions: 'create-comment'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            Hello @${{ github.event.issue.user.login }}. We totally like your proposal/feedback, PR wanted。

            你好 @${{ github.event.issue.user.login }},我们完全同意你的提议/反馈,欢迎 PR。


================================================
FILE: .github/workflows/insufficient information.yml
================================================
name: Insufficient Info

on:
  issues:
    types: [labeled]

jobs:
  reply-helper:
    runs-on: ubuntu-latest
    steps:
      - name: insufficient information
        if: github.event.label.name == 'insufficient information'
        uses: actions-cool/issues-helper@v2
        with:
          actions: 'create-comment'
          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 可以获得更好、更快的支持。


================================================
FILE: .github/workflows/pr comment by chatgpt.yml
================================================
name: Pull Request Review By ChatGPT

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  code-review:
    name: Code Review
    runs-on: ubuntu-latest

    steps:
      # 判断用户是否有写仓库权限
      - name: 'Check User Permission'
        uses: 'lannonbr/repo-permission-check-action@2.0.0'
        with:
          permission: 'write'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - uses: opensumi/actions/.github/actions/code-review@main
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

================================================
FILE: .github/workflows/pre build.yml
================================================
name: Pre Build

on:
  push:
    paths:
      - 'packages/**'
      - '!packages/**.md'
  pull_request:
    paths:
      - 'packages/**'
      - '!packages/**.md'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Install dependencies and setup
      run: npm install && npm run setup

    - name: Build
      run: npm run build

    - name: Check build status
      run: |
        if [ $? -eq 0 ]; then
          echo "Build succeeded!"
        else
          echo "Build failed!"
          exit 1
        fi


================================================
FILE: .github/workflows/publish docs.yml
================================================
name: Update and Publish Docs

on:
  push:
    branches:
      - develop
    paths:
      - 'docs/docs/**'
  workflow_dispatch:

jobs:
  publish-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          ref: 'develop'
          node-version: '16'
          registry-url: 'https://registry.npmjs.org'
      - run: cd docs && npm install
      - run: |
          cd docs
          npm version patch
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git add package.json
          git commit -m "chore(docs): publish documentation"
          git push
      - run: cd docs && npm run build && npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Get version
        id: get_version
        run: echo "version=$(node -p "require('./docs/package.json').version")" >> $GITHUB_OUTPUT

  comment-pr:
    needs: publish-docs
    runs-on: ubuntu-latest
    steps:
      - name: Comment on PR
        if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
        uses: actions/github-script@v4
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '🚀 New version has been released: ' + '${{ needs.publish-docs.outputs.version }}'
            })


================================================
FILE: .github/workflows/publish engine beta.yml
================================================
name: Publish Engine Beta

on:
  push:
    branches:
      - 'release/[0-9]+.[0-9]+.[0-9]+-beta'
    paths:
      - 'packages/**'

jobs:
  publish-engine:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
          registry-url: 'https://registry.npmjs.org'
      - run: npm install && npm run setup
      - run: |
          npm run build
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
      - run: npm run pub:prerelease
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Get version
        id: get_version
        run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT


================================================
FILE: .github/workflows/publish engine.yml
================================================
name: Publish Engine

on:
  workflow_dispatch:
    inputs:
      publishCommand:
        description: 'publish command'
        required: true

jobs:
  publish-engine:
    runs-on: ubuntu-latest
    if: >-
      contains(github.ref, 'refs/heads/release/') &&
      (github.actor == '1ncounter' || github.actor == 'liujuping')
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '16'
          registry-url: 'https://registry.npmjs.org'
      - run: npm install && npm run setup
      - run: |
          npm run build
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
      - run: npm run ${{ github.event.inputs.publishCommand }}
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Get version
        id: get_version
        run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT


================================================
FILE: .github/workflows/stale.yml
================================================
name: 'Close stale issues and PRs'
on:
  schedule:
    - cron: '30 1 * * *'

jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v4
        with:
          stale-issue-message: 'This issue is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.'
          stale-pr-message: 'This PR is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.'
          close-issue-message: 'This issue was closed because it has been stalled for 10 days with no activity.'
          close-pr-message: 'This PR was closed because it has been stalled for 10 days with no activity.'
          days-before-issue-stale: 10
          days-before-issue-close: 10
          days-before-pr-stale: 10
          days-before-pr-close: 10
          exempt-issue-labels: 'bug,enhancement,good first issue,help wanted,WIP,discussion,documentation,later,material'
          stale-issue-label: 'stale'
          stale-pr-label: 'stale'
          exempt-all-assignee: true

================================================
FILE: .github/workflows/test modules.yml
================================================
name: Lint & Test (Mods)

on:
  push:
    paths:
      - 'modules/**'
      - '!modules/**.md'
  pull_request:
    paths:
      - 'modules/**'
      - '!modules/**.md'

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i

      - name: lint
        run: npm run lint:modules

  test-code-generator:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd modules/code-generator && npm i && npm run build && npm test

================================================
FILE: .github/workflows/test packages.yml
================================================
name: Lint & Test (Pkgs)

on:
  push:
    paths:
      - 'packages/**'
      - '!packages/**.md'
  pull_request:
    paths:
      - 'packages/**'
      - '!packages/**.md'

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: lint
        run: npm run lint

  test-designer:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/designer && npm test

  test-editor-skeleton:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/editor-skeleton && npm test

  test-renderer-core:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/renderer-core && npm test

  test-react-simulator-renderer:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/react-simulator-renderer && npm test

  test-utils:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/utils && npm test

  test-editor-core:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/editor-core && npm test

  test-plugin-command:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: install
        run: npm i && npm run setup:skip-build

      - name: test
        run: cd packages/plugin-command && npm test

================================================
FILE: .gitignore
================================================
# project custom
build
dist
packages/*/lib/
packages/*/es/
packages/*/dist/
packages/*/output/
packages/demo/
package-lock.json
yarn.lock
pnpm-lock.yaml
deploy-space/packages
deploy-space/.env


# 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
coverage-all

# 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

.must.config.js

================================================
FILE: .prettierrc.js
================================================
module.exports = {
  printWidth: 100,
  tabWidth: 2,
  semi: true,
  singleQuote: true,
  trailingComma: 'all',
};


================================================
FILE: .stylelintignore
================================================
# 忽略目录
node_modules/
build/
dist/

# 忽略文件
**/*.min.css
**/*-min.css
**/*.bundle.css


================================================
FILE: .stylelintrc.js
================================================
module.exports = {
  extends: 'stylelint-config-ali',
  rules: {
    "selector-max-id": 2
  }
};


================================================
FILE: CONTRIBUTOR.md
================================================
十分感谢参与贡献过低代码引擎的小伙伴们,下面名单按字母排序:
- [albertxiao1994](https://github.com/albertxiao1994)
- [alex-mm](https://github.com/alex-mm)
- [alvarto](https://github.com/alvarto)
- [alvinhui](https://github.com/alvinhui)
- [boycgit](https://github.com/boycgit)
- [chenmingjia](https://github.com/chenmingjia)
- [Clarence-pan](https://github.com/Clarence-pan)
- [hujiulong](https://github.com/hujiulong)
- [hzd822](https://github.com/hzd822)
- [JackLian](https://github.com/JackLian)
- [jayjliang](https://github.com/jayjliang)
- [Jeffery-Young](https://github.com/Jeffery-Young)
- [jinggk](https://github.com/jinggk)
- [junlonghuo](https://github.com/junlonghuo)
- [leoyuan](https://github.com/leoyuan)
- [liujuping](https://github.com/liujuping)
- [lqy978599280](https://github.com/lqy978599280)
- [markyun](https://github.com/markyun)
- [mark-ck](https://github.com/mark-ck)
- [mochen666](https://github.com/mochen666)
- [tsy77](https://github.com/tsy77)
- [yanbingbing](https://github.com/yanbingbing)
- [Ychangqing](https://github.com/Ychangqing)
- [yize](https://github.com/yize)
- [youluna](https://github.com/youluna)
- [ibreathebsb](https://github.com/ibreathebsb)

如果您贡献过低代码引擎,但是没有看到您的名字,为我们的疏忽感到抱歉。欢迎您通过 PR 补充上自己的名字。


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 Alibaba

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: abc.json
================================================
{
  "name": "lowcode-engine",
  "assets": {
    "type": "command",
    "command": {
      "cmd": [
        "./scripts/deploy.sh $BUILD_DEST"
      ]
    }
  }
}


================================================
FILE: babel.config.js
================================================
module.exports = {
  plugins: [
    ['@babel/plugin-proposal-decorators', { legacy: true }],
    [require.resolve('@babel/plugin-proposal-class-properties'), { loose: true }],
  ],
};

================================================
FILE: commitlint.config.js
================================================
module.exports = {
  extends: ['ali'],
};


================================================
FILE: deploy-space/lerna.json
================================================
{
  "version": "independent",
  "npmClient": "yarn",
  "registry": "http://registry.npm.alibaba-inc.com",
  "useWorkspaces": true,
  "packages": [
    "packages/*"
  ]
}


================================================
FILE: deploy-space/package.json
================================================
{
  "private": true,
  "workspaces": {
    "packages": [
      "packages/*"
    ],
    "nohoist": [
      "**/css-modules-typescript-loader",
      "**/@alife/theme-lowcode-*"
    ]
  },
  "dependencies": {
    "tslib": "^1.11.1",
    "typescript": "^3.8.3"
  }
}


================================================
FILE: deploy-space/static/index.html
================================================
<!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</title>
    <link rel="shortcut icon" href="./favicon.png" />
    <script src="https://g.alicdn.com/code/lib/react/16.9.0/umd/react.development.js"></script>
    <script src="https://g.alicdn.com/code/lib/react-dom/16.9.0/umd/react-dom.development.js"></script>
    <script src="https://g.alicdn.com/code/lib/prop-types/15.7.2/prop-types.js"></script>
    <script> React.PropTypes = PropTypes; </script>
    <script src="https://g.alicdn.com/platform/c/??react15-polyfill/0.0.1/dist/index.js,lodash/4.6.1/lodash.min.js,immutable/3.7.6/dist/immutable.min.js,natty-storage/2.0.2/dist/natty-storage.min.js,natty-fetch/2.6.0/dist/natty-fetch.pc.min.js,tinymce/4.2.5/tinymce-full.js"></script>
    <script src="https://g.alicdn.com/mylib/moment/2.24.0/min/moment.min.js"></script>
    <link rel="stylesheet" href="https://alifd.alicdn.com/npm/@alifd/next/1.11.6/next.min.css" />
    <script src="https://unpkg.alibaba-inc.com/@alifd/next@1.18.17/dist/next.min.js"></script>
    <!-- lowcode engine globals -->
    <link rel="stylesheet" href="./editor-preset-vision.css" />
    <!-- lowcode engine app -->
    <link rel="stylesheet" href="./lowcode-editor.css" />
    <script>
      window.pageConfig = {
        env: 'release',
        locale: 'zh-CN',
        pageType: 'single',
        deviceType: 'web',
        appName: '基础包管理后台',
        appType: '',
        templateType: '',
        pageId: 'FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V',
        slug: 'test',
        appMode: 'back',
        isAppAdmin: 'y',
        isSuperAdmin: 'n',
        isBetaDeveloper: 'n',
        formType: 'display',
        title: { 'en-US': 'Test', type: 'i18n', 'zh-CN': '测试' },
        urlPrefix: 'https://go.alibaba-inc.com',
        APIUrlPrefix: 'https://mocks.alibaba-inc.com/mock/lowCodeEngine',
        devVersion: '0.1.0', // 这个是子应用的变更 id
        subAppType: '0.1.0',
        appKey: '',
        RE_VERSION: '7.1.1',
        appSource: '',
        isDomainDefault: 'n',
        useReleaseBundle: 'n',
        isDomainPkg: 'n',
        medusaAppName: '',
        domainCode: 'kS6SyH',
        aecp: {
          mdcDomain: '',
          projectId: '',
          appCode: '',
        },
        designerConfigs: {},
        navConfig:
          '{"appName":{"en-US":"基础包管理后台","key":"","type":"i18n","zh-CN":"基础包管理后台"},"bgColor":"white","data":[{"children":[],"hidden":false,"icon":"","inner":true,"navUuid":"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V","relateUuid":"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V","slug":"test","targetNew":false,"title":{"en-US":"测试","type":"i18n","zh-CN":"测试"}}],"isFixed":"y","isFold":"y","isFoldHorizontal":"n","languageChangeUrl":{"en-US":"/common/account/changeAccountLanguage.json","type":"i18n","zh-CN":"/common/account/changeAccountLanguage.json"},"layout":"auto","navStyle":"orange","navTheme":"light","openSubMode":false,"showAppTitle":true,"showCrumb":true,"showIcon":false,"showLanguageChange":true,"showNav":true,"showSearch":"n","singletons":{"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V":{"isFixed":"n","isFold":"n","isFoldHorizontal":"n","showAppTitle":false,"showCrumb":false,"showLanguageChange":false,"showNav":false,"showSearch":"n","singleton":false},"test":{"$ref":"$.singletons.FORM\\-3KYJN7RV\\-DIOD8LLK1WGQ89S7NHA92\\-QJVH497K\\-V"}},"type":"top_fold"}',
        historyType: 'HASH',
        isSinglePage: 'n',
        rhino: 'n',
        isMiniApp: '',
        taskId: '',
        appSchema: 'V5',
        openSubMode: 'n',
      };
      window.g_config = {};
    </script>
  </head>

  <body>
    <div id="lce-container"></div>
    <!-- lowcode engine globals -->
    <script src="./editor-preset-vision.js"></script>
    <script src="https://dev.g.alicdn.com/vision/visualengine-utils/5.0.0/engine-utils.js"></script>
    <link rel="stylesheet" type="text/css" href="//g.alicdn.com/??platform/common/s/1.1/global/global.css,uxcore/uxcore-kuma/2.2.1/orange.min.css">
    <!-- lowcode engine app -->
    <script src="./lowcode-editor.js"></script>
  </body>
</html>


================================================
FILE: deploy-space/static/preview.html
================================================
<!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</title>
    <link rel="shortcut icon" href="./favicon.png" />
    <script src="https://g.alicdn.com/code/lib/react/16.9.0/umd/react.development.js"></script>
    <script src="https://g.alicdn.com/code/lib/react-dom/16.9.0/umd/react-dom.development.js"></script>
    <script src="https://g.alicdn.com/code/lib/prop-types/15.7.2/prop-types.js"></script>
    <script> React.PropTypes = PropTypes; </script>
    <script src="https://g.alicdn.com/platform/c/??react15-polyfill/0.0.1/dist/index.js,lodash/4.6.1/lodash.min.js,immutable/3.7.6/dist/immutable.min.js,natty-storage/2.0.2/dist/natty-storage.min.js,natty-fetch/2.6.0/dist/natty-fetch.pc.min.js,tinymce/4.2.5/tinymce-full.js"></script>
    <script src="https://g.alicdn.com/mylib/moment/2.24.0/min/moment.min.js"></script>
    <link rel="stylesheet" href="https://alifd.alicdn.com/npm/@alifd/next/1.11.6/next.min.css" />
    <script src="https://unpkg.alibaba-inc.com/@alifd/next@1.18.17/dist/next.min.js"></script>
    <!-- lowcode engine globals -->
    <link rel="stylesheet" href="./core.css" />
    <!-- lowcode engine globals -->
    <link rel="stylesheet" href="./vision-preset.css" />
    <!-- lowcode engine app -->
    <link rel="stylesheet" href="./lowcode-editor.css" />
    <script>
      window.pageConfig = {
        env: 'release',
        locale: 'zh-CN',
        pageType: 'single',
        deviceType: 'web',
        appName: '基础包管理后台',
        appType: '',
        templateType: '',
        pageId: 'FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V',
        slug: 'test',
        appMode: 'back',
        isAppAdmin: 'y',
        isSuperAdmin: 'n',
        isBetaDeveloper: 'n',
        formType: 'display',
        title: { 'en-US': 'Test', type: 'i18n', 'zh-CN': '测试' },
        urlPrefix: 'https://go.alibaba-inc.com',
        APIUrlPrefix: 'https://mocks.alibaba-inc.com/mock/lowCodeEngine',
        devVersion: '0.1.0', // 这个是子应用的变更 id
        subAppType: '0.1.0',
        appKey: '',
        RE_VERSION: '7.1.1',
        appSource: '',
        isDomainDefault: 'n',
        useReleaseBundle: 'n',
        isDomainPkg: 'n',
        medusaAppName: '',
        domainCode: 'kS6SyH',
        aecp: {
          mdcDomain: '',
          projectId: '',
          appCode: '',
        },
        designerConfigs: {},
        navConfig:
          '{"appName":{"en-US":"基础包管理后台","key":"","type":"i18n","zh-CN":"基础包管理后台"},"bgColor":"white","data":[{"children":[],"hidden":false,"icon":"","inner":true,"navUuid":"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V","relateUuid":"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V","slug":"test","targetNew":false,"title":{"en-US":"测试","type":"i18n","zh-CN":"测试"}}],"isFixed":"y","isFold":"y","isFoldHorizontal":"n","languageChangeUrl":{"en-US":"/common/account/changeAccountLanguage.json","type":"i18n","zh-CN":"/common/account/changeAccountLanguage.json"},"layout":"auto","navStyle":"orange","navTheme":"light","openSubMode":false,"showAppTitle":true,"showCrumb":true,"showIcon":false,"showLanguageChange":true,"showNav":true,"showSearch":"n","singletons":{"FORM-3KYJN7RV-DIOD8LLK1WGQ89S7NHA92-QJVH497K-V":{"isFixed":"n","isFold":"n","isFoldHorizontal":"n","showAppTitle":false,"showCrumb":false,"showLanguageChange":false,"showNav":false,"showSearch":"n","singleton":false},"test":{"$ref":"$.singletons.FORM\\-3KYJN7RV\\-DIOD8LLK1WGQ89S7NHA92\\-QJVH497K\\-V"}},"type":"top_fold"}',
        historyType: 'HASH',
        isSinglePage: 'n',
        rhino: 'n',
        isMiniApp: '',
        taskId: '',
        appSchema: 'V5',
        openSubMode: 'n',
      };
      window.g_config = {};
    </script>
  </head>

  <body>
    <div id="lce-container"></div>
    <!-- lowcode engine globals -->
    <script src="./core.js"></script>
    <!-- lowcode engine globals -->
    <script src="./vision-preset.js"></script>
    <script src="https://dev.g.alicdn.com/vision/visualengine-utils/5.0.0/engine-utils.js"></script>
    <link rel="stylesheet" type="text/css" href="//g.alicdn.com/??platform/common/s/1.1/global/global.css,uxcore/uxcore-kuma/2.2.1/orange.min.css">
    <!-- lowcode engine app -->
    <script src="./lowcode-editor.js"></script>
  </body>
</html>


================================================
FILE: deploy-space/tsconfig.json
================================================
{
  "compilerOptions": {
    "declaration": false,
    "lib": ["es2015", "dom"],
    // Target latest version of ECMAScript.
    "target": "esnext",
    // Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.
    "module": "esnext",
    // Search under node_modules for non-relative imports.
    "moduleResolution": "node",
    // Process & infer types from .js files.
    "allowJs": true,
    // Report errors in .js files.
    "checkJs": false,
    // Don't emit; allow Babel to transform files.
    // "noEmit": true,
    // Enable strictest settings like strictNullChecks & noImplicitAny.
    "strict": false,
    // Allow default imports from modules with no default export. This does not affect code emit, just typechecking.
    "allowSyntheticDefaultImports": true,
    // Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.
    "esModuleInterop": true,
    // Specify JSX code generation: 'preserve', 'react-native', or 'react'.
    "jsx": "preserve",
    // Import emit helpers (e.g. __extends, __rest, etc..) from tslib
    "importHelpers": true,
    // Enables experimental support for ES7 decorators.
    "experimentalDecorators": true,
    // Generates corresponding .map file.
    "sourceMap": false,
    // Disallow inconsistently-cased references to the same file.
    "forceConsistentCasingInFileNames": true,
    // Allow json import
    "resolveJsonModule": true,
    // skip type checking of declaration files
    "skipLibCheck": true,
    "outDir": "lib"
  },
  "exclude": ["**/test", "**/lib", "**/es", "node_modules"]
}


================================================
FILE: docs/.gitignore
================================================
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*


================================================
FILE: docs/README.md
================================================
# Low-Code Engine 文档中心(site)

This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.

### 安装

```
$ yarn
```

### 本地开发

```
$ yarn start
```

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

### 构建

```
$ yarn build
```

### 部署
```bash
1. npm run build
2. npm publish # 记得改下版本号,比如 1.0.1

# 发布完后执行 tnpm syncOss 同步到 uipaas CDN
3. tnpm syncOss

4. 更新 diamond 版本 1.0.1
5. lowcode-engine.cn 站点生效
```


## 功能
- [x] 支持本地离线搜搜
- [x] 版本化文档管理
- [x] 离线静态部署
- [x] 主题(fork 宜搭开发者中心)

## 使用文档
https://docusaurus.io/zh-CN/docs/docs-introduction


================================================
FILE: docs/babel.config.js
================================================
module.exports = {
  presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};


================================================
FILE: docs/community/issue.md
================================================
---
title: 关于引擎的 issue 说明
sidebar_position: 2
---
> 提交地址:[https://github.com/alibaba/lowcode-engine/issues](https://github.com/alibaba/lowcode-engine/issues)

### 提交前必读
由于引擎项目复杂,很多问题在复现和沟通上无法花费太多时间,需要大家尽力将复现步骤说明白。


![image.png](./img/you-think.png)

**你以为的 issue**


![image.png](./img/i-see.png)

**我们看到的 issue**

为了更好的进行协作,对引擎 issue 的处理定了一些处理的优先级。请大家认真阅读 Orz.

- 【支持快】通过线上 Demo 地址 + 控制台输入 API 可复现。
- 【支持快】通过线上 Demo + 导入 schema 可复现
- 【支持稍慢】通过线上 Demo + 完整操作步骤可复现
- 【支持稍慢】通过线上 Demo + 变更代码可复现,并清楚的说明变更代码的位置和内容
- 【支持慢】有完整的项目地址,下载下来可直接安装依赖并启动复现的
- 【支持慢】需求类型的由于人力有限,欢迎大家 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

// 新建 doc 并成功切换
window.AliLowCodeEngine.project.openDocument({
    componentName: 'Page'
});

// 无法切换回来
window.AliLowCodeEngine.project.openDocument('docl4xkca5b')
```

预期效果:

- 使用 openDocument 可以正常的切换回原来的 doc

#### 【支持快】通过线上 demo + 导入 schema 可复现
步骤:

- 使用线上 demo
- 导入下面的 schema
- schema 代码/schema zip 压缩包
- 页面效果如下

期望:

- 页面中的 xxx 部分和预期不符合,期望的效果是 xxx

#### 【支持稍慢】通过线上 demo + 完整操作步骤可复现
**示例**
1.使用 antd 组件
![image.png](https://img.alicdn.com/imgextra/i4/O1CN019dFe4Y24SDKbmpbdw_!!6000000007389-2-tps-3584-1812.png)

2.拖拽这个组件
![image.png](https://img.alicdn.com/imgextra/i2/O1CN0109SdxO1OtxSbpLn4Q_!!6000000001764-2-tps-3584-1802.png)

3.配置该属性值为 100
![image.png](https://img.alicdn.com/imgextra/i3/O1CN01WeVXpW1HBny0VmQcS_!!6000000000720-2-tps-3584-1800.png)

期望效果:

- 组件同配置一致

#### 【支持稍慢】通过线上 demo + 变更代码可复现,并清楚的说明变更代码的位置和内容
**示例**
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01FL0Urq1tl1pLcYhJH_!!6000000005941-2-tps-1892-754.png)

![image.png](https://img.alicdn.com/imgextra/i3/O1CN01WIpR9V1i363wzyFzi_!!6000000004356-2-tps-1917-778.png)

![image.png](https://img.alicdn.com/imgextra/i1/O1CN01ZDkR3n1MNmP2uk15t_!!6000000001423-2-tps-1836-253.png)

![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)




### 扩展阅读
强烈推荐阅读 [《提问的智慧》](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))


================================================
FILE: docs/config/navbar.js
================================================
/**
 * 此配置的修改,如未生效,可以重新启动下即可
 */
module.exports = {
  title: '',
  logo: {
    alt: 'LowCode-Engine',
    src: 'https://img.alicdn.com/imgextra/i2/O1CN01uv6vu822RBCSYLro2_!!6000000007116-55-tps-139-26.svg',
    srcDark: 'https://tianshu.alicdn.com/052a190e-c961-4afe-aa4c-49ee9722952d.svg',
  },
  items: [
    {
      type: 'doc',
      docId: 'guide/quickStart/intro',
      position: 'left',
      label: '文档',
    },
    {
      type: 'doc',
      docId: 'api/index',
      position: 'left',
      label: 'API',
    },
    {
      type: 'doc',
      docId: 'specs/lowcode-spec',
      position: 'left',
      label: '协议',
    },
    {
      type: 'doc',
      docId: 'faq/index',
      position: 'left',
      label: 'FAQ',
    },
    {
      type: 'doc',
      docId: 'article/index',
      position: 'left',
      label: '文章',
    },
    {
      type: 'doc',
      docId: 'video/index',
      position: 'left',
      label: '视频',
    },
    {
      type: 'doc',
      docId: 'demoUsage/intro',
      position: 'left',
      label: 'Demo 使用文档',
    },
    {
      to: '/community/issue',
      position: 'left',
      label: '社区',
      activeBaseRegex: '/community/',
    },
    // 版本切换,如需,这里开启即可
    // {
    //   type: 'docsVersionDropdown',
    //   position: 'right',
    //   dropdownActiveClassDisabled: true,
    // },
    // {
    {
      href: 'https://github.com/alibaba/lowcode-engine',
      position: 'right',
      className: 'header-github-link',
      'aria-label': 'GitHub repository',
    },
    {
      type: 'doc',
      docId: 'participate/index',
      position: 'right',
      label: '参与贡献',
    },
    {
      type: 'search',
      position: 'right',
    },
  ],
};


================================================
FILE: docs/config/sidebars.js
================================================
/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
const getDocsFromDir = require('../scripts/getDocsFromDir');

module.exports = {
  // 手动配置的导航
  // guide: [
  //   'guide/quickStart/intro',
  //   'guide/quickStart/start',
  //   {
  //     type: 'category',
  //     label: 'FAQ',
  //     collapsed: false,
  //     items: getDocsFromDir('guide/quickStart/faq'),
  //   },
  // ],
  /**
   * 根据当前目录自动生成导航配置
   */
  guide: [
    [
      {
        type: 'category',
        label: '入门',
        collapsed: false,
        items: getDocsFromDir('guide/quickStart'),
      },
      {
        type: 'category',
        label: '创建编辑器',
        collapsed: false,
        items: getDocsFromDir('guide/create'),
      },
      {
        type: 'category',
        label: '扩展编辑器',
        collapsed: false,
        items: getDocsFromDir('guide/expand/editor', [{ dir: 'guide/expand/editor/parts', label: 'Parts·造物' }]),
      },
      {
        type: 'category',
        label: '扩展运行时',
        collapsed: false,
        items: getDocsFromDir('guide/expand/runtime'),
      },
      {
        type: 'category',
        label: '设计原理',
        collapsed: false,
        items: getDocsFromDir('guide/design'),
      },
      {
        type: 'category',
        label: '附录',
        collapsed: false,
        items: [
          {
            type: 'link',
            label: '更新日志',
            href: 'https://github.com/alibaba/lowcode-engine/releases',
          },
          ...getDocsFromDir('guide/appendix'),
          {
            type: 'category',
            label: '预置设置器详情',
            items: getDocsFromDir('guide/appendix/setterDetails'),
          },
        ],
      },
      {
        type: 'link',
        label: '技术白皮书',
        href: 'https://developer.aliyun.com/ebook/7507',
      },
    ],
  ],
  api: [
    {
      type: 'autogenerated',
      dirName: 'api',
    },
  ],
  specs: [
    {
      type: 'autogenerated',
      dirName: 'specs',
    },
  ],
  faq: [
    {
      type: 'autogenerated',
      dirName: 'faq',
    },
  ],
  participate: [
    {
      type: 'autogenerated',
      dirName: 'participate',
    },
  ],
  demoUsage: [
    {
      type: 'autogenerated',
      dirName: 'demoUsage',
    },
  ],
};


================================================
FILE: docs/config/sidebarsCommunity.js
================================================
module.exports = {
  community: [
    {
      type: 'autogenerated',
      dirName: '.',
    },
    {
      type: 'link',
      label: '生态资源',
      href: 'https://github.com/lowcode-workspace/awesome-lowcode-engine',
    },
  ],
};


================================================
FILE: docs/docs/api/canvas.md
================================================
---
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


## 模块简介

通过该模块可以触达对画布拖拽相关的一些能力。

## 变量

### dragon

获取拖拽操作对象的实例

`@type {IPublicModelDragon | null}`


相关类型:[IPublicModelDragon](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/dragon.ts)

### activeTracker

获取活动追踪器实例

`@type {IPublicModelActiveTracker | null}`

相关类型:[IPublicModelActiveTracker](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/active-tracker.ts)

### isInLiveEditing

是否处于 LiveEditing 状态

`@type {boolean}`

### clipboard
全局剪贴板实例

`@type {IPublicModelClipboard}`

相关类型:[IPublicModelClipboard](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/clipboard.ts)

## 方法

### createLocation
创建一个文档插入位置对象,该对象用来描述一个即将插入的节点在文档中的位置

```typescript
/**
 * 创建一个文档插入位置对象,该对象用来描述一个即将插入的节点在文档中的位置
 * create a drop location for document, drop location describes a location in document
 * @since v1.1.0
 */
createLocation(locationData: IPublicTypeLocationData): IPublicModelDropLocation;
```

### createScroller
创建一个滚动控制器 Scroller,赋予一个视图滚动的基本能力,
```typescript
/**
 * 创建一个滚动控制器 Scroller,赋予一个视图滚动的基本能力,
 * a Scroller is a controller that gives a view (IPublicTypeScrollable) the ability scrolling
 * to some cordination by api scrollTo.
 *
 * when a scroller is inited, will need to pass is a scrollable, which has a scrollTarget.
 * and when scrollTo(options: { left?: number; top?: number }) is called, scroller will
 * move scrollTarget`s top-left corner to (options.left, options.top) that passed in.
 * @since v1.1.0
 */
createScroller(scrollable: IPublicTypeScrollable): IPublicModelScroller;

```

### createScrollTarget
创建一个 ScrollTarget,与 Scroller 一起发挥作用,详见 [createScroller](#createscroller) 中的描述

```typescript
/**
 * 创建一个 ScrollTarget,与 Scroller 一起发挥作用,详见 createScroller 中的描述
 * this works with Scroller, refer to createScroller`s description
 * @since v1.1.0
 */
createScrollTarget(shell: HTMLDivElement): IPublicModelScrollTarget;
```


================================================
FILE: docs/docs/api/command.md
================================================
---
title: command - 指令 API
sidebar_position: 10
---



## 模块概览

该模块使得与命令系统的交互成为可能,提供了一种全面的方式来处理、执行和管理应用程序中的命令。



## 接口

### IPublicApiCommand

与命令交互的接口。它提供了注册、注销、执行和管理命令的方法。



## 方法

### registerCommand

注册一个新命令及其处理函数。

```
typescriptCopy code
/**
 * 注册一个新的命令及其处理程序。
 * @param command {IPublicTypeCommand} - 要注册的命令。
 */
registerCommand(command: IPublicTypeCommand): void;
```

### unregisterCommand

注销一个已存在的命令。

```
typescriptCopy code
/**
 * 注销一个已存在的命令。
 * @param name {string} - 要注销的命令的名称。
 */
unregisterCommand(name: string): void;
```

### executeCommand

根据名称和提供的参数执行命令,确保参数符合命令的定义。

```
typescriptCopy code
/**
 * 根据名称和提供的参数执行命令。
 * @param name {string} - 要执行的命令的名称。
 * @param args {IPublicTypeCommandHandlerArgs} - 命令的参数。
 */
executeCommand(name: string, args?: IPublicTypeCommandHandlerArgs): void;
```

### batchExecuteCommand

批量执行命令,在所有命令执行后进行重绘,历史记录中只记录一次。

```
typescriptCopy code
/**
 * 批量执行命令,随后进行重绘,历史记录中只记录一次。
 * @param commands {Array} - 命令对象的数组,包含名称和可选参数。
 */
batchExecuteCommand(commands: { name: string; args?: IPublicTypeCommandHandlerArgs }[]): void;
```

### listCommands

列出所有已注册的命令。

```
typescriptCopy code
/**
 * 列出所有已注册的命令。
 * @returns {IPublicTypeListCommand[]} - 已注册命令的数组。
 */
listCommands(): IPublicTypeListCommand[];
```

### onCommandError

为命令执行过程中的错误注册错误处理回调函数。

```
typescriptCopy code
/**
 * 为命令执行过程中的错误注册一个回调函数。
 * @param callback {(name: string, error: Error) => void} - 错误处理的回调函数。
 */
onCommandError(callback: (name: string, error: Error) => void): void;
```


================================================
FILE: docs/docs/api/common.md
================================================
---
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


## 模块简介
通用模块里包含除了几大核心模块 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
/**
  * 是否为合法的 schema 结构
  * check if data is valid NodeSchema
  *
  * @param {*} data
  * @returns {boolean}
  */
isNodeSchema(data: any): boolean;
```

#### isFormEvent
是否为表单事件类型

```typescript
/**
 * 是否为表单事件类型
 * check if e is a form event
 * @param {(KeyboardEvent | MouseEvent)} e
 * @returns {boolean}
 */
isFormEvent(e: KeyboardEvent | MouseEvent): boolean;
```

#### getNodeSchemaById
从 schema 结构中查找指定 id 节点
```typescript
/**
 * 从 schema 结构中查找指定 id 节点
 * get node schema from a larger schema with node id
 * @param {IPublicTypeNodeSchema} schema
 * @param {string} nodeId
 * @returns {(IPublicTypeNodeSchema | undefined)}
 */
getNodeSchemaById(
    schema: IPublicTypeNodeSchema,
    nodeId: string,
  ): IPublicTypeNodeSchema | undefined;
```
相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)

#### executeTransaction
批处理事务,用于优化特定场景的性能

```typescript
/**
 * 批处理事务,用于优化特定场景的性能
 * excute something in a transaction for performence
 *
 * @param {() => void} fn
 * @param {IPublicEnumTransitionType} type
 * @since v1.0.16
 */
executeTransaction(fn: () => void, type: IPublicEnumTransitionType): void;
```
**@since v1.0.16**

**示例**
```typescript
import { common } from '@alilc/lowcode-engine';
import { IPublicEnumTransitionType } from '@alilc/lowcode-types';

common.utils.startTransaction(() => {
  node1.setProps();
  node2.setProps();
  node3.setProps();
  // ...
}, IPublicEnumTransitionType.repaint);
```

#### getConvertedExtraKey

props key 转化工具

```typescript
getConvertedExtraKey(key: string): string

```

**@since v1.0.17**

#### createIntl
i18n 相关工具
```typescript
/**
 * i18n 相关工具
 * i18n tools
 *
 * @param {(string | object)} instance
 * @returns {{
 *     intlNode(id: string, params?: object): ReactNode;
 *     intl(id: string, params?: object): string;
 *     getLocale(): string;
 *     setLocale(locale: string): void;
 *   }}
 * @since v1.0.17
 */
createIntl(instance: string | object): {
  intlNode(id: string, params?: object): ReactNode;
  intl(id: string, params?: object): string;
  getLocale(): string;
  setLocale(locale: string): void;
};
```

**@since v1.0.17**

**示例**

```typescript
import { common } from '@alilc/lowcode-engine';
import enUS from './en-US.json';
import zhCN from './zh-CN.json';

const { intl, getLocale, setLocale } = common.utils.createIntl({
  'en-US': enUS,
  'zh-CN': zhCN,
});

```

#### intl

i18n 转换方法

```typescript
/**
 * i18n 转换方法
 */
intl(data: IPublicTypeI18nData | string, params?: object): string;
```

**示例**
```
const title = common.utils.intl(node.title)
```

### skeletonCabin
#### Workbench
编辑器框架 View

```typescript
/**
 * 编辑器框架 View
 * get Workbench Component
 */
get Workbench(): Component;
```


================================================
FILE: docs/docs/api/commonUI.md
================================================
---
title: commonUI - UI 组件库
sidebar_position: 10
---

## 简介
CommonUI API 是一个专为低代码引擎设计的组件 UI 库,使用它开发的插件,可以保证在不同项目和主题切换中能够保持一致性和兼容性。

## 组件列表

### Tip

提示组件

| 参数      | 说明         | 类型                                  | 默认值 |
|-----------|--------------|---------------------------------------|--------|
| className | className    | string (optional)                     |        |
| children  | tip 的内容   | IPublicTypeI18nData \| ReactNode      |        |
| direction | tip 的方向   | 'top' \| 'bottom' \| 'left' \| 'right' |        |


### HelpTip

带 help icon 的提示组件

| 参数      | 说明   | 类型                              | 默认值 |
|-----------|--------|-----------------------------------|--------|
| help      | 描述   | IPublicTypeHelpTipConfig          |        |
| direction | 方向   | IPublicTypeTipConfig['direction'] | 'top'  |
| size      | 方向   | IconProps['size']                 | 'small'|

### Title

标题组件

| 参数      | 说明       | 类型                        | 默认值 |
|-----------|------------|-----------------------------|--------|
| title     | 标题内容   | IPublicTypeTitleContent     |        |
| className | className  | string (optional)           |        |
| onClick   | 点击事件   | () => void (optional)       |        |

### ContextMenu

| 参数   | 说明                                               | 类型                               | 默认值 |
|--------|----------------------------------------------------|------------------------------------|--------|
| menus  | 定义上下文菜单的动作数组                           | IPublicTypeContextMenuAction[]     |        |
| children | 组件的子元素                                      | React.ReactElement[]               |        |

**IPublicTypeContextMenuAction Interface**

| 参数       | 说明                                                         | 类型                                                                                                           | 默认值                                 |
|------------|--------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|----------------------------------------|
| name       | 动作的唯一标识符<br/>Unique identifier for the action         | string                                                                                                         |                                        |
| title      | 显示的标题,可以是字符串或国际化数据<br/>Display title, can be a string or internationalized data | string \| IPublicTypeI18nData (optional)                |                                        |
| type       | 菜单项类型<br/>Menu item type                                 | IPublicEnumContextMenuType (optional)                                                                          | IPublicEnumContextMenuType.MENU_ITEM  |
| action     | 点击时执行的动作,可选<br/>Action to execute on click, optional | (nodes: IPublicModelNode[]) => void (optional)                                                                 |                                        |
| items      | 子菜单项或生成子节点的函数,可选,仅支持两级<br/>Sub-menu items or function to generate child node, optional | Omit<IPublicTypeContextMenuAction, 'items'>[] \| ((nodes: IPublicModelNode[]) => Omit<IPublicTypeContextMenuAction, 'items'>[]) (optional) |                                        |
| condition  | 显示条件函数<br/>Function to determine display condition      | (nodes: IPublicModelNode[]) => boolean (optional)                                                              |                                        |
| disabled   | 禁用条件函数,可选<br/>Function to determine disabled condition, optional | (nodes: IPublicModelNode[]) => boolean (optional)                                                              |                                        |

**ContextMenu 示例**

```typescript
const App = () => {
  const menuItems: IPublicTypeContextMenuAction[] = [
    {
      name: 'a',
      title: '选项 1',
      action: () => console.log('选项 1 被点击'),
    },
    {
      name: 'b',
      title: '选项 2',
      action: () => console.log('选项 2 被点击'),
    },
  ];

  const ContextMenu = ctx.commonUI.ContextMenu;

  return (
    <div>
      <ContextMenu menus={menuItems}>
        <div>右键点击这里</div>
      </ContextMenu>
    </div>
  );
};

export default App;
```

**ContextMenu.create 示例**

```typescript
const App = () => {
  const menuItems: IPublicTypeContextMenuAction[] = [
    {
      name: 'a',
      title: '选项 1',
      action: () => console.log('选项 1 被点击'),
    },
    {
      name: 'b',
      title: '选项 2',
      action: () => console.log('选项 2 被点击'),
    },
  ];

  const ContextMenu = ctx.commonUI.ContextMenu;

  return (
    <div>
      <div onClick={(e) => {
      	ContextMenu.create(menuItems, e);
      }}>点击这里</div>
    </div>
  );
};

export default App;
```

### Balloon

详细文档: [Balloon Documentation](https://fusion.design/pc/component/balloon)

### Breadcrumb
详细文档: [Breadcrumb Documentation](https://fusion.design/pc/component/breadcrumb)

### Button
详细文档: [Button Documentation](https://fusion.design/pc/component/button)

### Card
详细文档:[Card Documentation](https://fusion.design/pc/component/card)

### Checkbox
详细文档:[Checkbox Documentation](https://fusion.design/pc/component/checkbox)

### DatePicker
详细文档:[DatePicker Documentation](https://fusion.design/pc/component/datepicker)

### Dialog
详细文档:[Dialog Documentation](https://fusion.design/pc/component/dialog)

### Dropdown
详细文档:[Dropdown Documentation](https://fusion.design/pc/component/dropdown)

### Form
详细文档:[Form Documentation](https://fusion.design/pc/component/form)

### Icon
详细文档:[Icon Documentation](https://fusion.design/pc/component/icon)

引擎默认主题支持的 icon 列表:https://fusion.design/64063/component/icon?themeid=20133


### Input
详细文档:[Input Documentation](https://fusion.design/pc/component/input)

### Loading
详细文档:[Loading Documentation](https://fusion.design/pc/component/loading)

### Message
详细文档:[Message Documentation](https://fusion.design/pc/component/message)

### Overlay
详细文档:[Overlay Documentation](https://fusion.design/pc/component/overlay)

### Pagination
详细文档:[Pagination Documentation](https://fusion.design/pc/component/pagination)

### Radio
详细文档:[Radio Documentation](https://fusion.design/pc/component/radio)

### Search
详细文档:[Search Documentation](https://fusion.design/pc/component/search)

### Select
详细文档:[Select Documentation](https://fusion.design/pc/component/select)

### SplitButton
详细文档:[SplitButton Documentation](https://fusion.design/pc/component/splitbutton)

### Step
详细文档:[Step Documentation](https://fusion.design/pc/component/step)

### Switch
详细文档:[Switch Documentation](https://fusion.design/pc/component/switch)

### Tab
详细文档:[Tab Documentation](https://fusion.design/pc/component/tab)

### Table
详细文档:[Table Documentation](https://fusion.design/pc/component/table)

### Tree
详细文档:[Tree Documentation](https://fusion.design/pc/component/tree)

### TreeSelect
详细文档:[TreeSelect Documentation](https://fusion.design/pc/component/treeselect)

### Upload
详细文档:[Upload Documentation](https://fusion.design/pc/component/upload)

### Divider
详细文档:[Divider Documentation](https://fusion.design/pc/component/divider)

## 说明

如果需要其他组件,可以提 issue 给我们。


================================================
FILE: docs/docs/api/config.md
================================================
---
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


## 模块简介
配置模块,负责配置的读、写等操作。

## 方法
### get
获取指定 key 的值

```typescript
/**
 * 获取指定 key 的值
 * get value by key
 * @param key
 * @param defaultValue
 * @returns
 */
get(key: string, defaultValue?: any): any;
```
**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.get('keyA', true);
config.get('keyB', { a: 1 });
```
### set
设置指定 key 的值

```typescript
/**
 * 设置指定 key 的值
 * set value for certain key
 * @param key
 * @param value
 */
set(key: string, value: any): void;
```
**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.set('keyC', 1);
```

### has
判断指定 key 是否有值

```typescript
/**
 * 判断指定 key 是否有值
 * check if config has certain key configed
 * @param key
 * @returns
 */
has(key: string): boolean;
```

**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.has('keyD');
```

### setConfig
批量设值,set 的对象版本

```typescript
/**
 * 批量设值,set 的对象版本
 * set multiple config key-values
 * @param config
 */
setConfig(config: { [key: string]: any }): void;
```
**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.setConfig({ keyA: false, keyB: 2 });
```

### getPreference
获取全局 Preference 管理器,用于管理全局浏览器侧用户 Preference,如 Panel 是否钉住

```typescript
/**
 * 获取全局 Preference, 用于管理全局浏览器侧用户 Preference,如 Panel 是否钉住
 * get global user preference manager, which can be use to store
 * user`s preference in user localstorage, such as a panel is pinned or not.
 * @returns {IPublicModelPreference}
 * @since v1.1.0
 */
getPreference(): IPublicModelPreference;
```
相关类型:[IPublicModelPreference](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/preference.ts)

**@since v1.1.0**

示例

```javascript
import { config } from '@alilc/lowcode-engine';

const panelName = 'outline-master-pane';

// 设置大纲树面板钉住,在大纲树下次重新打开时生效
config.getPreference().set(`${panelName}-pinned-status-isFloat`, false, 'skeleton')
```

## 事件

### onceGot
获取指定 key 的值,若此时还未赋值,则等待,若已有值,则直接返回值
注:此函数返回 Promise 实例


```typescript
/**
 * 获取指定 key 的值,若此时还未赋值,则等待,若已有值,则直接返回值
 *  注:此函数返回 Promise 实例,只会执行(fullfill)一次
 * wait until value of certain key is set, will only be
 * triggered once.
 * @param key
 * @returns
 */
onceGot(key: string): Promise<any>;
```
**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.onceGot('keyA').then(value => {
  console.log(`The value of keyA is ${value}`);
});

// or
const value = await config.onceGot('keyA');
```

### onGot
获取指定 key 的值,函数回调模式,若多次被赋值,回调会被多次调用

```typescript
  /**
   * 获取指定 key 的值,函数回调模式,若多次被赋值,回调会被多次调用
   * set callback for event of value set for some key
   * this will be called each time the value is set
   * @param key
   * @param fn
   * @returns
   */
  onGot(key: string, fn: (data: any) => void): () => void;
```
**示例**
```typescript
import { config } from '@alilc/lowcode-engine';

config.onGot('keyA', (value) => {
  console.log(`The value of keyA is ${value}`);
});

const.set('keyA', 1); // 'The value of keyA is 1'
const.set('keyA', 2); // 'The value of keyA is 2'
```

================================================
FILE: docs/docs/api/configOptions.md
================================================
---
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/>

## 配置方式

#### init API

```javascript
import { init } from '@alilc/lowcode-engine';

init(document.getElementById('engine'), {
  enableCondition: false,
});
```

[**init api**](./init)

#### config API

```javascript
import { config } from '@alilc/lowcode-engine';

config.set('enableCondition', false)
```

[**config api**](./config)

## 配置详情

> 源码详见 [IPublicTypeEngineOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/engine-options.ts)


### 画布

#### locale - 语言

`@type {string}`、`@default {zh-CN}`

语言

#### device - 设备类型

`@type {string}`

引擎默认支持的 device 类型有 `default`、`mobile`、`iphonex`、`iphone6`。

插件 `@alilc/lowcode-plugin-simulator-select` 支持的 device 类型有 `default`、`phone`、`tablet`、`desktop`。

如果需要自定义的 device 类型,需要补充 device 类型对应的样式,例如 device 为 phone 时,需要补充样式如下:

```css
.lc-simulator-device-phone {
  top: 16px;
  bottom: 16px;
  left: 50%;
  width: 375px;
  transform: translateX(-50%);
  margin: auto;
}
```

#### deviceClassName

`@type {string}`

指定初始化的 deviceClassName,挂载到画布的顶层节点上

#### appHelper

与 react-renderer 的 appHelper 一致,https://lowcode-engine.cn/site/docs/guide/expand/runtime/renderer#apphelper


#### enableCondition

`@type {boolean}`

是否开启 condition 的能力,默认在设计器中不管 condition 是啥都正常展示

#### disableAutoRender

`@type {boolean}` `@default {false}`

关闭画布自动渲染,在资产包多重异步加载的场景有效

#### renderEnv - 渲染器类型

渲染器类型

`@type {string}`、`@default {react}`

#### simulatorUrl

`@type {string[]}`

设置 simulator 相关的 url

#### enableStrictNotFoundMode

`@type {boolean}` `@default {false}`

当开启组件未找到严格模式时,渲染模块不会默认给一个容器组件

### 编排

#### focusNodeSelector - 指定根组件

配置指定节点为根组件

类型定义

```typescript
  focusNodeSelector?: (rootNode: IPublicModelNode) => Node;
```

#### supportVariableGlobally - 全局变量配置

`@type {boolean}` `@default {false}`

设置所有属性支持变量配置

开启拖拽组件时,即将被放入的容器是否有视觉反馈

#### customizeIgnoreSelectors - 点击忽略

配置画布中,需要屏蔽点击事件的元素,即配置的元素默认点击行为均不生效。

类型定义:

```typescript
  customizeIgnoreSelectors?: (defaultIgnoreSelectors: string[], e: MouseEvent) => string[];
```

默认值:

```javascript
() => {
  return [
    '.next-input-group',
    '.next-checkbox-group',
    '.next-checkbox-wrapper',
    '.next-date-picker',
    '.next-input',
    '.next-month-picker',
    '.next-number-picker',
    '.next-radio-group',
    '.next-range',
    '.next-range-picker',
    '.next-rating',
    '.next-select',
    '.next-switch',
    '.next-time-picker',
    '.next-upload',
    '.next-year-picker',
    '.next-breadcrumb-item',
    '.next-calendar-header',
    '.next-calendar-table',
    '.editor-container', // 富文本组件
  ]
}
```

#### enableCanvasLock

`@type {boolean}` `@default {false}`

打开画布的锁定操作

#### enableLockedNodeSetting

`@type {boolean}` `@default {false}`

容器锁定后,容器本身是否可以设置属性,仅当画布锁定特性开启时生效

#### enableMouseEventPropagationInCanvas

`@type {boolean}` `@default {false}`

鼠标事件(mouseover、mouseleave、mousemove)在画布中是否允许冒泡,默认不允许。

#### enableReactiveContainer

`@type {boolean}` `@default {false}`

#### enableContextMenu - 开启右键菜单

`@type {boolean}` `@default {false}`

是否开启右键菜单

#### disableDetecting

`@type {boolean}` `@default {false}`

关闭拖拽组件时的虚线响应,性能考虑


#### disableDefaultSettingPanel

`@type {boolean}` `@default {false}`

禁止默认的设置面板

#### disableDefaultSetters

`@type {boolean}` `@default {false}`

禁止默认的设置器

#### stayOnTheSameSettingTab

`@type {boolean}` `@default {false}`

当选中节点切换时,是否停留在相同的设置 tab 上

#### hideSettingsTabsWhenOnlyOneItem

`@type {boolean}` `@default {false}`

是否在只有一个 item 的时候隐藏设置 tabs

#### hideComponentAction

`@type {boolean}` `@default {false}`

隐藏设计器辅助层

#### thisRequiredInJSE

`@type {boolean}` `@default {true}`

JSExpression 是否只支持使用 this 来访问上下文变量,假如需要兼容原来的 'state.xxx',则设置为 false

### 应用级设计器

#### enableWorkspaceMode - 应用级设计模式

`@type {boolean}` `@default {false}`

开启应用级设计模式

#### enableAutoOpenFirstWindow

`@type {boolean}` `@default {true}`

应用级设计模式下,自动打开第一个窗口

#### workspaceEmptyComponent

应用级设计模式下,当窗口为空时,展示的占位组件

### 定制组件

#### faultComponent

组件渲染错误时的占位组件

#### notFoundComponent

组件不存在时的占位组件

#### loadingComponent - loading 组件

自定义 loading 组件

### 插件

#### defaultSettingPanelProps

内置设置面板插件的 panelProps

#### defaultOutlinePaneProps

内置大纲树面板插件的 panelProps

### 其他

#### enableStrictPluginMode

`@type {boolean}`

开启严格插件模式,默认值:STRICT_PLUGIN_MODE_DEFAULT , 严格模式下,插件将无法通过 engineOptions 传递自定义配置项

#### requestHandlersMap

数据源引擎的请求处理器映射

#### customPluginTransducer

插件处理中间件,方便提供插件调试能力

类型定义

```typescript
customPluginTransducer: async (originPlugin: IPublicTypePlugin, ctx: IPublicModelPluginContext, options): IPublicTypePlugin;
```

#### defaultOutlinePaneProps

`@type {object}`

大纲树插件面板默认 props



================================================
FILE: docs/docs/api/event.md
================================================
---
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


## 模块简介
负责事件处理 API,支持自定义监听事件、触发事件。

## 方法
### on
监听事件

```typescript
/**
 * 监听事件
 * add monitor to a event
 * @param event 事件名称
 * @param listener 事件回调
 */
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
/**
 * 监听事件,会在其他回调函数之前执行
 * @param event 事件名称
 * @param listener 事件回调
 */
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
/**
 * 取消监听事件
 * cancel a monitor from a event
 * @param event 事件名称
 * @param listener 事件回调
 */
off(event: string, listener: (...args: any[]) => void): void;
```

### emit
触发事件

```typescript
/**
 * 触发事件
 * emit a message for a event
 * @param event 事件名称
 * @param args 事件参数
 * @returns
 */
emit(event: string, ...args: any[]): void;
```

## 使用示例
### 事件触发和监听

```typescript
const eventName = 'eventName';

// 事件监听
// 插件中发出的事件,默认以 `common` 为前缀,监听时需要注意下
event.on(`common:${eventName}`);

// 触发事件
event.emit(eventName);
```

### setter 和 setter/plugin 之间的联动
在 A setter 中进行事件注册:
```typescript
import { event } from '@alilc/lowcode-engine';

const SETTER_NAME = 'SetterA';

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)
  }

  bindEvent = (eventName) => {
    // do someting
  }

  componentWillUnmount() {
  	// setter 是以实例为单位的,每个 setter 注销的时候需要把事件也注销掉,避免事件池过多
    event.off(`common:${this.emitEventName}.bindEvent`, this.bindEvent)
  }
}
```
在 B setter 中触发事件,来完成通信:
```typescript
import { event } from '@alilc/lowcode-engine';

class SetterB extends React.Component {
  bindFunction = () => {
    const { field, value } = this.props;
    // 这里展示的和插件进行通信,事件规则是插件名 + 方法
    event.emit('eventBindDialog.openDialog', field.name, this.emitEventName);
  }
}
```


================================================
FILE: docs/docs/api/hotkey.md
================================================
---
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

## 模块简介
绑定快捷键 API,可以自定义项目快捷键使用。

## 方法
### bind
绑定快捷键

```typescript
/**
 * 绑定快捷键
 * bind hotkey/hotkeys,
 * @param combos 快捷键,格式如:['command + s'] 、['ctrl + shift + s'] 等
 * @param callback 回调函数
 * @param action
 * @returns
 */
bind(
    combos: string[] | string,
    callback: IPublicTypeHotkeyCallback,
    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();
  // command+s 快捷键按下时需要执行的逻辑
});
```

### 同时绑定多个快捷键
```typescript
hotkey.bind(['command+s', 'command+c'], (e) => {
  e.preventDefault();
  // command+s 或者 command+c 快捷键按下时需要执行的逻辑
});
```

### 保存快捷键配置
```typescript
import {
  hotkey,
} from '@alilc/lowcode-engine';

function saveSchema(schema) {
  // 保存 schema 相关操作
}

const saveSampleHotKey = (ctx: IPublicModelPluginContext) => {
  return {
    name: 'saveSample',
    async init() {
      hotkey.bind('command+s', (e) => {
        e.preventDefault();
        saveSchema();
      });
    },
  };
}

saveSampleHotKey.pluginName = 'saveSampleHotKey';
plugins.register(saveSampleHotKey);
```


================================================
FILE: docs/docs/api/index.md
================================================
---
title: API 总览
sidebar_position: 0
---

引擎提供的公开 API 分为`命名空间`和`模型`两类,其中`命名空间`用于聚合一大类的 API,`模型`为各 API 涉及到的对象模型。

## 命名空间

引擎直接提供以下几大类 API

- skeleton 面板 API
- material 物料 API
- project 模型 API
- simulator-host 模拟器 API
- hotkey 快捷键 API
- setters 设置器 API
- event 事件 API
- config 配置 API
- common 通用 API
- logger 日志 API
- init 初始化 API

## 模型
以下模型通过前面的 API 以返回值等形式间接透出。

- document-model 文档
- node 节点
- node-children 节点孩子
- props 属性集
- prop 属性
- setting-field 设置属性
- setting-top-entry 设置属性集
- component-meta 物料元数据
- selection 画布选中
- detecting 画布 hover
- history 操作历史
- window 低代码设计器窗口模型
- detecting 画布节点悬停模型
- modal-nodes-manager 模态节点管理器模型
- plugin-instance 插件实例
- drop-location 拖拽放置位置模型


## API 设计约定
一些 API 设计约定:

1. 所有 API 命名空间都按照 variables / functions / events 来组织
2. 事件(events)的命名格式为:on[Will|Did]VerbNoun?,参考 [https://code.visualstudio.com/api/references/vscode-api#events](https://code.visualstudio.com/api/references/vscode-api#events)
3. 基于 Disposable 模式,对于事件的绑定、快捷键的绑定函数,返回值则是解绑函数
4. 对于属性的导出,统一用 .xxx 的 getter 模式,(尽量)不使用 .getXxx()

## experimental

说明此模块处于公测阶段, API 可能会发生改变.

================================================
FILE: docs/docs/api/init.md
================================================
---
title: init - 初始化 API
sidebar_position: 0
---

> **@since** v1.0.0


## 模块简介
提供 init 等方法
## 方法
#### init
初始化引擎

**方法定义**
```typescript
function init(container?: Element, options?: IPublicTypeEngineOptions): void
```

[**初始化引擎配置参数列表**](./configOptions)


## 使用示例
```typescript
import { init } from '@alilc/lowcode-engine';

init(document.getElementById('engine'), {
  enableCondition: false,
});
```

### 默认打开移动端画布
```typescript
import { init } from '@alilc/lowcode-engine';

init({
  device: 'mobile',
});
```

### 使用 utils 第三方工具扩展
```json
import { init } from '@alilc/lowcode-engine';

init({
  device: 'mobile',
  appHelper: {
    utils: {
      xxx: () => {console.log('123')},
    }
  }
});
```

在引擎中即可这样使用。
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01FWvu051OxAEYrHBy5_!!6000000001771-2-tps-3584-1796.png)


================================================
FILE: docs/docs/api/logger.md
================================================
---
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


## 模块简介
引擎日志模块,可以按照 **日志级别 **和** 业务类型 **两个维度来定制日志。
> 注:日志级别可以通过 url query 动态调整,详见下方[查看示例](#查看示例)。<br/>
> 参考 [zen-logger](https://web.npm.alibaba-inc.com/package/zen-logger) 实现进行封装

## 方法

日志记录方法

```typescript
/**
 * debug info
 */
debug(...args: any | any[]): void;

/**
 * normal info output
 */
info(...args: any | any[]): void;

/**
 * warning info output
 */
warn(...args: any | any[]): void;

/**
 * error info output
 */
error(...args: any | any[]): void;

/**
 * log info output
 */
log(...args: any | any[]): void;
```

## 输出示例

```typescript
import { Logger } from '@alilc/lowcode-utils';
const logger = new Logger({ level: 'warn', bizName: 'myPlugin:moduleA' });
logger.log('Awesome Low-Code Engine');
```

## 查看示例

开启查看方式:

- 方式 1:所有 logger 创建时会有默认输出的 level, 默认为 warn , 即只展示 warn , error
- 方式 2:url 上追加 __logConf__进行开启,示例如下

```
https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=warn
// 开启所有 bizName的 warn 和 error

https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=debug
// 开启所有 bizName的 debug, log, info, warn 和 error

https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=log
// 开启所有 bizName的 log, info, warn 和 error

https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=warn|*
// 同 __logConf__=warn

https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=warn|bizName
// 开启 bizName 的 debug, log, info, warn 和 error

https://lowcode-engine.cn/demo/demo-general/index.html?__logConf__=warn|partOfBizName
// 开启 bizName like '%partOfBizName%' 的 debug, log, info, warn 和 error

```


================================================
FILE: docs/docs/api/material.md
================================================
---
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


## 模块简介
负责物料相关的 API,包括资产包、设计器辅助层、物料元数据和物料元数据管道函数。

## 变量
### componentsMap
获取组件 map 结构
```typescript
/**
  * 获取组件 map 结构
  * get map of components
  */
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)

## 方法

### 资产包
#### setAssets
设置「[资产包](/site/docs/specs/lowcode-spec#2-协议结构)」结构

```typescript
/**
 * 设置「资产包」结构
 * set data for Assets
 * @returns void
 */
setAssets(assets: IPublicTypeAssetsJson): void;
```
相关类型:[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 assets from '@alilc/mc-assets-<siteId>/assets.json';

material.setAssets(assets);
```

通过接口动态引入资产包
```typescript
import { material, plugins } from '@alilc/lowcode-engine';
import { IPublicModelPluginContext } from '@alilc/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));
```

#### getAssets
获取「资产包」结构

```typescript
/**
 * 获取「资产包」结构
 * get AssetsJson data
 * @returns IPublicTypeAssetsJson
 */
getAssets(): IPublicTypeAssetsJson;
```
相关类型:[IPublicTypeAssetsJson](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/assets-json.ts)


**示例**
```typescript
import { material } from '@alilc/lowcode-engine';

material.getAssets();
```

#### loadIncrementalAssets
加载增量的「资产包」结构,该增量包会与原有的合并

```typescript
/**
 * 加载增量的「资产包」结构,该增量包会与原有的合并
 * load Assets incrementally, and will merge this with exiting assets
 * @param incrementalAssets
 * @returns
 */
loadIncrementalAssets(incrementalAssets: IPublicTypeAssetsJson): Promise<void>;
```
相关类型:[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 assets1 from '@alilc/mc-assets-<siteId>/assets.json';
import assets2 from '@alilc/mc-assets-<siteId>/assets.json';

material.setAssets(assets1);
material.loadIncrementalAssets(assets2);
```

更新特定物料的描述文件

```typescript
import { material } from '@alilc/lowcode-engine';
material.loadIncrementalAssets({
  version: '',
  components: [
      {
          "componentName": 'Button',
          "props": [{ name: 'new', title: 'new', propType: 'string' }]
      }
  ],
})
```

### 设计器辅助层
#### addBuiltinComponentAction
在设计器辅助层增加一个扩展 action

```typescript
/**
 * 在设计器辅助层增加一个扩展 action
 * add an action button in canvas context menu area
 * @param action
 */
addBuiltinComponentAction(action: IPublicTypeComponentAction): void;
```
相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts)


**示例**
新增设计扩展位,并绑定事件
```typescript
import { material } from '@alilc/lowcode-engine';

material.addBuiltinComponentAction({
  name: 'myIconName',
  content: {
      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
/**
 * 移除设计器辅助层的指定 action
 * remove a builtin action button from canvas context menu area
 * @param name
 */
removeBuiltinComponentAction(name: string): void;
```

##### 内置设计器辅助 name

- remove:删除
- hide:隐藏
- copy:复制
- lock:锁定,不可编辑
- unlock:解锁,可编辑

**示例**
```typescript
import { material } from '@alilc/lowcode-engine';

material.removeBuiltinComponentAction('myIconName');
```


#### modifyBuiltinComponentAction
修改已有的设计器辅助层的指定 action

```typescript
/**
 * 修改已有的设计器辅助层的指定 action
 * modify a builtin action button in canvas context menu area
 * @param actionName
 * @param handle
 */
modifyBuiltinComponentAction(
    actionName: string,
    handle: (action: IPublicTypeComponentAction) => void,
  ): void;
```
相关类型:[IPublicTypeComponentAction](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/component-action.ts)


##### 内置设计器辅助 name

- remove:删除
- hide:隐藏
- copy:复制
- lock:锁定,不可编辑
- unlock:解锁,可编辑



**示例**
给原始的 remove 扩展时间添加执行前后的日志
```typescript
import { material } from '@alilc/lowcode-engine';

material.modifyBuiltinComponentAction('remove', (action) => {
  const originAction = action.content.action;
  action.content.action = (node) => {
  	console.log('before reomve!');
    originAction(node);
    console.log('after remove!');
  }
});
```

### 右键菜单项
#### addContextMenuOption

添加右键菜单项

```typescript
/**
 * 添加右键菜单项
 * @param action
 */
addContextMenuOption(action: IPublicTypeContextMenuAction): void;
```

示例

```typescript
import { IPublicEnumContextMenuType } from '@alilc/lowcode-types';

material.addContextMenuOption({
  name: 'parentItem',
  title: 'Parent Item',
  condition: (nodes) => true,
  items: [
    {
      name: 'childItem1',
      title: 'Child Item 1',
      action: (nodes) => console.log('Child Item 1 clicked', nodes),
      condition: (nodes) => true
    },
    // 分割线
    {
      type: IPublicEnumContextMenuType.SEPARATOR
      name: 'separator.1'
    }
    // 更多子菜单项...
  ]
});

```

#### removeContextMenuOption

删除特定右键菜单项

```typescript
/**
 * 删除特定右键菜单项
 * @param name
 */
removeContextMenuOption(name: string): void;
```

#### adjustContextMenuLayout

调整右键菜单项布局,每次调用都会覆盖之前注册的调整函数,只有最后注册的函数会被应用。

```typescript
/**
 * 调整右键菜单项布局
 * @param actions
 */
adjustContextMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[]): void;
```

**示例**

通过 adjustContextMenuLayout 补充分割线

```typescript
material.adjustContextMenuLayout((actions: IPublicTypeContextMenuAction) => {
  const names = ['a', 'b'];
  const newActions = [];
  actions.forEach(d => {
    newActions.push(d);
    if (names.include(d.name)) {
      newActions.push({ type: 'separator' })
    }
  });
  return newActions
})
```

### 物料元数据

#### getComponentMeta
获取指定名称的物料元数据

```typescript
/**
 * 获取指定名称的物料元数据
 * get component meta by component name
 * @param componentName
 * @returns
 */
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';

material.getComponentMeta('Input');
```

#### getComponentMetasMap

获取所有已注册的物料元数据

```typescript
  /**
   * 获取所有已注册的物料元数据
   * get map of all component metas
   * @returns
   */
  getComponentMetasMap(): Map<string, IPublicModelComponentMeta>;
```
相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts)

**示例**
```typescript
import { material } from '@alilc/lowcode-engine';

material.getComponentMetasMap();
```

#### refreshComponentMetasMap

刷新 componentMetasMap,可触发模拟器里的 components 重新构建

**@since v1.1.7**

```typescript
  refreshComponentMetasMap(): void;
```

### 物料元数据管道函数
#### registerMetadataTransducer
注册物料元数据管道函数,在物料信息初始化时执行。

```typescript
/**
 * 注册物料元数据管道函数,在物料信息初始化时执行。
 * register transducer to process component meta, which will be
 * excuted during component meta`s initialization
 * @param transducer
 * @param level
 * @param id
 */
registerMetadataTransducer(
  transducer: IPublicTypeMetadataTransducer,
  level?: number,
  id?: string | undefined
): void;
```

**示例**
给每一个组件的配置添加高级配置面板,其中有一个是否渲染配置项
```typescript
import { material } from '@alilc/lowcode-engine'

function addonCombine(metadata: TransformedComponentMetadata) {
  const { componentName, configure = {} } = metadata;
  const advanceGroup = [];
  const combined: FieldConfig[] = [];

  advanceGroup.push({
    name: getConvertedExtraKey('condition'),
    title: { type: 'i18n', 'zh-CN': '是否渲染', 'en-US': 'Condition' },
    defaultValue: true,
    setter: [
      {
        componentName: 'BoolSetter',
      },
      {
        componentName: 'VariableSetter',
      },
    ],
    extraProps: {
      display: 'block',
    },
  });

  combined.push({
    name: '#advanced',
    title: { type: 'i18n', 'zh-CN': '高级', 'en-US': 'Advanced' },
    items: advanceGroup,
  });

  return {
    ...metadata,
    configure: {
      ...configure,
      combined,
    },
  };
}

material.registerMetadataTransducer(addonCombine, 1, 'parse-func');
```

删除高级 Tab

```typescript
import { material } from '@alilc/lowcode-engine';
import { IPublicTypeFieldConfig } from '@alilc/lowcode-types';

material.registerMetadataTransducer((transducer) => {
  const combined: IPublicTypeFieldConfig[] = [];

  transducer.configure.combined?.forEach(d => {
    if (d.name !== '#advanced') {
      combined.push(d);
    }
  });

  return {
    ...transducer,
    configure: {
      ...transducer.configure,
      combined,
    }
  };
}, 111, 'parse-func');
```

#### getRegisteredMetadataTransducers
获取所有物料元数据管道函数

```typescript
/**
 * 获取所有物料元数据管道函数
 * get all registered metadata transducers
 * @returns {IPublicTypeMetadataTransducer[]}
 */
getRegisteredMetadataTransducers(): IPublicTypeMetadataTransducer[];
```

**示例**
```typescript
import { material } from '@alilc/lowcode-engine'

material.getRegisteredMetadataTransducers();
```
## 事件
### onChangeAssets
监听 assets 变化的事件

```typescript
/**
 * 监听 assets 变化的事件
 * add callback for assets changed event
 * @param fn
 */
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';

material.onChangeAssets(() => {
  console.log('asset changed');
});
```


================================================
FILE: docs/docs/api/model/_category_.json
================================================
{
  "label": "模型定义 Models",
  "position": 100,
  "collapsed": false,
  "collapsible": true
}


================================================
FILE: docs/docs/api/model/clipboard.md
================================================
---
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

## 方法

### setData

给剪贴板赋值

```typescript
/**
 * 给剪贴板赋值
 * set data to clipboard
 *
 * @param {*} data
 * @since v1.1.0
 */
setData(data: any): void;
```

### waitPasteData

设置剪贴板数据设置的回调

```typescript
/**
 * 设置剪贴板数据设置的回调
 * set callback for clipboard provide paste data
 *
 * @param {KeyboardEvent} keyboardEvent
 * @param {(data: any, clipboardEvent: ClipboardEvent) => void} cb
 * @since v1.1.0
 */
waitPasteData(
    keyboardEvent: KeyboardEvent,
    cb: (data: any, clipboardEvent: ClipboardEvent) => void,
  ): void;
```

================================================
FILE: docs/docs/api/model/component-meta.md
================================================
---
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

## 基本介绍

组件元数据信息模型

## 属性

### componentName

组件名

`@type {string}`

### isContainer

是否是「容器型」组件

`@type {boolean}`

### isMinimalRenderUnit
是否是最小渲染单元

当组件需要重新渲染时:
- 若为最小渲染单元,则只渲染当前组件,
- 若不为最小渲染单元,则寻找到上层最近的最小渲染单元进行重新渲染,直至根节点。

`@type {boolean}`

### isModal

是否为「模态框」组件

`@type {boolean}`

### configure

获取用于设置面板显示用的配置

`@type {IPublicTypeFieldConfig[]}`

相关类型:[IPublicTypeFieldConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts)

### title

标题

`@type {string | IPublicTypeI18nData | ReactElement}`

相关类型:[IPublicTypeI18nData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts)

### icon

图标

`@type {IPublicTypeIconType}`

相关类型:[IPublicTypeIconType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts)

### npm

组件 npm 信息

`@type {IPublicTypeNpmInfo}`

相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts)

### availableActions

获取元数据

`@type {IPublicTypeTransformedComponentMetadata}`

相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts)

### advanced

组件元数据中高级配置部分

`@type {IPublicTypeAdvanced}`

相关类型:[IPublicTypeAdvanced](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/advanced.ts)

## 方法

### setNpm

设置 npm 信息

```typescript
/**
 * 设置 npm 信息
 * set method for npm inforamtion
 * @param npm
 */
setNpm(npm: IPublicTypeNpmInfo): void;
```

相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts)

### getMetadata

获取元数据

```typescript
/**
 * 获取元数据
 * get component metadata
 */
getMetadata(): IPublicTypeTransformedComponentMetadata;
```

相关类型:[IPublicTypeTransformedComponentMetadata](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/transformed-component-metadata.ts)

### checkNestingUp

检测当前对应节点是否可被放置在父节点中

```typescript
/**
 * 检测当前对应节点是否可被放置在父节点中
 * check if the current node could be placed in parent node
 * @param my 当前节点
 * @param parent 父节点
 */
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)


### checkNestingDown

检测目标节点是否可被放置在父节点中

```typescript
/**
 * 检测目标节点是否可被放置在父节点中
 * check if the target node(s) could be placed in current node
 * @param my 当前节点
 * @param parent 父节点
 */
checkNestingDown(
    my: IPublicModelNode | IPublicTypeNodeData,
    target: IPublicTypeNodeSchema | IPublicModelNode | IPublicTypeNodeSchema[],
  ): 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)
- [IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)


### refreshMetadata

刷新元数据,会触发元数据的重新解析和刷新

```typescript
/**
 * 刷新元数据,会触发元数据的重新解析和刷新
 * refresh metadata
 */
refreshMetadata(): void;
```


================================================
FILE: docs/docs/api/model/detecting.md
================================================
---
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

## 基本介绍

画布节点悬停模型

## 属性

### current

当前 hover 的节点

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

**@since v1.0.16**

### enable

是否启用

`@type {boolean}`


## 方法
### capture

hover 指定节点

```typescript
/**
 * hover 指定节点
 * capture node with nodeId
 * @param id 节点 id
 */
capture(id: string): void;
```

### release

hover 离开指定节点

```typescript
/**
 * hover 离开指定节点
 * release node with nodeId
 * @param id 节点 id
 */
release(id: string): void;
```

### leave

清空 hover 态

```typescript
/**
 * 清空 hover 态
 * clear all hover state
 */
leave(): void;
```

## 事件
### onDetectingChange
hover 节点变化事件

```typescript
/**
 * hover 节点变化事件
 * set callback which will be called when hovering object changed.
 * @since v1.1.0
 */
onDetectingChange(fn: (node: IPublicModelNode | null) => 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)

**@since v1.1.0**

================================================
FILE: docs/docs/api/model/document-model.md
================================================
---
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

## 基本介绍

文档模型

## 属性

### id

唯一 ID

`@type {string}`

### selection

画布节点选中区模型实例

`@type {IPublicModelSelection}`

相关章节:[节点选中区模型](./selection)

相关类型:[IPublicModelSelection](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/selection.ts)

### detecting

画布节点 hover 区模型实例

`@type {IPublicModelDetecting}`

相关章节:[画布节点悬停模型](./detecting)

相关类型:[IPublicModelDetecting](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/detecting.ts)

### history

操作历史模型实例

`@type {IPublicModelHistory}`

相关章节:[操作历史模型](./history)

相关类型:[IPublicModelHistory](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/history.ts)

### project

获取当前文档模型所属的 project

`@type {IPublicApiProject}`

相关类型:[IPublicApiProject](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/project.ts)

### root

获取文档的根节点

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### nodesMap

获取文档下所有节点 Map, key 为 nodeId

`@type {Map<string, IPublicModelNode>} `


相关章节:[节点模型](./node)

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### modalNodesManager

模态节点管理器

`@type {IPublicModelModalNodesManager | null}`

相关章节:[模态节点管理](./modal-nodes-manager)

相关类型:[IPublicModelModalNodesManager](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/modal-nodes-manager.ts)

### dropLocation

文档的 dropLocation

`@type {IPublicModelDropLocation | null}`


相关类型:[IPublicModelDropLocation](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/drop-location.ts)

**@since v1.1.0**

## 方法
### getNodeById

根据 nodeId 返回 [Node](./node) 实例

```typescript
/**
 * 根据 nodeId 返回 Node 实例
 * get node by nodeId
 * @param nodeId
 * @returns
 */
getNodeById(nodeId: string): IPublicModelNode | null;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### importSchema

导入 schema

```typescript
/**
 * 导入 schema
 * import schema data
 * @param schema
 */
importSchema(schema: IPublicTypeRootSchema): void;
```

相关类型:[IPublicTypeRootSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/root-schema.ts)


### exportSchema
导出 schema

```typescript
/**
 * 导出 schema
 * export schema
 * @param stage
 * @returns
 */
exportSchema(stage: IPublicEnumTransformStage): IPublicTypeRootSchema | undefined;
```

相关类型:
- [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)

### insertNode

插入节点

```typescript
/**
 * 插入节点
 * insert a node
 */
insertNode(
  parent: IPublicModelNode,
  thing: IPublicModelNode,
  at?: number | null | undefined,
  copy?: boolean | undefined
): IPublicModelNode | null;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### createNode

创建一个节点

```typescript
/**
 * 创建一个节点
 * create a node
 * @param data
 * @returns
 */
createNode(data: any): IPublicModelNode | null;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### removeNode

移除指定节点/节点id

```typescript
/**
 * 移除指定节点/节点id
 * remove a node by node instance or nodeId
 * @param idOrNode
 */
removeNode(idOrNode: string | IPublicModelNode): void;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### checkNesting
检查拖拽放置的目标节点是否可以放置该拖拽对象

```typescript
/**
 * 检查拖拽放置的目标节点是否可以放置该拖拽对象
 * check if dragOjbect can be put in this dragTarget
 * @param dropTarget 拖拽放置的目标节点
 * @param dragObject 拖拽的对象
 * @returns boolean 是否可以放置
 * @since v1.0.16
 */
checkNesting(
  dropTarget: IPublicModelNode,
  dragObject: IPublicTypeDragNodeObject | IPublicTypeDragNodeDataObject
): boolean;
```

相关类型:
- [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)

**@since v1.0.16**

### isDetectingNode
判断是否当前节点处于被探测状态

```typescript
/**
 * 判断是否当前节点处于被探测状态
 * check is node being detected
 * @param node
 * @since v1.1.0
 */
isDetectingNode(node: IPublicModelNode): boolean;
```
相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


**@since v1.1.0**


## 事件
### onAddNode

当前 document 新增节点事件

```typescript
/**
 * 当前 document 新增节点事件
 * set callback for event on node is created for a document
 */
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)

### onMountNode

当前 document 新增节点事件,此时节点已经挂载到 document 上

```typescript
/**
 * 当前 document 新增节点事件,此时节点已经挂载到 document 上
 * set callback for event on node is mounted to canvas
 */
onMountNode(fn: (payload: { 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)

### onRemoveNode
当前 document 删除节点事件

```typescript
/**
 * 当前 document 删除节点事件
 * set callback for event on node is removed
 */
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)


### onChangeDetecting

当前 document 的 hover 变更事件

```typescript
/**
 * 当前 document 的 hover 变更事件
 *
 * set callback for event on detecting changed
 */
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)

### onChangeSelection

当前 document 的选中变更事件

```typescript
/**
 * 当前 document 的选中变更事件
 * set callback for event on selection changed
 */
onChangeSelection(fn: (ids: string[]) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onChangeNodeVisible

当前 document 的节点显隐状态变更事件

```typescript
/**
 * 当前 document 的节点显隐状态变更事件
 * set callback for event on visibility changed for certain node
 * @param fn
 */
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)

### onChangeNodeChildren

当前 document 的节点 children 变更事件

```typescript
onChangeNodeChildren(fn: (info?: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/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)

### onImportSchema
当前 document 导入新的 schema 事件
```typescript
/**
 * import schema event
 * @param fn
 * @since v1.0.15
 */
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)

**@since v1.0.15**

### onFocusNodeChanged
设置聚焦节点变化的回调

```typescript
/**
 * 设置聚焦节点变化的回调
 * triggered focused node is set mannually from plugin
 * @param fn
 * @since v1.1.0
 */
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)

**@since v1.1.0**

### onDropLocationChanged
设置 DropLocation 变化的回调

```typescript
/**
 * 设置 DropLocation 变化的回调
 * triggered when drop location changed
 * @param fn
 * @since v1.1.0
 */
onDropLocationChanged(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

**@since v1.1.0**

================================================
FILE: docs/docs/api/model/dragon.md
================================================
---
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

## 基本介绍

拖拽对象

### 对应接口
```typescript
import { IPublicModelDragon } from '@alilc/lowcode-types';
```

### 支持版本

**@since** v1.1.0

## 属性

### dragging

是否正在拖动

```typescript
/**
 * is dragging or not
 */
get dragging(): boolean;
```

## 方法

### onDragstart

绑定 dragstart 事件

```typescript
/**
 * 绑定 dragstart 事件
 * bind a callback function which will be called on dragging start
 * @param func
 * @returns
 */
onDragstart(func: (e: IPublicModelLocateEvent) => any): () => void;
```

### onDrag

绑定 drag 事件
```typescript
/**
 * 绑定 drag 事件
 * bind a callback function which will be called on dragging
 * @param func
 * @returns
 */
onDrag(func: (e: IPublicModelLocateEvent) => any): () => void;
```

### onDragend

绑定 dragend 事件

```typescript
/**
 * 绑定 dragend 事件
 * bind a callback function which will be called on dragging end
 * @param func
 * @returns
 */
onDragend(func: (o: { dragObject: IPublicModelDragObject; copy?: boolean }) => any): () => void;
```

### from

设置拖拽监听的区域 shell,以及自定义拖拽转换函数 boost

```typescript
/**
 * 设置拖拽监听的区域 shell,以及自定义拖拽转换函数 boost
* set a html element as shell to dragon as monitoring target, and
* set boost function which is used to transform a MouseEvent to type
* IPublicTypeDragNodeDataObject.
 * @param shell 拖拽监听的区域
 * @param boost 拖拽转换函数
 */
from(shell: Element, boost: (e: MouseEvent) => IPublicTypeDragNodeDataObject | null): any;
```

### boost

发射拖拽对象
```typescript
/**
 * 发射拖拽对象
 * boost your dragObject for dragging(flying)
 *
 * @param dragObject 拖拽对象
 * @param boostEvent 拖拽初始时事件
 */
boost(dragObject: IPublicTypeDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: IPublicModelNode): void;
```

### addSensor

添加投放感应区

```typescript
/**
 * 添加投放感应区
 * add sensor area
 */
addSensor(sensor: any): void;
```

### removeSensor

移除投放感应

```typescript
/**
 * 移除投放感应
 * remove sensor area
 */
removeSensor(sensor: any): void;
```

================================================
FILE: docs/docs/api/model/drop-location.md
================================================
---
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


## 基本介绍

拖拽放置位置模型

## 属性

### target

拖拽放置位置目标

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### detail

拖拽放置位置详情

`@type {IPublicTypeLocationDetail}`

相关类型:[IPublicTypeLocationDetail](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/location-detail.ts)

### event

拖拽放置位置对应的事件

`@type {IPublicTypeLocationDetail}`

相关类型:[IPublicModelLocateEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts)

## 方法

### clone

获取一份当前对象的克隆

```typescript
/**
 * 获取一份当前对象的克隆
 * get a clone object of current dropLocation
 */
clone(event: IPublicModelLocateEvent): IPublicModelDropLocation;
```

相关类型:[IPublicModelLocateEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts)

================================================
FILE: docs/docs/api/model/editor-view.md
================================================
---
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

窗口编辑视图

## 类型定义

```
import { IPublicModelPluginContext } from "./plugin-context";

export interface IPublicModelEditorView extends IPublicModelPluginContext {};

```

相关类型定义: [IPublicModelPluginContext](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/plugin-context.ts)


================================================
FILE: docs/docs/api/model/history.md
================================================
---
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

## 基本介绍

操作历史记录模型

## 方法
### go

历史记录跳转到指定位置

```typescript
/**
 * 历史记录跳转到指定位置
 * go to a specific history
 * @param cursor
 */
go(cursor: number): void;
```

### back

历史记录后退

```typescript
/**
 * 历史记录后退
 * go backward in history
 */
back(): void;
```

### forward

forward()

历史记录前进

```typescript
/**
 * 历史记录前进
 * go forward in history
 */
forward(): void;
```

### savePoint

保存当前状态

```typescript
/**
 * 保存当前状态
 * do save current change as a record in history
 */
savePoint(): void;
```

### isSavePoint

当前是否是「保存点」,即是否有状态变更但未保存

```typescript
/**
 * 当前是否是「保存点」,即是否有状态变更但未保存
 * check if there is unsaved change for history
 */
isSavePoint(): boolean;
```

### getState

获取 state,判断当前是否为「可回退」、「可前进」的状态

```typescript
/**
 * 获取 state,判断当前是否为「可回退」、「可前进」的状态
 * get flags in number which indicat current change state
 *
 *  |    1     |     1    |    1     |
 *  | -------- | -------- | -------- |
 *  | modified | redoable | undoable |
 * eg:
 *  7 means : modified && redoable && undoable
 *  5 means : modified && undoable
 */
getState(): number;
```

## 事件
### onChangeState

监听 state 变更事件

```typescript
/**
 * 监听 state 变更事件
 * monitor on stateChange event
 * @param func
 */
onChangeState(func: () => any): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onChangeCursor

监听历史记录游标位置变更事件

```typescript
/**
 * 监听历史记录游标位置变更事件
 * monitor on cursorChange event
 * @param func
 */
onChangeCursor(func: () => any): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

================================================
FILE: docs/docs/api/model/modal-nodes-manager.md
================================================
---
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

## 基本介绍

模态节点管理器模型

## 方法

### setNodes

设置模态节点,触发内部事件

```typescript
/**
 * 设置模态节点,触发内部事件
 * set modal nodes, trigger internal events
 */
setNodes(): void;
```

### getModalNodes

获取模态节点(们)

```typescript
/**
 * 获取模态节点(们)
 * get modal nodes
 */
getModalNodes(): IPublicModelNode[];
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### getVisibleModalNode

获取当前可见的模态节点

```typescript
/**
 * 获取当前可见的模态节点
 * get current visible modal node
 */
getVisibleModalNode(): IPublicModelNode | null;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### hideModalNodes

隐藏模态节点(们)

```typescript
/**
 * 隐藏模态节点(们)
 * hide modal nodes
 */
hideModalNodes(): void;
```

### setVisible

设置指定节点为可见态

```typescript
/**
 * 设置指定节点为可见态
 * set specific model node as visible
 * @param node IPublicModelNode
 */
setVisible(node: IPublicModelNode): void;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### setInvisible

设置指定节点为不可见态

```typescript
/**
 * 设置指定节点为不可见态
 * set specific model node as invisible
 * @param node IPublicModelNode
 */
setInvisible(node: IPublicModelNode): void;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


================================================
FILE: docs/docs/api/model/node-children.md
================================================
---
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

## 基本介绍
节点孩子模型

## 属性
### owner

返回当前 children 实例所属的节点实例

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### size

children 内的节点实例数

`@type {number}`


### isEmptyNode

是否为空

`@type {boolean}`

**@since v1.1.0**
> v1.1.0 之前请使用 `isEmpty`

### notEmptyNode

是否不为空

`@type {boolean}`

**@since v1.1.0**

## 方法
### delete
删除指定节点

```typescript
/**
 * 删除指定节点
 * delete the node
 * @param node
 */
delete(node: IPublicModelNode): boolean;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### insert

插入一个节点

```typescript
/**
 * 插入一个节点
 * insert the node
 * @param node
 */
insert(node: IPublicModelNode): boolean;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### indexOf

返回指定节点的下标

```typescript
/**
 * 返回指定节点的下标
 * get index of node in current children
 * @param node
 * @returns
 */
indexOf(node: IPublicModelNode): number;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### splice

类似数组 splice 操作

```typescript
/**
 * 类似数组 splice 操作
 * provide the same function with {Array.prototype.splice}
 * @param start
 * @param deleteCount
 * @param node
 */
splice(start: number, deleteCount: number, node?: IPublicModelNode): any;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### get

返回指定下标的节点

```typescript
/**
 * 返回指定下标的节点
 * get node with index
 * @param index
 * @returns
 */
get(index: number): IPublicModelNode | null;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### has

是否包含指定节点

```typescript
/**
 * 是否包含指定节点
 * check if node exists in current children
 * @param node
 * @returns
 */
has(node: IPublicModelNode): boolean;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### forEach

类似数组的 forEach

```typescript
/**
 * 类似数组的 forEach
 * provide the same function with {Array.prototype.forEach}
 * @param fn
 */
forEach(fn: (node: IPublicModelNode, index: number) => void): void;

```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### reverse

类似数组的 reverse

```typescript
/**
 * 类似数组的 reverse
 * provide the same function with {Array.prototype.reverse}
 */
reverse(): IPublicModelNode[];

```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### map

类似数组的 map

```typescript
/**
 * 类似数组的 map
 * provide the same function with {Array.prototype.map}
 * @param fn
 */
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)


### every

类似数组的 every

```typescript
/**
 * 类似数组的 every
 * provide the same function with {Array.prototype.every}
 * @param fn
 */
every(fn: (node: IPublicModelNode, index: number) => boolean): boolean;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### some

类似数组的 some

```typescript
/**
 * 类似数组的 some
 * provide the same function with {Array.prototype.some}
 * @param fn
 */
some(fn: (node: IPublicModelNode, index: number) => boolean): boolean;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### filter

类似数组的 filter

```typescript
/**
 * 类似数组的 filter
 * provide the same function with {Array.prototype.filter}
 * @param fn
 */
filter(fn: (node: IPublicModelNode, index: number) => boolean): any;
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


### find

类似数组的 find

```typescript
/**
 * 类似数组的 find
 * provide the same function with {Array.prototype.find}
 * @param fn
 */
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)


### reduce

类似数组的 reduce

```typescript
/**
 * 类似数组的 reduce
 * provide the same function with {Array.prototype.reduce}
 * @param fn
 */
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)


### importSchema

导入 schema

```typescript
/**
 * 导入 schema
 * import schema
 * @param data
 */
importSchema(data?: IPublicTypeNodeData | IPublicTypeNodeData[]): void;
```

相关类型:[IPublicTypeNodeData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-data.ts)


### exportSchema
导出 schema

```typescript
/**
 * 导出 schema
 * export schema
 * @param stage
 */
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)


### mergeChildren

执行新增、删除、排序等操作

```typescript
/**
 * 执行新增、删除、排序等操作
 * excute remove/add/sort operations
 * @param remover
 * @param adder
 * @param sorter
 */
mergeChildren(
  remover: (node: IPublicModelNode, idx: number) => boolean,
  adder: (children: IPublicModelNode[]) => IPublicTypeNodeData[] | null,
  sorter: (firstNode: IPublicModelNode, secondNode: IPublicModelNode) => number
): any;
```

相关类型:
- [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)


================================================
FILE: docs/docs/api/model/node.md
================================================
---
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

## 基本介绍

节点模型

## 属性
### id

节点 id

`@type {string}`

### title

节点标题

`@type {string | IPublicTypeI18nData | ReactElement}`

相关类型:[IPublicTypeI18nData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/i18n-data.ts)

### isContainerNode

是否为「容器型」节点

`@type {boolean}`

**@since v1.1.0**
> v1.1.0 之前请使用 `isContainer`

### isRootNode

是否为根节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isRoot`

### isEmptyNode

是否为空节点(无 children 或者 children 为空)

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isEmpty`

### isPageNode

是否为 Page 节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isPage`

### isComponentNode

是否为 Component 节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isComponent`

### isModalNode

是否为「模态框」节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isModal`

### isSlotNode

是否为插槽节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isSlot`

### isParentalNode

是否为父类/分支节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isParental`

### isLeafNode

是否为叶子节点

`@type {boolean}`

**@since v1.1.0**

> v1.1.0 之前请使用 `isLeaf`

### isLocked

获取当前节点的锁定状态

**@since v1.0.16**

### isRGLContainerNode
设置为磁贴布局节点,使用方式可参考:[磁贴布局在钉钉宜搭报表设计引擎中的实现](https://mp.weixin.qq.com/s/PSTut5ahAB8nlJ9kBpBaxw)

`@type {boolean}`

**@since v1.1.0**

> v1.0.16 - v1.1.0 请使用 `isRGLContainer`

### index

下标

`@type {number}`

### icon

图标

`@type {IPublicTypeIconType}`

相关类型:[IPublicTypeIconType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/icon-type.ts)

### zLevel

节点所在树的层级深度,根节点深度为 0

`@type {number}`

### componentName

节点 componentName

`@type {string}`

### componentMeta

节点的物料元数据

`@type {IPublicModelComponentMeta | null}`

相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts)


### document

获取节点所属的[文档模型](./document-model)对象

`@type {IPublicModelDocumentModel | null}`

相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts)

### prevSibling

获取当前节点的前一个兄弟节点

`@type {IPublicModelNode | null}`

### nextSibling

获取当前节点的后一个兄弟节点

`@type {IPublicModelNode | null}`

### parent

获取当前节点的父亲节点

`@type {IPublicModelNode | null}`

### children

获取当前节点的孩子节点模型

`@type {IPublicModelNodeChildren | null}`

相关类型:[IPublicModelNodeChildren](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node-children.ts)

### slots

节点上挂载的插槽节点们

`@type {IPublicModelNode[]}`

### slotFor

当前节点为插槽节点时,返回节点对应的属性实例

`@type {IPublicModelProp | null}`

相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)

### props

返回节点的属性集

`@type {IPublicModelProps | null}`

相关类型:[IPublicModelProps](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/props.ts)


### propsData

返回节点的属性集值

`@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)

### conditionGroup

获取条件组

`@type {IPublicModelExclusiveGroup | null}`

相关类型:[IPublicModelExclusiveGroup](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/exclusive-group.ts)

**@since v1.1.0**

### schema

获取符合搭建协议 - 节点 schema 结构

`@type {IPublicTypeNodeSchema | null}`

相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)

### settingEntry

获取对应的 setting entry

`@type {IPublicModelSettingTopEntry}`

相关章节:[设置器顶层操作对象](./setting-top-entry)

相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)

### visible
当前节点是否可见

`@type {boolean}`

**@since v1.1.0**

## 方法

### getRect

返回节点的尺寸、位置信息

```typescript
/**
 * 返回节点的尺寸、位置信息
 * get rect information for this node
 */
getRect(): DOMRect | null;
```

### hasSlots

是否有挂载插槽节点

```typescript
/**
 * 是否有挂载插槽节点
 * check if current node has slots
 */
hasSlots(): boolean;
```

### hasCondition

是否设定了渲染条件

```typescript
/**
 * 是否设定了渲染条件
 * check if current node has condition value set
 */
hasCondition(): boolean;
```

### hasLoop

是否设定了循环数据

```typescript
/**
 * 是否设定了循环数据
 * check if loop is set for this node
 */
hasLoop(): boolean;
```

### getProp

获取指定 path 的属性模型实例

```typescript
/**
 * 获取指定 path 的属性模型实例
 * get prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getProp(path: string, createIfNone: boolean): IPublicModelProp | null;
```

相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)

### getPropValue

获取指定 path 的属性模型实例值

```typescript
/**
 * 获取指定 path 的属性模型实例值
 * get prop value by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getPropValue(path: string): any;
```

### getExtraProp

获取指定 path 的属性模型实例,注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级

```typescript
/**
 * 获取指定 path 的属性模型实例,
 *  注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
 *
 * get extra prop by path, an extra prop means a prop not exists in the `props`
 * but as siblint of the `props`
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @param createIfNone 当没有属性的时候,是否创建一个属性
 */
getExtraProp(path: string, createIfNone?: boolean): IPublicModelProp | null;
```

相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)

### getExtraPropValue

获取指定 path 的属性模型实例,注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级

```typescript
/**
 * 获取指定 path 的属性模型实例,
 *  注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
 *
 * get extra prop value by path, an extra prop means a prop not exists in the `props`
 * but as siblint of the `props`
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @returns
 */
getExtraPropValue(path: string): any;
```

### setPropValue

setPropValue(path: string, value: CompositeValue)

设置指定 path 的属性模型实例值

```typescript
/**
 * 设置指定 path 的属性模型实例值
 * set value for prop with path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @param value 值
 */
setPropValue(path: string, value: IPublicTypeCompositeValue): void;
```

相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts)


### setExtraPropValue

设置指定 path 的属性模型实例值

```typescript
/**
 * 设置指定 path 的属性模型实例值
 * set value for extra prop with path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @param value 值
 */
setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void;
```

相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts)

### importSchema

导入节点数据

```typescript
/**
 * 导入节点数据
 * import node schema
 * @param data
 */
importSchema(data: IPublicTypeNodeSchema): void;
```

相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)

### exportSchema

导出节点数据

```typescript
/**
 * 导出节点数据
 * export schema from this node
 * @param stage
 * @param options
 */
exportSchema(stage: IPublicEnumTransformStage, options?: any): 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)

### insertBefore

在指定位置之前插入一个节点

```typescript
/**
 * 在指定位置之前插入一个节点
 * insert a node befor current node
 * @param node
 * @param ref
 * @param useMutator
 */
insertBefore(
    node: IPublicModelNode,
    ref?: IPublicModelNode | undefined,
    useMutator?: boolean,
  ): void;
```

### insertAfter

在指定位置之后插入一个节点

```typescript
/**
 * 在指定位置之后插入一个节点
 * insert a node after this node
 * @param node
 * @param ref
 * @param useMutator
 */
insertAfter(
    node: IPublicModelNode,
    ref?: IPublicModelNode | undefined,
    useMutator?: boolean,
  ): void;
```

### replaceChild

替换指定子节点

```typescript
/**
 * 替换指定子节点
 * replace a child node with data provided
 * @param node 待替换的子节点
 * @param data 用作替换的节点对象或者节点描述
 * @returns
 */
replaceChild(node: IPublicModelNode, data: any): IPublicModelNode | null;
```

### replaceWith

将当前节点替换成指定节点描述

```typescript
/**
 * 将当前节点替换成指定节点描述
 * replace current node with a new node schema
 * @param schema
 */
replaceWith(schema: IPublicTypeNodeSchema): any;
```

相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)

### select

选中当前节点实例

```typescript
/**
 * 选中当前节点实例
 * select current node
 */
select(): void;
```

### hover

设置悬停态

```typescript
/**
 * 设置悬停态
 * set hover value for current node
 * @param flag
 */
hover(flag: boolean): void;
```

### lock
设置节点锁定状态

```typescript
/**
 * 设置节点锁定状态
 * set lock value for current node
 * @param flag
 * @since v1.0.16
 */
lock(flag?: boolean): void;
```

**@since v1.0.16**

### remove

删除当前节点实例

```typescript
/**
 * 删除当前节点实例
 * remove current node
 */
remove(): void;
```

### mergeChildren

执行新增、删除、排序等操作

```typescript
/**
 * 执行新增、删除、排序等操作
 * excute remove/add/sort operations on node`s children
 *
 * @since v1.1.0
 */
mergeChildren(
  remover: (node: IPublicModelNode, idx: number) => boolean,
  adder: (children: IPublicModelNode[]) => any,
  sorter: (firstNode: IPublicModelNode, secondNode: IPublicModelNode) => number
): any;
```

**@since v1.1.0**

### contains

当前节点是否包含某子节点

```typescript
/**
 * 当前节点是否包含某子节点
 * check if current node contains another node as a child
 * @param node
 * @since v1.1.0
 */
contains(node: IPublicModelNode): boolean;
```

**@since v1.1.0**

### canPerformAction

是否可执行某 action

```typescript
/**
 * 是否可执行某 action
 * check if current node can perform certain aciton with actionName
 * @param actionName action 名字
 * @since v1.1.0
 */
canPerformAction(actionName: string): boolean;
```

**@since v1.1.0**

### isConditionalVisible

获取该节点的 ConditionalVisible 值

```typescript
/**
 * 获取该节点的 ConditionalVisible 值
 * check if current node ConditionalVisible
 * @since v1.1.0
 */
isConditionalVisible(): boolean | undefined;
```

**@since v1.1.0**

### setConditionalVisible
设置该节点的 ConditionalVisible 为 true

```typescript
/**
 * 设置该节点的 ConditionalVisible 为 true
 * make this node as conditionalVisible === true
 * @since v1.1.0
 */
setConditionalVisible(): void;
```

**@since v1.1.0**

### getDOMNode
获取节点实例对应的 dom 节点

```typescript
/**
 * 获取节点实例对应的 dom 节点
 */
getDOMNode(): HTMLElement;

```

### getRGL

获取磁贴相关信息

```typescript
/**
 * 获取磁贴相关信息
 */
getRGL(): {
  isContainerNode: boolean;
  isEmptyNode: boolean;
  isRGLContainerNode: boolean;
  isRGLNode: boolean;
  isRGL: boolean;
  rglNode: IPublicModelNode | null;
}
```

================================================
FILE: docs/docs/api/model/plugin-instance.md
================================================
---
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


## 基本介绍

插件实例

## 属性

### pluginName

插件名字

`@type {string}`

### dep

插件依赖

`@type {string[]}`

### disabled

插件是否禁用

`@type {boolean}`

### meta

插件 meta 信息

`@type {IPublicTypePluginMeta}`

相关类型:[IPublicTypePluginMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-meta.ts)


================================================
FILE: docs/docs/api/model/prop.md
================================================
---
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

## 基本介绍

属性模型

## 属性

### id

id

`@type {string}`

### key

key 值

`@type {string | number | undefined}`

### path

返回当前 prop 的路径

`@type {string[]}`

### node

返回所属的节点实例

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### slotNode

当本 prop 代表一个 Slot 时,返回对应的 slotNode

`@type {IPublicModelNode | undefined | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)


## 方法

### setValue

设置值

```typescript
/**
 * 设置值
 * set value for this prop
 * @param val
 */
setValue(val: IPublicTypeCompositeValue): void;
```

相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts)

### getValue

获取值

```typescript
/**
 * 获取值
 * get value of this prop
 */
getValue(): any;
```

### remove

移除值

```typescript
/**
 * 移除值
 * remove value of this prop
 * @since v1.0.16
 */
remove(): void;
```

**@since v1.0.16**

### exportSchema

导出值

```typescript
/**
 * 导出值
 * export schema
 * @param stage
 */
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)

================================================
FILE: docs/docs/api/model/props.md
================================================
---
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

## 基本介绍

属性集模型

## 属性
### 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)

## 方法
### getProp

获取指定 path 的属性模型实例

```typescript
/**
 * 获取指定 path 的属性模型实例
 * get prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getProp(path: string): IPublicModelProp | null;
```

相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)

### getPropValue

获取指定 path 的属性模型实例值

```typescript
/**
 * 获取指定 path 的属性模型实例值
 * get value of prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getPropValue(path: string): any;
```

### getExtraProp

获取指定 path 的属性模型实例,注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级

```typescript
/**
 * 获取指定 path 的属性模型实例,
 *  注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
 * get extra prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getExtraProp(path: string): IPublicModelProp | null;
```

相关类型:[IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/prop.ts)

### getExtraPropValue

获取指定 path 的属性模型实例值,注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级

```typescript
/**
 * 获取指定 path 的属性模型实例值
 *  注:导出时,不同于普通属性,该属性并不挂载在 props 之下,而是与 props 同级
 * get value of extra prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 */
getExtraPropValue(path: string): any;
```

### setPropValue

设置指定 path 的属性模型实例值

```typescript
/**
 * 设置指定 path 的属性模型实例值
 * set value of prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @param value 值
 */
setPropValue(path: string, value: IPublicTypeCompositeValue): void;
```

相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts)

### setExtraPropValue

设置指定 path 的属性模型实例值

```typescript
/**
 * 设置指定 path 的属性模型实例值
 * set value of extra prop by path
 * @param path 属性路径,支持 a / a.b / a.0 等格式
 * @param value 值
 */
setExtraPropValue(path: string, value: IPublicTypeCompositeValue): void;
```

相关类型:[IPublicTypeCompositeValue](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/composite-value.ts)


### has

当前 props 是否包含某 prop

```typescript
/**
 * 当前 props 是否包含某 prop
 * check if the specified key is existing or not.
 * @param key
 * @since v1.1.0
 */
has(key: string): boolean;
```

**@since v1.1.0**

### add

添加一个 prop

```typescript
/**
 * 添加一个 prop
 * add a key with given value
 * @param value
 * @param key
 * @since v1.1.0
 */
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)

**@since v1.1.0**

================================================
FILE: docs/docs/api/model/resource.md
================================================
---
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

## 属性

### title

资源标题

`@type {string}`

### id

资源 id

`@type {string}`

### name

资源名字

`@type {string}`

### type

资源类型

`@type {string}`

### category

资源分类

`@type {string}`

### icon

资源 icon

`@type {ReactElement}`

### options

资源配置信息

`@type {Object}`

### config

资源配置信息

`@type {Object}`

================================================
FILE: docs/docs/api/model/selection.md
================================================
---
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

## 基本介绍

画布节点选中模型

## 属性
### selected

返回选中的节点 id

`@type {string[]}`

### node
返回选中的节点(如多个节点只返回第一个)

`@type {IPublicModelNode | null}`

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

**@since v1.1.0**

## 方法
### select

选中指定节点(覆盖方式)

```typescript
/**
* 选中指定节点(覆盖方式)
* select node with id, this will override current selection
* @param id
*/
select(id: string): void;
```

### selectAll

批量选中指定节点们

```typescript
/**
* 批量选中指定节点们
* select node with ids, this will override current selection
*
* @param ids
*/
selectAll(ids: string[]): void;
```

### remove

**取消选中**选中的指定节点,不会删除组件

```typescript
/**
* 移除选中的指定节点
* remove node from selection with node id
* @param id
*/
remove(id: string): void;
```

### clear

**取消选中**所有选中节点,不会删除组件

```typescript
/**
* 清除所有选中节点
* clear current selection
*/
clear(): void;
```

### has

判断是否选中了指定节点

```typescript
/**
* 判断是否选中了指定节点
* check if node with specific id is selected
* @param id
*/
has(id: string): boolean;
```

### add

选中指定节点(增量方式)

```typescript
/**
* 选中指定节点(增量方式)
* add node with specific id to selection
* @param id
*/
add(id: string): void;
```

### getNodes

获取选中的节点实例

```typescript
/**
* 获取选中的节点实例
* get selected nodes
*/
getNodes(): IPublicModelNode[];
```

相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)

### getTopNodes
获取选区的顶层节点
例如选中的节点为:

- DivA
   - ChildrenA
- DivB

getNodes 返回的是 [DivA、ChildrenA、DivB],getTopNodes 返回的是 [DivA、DivB],其中 ChildrenA 由于是二层节点,getTopNodes 不会返回

```typescript
/**
* 获取选区的顶层节点
* get seleted top nodes
* for example:
*  getNodes() returns [A, subA, B], then
*  getTopNodes() will return [A, B], subA will be removed
* @since v1.0.16
*/
getTopNodes(includeRoot?: boolean): IPublicModelNode[];
```

**@since v1.0.16**

## 事件
### onSelectionChange

注册 selection 变化事件回调

```typescript
/**
* 注册 selection 变化事件回调
* set callback which will be called when selection is changed
* @since v1.1.0
*/
onSelectionChange(fn: (ids: string[]) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

**@since v1.1.0**

================================================
FILE: docs/docs/api/model/setting-field.md
================================================
---
title: SettingField
sidebar_position: 6
---
> **@types** [IPublicModelSettingField](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-field.ts)<br/>

## 基本介绍

setter 设置器操作对象

## 属性

#### isGroup

获取设置属性的 isGroup

`@type {boolean}`


#### id

获取设置属性的 id

`@type {string}`

#### name

获取设置属性的 name

`@type {string | number | undefined}`

#### key

获取设置属性的 key

`@type {string | number | undefined}`

#### path

获取设置属性的 path

`@type {(string | number)[]}`

#### title

获取设置属性的 title

`@type {string}`

#### setter

获取设置属性的 setter

`@type {IPublicTypeSetterType | null}`

#### expanded

获取设置属性的 expanded

`@type {boolean}`

#### extraProps

获取设置属性的 extraProps

`@type {IPublicTypeFieldExtraProps}`

#### props

`@type {IPublicModelSettingTopEntry}`

相关章节:[设置器顶层操作对象](./setting-top-entry)

相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)

#### node

获取设置属性对应的节点实例

`@type {IPublicModelNode | null}`


#### parent

获取设置属性的父设置属性

`@type {IPublicModelSettingTopEntry | IPublicModelSettingField}`

相关章节:[设置器顶层操作对象](./setting-top-entry)

相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)

#### top

获取顶级设置属性

`@type {IPublicModelSettingTopEntry}`

相关章节:[设置器顶层操作对象](./setting-top-entry)

相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)

#### isSettingField

是否是 SettingField 实例

`@type {boolean}`

#### componentMeta

`@type {IPublicModelComponentMeta}`

相关类型:[IPublicModelComponentMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/component-meta.ts)

#### items

获取设置属性的 items

`@type {Array<IPublicModelSettingField | IPublicTypeCustomView>}`

相关类型:[IPublicTypeCustomView](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts)

## 方法

#### setKey

设置 key 值

```
/**
  * 设置 key 值
  * @param key
  */
setKey(key: string | number): void;
```

#### setValue

设置值

```
/**
  * 设置值
  * @param val 值
  */
setValue(val: IPublicTypeCompositeValue, extraOptions?: IPublicTypeSetValueOptions): void;
```

相关类型:
- [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)

#### setPropValue

设置子级属性值

```
/**
  * 设置子级属性值
  * @param propName 子属性名
  * @param value 值
  */
setPropValue(propName: string | number, value: any): void;
```

#### clearPropValue

清空指定属性值

```
/**
  * 清空指定属性值
  * @param propName
  */
clearPropValue(propName: string | number): void;
```

#### getDefaultValue

获取配置的默认值

```
/**
  * 获取配置的默认值
  * @returns
  */
getDefaultValue(): any;
```

#### getValue

获取值

```
/**
  * 获取值
  * @returns
  */
getValue(): any;
```

#### getPropValue

获取子级属性值

```
/**
  * 获取子级属性值
  * @param propName 子属性名
  * @returns
  */
getPropValue(propName: string | number): any;
```

#### getExtraPropValue

获取顶层附属属性值

```
/**
  * 获取顶层附属属性值
  */
getExtraPropValue(propName: string): any;
```

#### setExtraPropValue

设置顶层附属属性值

```
/**
  * 设置顶层附属属性值
  */
setExtraPropValue(propName: string, value: any): void;
```

#### getProps

获取设置属性集

```
/**
  * 获取设置属性集
  * @returns
  */
getProps(): IPublicModelSettingTopEntry;
```

相关章节:[设置器顶层操作对象](./setting-top-entry)

相关类型:[IPublicModelSettingTopEntry](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/setting-top-entry.ts)

#### isUseVariable

是否绑定了变量

```
/**
  * 是否绑定了变量
  * @returns
  */
isUseVariable(): boolean;
```

#### setUseVariable

设置绑定变量

```
/**
  * 设置绑定变量
  * @param flag
  */
setUseVariable(flag: boolean): void;
```

#### createField

创建一个设置 field 实例

```
/**
  * 创建一个设置 field 实例
  * @param config
  * @returns
  */
createField(config: IPublicTypeFieldConfig): IPublicModelSettingField;
```

相关类型:[IPublicTypeFieldConfig](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/field-config.ts)

#### getMockOrValue

获取值,当为变量时,返回 mock

```
/**
  * 获取值,当为变量时,返回 mock
  * @returns
  */
getMockOrValue(): any;

```

#### purge

销毁当前 field 实例

```
/**
  * 销毁当前 field 实例
  */
purge(): void;
```

#### remove

移除当前 field 实例

```
/**
  * 移除当前 field 实例
  */
remove(): void;
```

## 事件

#### onEffect

设置 autorun

```
/**
  * 设置 autorun
  * @param action
  * @returns
  */
onEffect(action: () => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

================================================
FILE: docs/docs/api/model/setting-top-entry.md
================================================
---
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/>

## 基本介绍

setter 设置器顶层操作对象

## 属性

#### node

返回所属的节点实例

`@type {IPublicModelNode | null}`

## 方法

#### get

获取子级属性对象

```
/**
  * 获取子级属性对象
  * @param propName
  * @returns
  */
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)


#### getPropValue

获取指定 propName 的值

```
/**
  * 获取指定 propName 的值
  * @param propName
  * @returns
  */
getPropValue(propName: string | number): any;
```

#### setPropValue

设置指定 propName 的值

```
/**
  * 设置指定 propName 的值
  * @param propName
  * @param value
  */
setPropValue(propName: string | number, value: any): void;
```

#### clearPropValue

清除指定 propName 的值

```
/**
  * 清除指定 propName 的值
  * @param propName
  */
clearPropValue(propName: string | number): void;
```

================================================
FILE: docs/docs/api/model/simulatorRender.md
================================================
---
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

## 基本介绍

画布节点选中模型

## 属性
### components

画布组件列表

```typescript
/**
  * 画布组件列表
  */
components: {
  [key: string]: any;
}
```

## 方法

### rerender

触发画布重新渲染

```typescript
/**
 * 触发画布重新渲染
 */
rerender: () => void;
```



================================================
FILE: docs/docs/api/model/window.md
================================================
---
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


## 基本介绍

低代码设计器窗口模型

## 属性

### id

窗口唯一 id

`@type {string}`

### title

窗口标题

`@type {string}`

### icon

`@type {ReactElement}`

### resource

窗口对应资源

`@type {IPublicModelResource}`

关联模型 [IPublicModelResource](./resource)

### currentEditorView
窗口当前视图

`@type {IPublicModelEditorView}`

关联模型 [IPublicModelEditorView](./editor-view)

**@since v1.1.7**

### editorViews

窗口所有视图

`@type {IPublicModelEditorView[]}`

关联模型 [IPublicModelEditorView](./editor-view)

**@since v1.1.7**

## 方法

### importSchema
当前窗口导入 schema, 会调用当前窗口对应资源的 import 钩子

```typescript
function importSchema(schema: IPublicTypeNodeSchema): void
```

相关类型:[IPublicTypeNodeSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/node-schema.ts)

### changeViewType
修改当前窗口视图类型

```typescript
function changeViewType(viewName: string): void
```

### save
当前窗口的保存方法,会调用当前窗口对应资源的 save 钩子

```typescript
function save(): Promise(void)
```

## 事件

### onChangeViewType

窗口视图变更事件

```
onChangeViewType(fn: (viewName: string) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onSave

窗口视图保存事件

```
onSave(fn: () => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

**@since v1.1.7**


================================================
FILE: docs/docs/api/plugins.md
================================================
---
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

## 模块简介
插件管理器,提供编排模块中管理插件的能力。

## 方法
### register
注册插件

```typescript
async function register(
  plugin: IPublicTypePlugin,
  options?: IPublicTypePluginRegisterOptions,
): Promise<void>
```
相关 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';

const builtinPluginRegistry = (ctx: IPublicModelPluginContext) => {
  return {
    async init() {
      const { skeleton } = ctx;

      // 注册组件面板
      const componentsPane = skeleton.add({
        area: 'leftArea',
        type: 'PanelDock',
        name: 'componentsPane',
        content: ComponentsPane,
        contentProps: {},
        props: {
          align: 'top',
          icon: 'zujianku',
          description: '组件库',
        },
      });
      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';

const PluginA = (ctx: IPublicModelPluginContext) => {
  return {
    async init() {},
    exports() { return { x: 1, } },
  };
}
PluginA.pluginName = 'PluginA';

const PluginB = (ctx: IPublicModelPluginContext) => {
  return {
    async init() {
      // 获取 pluginA 的导出值
      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)


#### 设置兼容引擎版本示例
```typescript
import { plugins } from '@alilc/lowcode-engine';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';

const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext) => {
  return {
    async init() {
      ...
    },
  };
}
BuiltinPluginRegistry.pluginName = 'BuiltinPluginRegistry';
BuiltinPluginRegistry.meta = {
  engines: {
    lowcodeEngine: '^1.0.0', // 插件需要配合 ^1.0.0 的引擎才可运行
  },
}
await plugins.register(BuiltinPluginRegistry);
```
#### 设置插件参数版本示例
```typescript
import { plugins } from '@alilc/lowcode-engine';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';

const BuiltinPluginRegistry = (ctx: IPublicModelPluginContext, options: any) => {
  return {
    async init() {
      // 直接传值方式:
      //   通过 register(xxx, options) 传入
      //   通过 options 取出

      // 引擎初始化时也可以设置某插件的全局配置项:
      //   通过 engine.init(..., preference) 传入
      //   通过 ctx.preference.getValue() 取出
    },
  };
}
BuiltinPluginRegistry.pluginName = 'BuiltinPluginRegistry';
BuiltinPluginRegistry.meta = {
  preferenceDeclaration: {
    title: 'pluginA 的参数定义',
    properties: [
      {
        key: 'key1',
        type: 'string',
        description: 'this is description for key1',
      },
      {
        key: 'key2',
        type: 'boolean',
        description: 'this is description for key2',
      },
      {
        key: 'key3',
        type: 'number',
        description: 'this is description for key3',
      },
      {
        key: 'key4',
        type: 'string',
        description: 'this is description for key4',
      },
    ],
  },
}

await plugins.register(BuiltinPluginRegistry, { key1: 'abc', key5: 'willNotPassToPlugin' });
```

### get

获取指定插件

```typescript
/**
 * 获取指定插件
 * get plugin instance by name
 */
get(pluginName: string): IPublicModelPluginInstance | null;
```

关联模型 [IPublicModelPluginInstance](./model/plugin-instance)

### getAll

获取所有的插件实例

```typescript
/**
 * 获取所有的插件实例
 * get all plugin instances
 */
getAll(): IPublicModelPluginInstance[];
```

关联模型 [IPublicModelPluginInstance](./model/plugin-instance)

### has

判断是否有指定插件

```typescript
/**
 * 判断是否有指定插件
 * check if plugin with certain name exists
 */
has(pluginName: string): boolean;
```

### delete

删除指定插件

```typescript
/**
 * 删除指定插件
 * delete plugin instance by name
 */
delete(pluginName: string): void;
```

### getPluginPreference

引擎初始化时可以提供全局配置给到各插件,通过这个方法可以获得本插件对应的配置

```typescript
/**
 * 引擎初始化时可以提供全局配置给到各插件,通过这个方法可以获得本插件对应的配置
 * use this to get preference config for this plugin when engine.init() called
 */
getPluginPreference(
    pluginName: string,
  ): Record<string, IPublicTypePreferenceValueType> | null | undefined;
```

## 相关类型定义

- [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)

## 插件元数据工程转化示例
your-plugin/package.json
```json
{
	"name": "@alilc/lowcode-plugin-debug",
  "lcMeta": {
    "pluginName": "debug",
    "meta": {
      "engines": {
        "lowcodeEgnine": "^1.0.0"
      },
      "preferenceDeclaration": { ... }
    }
  }
}
```
转换后的结构:
```typescript
const debug = (ctx: IPublicModelPluginContext, options: any) => {
	return {};
}

debug.pluginName = 'debug';
debug.meta = {
  engines: {
    lowcodeEgnine: '^1.51.0',
	},
  preferenceDeclaration: { ... }
};
```


================================================
FILE: docs/docs/api/project.md
================================================
---
title: project - 模型 API
sidebar_position: 10
---
## 模块简介

引擎编排模块中包含多种模型,包括:
- [文档模型 DocumentModel](./model/document-model)
- [节点模型 Node](./model/node)
- [节点孩子模型 NodeChildren](./model/node-children)
- [属性模型 Prop](./model/prop)
- [属性集模型 Props](./model/props)

他们的依赖关系如下图:
![image.png](https://img.alicdn.com/imgextra/i3/O1CN01B1bAZi1asNU3KaSUJ_!!6000000003385-2-tps-1650-1352.png)

在文档模型内部,又有一些引申模型,比如:
- [历史操作 History)](./model/history)
- [画布节点选中 Selection)](./model/selection)
- [画布节点悬停 Detecting)](./model/detecting)
- [模态节点管理器 ModalNodesManager](./model/modal-nodes-manager)

整个模型系统,以 project API 为入口,所有模型实例均需要通过 project 来获得,比如 project.currentDocument 来获取当前的文档模型,project.currentDocument.nodesMap 来获取当前文档模型里所有的节点列表。

下面来看看 project API 的具体介绍

## 变量
### currentDocument

获取当前的 document 实例

```typescript
/**
 * 获取当前的 document
 * get current document
 */
get currentDocument(): IPublicModelDocumentModel | null;
```

相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts)

### documents

获取当前 project 下所有 documents

```typescript
/**
 * 获取当前 project 下所有 documents
 * get all documents of this project
 * @returns
 */
get documents(): IPublicModelDocumentModel[];
```

相关类型:[IPublicModelDocumentModel](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/document-model.ts)

### simulatorHost

获取模拟器的 host

```typescript
/**
 * 获取模拟器的 host
 * get simulator host
 */
get simulatorHost(): IPublicApiSimulatorHost | null;
```

相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)


## 方法
### openDocument

打开一个 document

```typescript
/**
 * 打开一个 document
 * @param doc
 * @returns
 */
openDocument(doc?: string | IPublicTypeRootSchema | undefined): 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)

### createDocument

创建一个 document

```typescript
/**
 * 创建一个 document
 * create a document
 * @param data
 * @returns
 */
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)

### removeDocument

删除一个 document

```typescript
/**
 * 删除一个 document
 * remove a document
 * @param doc
 */
removeDocument(doc: IPublicModelDocumentModel): void;
```

相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)

### getDocumentByFileName

根据 fileName 获取 document
```typescript
/**
 * 根据 fileName 获取 document
 * get a document by filename
 * @param fileName
 * @returns
 */
getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null;
```

相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)

### getDocumentById

根据 id 获取 document

```typescript
/**
 * 根据 id 获取 document
 * get a document by id
 * @param id
 * @returns
 */
getDocumentById(id: string): IPublicModelDocumentModel | null;
```

相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts)

### exportSchema

导出 project schema

```typescript
/**
 * 导出 project
 * export project to schema
 * @returns
 */
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)

### importSchema

导入 project

```typescript
/**
 * 导入 project schema
 * import schema to project
 * @param schema 待导入的 project 数据
 */
importSchema(schema?: IPublicTypeProjectSchema): void;
```
相关类型:[IPublicTypeProjectSchema](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/project-schema.ts)

### addPropsTransducer
增加一个属性的管道处理函数

```typescript
/**
 * 增加一个属性的管道处理函数
 * add a transducer to process prop
 * @param transducer
 * @param stage
 */
addPropsTransducer(
    transducer: IPublicTypePropsTransducer,
    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';

export const DeleteHiddenTransducer = (ctx: IPublicModelPluginContext) => {
  return {
    async init() {
      const { project } = ctx;
      project.addPropsTransducer((props: IPublicTypeCompositeObject): IPublicTypeCompositeObject => {
        delete props.hidden;
        return props;
      }, IPublicEnumTransformStage.Save);
    },
  };
}

DeleteHiddenTransducer.pluginName = 'DeleteHiddenTransducer';
```

### setI18n
设置多语言语料

```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
 *
 * set I18n data for this project
 * @param value object
 * @since v1.0.17
 */
setI18n(value: object): void;
```

**@since v1.0.17**

### setConfig
设置当前项目配置

```typescript
/**
 * 设置当前项目配置
 * set config for this project
 * @param value object
 * @since v1.1.4
 */
  setConfig(value: IPublicTypeAppConfig): void;
  setConfig<T extends keyof IPublicTypeAppConfig>(key: T, value: IPublicTypeAppConfig[T]): void;
```

**@since v1.1.4**

#### 如何扩展项目配置

```typescript
// shims.d.ts
declare module '@alilc/lowcode-types' {
  export interface IPublicTypeAppConfig {
    customProp: CustomPropType
  }
}

export {};
```


## 事件

### onRemoveDocument
绑定删除文档事件

```typescript
/**
 * 绑定删除文档事件
 * set callback for event onDocumentRemoved
 * @param fn
 * @since v1.0.16
 */
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**

### onChangeDocument

当前 project 内的 document 变更事件

```typescript
/**
 * 当前 project 内的 document 变更事件
 * set callback for event onDocumentChanged
 */
onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;
```

相关类型:
- [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)

### onSimulatorHostReady

当前 project 的模拟器 ready 事件

```typescript
/**
 * 当前 project 的模拟器 ready 事件
 * set callback for event onSimulatorHostReady
 */
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)

### onSimulatorRendererReady

当前 project 的渲染器 ready 事件

```typescript
/**
 * 当前 project 的渲染器 ready 事件
 * set callback for event onSimulatorRendererReady
 */
onSimulatorRendererReady(fn: () => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)


================================================
FILE: docs/docs/api/setters.md
================================================
---
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

## 模块简介
负责注册设置器、管理设置器的 API。注册自定义设置器之后可以在物料中进行使用。

## 方法
### getSetter
获取指定 setter

```typescript
/**
 * 获取指定 setter
 * get setter by type
 * @param type
 * @returns
 */
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
/**
 * 获取已注册的所有 settersMap
 * get map of all registered setters
 * @returns
 */
getSettersMap(): Map<string, IPublicTypeRegisteredSetter & {
  type: string;
}>;
```

相关类型:[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts)

### registerSetter
注册一个 setter

```typescript
/**
 * 注册一个 setter
 * register a setter
 * @param typeOrMaps
 * @param setter
 * @returns
 */
registerSetter(
  typeOrMaps: string | { [key: string]: IPublicTypeCustomView | IPublicTypeRegisteredSetter },
  setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter | undefined
): void;
```

相关类型:
- [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)

## 使用示例
### 注册官方内置 Setter 到设计器中
```typescript
import { setters, skeleton } from '@alilc/lowcode-engine';
import { setterMap, pluginMap } from '@alilc/lowcode-engine-ext';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';

const SetterRegistry = (ctx: IPublicModelPluginContext) => {
  return {
    name: 'ext-setters-registry',
    async init() {
      // 注册 setterMap
      setters.registerSetter(setterMap);
      // 注册插件
      // 注册事件绑定面板
      skeleton.add({
        area: 'centerArea',
        type: 'Widget',
        content: pluginMap.EventBindDialog,
        name: 'eventBindDialog',
        props: {},
      });

      // 注册变量绑定面板
      skeleton.add({
        area: 'centerArea',
        type: 'Widget',
        content: pluginMap.VariableBindDialog,
        name: 'variableBindDialog',
        props: {},
      });
    },
  };
}

SetterRegistry.pluginName = 'SetterRegistry';
await plugins.register(SetterRegistry);
```

### 开发自定义 Setter
AltStringSetter 代码如下:
```typescript
import * as React from "react";
import { Input } from "@alifd/next";

import "./index.scss";
interface AltStringSetterProps {
  // 当前值
  value: string;
  // 默认值
  initialValue: string;
  // setter 唯一输出
  onChange: (val: string) => void;
  // AltStringSetter 特殊配置
  placeholder: string;
}
export default class AltStringSetter extends React.PureComponent<AltStringSetterProps> {
  componentDidMount() {
    const { onChange, value, defaultValue } = this.props;
    if (value == undefined && defaultValue) {
      onChange(defaultValue);
    }
  }

  // 声明 Setter 的 title
 	static displayName = 'AltStringSetter';

  render() {
    const { onChange, value, placeholder } = this.props;
    return (
      <Input
        value={value}
        placeholder={placeholder || ""}
        onChange={(val: any) => onChange(val)}
      ></Input>
    );
  }
}
```

开发完毕之后,注册 AltStringSetter 到设计器中:

```typescript
import AltStringSetter from './AltStringSetter';
import { setters } from '@alilc/lowcode-engine';
const { registerSetter } = setters;
registerSetter('AltStringSetter', AltStringSetter);
```
注册之后,我们就可以在物料中使用了,其中核心配置如下:
```typescript
{
  "props": {
    "isExtends": true,
    "override": [
      {
        "name": "type",
        "setter": "AltStringSetter"
      }
    ]
  }
}
```
完整配置如下:
```typescript
{
  "componentName": "Message",
  "title": "Message",
  "props": [
    {
      "name": "title",
      "propType": "string",
      "description": "标题",
      "defaultValue": "标题"
    },
    {
      "name": "type",
      "propType": {
        "type": "oneOf",
        "value": [
          "success",
          "warning",
          "error",
          "notice",
          "help",
          "loading"
        ]
      },
      "description": "反馈类型",
      "defaultValue": "success"
    }
  ],
  "configure": {
    "props": {
      "isExtends": true,
      "override": [
        {
          "name": "type",
          "setter": "AltStringSetter"
        }
      ]
    }
  }
}
```


================================================
FILE: docs/docs/api/simulatorHost.md
================================================
---
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

## 模块简介
负责模拟器相关的 API,包括画布尺寸、语言等。

## 方法
### set
设置 host 配置值
```typescript
/**
 * 设置若干用于画布渲染的变量,比如画布大小、locale 等。
 * set config for simulator host, eg. device locale and so on.
 * @param key
 * @param value
 */
set(key: string, value: any): void;
```
**示例**
设置若干用于画布渲染的变量,比如画布大小、locale 等。

以设置画布大小为例:
目前支持 3 种定制方式:
```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' } });
```

### get
获取模拟器中设置的变量,比如画布大小、locale 等。

```typescript
/**
 * 获取模拟器中设置的变量,比如画布大小、locale 等。
 * set config value by key
 * @param key
 * @returns
 */
get(key: string): any;

```

### rerender
触发组件构建,并刷新渲染画布

```typescript
/**
 * 触发组件构建,并刷新渲染画布
 * make simulator render again
 */
rerender(): void;
```

### scrollToNode
滚动到指定节点

```typescript
/**
 * 滚动到指定节点
 * scroll to specific node
 * @param node
 * @since v1.1.0
 */
scrollToNode(node: IPublicModelNode): void;
```
**@since v1.1.0**


================================================
FILE: docs/docs/api/skeleton.md
================================================
---
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


## 模块简介
面板 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. 数据源面板
4. JS 等代码面板。

可以发现,这个区域的面板大多数操作时是不需要同时并存的,且交互比较复杂的,需要一个更整块的区域来进行操作。

##### centerArea

画布区域,由于画布大多数是展示作用,所以一般扩展的种类比较少。常见的扩展有:
1. 画布大小修改
2. 物料选中扩展区域修改
##### rightArea

右侧区域,常用于组件的配置。常见的扩展有:统一处理组件的配置项,例如统一删除某一个配置项,统一添加某一个配置项的。
##### toolbar

跟 topArea 类似,按需放置面板插件~
#### 展示类型 (type)

展示类型用于区分插件在设计器内可操作的几种不同界面类型。主要的几种类型为 PanelDock、Widget、Dock,另有 Panel 类型目前不推荐使用。
##### PanelDock

PanelDock 是以面板的形式展示在设计器的左侧区域的。其中主要有两个部分组成,一个是图标,一个是面板。当点击图标时可以控制面板的显示和隐藏。

下图是组件库插件的展示效果。

![Feb-08-2022 19-44-15.gif](https://img.alicdn.com/imgextra/i2/O1CN01i66G5O27bK37nlpxV_!!6000000007815-1-tps-1536-790.gif)

其中右上角可以进行固定,可以对弹出的宽度做设定

接入可以参考代码
```javascript
import { skeleton } from "@alilc/lowcode-engine";

skeleton.add({
  area: "leftArea", // 插件区域
  type: "PanelDock", // 插件类型,弹出面板
  name: "sourceEditor",
  content: SourceEditor, // 插件组件实例
  props: {
    align: "left",
    icon: "wenjian",
    title: '标题', // 图标下方展示的标题
    description: "JS 面板",
  },
  panelProps: {
    floatable: true, // 是否可浮动
    height: 300,
    hideTitleBar: false,
    maxHeight: 800,
    maxWidth: 1200,
    title: "JS 面板",
    width: 600,
  },
});
```
##### Widget
Widget 形式是直接渲染在当前编辑器的对应位置上。如 demo 中在设计器顶部的所有组件都是这种展现形式。

![image.png](https://img.alicdn.com/imgextra/i3/O1CN01IRQIZp1m5AJPwBKDv_!!6000000004902-2-tps-1988-94.png)

接入可以参考代码:

```javascript
import { skeleton } from "@alilc/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: "/",
  },
  props: {
    align: "left",
    width: 100,
  },
});
```
##### Dock

一个图标的表现形式,可以用于语言切换、跳转到外部链接、打开一个 widget 等场景。

```javascript
import { skeleton } from "@alilc/lowcode-engine";

skeleton.add({
  area: "leftArea",
  type: "Dock",
  name: "opener",
  props: {
    icon: Icon, // Icon 组件实例
    align: "bottom",
    onClick: function () {
      // 打开外部链接
      window.open('https://lowcode-engine.cn');
      // 显示 widget
      skeleton.showWidget('xxx');
    }
  }
});
```

## 方法

### add

往指定扩展区加入一块面板

```typescript
/**
 * 增加一个面板实例
 * add a new panel
 * @param config
 * @param extraConfig
 * @returns
 */
add(config: IPublicTypeWidgetBaseConfig, extraConfig?: Record<string, any>): any;
```


IWidgetBaseConfig 定义如下:

| 属性名 | 含义 | 备注 |
| --- | --- | --- |
| name | 面板名称 |  |
| area | 扩展区位置,可选值:'topArea' &#124; 'leftArea' &#124; 'rightArea' &#124; 'toolbar' &#124; 'bottomArea' &#124; 'mainArea' |  |
| type | 面板类型,可选值:'Widget' &#124; 'PanelDock' &#124; 'Panel' &#124; Dock | 详见前文中对**展示类型**的描述 |
| content | 面板的实现类/节点,类型是 ReactClass &#124; ReactElement |  |
| props | 面板属性 | align: 'top' &#124; 'bottom' &#124; 'left' &#124; 'center' &#124; 'right'; // 指定面板 icon 位置区域<br />icon: string &#124; ReactElement;  // icon 为字符串时,请确定当前 fusion 主题包中包含该 icon<br />description: string;<br />condition: Function; // 指定当前面板的显影状态 |
| contentProps | 面板的实现类/节点的参数 |  |
| panelProps | 假如 type: 'Panel' &#124; 'PanelDock' 时有效,传给 Panel 类的参数 | keepVisibleWhileDragging: boolean; // 当有元素在当前 panel 拖拽时,是否保持 panel 为展开状态,默认值:false<br />area: 'leftFloatArea' &#124; 'leftFixedArea' // 指定 panel 位于浮动面板还是钉住面板 |
| index | 面板的位置,不传默认按插件注册顺序 |  |


### remove

移除一个面板实例

```typescript
/**
 * 移除一个面板实例
 * remove a panel
 * @param config
 * @returns
 */
remove(config: IPublicTypeWidgetBaseConfig): number | undefined;
```

### getPanel

获取面板实例

```typescript
/**
 * 获取面板实例
 * @param name 面板名称
 */
getPanel(name: string): IPublicModelSkeletonItem | undefined;
```

相关类型:[IPublicModelSkeletonItem](https://github.com/alibaba/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts)

@since v1.1.10

### showPanel

展示指定 Panel 实例

```typescript
/**
 * 展示指定 Panel 实例
 * show panel by name
 * @param name
 */
showPanel(name: string): void;
```

### hidePanel
隐藏面板

```typescript
/**
 * 隐藏面板
 * hide panel by name
 * @param name
 */
hidePanel(name: string): void;
```

### showWidget

展示指定 Widget 实例

```typescript
/**
 * 展示指定 Widget 实例
 * show widget by name
 * @param name
 */
showWidget(name: string): void;
```

### enableWidget
将 widget 启用。
```typescript
/**
 * 将 widget 启用
 * enable widget
 * @param name
 */
enableWidget(name: string): void;
```

### hideWidget

隐藏指定 widget 实例。

```typescript
/**
 * 隐藏指定 widget 实例
 * hide widget by name
 * @param name
 */
hideWidget(name: string): void;
```

### disableWidget

将 widget 禁用掉,禁用后,所有鼠标事件都会被禁止掉。

适用场景:在该面板还在进行初始化构造时,可以先禁止掉,防止用户点击报错,待初始化完成,重新启用。

```typescript
/**
 * 将 widget 禁用掉,禁用后,所有鼠标事件都会被禁止掉。
 * disable widget,and make it not responding any click event.
 * @param name
 */
disableWidget(name: string): void;
```

### showArea
显示某个 Area

```typescript
/**
 * 显示某个 Area
 * show area
 * @param areaName name of area
 */
showArea(areaName: string): void;
```


### hideArea
隐藏某个 Area

```typescript
/**
 * 隐藏某个 Area
 * hide area
 * @param areaName name of area
 */
hideArea(areaName: string): void;
```

### getAreaItems

获取某个区域下的所有面板实例

```typescript
/**
  * 获取某个区域下的所有面板实例
  * @param areaName IPublicTypeWidgetConfigArea
  */
getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] | undefined;
```

相关类型:[IPublicModelSkeletonItem](https://github.com/alibaba/lowcode-engine/blob/main/packages/shell/src/model/skeleton-item.ts)



### registerConfigTransducer

注册一个面板的配置转换器(transducer)。

```typescript
/**
 * 注册一个面板的配置转换器(transducer)。
 * Registers a configuration transducer for a panel.
 * @param {IPublicTypeConfigTransducer} transducer 
 *   - 要注册的转换器函数。该函数接受一个配置对象(类型为 IPublicTypeSkeletonConfig)作为输入,并返回修改后的配置对象。
 *   - 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] 
 *   - (可选)转换器的唯一标识符。用于在需要时引用或操作特定的转换器。
 *   - (Optional) A unique identifier for the transducer. Used for referencing or manipulating a specific transducer when needed.
 */
registerConfigTransducer(transducer: IPublicTypeConfigTransducer, level: number, id?: string): void;
```

使用示例

```typescript
import { IPublicModelPluginContext, IPublicTypeSkeletonConfig } from '@alilc/lowcode-types';

function updatePanelWidth(config: IPublicTypeSkeletonConfig) {
  if (config.type === 'PanelDock') {
    return {
      ...config,
      panelProps: {
        ...(config.panelProps || {}),
        width: 240,
      },
    }
  }

  return config;
}

const controlPanelWidthPlugin = (ctx: IPublicModelPluginContext) => {
  const { skeleton } = ctx;
  (skeleton as any).registerConfigTransducer?.(updatePanelWidth, 1, 'update-panel-width');

  return {
    init() {},
  };
};

controlPanelWidthPlugin.pluginName = 'controlPanelWidthPlugin';
controlPanelWidthPlugin.meta = {
  dependencies: [],
  engines: {
    lowcodeEngine: '^1.2.3', // 插件需要配合 ^1.0.0 的引擎才可运行
  },
};

export default controlPanelWidthPlugin;
```

## 事件
### onShowPanel

监听 Panel 实例显示事件

```typescript
/**
 * 监听 panel 显示事件
 * set callback for panel shown event
 * @param listener
 * @returns
 */
onShowPanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onHidePanel

监听 Panel 实例隐藏事件

```typescript
/**
 * 监听 Panel 实例隐藏事件
 * set callback for panel hidden event
 * @param listener
 * @returns
 */
onHidePanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onDisableWidget

监听 Widget 实例 Disable 事件

```typescript
/**
 * 监听 Widget 实例 Disable 事件
 * @param listener
 */
onDisableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onEnableWidget

监听 Widget 实例 Enable 事件

```typescript
/**
 * 监听 Widget 实例 Enable 事件
 * @param listener
 */
onEnableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onShowWidget

监听 Widget 实例显示事件

```typescript
/**
 * 监听 Widget 显示事件
 * set callback for widget shown event
 * @param listener
 * @returns
 */
onShowWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onHideWidget

监听 Widget 实例隐藏事件

```typescript
/**
 * 监听 Widget 隐藏事件
 * set callback for widget hidden event
 * @param listener
 * @returns
 */
onHideWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

## 使用示例

```typescript
import { skeleton } from '@alilc/lowcode-engine';

skeleton.add({
	name: 'logo',
  area: 'topArea',
  type: 'Widget',
  contentProps: {},
  content: LogoContent,
});

skeleton.add({
  name: 'sourceEditor',
  type: 'PanelDock',
  area: 'leftArea',
  props: {
    align: 'top',
    icon: 'wenjian',
    description: 'JS 面板',
  },
  panelProps: {
    floatable: true,
    height: 300,
    help: undefined,
    hideTitleBar: false,
    maxHeight: 800,
    maxWidth: 1200,
    title: 'JS 面板',
    width: 600,
  },
  content: SourceEditor,
});

// 显隐 panel
skeleton.showPanel('sourceEditor');
skeleton.hidePanel('sourceEditor');


// 创建一个浮动的 widget
skeleton.add({
  name: 'floatingWidget',
  type: 'Widget',
  area: 'mainArea',
  props: {},
  content: React.createElement('div', {}, 'haha'),
  contentProps: {
    style: {
      position: 'fixed',
      top: '200px',
      bottom: 0,
      width: 'calc(100% - 46px)',
      'background-color': 'lightblue'
    }
  }
});

// 显隐 widget
skeleton.showWidget('floatingWidget');
skeleton.hideWidget('floatingWidget');

// 控制 widget 的可点击态
skeleton.enableWidget('sourceEditor');
skeleton.disableWidget('sourceEditor');
```
### bottomArea 示例
```typescript
import { skeleton } from '@alilc/lowcode-engine';

skeleton.add({
  name: 'bottomAreaPanelName',
  area: 'bottomArea',
  type: 'Panel',
  content: () => 'demoText',
});


skeleton.showPanel('bottomAreaPanelName');
```
### widget 示例
```typescript
// 注册 logo 面板
skeleton.add({
  area: 'topArea',
  type: 'Widget',
  name: 'logo',
  content: Logo,
  contentProps: {
    logo: 'https://img.alicdn.com/imgextra/i4/O1CN013w2bmQ25WAIha4Hx9_!!6000000007533-55-tps-137-26.svg',
    href: 'https://lowcode-engine.cn',
  },
  props: {
    align: 'left',
  },
});
```


================================================
FILE: docs/docs/api/workspace.md
================================================
---
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

## 模块简介

通过该模块可以开发应用级低代码设计器。

## 变量

### isActive

是否启用 workspace 模式

### window

当前设计器窗口模型

```typescript
get window(): IPublicModelWindow
```

关联模型 [IPublicModelWindow](./model/window)

### plugins

应用级别的插件注册

```typescript
get plugins(): IPublicApiPlugins
```

关联模型 [IPublicApiPlugins](./plugins)

### skeleton

应用级别的面板管理

```typescript
get skeleton(): IPublicApiSkeleton
```

关联模型 [IPublicApiSkeleton](./skeleton)

### windows

当前设计器的编辑窗口

```typescript
get window(): IPublicModelWindow[]
```

关联模型 [IPublicModelWindow](./model/window)

### resourceList

当前设计器的资源列表数据

```
get resourceList(): IPublicModelResource;
```

关联模型 [IPublicModelResource](./model/resource)

## 方法

### registerResourceType
注册资源

```typescript
/** 注册资源 */
registerResourceType(resourceTypeModel: IPublicTypeResourceType): void;
```

相关类型:[IPublicTypeResourceType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-type.ts)

### setResourceList

设置设计器资源列表数据

```typescript
setResourceList(resourceList: IPublicResourceList) {}
```

相关类型:[IPublicResourceData](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-list.ts)

### openEditorWindow

打开视图窗口

```typescript
/**
 * 打开视图窗口
 * @deprecated
 */
openEditorWindow(resourceName: string, id: string, extra: Object, viewName?: string, sleep?: boolean): Promise<void>;

/** 打开视图窗口 */
openEditorWindow(resource: Resource, sleep?: boolean): Promise<void>;
```

### openEditorWindowById

通过视图 id 打开窗口

```typescript
openEditorWindowById(id: string): void;
```

### removeEditorWindow

移除视图窗口

```typescript
/**
 * 移除视图窗口
 * @deprecated
 */
removeEditorWindow(resourceName: string, id: string): void;

/**
 * 移除视图窗口
 */
removeEditorWindow(resource: Resource): void;
```

### removeEditorWindowById

通过视图 id 移除窗口

```typescript
removeEditorWindowById(id: string): void;
```

## 事件

### onChangeWindows

窗口新增/删除的事件

```typescript
function onChangeWindows(fn: () => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

### onChangeActiveWindow

active 窗口变更事件

```typescript
function onChangeActiveWindow(fn: () => void): IPublicTypeDisposable;
```

相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)


### onResourceListChange

设计器资源列表数据变更事件

```typescript
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)


================================================
FILE: docs/docs/article/index.md
================================================
# 官方文章
- [2023/11/09 UIPaaS | 基于 LowCodeEngine 的低代码平台孵化器](https://mp.weixin.qq.com/s/mKuv3_Wvgt5T3AGErUGBQQ)
- [2023/04/04 什么?低代码引擎可以开发应用了](https://mp.weixin.qq.com/s/dwi40gJjGBHW9MVpag5Oxg)
- [2023/03/23 低代码引擎 LowCodeEngine 茁壮成长的一年](https://mp.weixin.qq.com/s/DDt4LQLFUBQ2-F5ehZGBKg)
- [2023/02/21 基于 LowCodeEngine 的低代码组件体系的建设和实践](https://mp.weixin.qq.com/s/rnvbGHImGt6oJuX2wCtaqw)
- [2022/12/21 低代码多分支协同开发的建设与实践](https://mp.weixin.qq.com/s/DmwxL67htHfTUP1U966N-Q)
- [2022/11/24 低代码引擎半岁啦,来跟大家唠唠嗑...](https://segmentfault.com/a/1190000042884409)
- [2022/10/27 低代码技术在研发团队的应用模式探讨](https://mp.weixin.qq.com/s/Ynk_wjJbmNw7fEG6UtGZbQ)
- [2022/08/23 基于 LowCodeEngine 的调试能力建设与实践](https://mp.weixin.qq.com/s/H8KvEOylmzLPgIuuBO0S9w)
- [2022/06/23 低代码渲染那些事](https://mp.weixin.qq.com/s/yqYey76qLGYPfDtpGkVFfA)
- [2022/06/16 关于 LowCode&ProCode 混合研发的思考](https://mp.weixin.qq.com/s/TY3VXjkSmsQoT47xma3wig)
- [2022/04/07 磁贴布局在钉钉宜搭报表设计引擎中的实现](https://mp.weixin.qq.com/s/PSTut5ahAB8nlJ9kBpBaxw)
- [2022/03/23 阿里低代码引擎 LowCodeEngine 正式开源!](https://mp.weixin.qq.com/s/T66LghtWLz2Oh048XqaniA)
- [2022/01/10 阿里低代码引擎和生态建设实战及思考](https://mp.weixin.qq.com/s/MI6MrUKKydtnSdO4xq6jwA)
- [2021/04/14 2B 领域下的低代码探索之路](https://mp.weixin.qq.com/s/HAxrMHLT43dPH488RiEIdw)


================================================
FILE: docs/docs/demoUsage/advanced/_category_.json
================================================
{
  "label": "进阶功能",
  "position": 3,
  "collapsed": false,
  "collapsible": false
}


================================================
FILE: docs/docs/demoUsage/advanced/hotkey.md
================================================
---
title: 8. 编辑器快捷键
sidebar_position: 0
---
- 任意时机:
   - `⌘` `S` 保存
   - `⌘` `P` 预览
   - `⌘` `D` 查看 Diff
   - `⌘` `Z` 撤销
   - `⇧` `⌘` `Z` 重做
- 选择任意组件后:
   - `Backspace` 删除组件
   - `⌘` `C` 复制组件
   - `⌘` `V` 粘贴组件
   - `⌘` `X` 剪切组件
   - `⌥` `↑` 向外层移动组件
   - `⌥` `↓` 向内层移动组件
   - `⌥` `←` 同级向上移动组件
   - `⌥` `→` 同级向下移动组件
   - `↑` 向上选择组件
   - `↓` 向下选择组件
   - `←` 向左选择组件
   - `→` 向右选择组件
   - `Escape` 取消选择组件


================================================
FILE: docs/docs/demoUsage/appendix/_category_.json
================================================
{
  "label": "常见问题",
  "position": 4,
  "collapsed": false,
  "collapsible": false
}


================================================
FILE: docs/docs/demoUsage/appendix/api.md
================================================
---
title: demo 使用相关 API
sidebar_position: 2
---
## 数据源相关
### 请求数据源
```javascript
// 请求 userList(userList 在数据源面板中定义)

this.dataSourceMap['userList'].load({
	data: {}
}).then(res => {})
  .catch(error => {});
```

### 获取数据源的值
```javascript
const { userList } = this.state;
```

### 手动修改数据源值
```javascript
// 获取数据源面板中定义的值
const { user } = this.state;

// 修改 state 值
this.setState({
	user: {}
});
```


================================================
FILE: docs/docs/demoUsage/appendix/loop.md
================================================
---
title: 如何使用循环值
sidebar_position: 0
---
1.设置循环数据
![image.png](https://img.alicdn.com/imgextra/i1/O1CN01Gw1kXO1qaXulQCWap_!!6000000005512-2-tps-3840-1900.png)

2.给需要的变量绑定 this.item
![image.png](https://img.alicdn.com/imgextra/i1/O1CN01RpP2Ev24lRxjqpHdY_!!6000000007431-2-tps-3840-1892.png)

绑定之后的效果如下:
![image.png](https://img.alicdn.com/imgextra/i3/O1CN019qa1J31m7ugsXcnaA_!!6000000004908-2-tps-3840-1884.png)

其中 this.item 的 item 是可以配置的。配置不同的 key 可以方便在多层循环中使用不同层级的循环 item 值。
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01XQfnYL1P4wxn01oXv_!!6000000001788-2-tps-3840-1896.png)

this.index 是当前循环的索引值。

3.在事件绑定函数中使用

在事件绑定函数中使用扩展参数设置
![image](https://github.com/alibaba/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/alibaba/lowcode-engine/assets/11935995/6ca590c9-1f5f-4d48-94a5-439130a22e92)


================================================
FILE: docs/docs/demoUsage/intro.md
================================================
---
title: 1. 试用低代码引擎 Demo
sidebar_position: 0
---
低代码编辑器中的区块主要包含这些功能点:
![image.png](https://img.alicdn.com/imgextra/i2/O1CN01aGQull1RVdGs7Pt6x_!!6000000002117-2-tps-3384-1784.png)

## 分区块功能介绍
### 左侧:面板与操作区
#### 物料面板
可以查找组件,并在此拖动组件到编辑器画布中
![Dec-17-2021 19-12-46.gif](https://img.alicdn.com/imgextra/i1/O1CN01pEu7811SlwzxraLHG_!!6000000002288-1-tps-1468-754.gif)

#### 大纲面板
可以调整页面内的组件树结构:
![Dec-17-2021 19-14-34.gif](https://img.alicdn.com/imgextra/i1/O1CN013DDLqt1GH0rAlajqi_!!6000000000596-1-tps-1468-754.gif)
可以在这里打开或者关闭模态浮层的展现:
![Dec-17-2021 19-19-18.gif](https://img.alicdn.com/imgextra/i2/O1CN01bQfS8W1JitokHRinC_!!6000000001063-1-tps-1468-754.gif)


#### 源码面板
可以编辑页面级别的 JavaScript 代码和 CSS 配置
![Feb-11-2022 14-51-59.gif](https://img.alicdn.com/imgextra/i1/O1CN01d11kK71Q223eWvL5F_!!6000000001917-1-tps-1532-614.gif)

#### Schema 编辑
【开发者专属】可以编辑页面的底层 Schema 数据。
![image.png](https://img.alicdn.com/imgextra/i3/O1CN01lcQOER23Q5sjA0Gn5_!!6000000007249-2-tps-3070-1648.png)
搭配顶部操作区的“保存到本地”和“重置页面”功能,可以实验各种 schema 对低代码页面的改变。

它们操作的数据关系是:

- 页面中的 Schema 数据:保存在低代码引擎中的 Schema,点击 Schema 面板中的“保存 Schema”时将修改引擎中的值,此外低代码引擎中的所有操作都可能修改到 Schema
- localStorage 数据:由“保存到本地”保存到 localStorage 中,页面初始化时将读取,预览页面时也会读取
- 默认 Schema:保存在 Demo 项目中的默认 Schema(`public/schema.json`),初始化页面时如果不存在 localStorage 数据即会读取,点击“重置页面”时,也会读取

#### 中英文切换
可以切换编辑器的语言;注:需要组件配置配合。

![image.png](https://img.alicdn.com/imgextra/i2/O1CN019ORknX1M5SYg7eSJ3_!!6000000001383-2-tps-3018-1512.png)
![image.png](https://img.alicdn.com/imgextra/i2/O1CN01R7g7pW21rSJEHd2AI_!!6000000007038-2-tps-3016-1510.png)
## 中部:可视化页面编辑画布区域

点击组件在右侧面板中能够显示出对应组件的属性配置选项
![Dec-17-2021 19-28-28.gif](https://img.alicdn.com/imgextra/i1/O1CN01uBU3lR1CuAFTTq4RS_!!6000000000140-1-tps-1468-754.gif)

拖拽修改组件的排列顺序
![Dec-17-2021 19-29-40.gif](https://img.alicdn.com/imgextra/i3/O1CN01DAAYKd1bycUq1C4JV_!!6000000003534-1-tps-1468-754.gif)

将组件拖拽到容器类型的组件中,注意拖拽时会在右侧提示当前的组件树。
![Dec-17-2021 19-31-30.gif](https://img.alicdn.com/imgextra/i2/O1CN01TzJosP1FIYZe6xIQ5_!!6000000000464-1-tps-1468-754.gif)

## 右侧:组件级别配置

### 选中的组件
从页面开始一直到当前选中的组件位置,点击对应的名称可以切换到对应的组件上。
![Dec-17-2021 19-35-25.gif](https://img.alicdn.com/imgextra/i4/O1CN01EbImy425R80OeblSD_!!6000000007522-1-tps-1468-754.gif)

### 选中组件的配置
当前组件的大类目选项,根据组件类型不同,包含如下子类目:

#### 属性
组件的基础属性值设置
![Dec-17-2021 19-37-26.gif](https://img.alicdn.com/imgextra/i2/O1CN01ziBI9T1nQynFKqCp2_!!6000000005085-1-tps-1468-754.gif)

#### 样式
组件的样式配置,如文字:
![Dec-17-2021 19-38-55.gif](https://img.alicdn.com/imgextra/i4/O1CN017DQv2R1OEjoawXmKJ_!!6000000001674-1-tps-1468-754.gif)

#### 事件
绑定组件对外暴露的事件。
![Dec-17-2021 19-41-17.gif](https://img.alicdn.com/imgextra/i2/O1CN01mhVutF24I8cLde0zy_!!6000000007367-1-tps-1468-754.gif)

#### 高级
循环、条件渲染与 key 设置。
![Dec-17-2021 19-46-26.gif](https://img.alicdn.com/imgextra/i4/O1CN01xTjXQX1jMcYwuTGKZ_!!6000000004534-1-tps-1468-754.gif)

## 顶部:操作区

### 撤回和重做
![Dec-17-2021 19-52-23.gif](https://img.alicdn.com/imgextra/i3/O1CN019VWkbr1jsgHoGKf6g_!!6000000004604-1-tps-1468-754.gif)


================================================
FILE: docs/docs/demoUsage/makeStuff/_category_.json
================================================
{
  "label": "如何制作",
  "position": 1,
  "collapsed": false,
  "collapsible": false
}


================================================
FILE: docs/docs/demoUsage/makeStuff/dialog.md
================================================
---
title: 3. 如何通过按钮展示/隐藏弹窗
sidebar_position: 1
---
> 说明:这个方式依赖低代码弹窗组件是否对外保留了相关的 API,不同的物料支持的方式不一样,这里只针对综合场景的弹窗物料。

## 1.拖拽一个按钮

![image.png](https://img.alicdn.com/imgextra/i1/O1CN01kLaWA31D6WwTui9VW_!!6000000000167-2-tps-3584-1812.png)
## 2.拖拽一个弹窗
![image.png](https://img.alicdn.com/imgextra/i2/O1CN01rfRzLa1quEwUyulPc_!!6000000005555-2-tps-3578-1622.png)

## 3.查看弹窗 refId
![image.png](https://img.alicdn.com/imgextra/i1/O1CN01rEgPnW1cSqdWpG0YE_!!6000000003600-2-tps-3574-1588.png)

- 点击弹窗
- 点击右侧面板中的高级
- 找到 refId

![image.png](https://img.alicdn.com/imgextra/i3/O1CN01MXMfqn1rj4uKzlOh2_!!6000000005666-2-tps-3584-1796.png)

这里我们的 refId 是 "pro-dialog-entryl32xgrus"
## 4.隐藏弹窗
点击工具栏的隐藏小图标,将弹窗在画布中隐藏
![image.png](https://img.alicdn.com/imgextra/i3/O1CN017Kamt71HFvWkpeK8j_!!6000000000729-2-tps-3578-1568.png)

## 5.按钮绑定事件
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01SwJ0xx1u3LfX2h8yt_!!6000000005981-2-tps-3584-1814.png)

**通过下面的代码即可打开弹窗**

```typescript
this.$('pro-dialog-entryl32xgrus').open();
```
####


================================================
FILE: docs/docs/demoUsage/makeStuff/table.md
================================================
---
title: 2. 如何制作表格
sidebar_position: 0
---
## 步骤详解
### 拖入组件

一个常见的表格页面会包含查询框、表格和分页按钮。这些都在 Fusion UI 中进行了相应的封装,我们可以在左侧组件面板处找到他们。

![image.png](https://img.alicdn.com/imgextra/i2/O1CN01UU8pVT26XN1A0ExVG_!!6000000007671-2-tps-3032-1648.png)

将他们拖到画布之中:
![Feb-16-2022 16-58-59.gif](https://img.alicdn.com/imgextra/i3/O1CN01UAsQ8124HgDptzPrn_!!6000000007366-1-tps-1534-792.gif)
### 配置组件

选中刚拖入的“查询筛选”组件,您可以配置此组件:
![Feb-14-2022 17-59-47.gif](https://img.alicdn.com/imgextra/i2/O1CN01RiDUy31aufSeVk8IN_!!6000000003390-1-tps-1532-792.gif)

对于形如 Array 的配置项目,我们可以增删项目、修改常用项、修改顺序。

![image.png](https://img.alicdn.com/imgextra/i2/O1CN01eWOK0d1fOfsF9PZu9_!!6000000003997-2-tps-3060-1476.png)

掌握组件配置功能,我们就可以完成一个常用的查询框的配置:
![Feb-21-2022 18-05-52.gif](https://img.alicdn.com/imgextra/i1/O1CN0138fb0P1CTbHKWDBeo_!!6000000000082-1-tps-1532-790.gif)

### 绑定数据

低代码场景下,我们需要绑定动态的数据。通过左侧的源码编辑面板,我们可以创建动态数据和它的相关处理函数:

![image.png](https://img.alicdn.com/imgextra/i1/O1CN015Bw2aQ1jaMRWoYzv5_!!6000000004564-2-tps-2976-1478.png)

如图,我们配入如下自定义值进 state 里:
```json
    "companies": [
      { company: '测试公司1', id: 1, createTime: +new Date() },
      { company: '测试公司2', id: 2, createTime: +new Date() },
      { company: '测试公司3', id: 3, createTime: +new Date() },
    ]
```
定义动态数据以后,我们需要绑定它到组件的属性中,我们找到相关属性的配置:

![image.png](https://img.alicdn.com/imgextra/i3/O1CN013Cu5OE1CXGRhyEmbJ_!!6000000000090-2-tps-3546-1792.png)

![image.png](https://img.alicdn.com/imgextra/i3/O1CN01iaK15j1bgIeO65svI_!!6000000003494-2-tps-3428-1640.png)

如图,输入表达式:

```javascript
this.state.companies
```

再结合上一节的“配置组件”操作,我们已经可以把表格的主体配置出来了:

![image.png](https://img.alicdn.com/imgextra/i2/O1CN01p8QJ5C1buxKDTS1cU_!!6000000003526-2-tps-3058-1640.png)

### 动态请求

我们进入代码区块,使用生命周期方法来完成动态数据的请求。假设提供数据的接口是:[http://rap2api.taobao.org/app/mock/250089/testCompanies](http://rap2api.taobao.org/app/mock/250089/testCompanies),那么,我们可以在源码面板进行如下配置:

```typescript
class LowcodeComponent extends Component {
  state = {
    "text": "outer",
    "isShowDialog": false,
    "loading": false,
    "companies": [
      { company: '测试公司 1', id: 1, createTime: +new Date() },
      { company: '测试公司 2', id: 2, createTime: +new Date() },
      { company: '测试公司 3', id: 3, createTime: +new Date() },
    ]
  }
  componentDidMount() {
    this.setState({ loading: true })
    window.fetch('http://rap2api.taobao.org/app/mock/250089/testCompanies')
      .then((res) => res.json())
      .then((companies) => {
        this.setState({
          companies,
        })
      })
      .catch(err => console.error(err))
      .then(() => {
        this.setState({ loading: false })
      })
  }
}
```

在 `componentDidMount` 生命周期,将请求接口并设置 loading 和数据字段。

点击保存或叉关闭源码面板后,我们可以看到代码已经生效了:

![image.png](https://img.alicdn.com/imgextra/i3/O1CN01lqjW8e1f39G8Zm7hQ_!!6000000003950-2-tps-3058-1634.png)

### 配置插槽

我们可以用绑定数据的方法把 loading 绑在加载指示上:

![image.png](https://img.alicdn.com/imgextra/i1/O1CN01K3Pwjo1PKWQcoBl5K_!!6000000001822-2-tps-3170-1904.png)

![Feb-16-2022 20-24-35.gif](https://img.ali
Download .txt
gitextract_4erw24n6/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   └── bug-report.md
│   └── workflows/
│       ├── check base branch.yml
│       ├── ci.yml
│       ├── cov packages.yml
│       ├── help wanted.yml
│       ├── insufficient information.yml
│       ├── pr comment by chatgpt.yml
│       ├── pre build.yml
│       ├── publish docs.yml
│       ├── publish engine beta.yml
│       ├── publish engine.yml
│       ├── stale.yml
│       ├── test modules.yml
│       └── test packages.yml
├── .gitignore
├── .prettierrc.js
├── .stylelintignore
├── .stylelintrc.js
├── CONTRIBUTOR.md
├── LICENSE
├── abc.json
├── babel.config.js
├── commitlint.config.js
├── deploy-space/
│   ├── lerna.json
│   ├── package.json
│   ├── static/
│   │   ├── index.html
│   │   └── preview.html
│   └── tsconfig.json
├── docs/
│   ├── .gitignore
│   ├── README.md
│   ├── babel.config.js
│   ├── community/
│   │   └── issue.md
│   ├── config/
│   │   ├── navbar.js
│   │   ├── sidebars.js
│   │   └── sidebarsCommunity.js
│   ├── docs/
│   │   ├── api/
│   │   │   ├── canvas.md
│   │   │   ├── command.md
│   │   │   ├── common.md
│   │   │   ├── commonUI.md
│   │   │   ├── config.md
│   │   │   ├── configOptions.md
│   │   │   ├── event.md
│   │   │   ├── hotkey.md
│   │   │   ├── index.md
│   │   │   ├── init.md
│   │   │   ├── logger.md
│   │   │   ├── material.md
│   │   │   ├── model/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── clipboard.md
│   │   │   │   ├── component-meta.md
│   │   │   │   ├── detecting.md
│   │   │   │   ├── document-model.md
│   │   │   │   ├── dragon.md
│   │   │   │   ├── drop-location.md
│   │   │   │   ├── editor-view.md
│   │   │   │   ├── history.md
│   │   │   │   ├── modal-nodes-manager.md
│   │   │   │   ├── node-children.md
│   │   │   │   ├── node.md
│   │   │   │   ├── plugin-instance.md
│   │   │   │   ├── prop.md
│   │   │   │   ├── props.md
│   │   │   │   ├── resource.md
│   │   │   │   ├── selection.md
│   │   │   │   ├── setting-field.md
│   │   │   │   ├── setting-top-entry.md
│   │   │   │   ├── simulatorRender.md
│   │   │   │   └── window.md
│   │   │   ├── plugins.md
│   │   │   ├── project.md
│   │   │   ├── setters.md
│   │   │   ├── simulatorHost.md
│   │   │   ├── skeleton.md
│   │   │   └── workspace.md
│   │   ├── article/
│   │   │   └── index.md
│   │   ├── demoUsage/
│   │   │   ├── advanced/
│   │   │   │   ├── _category_.json
│   │   │   │   └── hotkey.md
│   │   │   ├── appendix/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── api.md
│   │   │   │   └── loop.md
│   │   │   ├── intro.md
│   │   │   ├── makeStuff/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── dialog.md
│   │   │   │   └── table.md
│   │   │   └── panels/
│   │   │       ├── _category_.json
│   │   │       ├── canvas.md
│   │   │       ├── code.md
│   │   │       ├── component.md
│   │   │       ├── datasource.md
│   │   │       └── settings.md
│   │   ├── faq/
│   │   │   ├── faq001.md
│   │   │   ├── faq002.md
│   │   │   ├── faq003.md
│   │   │   ├── faq004.md
│   │   │   ├── faq005.md
│   │   │   ├── faq006.md
│   │   │   ├── faq007.md
│   │   │   ├── faq008.md
│   │   │   ├── faq009.md
│   │   │   ├── faq010.md
│   │   │   ├── faq011.md
│   │   │   ├── faq012.md
│   │   │   ├── faq013.md
│   │   │   ├── faq014.md
│   │   │   ├── faq015.md
│   │   │   ├── faq016.md
│   │   │   ├── faq017.md
│   │   │   ├── faq018.md
│   │   │   ├── faq019.md
│   │   │   ├── faq020.md
│   │   │   ├── faq021.md
│   │   │   ├── faq022.md
│   │   │   ├── faq023.md
│   │   │   ├── faq024.md
│   │   │   └── index.md
│   │   ├── guide/
│   │   │   ├── appendix/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── glossary.md
│   │   │   │   ├── metaSpec.md
│   │   │   │   ├── npms.md
│   │   │   │   ├── repos.md
│   │   │   │   ├── setterDetails/
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   ├── array.md
│   │   │   │   │   ├── behavior.md
│   │   │   │   │   ├── bool.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── event.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── mixed.md
│   │   │   │   │   ├── number.md
│   │   │   │   │   ├── radioGroup.md
│   │   │   │   │   ├── select.md
│   │   │   │   │   ├── slot.md
│   │   │   │   │   ├── string.md
│   │   │   │   │   ├── style.md
│   │   │   │   │   ├── textArea.md
│   │   │   │   │   └── variable.md
│   │   │   │   └── setters.md
│   │   │   ├── create/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── useEditor.md
│   │   │   │   └── useRenderer.md
│   │   │   ├── design/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── datasourceEngine.md
│   │   │   │   ├── editor.md
│   │   │   │   ├── generator.md
│   │   │   │   ├── materialParser.md
│   │   │   │   ├── renderer.md
│   │   │   │   ├── setter.md
│   │   │   │   ├── specs.md
│   │   │   │   └── summary.md
│   │   │   ├── expand/
│   │   │   │   ├── _category_.json
│   │   │   │   ├── editor/
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   ├── cli.md
│   │   │   │   │   ├── graph.md
│   │   │   │   │   ├── material.md
│   │   │   │   │   ├── metaSpec.md
│   │   │   │   │   ├── parts/
│   │   │   │   │   │   ├── _category_.json
│   │   │   │   │   │   ├── partsIntro.md
│   │   │   │   │   │   ├── partsassets.md
│   │   │   │   │   │   ├── partslcc.md
│   │   │   │   │   │   └── prototype.md
│   │   │   │   │   ├── pluginContextMenu.md
│   │   │   │   │   ├── pluginWidget.md
│   │   │   │   │   ├── setter.md
│   │   │   │   │   ├── summary.md
│   │   │   │   │   └── theme.md
│   │   │   │   └── runtime/
│   │   │   │       ├── _category_.json
│   │   │   │       ├── codeGeneration.md
│   │   │   │       └── renderer.md
│   │   │   └── quickStart/
│   │   │       ├── _category_.json
│   │   │       ├── demo.md
│   │   │       ├── intro.md
│   │   │       └── start.md
│   │   ├── participate/
│   │   │   ├── code-specification.md
│   │   │   ├── flow.md
│   │   │   ├── index.md
│   │   │   └── meet.md
│   │   ├── specs/
│   │   │   ├── assets-spec.md
│   │   │   ├── lowcode-spec.md
│   │   │   └── material-spec.md
│   │   └── video/
│   │       └── index.md
│   ├── docusaurus.config.js
│   ├── package.json
│   ├── scripts/
│   │   ├── getDocsFromDir.js
│   │   └── sync-oss.js
│   ├── src/
│   │   ├── css/
│   │   │   └── custom.css
│   │   └── pages/
│   │       ├── index-old.tsx
│   │       ├── index.module.css
│   │       ├── index.tsx
│   │       └── markdown-page.md
│   └── tsconfig.json
├── index.ts
├── lerna.json
├── modules/
│   ├── code-generator/
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .versionrc
│   │   ├── CHANGELOG.md
│   │   ├── CONTRIBUTING.md
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── bin/
│   │   │   └── lowcode-code-generator.js
│   │   ├── example-schema.json
│   │   ├── example-schema.json5
│   │   ├── jest.config.js
│   │   ├── jest.setup.js
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   ├── build-cli.js
│   │   │   ├── build-standalone-loader.js
│   │   │   ├── build-standalone-worker.js
│   │   │   ├── build-standalone.js
│   │   │   ├── build-template-static-files.js
│   │   │   ├── build-types
│   │   │   ├── build.js
│   │   │   ├── move-files-to-build-dest.js
│   │   │   ├── run-demo-project
│   │   │   └── test-standalone.js
│   │   ├── src/
│   │   │   ├── analyzer/
│   │   │   │   └── componentAnalyzer.ts
│   │   │   ├── cli/
│   │   │   │   ├── index.ts
│   │   │   │   ├── init-solution.ts
│   │   │   │   ├── run.ts
│   │   │   │   └── solutions/
│   │   │   │       └── example-solution.ts
│   │   │   ├── config/
│   │   │   │   └── env.ts
│   │   │   ├── const/
│   │   │   │   ├── file.ts
│   │   │   │   ├── generator.ts
│   │   │   │   └── index.ts
│   │   │   ├── core/
│   │   │   │   └── jsx/
│   │   │   │       ├── handlers/
│   │   │   │       │   ├── transformJsExpression.ts
│   │   │   │       │   └── transformThis2Context.ts
│   │   │   │       └── util/
│   │   │   │           ├── isLiteralAtomicExpr.ts
│   │   │   │           └── isSimpleStraightLiteral.ts
│   │   │   ├── generator/
│   │   │   │   ├── ChunkBuilder.ts
│   │   │   │   ├── CodeBuilder.ts
│   │   │   │   ├── ModuleBuilder.ts
│   │   │   │   └── ProjectBuilder.ts
│   │   │   ├── index.ts
│   │   │   ├── parser/
│   │   │   │   └── SchemaParser.ts
│   │   │   ├── plugins/
│   │   │   │   ├── common/
│   │   │   │   │   ├── esmodule.ts
│   │   │   │   │   ├── requireUtils.ts
│   │   │   │   │   └── styleImport.ts
│   │   │   │   ├── component/
│   │   │   │   │   ├── rax/
│   │   │   │   │   │   ├── commonDeps.ts
│   │   │   │   │   │   ├── const.ts
│   │   │   │   │   │   ├── containerClass.ts
│   │   │   │   │   │   ├── containerInitState.ts
│   │   │   │   │   │   ├── containerInjectContext.ts
│   │   │   │   │   │   ├── containerInjectDataSourceEngine.ts
│   │   │   │   │   │   ├── containerInjectUtils.ts
│   │   │   │   │   │   ├── containerLifeCycle.ts
│   │   │   │   │   │   ├── containerMethods.ts
│   │   │   │   │   │   └── jsx.ts
│   │   │   │   │   ├── react/
│   │   │   │   │   │   ├── const.ts
│   │   │   │   │   │   ├── containerClass.ts
│   │   │   │   │   │   ├── containerInitState.ts
│   │   │   │   │   │   ├── containerInjectConstants.ts
│   │   │   │   │   │   ├── containerInjectContext.ts
│   │   │   │   │   │   ├── containerInjectDataSourceEngine.ts
│   │   │   │   │   │   ├── containerInjectI18n.ts
│   │   │   │   │   │   ├── containerInjectUtils.ts
│   │   │   │   │   │   ├── containerLifeCycle.ts
│   │   │   │   │   │   ├── containerMethod.ts
│   │   │   │   │   │   ├── jsx.ts
│   │   │   │   │   │   └── reactCommonDeps.ts
│   │   │   │   │   └── style/
│   │   │   │   │       └── css.ts
│   │   │   │   └── project/
│   │   │   │       ├── constants.ts
│   │   │   │       ├── framework/
│   │   │   │       │   ├── icejs/
│   │   │   │       │   │   ├── index.ts
│   │   │   │       │   │   ├── plugins/
│   │   │   │       │   │   │   ├── entry.ts
│   │   │   │       │   │   │   ├── entryHtml.ts
│   │   │   │       │   │   │   ├── globalStyle.ts
│   │   │   │       │   │   │   ├── packageJSON.ts
│   │   │   │       │   │   │   └── router.ts
│   │   │   │       │   │   └── template/
│   │   │   │       │   │       ├── files/
│   │   │   │       │   │       │   ├── README.md.ts
│   │   │   │       │   │       │   ├── abc.json.ts
│   │   │   │       │   │       │   ├── build.json.ts
│   │   │   │       │   │       │   ├── editorconfig.ts
│   │   │   │       │   │       │   ├── eslintignore.ts
│   │   │   │       │   │       │   ├── eslintrc.js.ts
│   │   │   │       │   │       │   ├── gitignore.ts
│   │   │   │       │   │       │   ├── jsconfig.json.ts
│   │   │   │       │   │       │   ├── prettierignore.ts
│   │   │   │       │   │       │   ├── prettierrc.js.ts
│   │   │   │       │   │       │   ├── src/
│   │   │   │       │   │       │   │   └── layouts/
│   │   │   │       │   │       │   │       └── BasicLayout/
│   │   │   │       │   │       │   │           ├── components/
│   │   │   │       │   │       │   │           │   ├── Footer/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   ├── Logo/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   └── PageNav/
│   │   │   │       │   │       │   │           │       └── index.jsx.ts
│   │   │   │       │   │       │   │           ├── index.jsx.ts
│   │   │   │       │   │       │   │           └── menuConfig.js.ts
│   │   │   │       │   │       │   ├── stylelintignore.ts
│   │   │   │       │   │       │   ├── stylelintrc.js.ts
│   │   │   │       │   │       │   └── tsconfig.json.ts
│   │   │   │       │   │       ├── index.ts
│   │   │   │       │   │       └── static-files.ts
│   │   │   │       │   ├── icejs3/
│   │   │   │       │   │   ├── index.ts
│   │   │   │       │   │   ├── plugins/
│   │   │   │       │   │   │   ├── appConfig.ts
│   │   │   │       │   │   │   ├── buildConfig.ts
│   │   │   │       │   │   │   ├── globalStyle.ts
│   │   │   │       │   │   │   ├── layout.ts
│   │   │   │       │   │   │   └── packageJSON.ts
│   │   │   │       │   │   └── template/
│   │   │   │       │   │       ├── files/
│   │   │   │       │   │       │   ├── README.md.ts
│   │   │   │       │   │       │   ├── browserslistrc.ts
│   │   │   │       │   │       │   ├── document.ts
│   │   │   │       │   │       │   ├── gitignore.ts
│   │   │   │       │   │       │   ├── src/
│   │   │   │       │   │       │   │   └── layouts/
│   │   │   │       │   │       │   │       └── BasicLayout/
│   │   │   │       │   │       │   │           ├── components/
│   │   │   │       │   │       │   │           │   ├── Footer/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   ├── Logo/
│   │   │   │       │   │       │   │           │   │   ├── index.jsx.ts
│   │   │   │       │   │       │   │           │   │   └── index.style.ts
│   │   │   │       │   │       │   │           │   └── PageNav/
│   │   │   │       │   │       │   │           │       └── index.jsx.ts
│   │   │   │       │   │       │   │           ├── index.jsx.ts
│   │   │   │       │   │       │   │           └── menuConfig.js.ts
│   │   │   │       │   │       │   ├── tsconfig.ts
│   │   │   │       │   │       │   └── typings.ts
│   │   │   │       │   │       ├── index.ts
│   │   │   │       │   │       └── static-files.ts
│   │   │   │       │   └── rax/
│   │   │   │       │       ├── index.ts
│   │   │   │       │       ├── plugins/
│   │   │   │       │       │   ├── appConfig.ts
│   │   │   │       │       │   ├── buildConfig.ts
│   │   │   │       │       │   ├── entry.ts
│   │   │   │       │       │   ├── entryDocument.ts
│   │   │   │       │       │   ├── globalStyle.ts
│   │   │   │       │       │   └── packageJSON.ts
│   │   │   │       │       ├── template/
│   │   │   │       │       │   ├── files/
│   │   │   │       │       │   │   ├── .eslintignore.ts
│   │   │   │       │       │   │   ├── .eslintrc.js.ts
│   │   │   │       │       │   │   ├── .gitignore.ts
│   │   │   │       │       │   │   ├── .prettierignore.ts
│   │   │   │       │       │   │   ├── .prettierrc.js.ts
│   │   │   │       │       │   │   ├── .stylelintignore.ts
│   │   │   │       │       │   │   ├── .stylelintrc.js.ts
│   │   │   │       │       │   │   ├── README.md.ts
│   │   │   │       │       │   │   ├── jsconfig.json.ts
│   │   │   │       │       │   │   └── tsconfig.json.ts
│   │   │   │       │       │   ├── index.ts
│   │   │   │       │       │   └── static-files.ts
│   │   │   │       │       └── types/
│   │   │   │       │           └── RaxFrameworkOptions.ts
│   │   │   │       ├── i18n.ts
│   │   │   │       └── utils.ts
│   │   │   ├── polyfills/
│   │   │   │   └── buffer.ts
│   │   │   ├── postprocessor/
│   │   │   │   ├── index.ts
│   │   │   │   └── prettier/
│   │   │   │       └── index.ts
│   │   │   ├── publisher/
│   │   │   │   ├── disk/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── utils.ts
│   │   │   │   └── zip/
│   │   │   │       ├── index.ts
│   │   │   │       └── utils.ts
│   │   │   ├── solutions/
│   │   │   │   ├── icejs.ts
│   │   │   │   ├── icejs3.ts
│   │   │   │   └── rax-app.ts
│   │   │   ├── standalone-loader.ts
│   │   │   ├── standalone-worker.ts
│   │   │   ├── standalone.ts
│   │   │   ├── types/
│   │   │   │   ├── analyze.ts
│   │   │   │   ├── core.ts
│   │   │   │   ├── deps.ts
│   │   │   │   ├── error.ts
│   │   │   │   ├── file.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── intermediate.ts
│   │   │   │   ├── jsx.ts
│   │   │   │   └── publisher.ts
│   │   │   ├── typings.d.ts
│   │   │   └── utils/
│   │   │       ├── OrderedSet.ts
│   │   │       ├── Scope.ts
│   │   │       ├── ScopeBindings.ts
│   │   │       ├── aopHelper.ts
│   │   │       ├── common.ts
│   │   │       ├── compositeType.ts
│   │   │       ├── dataSource.ts
│   │   │       ├── debug.ts
│   │   │       ├── encodeJsxAttrString.ts
│   │   │       ├── errors.ts
│   │   │       ├── expressionParser.ts
│   │   │       ├── format.ts
│   │   │       ├── index.ts
│   │   │       ├── jsExpression.ts
│   │   │       ├── jsSlot.ts
│   │   │       ├── jsxHelpers.ts
│   │   │       ├── nodeToJSX.ts
│   │   │       ├── pathHelper.ts
│   │   │       ├── resultHelper.ts
│   │   │       ├── schema.ts
│   │   │       ├── templateHelper.ts
│   │   │       ├── theme.ts
│   │   │       ├── validate.ts
│   │   │       └── version.ts
│   │   ├── standalone/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── standalone-loader/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── standalone-worker/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── static-files/
│   │   │   └── rax/
│   │   │       ├── .eslintignore.template
│   │   │       ├── .eslintrc.js.template
│   │   │       ├── .gitignore.template
│   │   │       ├── .prettierignore.template
│   │   │       ├── .prettierrc.js.template
│   │   │       ├── .stylelintignore.template
│   │   │       ├── .stylelintrc.js.template
│   │   │       ├── README.md.template
│   │   │       ├── jsconfig.json.template
│   │   │       └── tsconfig.json.template
│   │   ├── tests/
│   │   │   ├── bugfix/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── i18n-with-params.schema.json
│   │   │   │   ├── i18n-with-params.test.ts
│   │   │   │   ├── icejs-import-wrong-naming.schema.json
│   │   │   │   ├── icejs-import-wrong-naming.test.ts
│   │   │   │   ├── icejs-js-function1.schema.json
│   │   │   │   ├── icejs-js-function1.test.ts
│   │   │   │   ├── icejs-missing-imports-1.schema.json
│   │   │   │   ├── icejs-missing-imports-1.test.ts
│   │   │   │   ├── icejs-package-json-dependencies.schema.json
│   │   │   │   ├── icejs-package-json-dependencies.test.ts
│   │   │   │   ├── icejs-page-map1.schema.json
│   │   │   │   ├── icejs-page-map1.test.ts
│   │   │   │   ├── page-element1.schema.json
│   │   │   │   ├── page-element1.test.ts
│   │   │   │   ├── page-element2.schema.json
│   │   │   │   ├── page-element2.test.ts
│   │   │   │   ├── strict-mode-context-1.schema.json
│   │   │   │   ├── strict-mode-context-1.test.ts
│   │   │   │   ├── tolerate-eval-errors-1-loop.schema.json
│   │   │   │   ├── tolerate-eval-errors-1-loop.test.ts
│   │   │   │   ├── tolerate-eval-errors-2-nested-loop.schema.json
│   │   │   │   └── tolerate-eval-errors-2-nested-loop.test.ts
│   │   │   ├── cli.test.ts
│   │   │   ├── fixtures/
│   │   │   │   └── test-cases/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── icejs3-app/
│   │   │   │       │   ├── demo1/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Aaaa/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo3/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo4/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo5/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo6-literal-condition/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo7-literal-condition2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo8-datasource-prop/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Example/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo9-datasource-engine/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── $/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo_10-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .browserslistrc
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── ice.config.mts
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       └── src/
│   │   │   │       │   │   │           ├── app.ts
│   │   │   │       │   │   │           ├── constants.js
│   │   │   │       │   │   │           ├── document.tsx
│   │   │   │       │   │   │           ├── global.scss
│   │   │   │       │   │   │           ├── i18n.js
│   │   │   │       │   │   │           ├── layouts/
│   │   │   │       │   │   │           │   └── BasicLayout/
│   │   │   │       │   │   │           │       ├── components/
│   │   │   │       │   │   │           │       │   ├── Footer/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   ├── Logo/
│   │   │   │       │   │   │           │       │   │   ├── index.jsx
│   │   │   │       │   │   │           │       │   │   └── index.module.scss
│   │   │   │       │   │   │           │       │   └── PageNav/
│   │   │   │       │   │   │           │       │       └── index.jsx
│   │   │   │       │   │   │           │       ├── index.jsx
│   │   │   │       │   │   │           │       └── menuConfig.js
│   │   │   │       │   │   │           ├── pages/
│   │   │   │       │   │   │           │   ├── Test/
│   │   │   │       │   │   │           │   │   ├── index.css
│   │   │   │       │   │   │           │   │   └── index.jsx
│   │   │   │       │   │   │           │   └── layout.jsx
│   │   │   │       │   │   │           ├── typings.d.ts
│   │   │   │       │   │   │           └── utils.js
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo_11-jsslot-2/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .browserslistrc
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── ice.config.mts
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       └── src/
│   │   │   │       │       │           ├── app.ts
│   │   │   │       │       │           ├── constants.js
│   │   │   │       │       │           ├── document.tsx
│   │   │   │       │       │           ├── global.scss
│   │   │   │       │       │           ├── i18n.js
│   │   │   │       │       │           ├── layouts/
│   │   │   │       │       │           │   └── BasicLayout/
│   │   │   │       │       │           │       ├── components/
│   │   │   │       │       │           │       │   ├── Footer/
│   │   │   │       │       │           │       │   │   ├── index.jsx
│   │   │   │       │       │           │       │   │   └── index.module.scss
│   │   │   │       │       │           │       │   ├── Logo/
│   │   │   │       │       │           │       │   │   ├── index.jsx
│   │   │   │       │       │           │       │   │   └── index.module.scss
│   │   │   │       │       │           │       │   └── PageNav/
│   │   │   │       │       │           │       │       └── index.jsx
│   │   │   │       │       │           │       ├── index.jsx
│   │   │   │       │       │           │       └── menuConfig.js
│   │   │   │       │       │           ├── pages/
│   │   │   │       │       │           │   ├── Test/
│   │   │   │       │       │           │   │   ├── index.css
│   │   │   │       │       │           │   │   └── index.jsx
│   │   │   │       │       │           │   └── layout.jsx
│   │   │   │       │       │           ├── typings.d.ts
│   │   │   │       │       │           └── utils.js
│   │   │   │       │       └── schema.json5
│   │   │   │       ├── rax-app/
│   │   │   │       │   ├── demo01/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo02/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo03/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   ├── Detail/
│   │   │   │       │   │   │       │   │   │   ├── index.css
│   │   │   │       │   │   │       │   │   │   └── index.jsx
│   │   │   │       │   │   │       │   │   ├── Home/
│   │   │   │       │   │   │       │   │   │   ├── index.css
│   │   │   │       │   │   │       │   │   │   └── index.jsx
│   │   │   │       │   │   │       │   │   └── List/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo04/
│   │   │   │       │   │   ├── README.md
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo05/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo06-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo07-newline-in-props/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo08-jsslot-with-multiple-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo09-jsslot-with-conditional-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo10-jsslot-with-loop-children/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo11-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Aaaa/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo12-refs/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── app.json
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── document/
│   │   │   │       │   │   │       │   │   └── index.jsx
│   │   │   │       │   │   │       │   ├── global.css
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Home/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo13-datasource-prop/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .eslintignore
│   │   │   │       │       │       ├── .eslintrc.js
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── .prettierignore
│   │   │   │       │       │       ├── .prettierrc.js
│   │   │   │       │       │       ├── .stylelintignore
│   │   │   │       │       │       ├── .stylelintrc.js
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── build.json
│   │   │   │       │       │       ├── jsconfig.json
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       ├── src/
│   │   │   │       │       │       │   ├── app.js
│   │   │   │       │       │       │   ├── app.json
│   │   │   │       │       │       │   ├── constants.js
│   │   │   │       │       │       │   ├── document/
│   │   │   │       │       │       │   │   └── index.jsx
│   │   │   │       │       │       │   ├── global.css
│   │   │   │       │       │       │   ├── i18n.js
│   │   │   │       │       │       │   ├── pages/
│   │   │   │       │       │       │   │   └── Example/
│   │   │   │       │       │       │   │       ├── index.css
│   │   │   │       │       │       │   │       └── index.jsx
│   │   │   │       │       │       │   └── utils.js
│   │   │   │       │       │       └── tsconfig.json
│   │   │   │       │       └── schema.json5
│   │   │   │       ├── react-app/
│   │   │   │       │   ├── demo1/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo2-utils-name-alias/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Aaaa/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo3/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo4/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo5/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo6-literal-condition/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo7-literal-condition2/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo8-datasource-prop/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Example/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo9-datasource-engine/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── $/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   ├── demo_10-jsslot/
│   │   │   │       │   │   ├── expected/
│   │   │   │       │   │   │   └── demo-project/
│   │   │   │       │   │   │       ├── .editorconfig
│   │   │   │       │   │   │       ├── .eslintignore
│   │   │   │       │   │   │       ├── .eslintrc.js
│   │   │   │       │   │   │       ├── .gitignore
│   │   │   │       │   │   │       ├── .prettierignore
│   │   │   │       │   │   │       ├── .prettierrc.js
│   │   │   │       │   │   │       ├── .stylelintignore
│   │   │   │       │   │   │       ├── .stylelintrc.js
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       ├── abc.json
│   │   │   │       │   │   │       ├── build.json
│   │   │   │       │   │   │       ├── jsconfig.json
│   │   │   │       │   │   │       ├── package.json
│   │   │   │       │   │   │       ├── public/
│   │   │   │       │   │   │       │   └── index.html
│   │   │   │       │   │   │       ├── src/
│   │   │   │       │   │   │       │   ├── app.js
│   │   │   │       │   │   │       │   ├── constants.js
│   │   │   │       │   │   │       │   ├── global.scss
│   │   │   │       │   │   │       │   ├── i18n.js
│   │   │   │       │   │   │       │   ├── layouts/
│   │   │   │       │   │   │       │   │   └── BasicLayout/
│   │   │   │       │   │   │       │   │       ├── components/
│   │   │   │       │   │   │       │   │       │   ├── Footer/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   ├── Logo/
│   │   │   │       │   │   │       │   │       │   │   ├── index.jsx
│   │   │   │       │   │   │       │   │       │   │   └── index.module.scss
│   │   │   │       │   │   │       │   │       │   └── PageNav/
│   │   │   │       │   │   │       │   │       │       └── index.jsx
│   │   │   │       │   │   │       │   │       ├── index.jsx
│   │   │   │       │   │   │       │   │       └── menuConfig.js
│   │   │   │       │   │   │       │   ├── pages/
│   │   │   │       │   │   │       │   │   └── Test/
│   │   │   │       │   │   │       │   │       ├── index.css
│   │   │   │       │   │   │       │   │       └── index.jsx
│   │   │   │       │   │   │       │   ├── routes.js
│   │   │   │       │   │   │       │   └── utils.js
│   │   │   │       │   │   │       └── tsconfig.json
│   │   │   │       │   │   └── schema.json5
│   │   │   │       │   └── demo_11-jsslot-2/
│   │   │   │       │       ├── expected/
│   │   │   │       │       │   └── demo-project/
│   │   │   │       │       │       ├── .editorconfig
│   │   │   │       │       │       ├── .eslintignore
│   │   │   │       │       │       ├── .eslintrc.js
│   │   │   │       │       │       ├── .gitignore
│   │   │   │       │       │       ├── .prettierignore
│   │   │   │       │       │       ├── .prettierrc.js
│   │   │   │       │       │       ├── .stylelintignore
│   │   │   │       │       │       ├── .stylelintrc.js
│   │   │   │       │       │       ├── README.md
│   │   │   │       │       │       ├── abc.json
│   │   │   │       │       │       ├── build.json
│   │   │   │       │       │       ├── jsconfig.json
│   │   │   │       │       │       ├── package.json
│   │   │   │       │       │       ├── public/
│   │   │   │       │       │       │   └── index.html
│   │   │   │       │       │       ├── src/
│   │   │   │       │       │       │   ├── app.js
│   │   │   │       │       │       │   ├── constants.js
│   │   │   │       │       │       │   ├── global.scss
│   │   │   │       │       │       │   ├── i18n.js
│   │   │   │       │       │       │   ├── layouts/
│   │   │   │       │       │       │   │   └── BasicLayout/
│   │   │   │       │       │       │   │       ├── components/
│   │   │   │       │       │       │   │       │   ├── Footer/
│   │   │   │       │       │       │   │       │   │   ├── index.jsx
│   │   │   │       │       │       │   │       │   │   └── index.module.scss
│   │   │   │       │       │       │   │       │   ├── Logo/
│   │   │   │       │       │       │   │       │   │   ├── index.jsx
│   │   │   │       │       │       │   │       │   │   └── index.module.scss
│   │   │   │       │       │       │   │       │   └── PageNav/
│   │   │   │       │       │       │   │       │       └── index.jsx
│   │   │   │       │       │       │   │       ├── index.jsx
│   │   │   │       │       │       │   │       └── menuConfig.js
│   │   │   │       │       │       │   ├── pages/
│   │   │   │       │       │       │   │   └── Test/
│   │   │   │       │       │       │   │       ├── index.css
│   │   │   │       │       │       │   │       └── index.jsx
│   │   │   │       │       │       │   ├── routes.js
│   │   │   │       │       │       │   └── utils.js
│   │   │   │       │       │       └── tsconfig.json
│   │   │   │       │       └── schema.json5
│   │   │   │       └── react-module/
│   │   │   │           └── demo1/
│   │   │   │               ├── expected/
│   │   │   │               │   └── demo-project/
│   │   │   │               │       ├── .editorconfig
│   │   │   │               │       ├── .eslintignore
│   │   │   │               │       ├── .eslintrc.js
│   │   │   │               │       ├── .gitignore
│   │   │   │               │       ├── .prettierignore
│   │   │   │               │       ├── .prettierrc.js
│   │   │   │               │       ├── .stylelintignore
│   │   │   │               │       ├── .stylelintrc.js
│   │   │   │               │       ├── README.md
│   │   │   │               │       ├── abc.json
│   │   │   │               │       ├── build.json
│   │   │   │               │       ├── jsconfig.json
│   │   │   │               │       ├── package.json
│   │   │   │               │       ├── public/
│   │   │   │               │       │   └── index.html
│   │   │   │               │       ├── src/
│   │   │   │               │       │   ├── app.js
│   │   │   │               │       │   ├── constants.js
│   │   │   │               │       │   ├── global.scss
│   │   │   │               │       │   ├── i18n.js
│   │   │   │               │       │   ├── layouts/
│   │   │   │               │       │   │   └── BasicLayout/
│   │   │   │               │       │   │       ├── components/
│   │   │   │               │       │   │       │   ├── Footer/
│   │   │   │               │       │   │       │   │   ├── index.jsx
│   │   │   │               │       │   │       │   │   └── index.module.scss
│   │   │   │               │       │   │       │   ├── Logo/
│   │   │   │               │       │   │       │   │   ├── index.jsx
│   │   │   │               │       │   │       │   │   └── index.module.scss
│   │   │   │               │       │   │       │   └── PageNav/
│   │   │   │               │       │   │       │       └── index.jsx
│   │   │   │               │       │   │       ├── index.jsx
│   │   │   │               │       │   │       └── menuConfig.js
│   │   │   │               │       │   ├── pages/
│   │   │   │               │       │   │   └── Test/
│   │   │   │               │       │   │       ├── index.css
│   │   │   │               │       │   │       └── index.jsx
│   │   │   │               │       │   ├── routes.js
│   │   │   │               │       │   └── utils.js
│   │   │   │               │       └── tsconfig.json
│   │   │   │               └── schema.json5
│   │   │   ├── helpers/
│   │   │   │   └── solutionHelper.ts
│   │   │   ├── plugins/
│   │   │   │   ├── common/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── requireUtils.test.ts.snap
│   │   │   │   │   └── requireUtils.test.ts
│   │   │   │   └── jsx/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── p0-condition-at-root.test.ts.snap
│   │   │   │       └── p0-condition-at-root.test.ts
│   │   │   ├── postprocessor/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── prettier.test.ts.snap
│   │   │   │   └── prettier.test.ts
│   │   │   ├── public/
│   │   │   │   ├── README.md
│   │   │   │   ├── SchemaParser/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── p0-basic.test.ts.snap
│   │   │   │   │   ├── data/
│   │   │   │   │   │   └── schema-with-slot.json
│   │   │   │   │   └── p0-basic.test.ts
│   │   │   │   ├── cli.test.ts
│   │   │   │   ├── publisher/
│   │   │   │   │   ├── disk/
│   │   │   │   │   │   └── disk.test.ts
│   │   │   │   │   └── zip/
│   │   │   │   │       └── zip.test.ts
│   │   │   │   └── solutions/
│   │   │   │       ├── icejs3-app.test.ts
│   │   │   │       ├── rax-app.test.ts
│   │   │   │       └── react-app.test.ts
│   │   │   └── utils/
│   │   │       ├── compositeType.test.ts
│   │   │       ├── errors.test.ts
│   │   │       ├── expressionParser/
│   │   │       │   ├── jsExpression.test.ts
│   │   │       │   ├── parseExpressionConvertThis2Context.test.ts
│   │   │       │   ├── parseExpressionGetGlobalVariables.test.ts
│   │   │       │   └── parseExpressionGetKeywords.test.ts
│   │   │       ├── flattenResult.test.ts
│   │   │       ├── resultHelper/
│   │   │       │   ├── example-result.json
│   │   │       │   ├── findFile.test.ts
│   │   │       │   ├── globFiles.test.ts
│   │   │       │   ├── removeDirsFromResult.test.ts
│   │   │       │   ├── removeFilesFromResult.test.ts
│   │   │       │   └── scanFiles.test.ts
│   │   │       ├── schema/
│   │   │       │   ├── data/
│   │   │       │   │   └── schema-with-slot.json
│   │   │       │   └── handleSubNodes.test.ts
│   │   │       ├── validate.test.ts
│   │   │       └── version.test.ts
│   │   └── tsconfig.json
│   └── material-parser/
│       ├── README.md
│       ├── build.test.json
│       ├── demo/
│       │   ├── component.jsx
│       │   ├── component.tsx
│       │   ├── parse-jsx.js
│       │   └── parse-tsx.js
│       ├── jest.config.js
│       ├── package.json
│       ├── schemas/
│       │   ├── schema.json
│       │   └── schema.yml
│       ├── scripts/
│       │   └── transform.js
│       ├── src/
│       │   ├── core/
│       │   │   ├── index.ts
│       │   │   └── schema/
│       │   │       └── types.ts
│       │   ├── generate.ts
│       │   ├── index.ts
│       │   ├── localize.ts
│       │   ├── parse/
│       │   │   ├── dynamic/
│       │   │   │   ├── index.ts
│       │   │   │   └── requireInSandbox.ts
│       │   │   ├── index.ts
│       │   │   ├── js/
│       │   │   │   ├── handlers/
│       │   │   │   │   ├── defaultPropsHandler.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── preProcessHandler.ts
│       │   │   │   │   ├── propTypeHandler.ts
│       │   │   │   │   └── propTypeJsDocHandler.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── resolver/
│       │   │   │   │   ├── checkIsIIFE.ts
│       │   │   │   │   ├── findAssignedMethods.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── isReactComponentStaticMember.ts
│       │   │   │   │   ├── isStaticMethod.ts
│       │   │   │   │   ├── resolveExportDeclaration.ts
│       │   │   │   │   ├── resolveHOC.ts
│       │   │   │   │   ├── resolveIIFE.ts
│       │   │   │   │   ├── resolveImport.ts
│       │   │   │   │   └── resolveTranspiledClass.ts
│       │   │   │   └── utils/
│       │   │   │       ├── cache.ts
│       │   │   │       ├── evaluate.ts
│       │   │   │       ├── findJSFilePath.ts
│       │   │   │       ├── getComposedPath.ts
│       │   │   │       ├── getName.ts
│       │   │   │       ├── getRoot.ts
│       │   │   │       └── makeProxy.ts
│       │   │   ├── transform.ts
│       │   │   └── ts/
│       │   │       ├── generateDTS.ts
│       │   │       ├── index.ts
│       │   │       └── tsconfig.json
│       │   ├── scan.ts
│       │   ├── types/
│       │   │   ├── Basic.ts
│       │   │   ├── ChannelType.ts
│       │   │   ├── DSLType.ts
│       │   │   ├── IAccesser.ts
│       │   │   ├── IExtensionConfigManifest.ts
│       │   │   ├── IMaterialParsedModel.ts
│       │   │   ├── IMaterialScanModel.ts
│       │   │   ├── IMaterializeOptions.ts
│       │   │   ├── Meta.ts
│       │   │   └── index.ts
│       │   ├── utils.ts
│       │   └── validate/
│       │       ├── index.ts
│       │       └── schema.json
│       ├── test/
│       │   ├── __snapshots__/
│       │   │   ├── dynamic.test.ts.snap
│       │   │   ├── index.test.ts.snap
│       │   │   └── online.test.ts.snap
│       │   ├── dynamic.test.ts
│       │   ├── fixtures/
│       │   │   ├── dts-component/
│       │   │   │   ├── index.d.ts
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── data.js
│       │   │   │       ├── i18n.js
│       │   │   │       ├── index.jsx
│       │   │   │       ├── main.scss
│       │   │   │       └── scss/
│       │   │   │           └── variable.scss
│       │   │   ├── multiple-exported-component/
│       │   │   │   ├── es/
│       │   │   │   │   ├── basic/
│       │   │   │   │   │   ├── AIMakeBlank/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeIcon/
│       │   │   │   │   │   │   ├── IconFont.js
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeImage/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeLink/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakePlaceholder/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── AIMakeText/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── Root/
│       │   │   │   │   │   │   ├── amContainer.js
│       │   │   │   │   │   │   ├── amManifest.js
│       │   │   │   │   │   │   ├── container.js
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   ├── manifest.js
│       │   │   │   │   │   │   └── manifest.json
│       │   │   │   │   │   ├── style/
│       │   │   │   │   │   │   ├── index.css
│       │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   └── index.less
│       │   │   │   │   │   └── utils/
│       │   │   │   │   │       ├── HOCBackgroundProps.js
│       │   │   │   │   │       ├── HOCBoxModelProps.js
│       │   │   │   │   │       ├── HOCFlexLayoutProps.js
│       │   │   │   │   │       ├── HOCLayoutProps.js
│       │   │   │   │   │       └── HOCTextProps.js
│       │   │   │   │   └── index.js
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── basic/
│       │   │   │       │   ├── AIMakeBlank/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeIcon/
│       │   │   │       │   │   ├── IconFont.js
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeImage/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeLink/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakePlaceholder/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── AIMakeText/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── Root/
│       │   │   │       │   │   ├── amContainer.js
│       │   │   │       │   │   ├── amManifest.js
│       │   │   │       │   │   ├── container.js
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   ├── manifest.js
│       │   │   │       │   │   └── manifest.json
│       │   │   │       │   ├── style/
│       │   │   │       │   │   ├── index.js
│       │   │   │       │   │   └── index.less
│       │   │   │       │   └── utils/
│       │   │   │       │       ├── HOCBackgroundProps.js
│       │   │   │       │       ├── HOCBoxModelProps.js
│       │   │   │       │       ├── HOCFlexLayoutProps.js
│       │   │   │       │       ├── HOCLayoutProps.js
│       │   │   │       │       └── HOCTextProps.js
│       │   │   │       └── index.js
│       │   │   ├── rax-component/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.css
│       │   │   │       └── index.tsx
│       │   │   ├── single-exported-component/
│       │   │   │   ├── es/
│       │   │   │   │   ├── container.js
│       │   │   │   │   ├── index.js
│       │   │   │   │   ├── main.css
│       │   │   │   │   ├── main.scss
│       │   │   │   │   ├── manifest.js
│       │   │   │   │   └── manifest.json
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.js
│       │   │   │       └── main.scss
│       │   │   ├── transpiled-component/
│       │   │   │   └── package.json
│       │   │   ├── ts-component/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── index.tsx
│       │   │   │       ├── main-module.tsx
│       │   │   │       └── sub-module.tsx
│       │   │   ├── ts-component2/
│       │   │   │   ├── package.json
│       │   │   │   └── src/
│       │   │   │       ├── empty.tsx
│       │   │   │       ├── index.scss
│       │   │   │       └── index.tsx
│       │   │   └── without-display-name/
│       │   │       ├── index.js
│       │   │       └── package.json
│       │   ├── helpers/
│       │   │   └── index.ts
│       │   ├── index.test.ts
│       │   ├── localize.test.ts
│       │   ├── online.test.ts
│       │   └── validate/
│       │       ├── __snapshots__/
│       │       │   └── index.test.ts.snap
│       │       ├── fixtures/
│       │       │   ├── basic-error/
│       │       │   │   └── schema.json
│       │       │   ├── basic-success/
│       │       │   │   └── schema.json
│       │       │   ├── configure/
│       │       │   │   └── schema.json
│       │       │   ├── props-basic-type/
│       │       │   │   └── schema.json
│       │       │   └── props-complex-type/
│       │       │       └── schema.json
│       │       └── index.test.ts
│       ├── tsconfig.json
│       └── webpack.config.js
├── package.json
├── packages/
│   ├── designer/
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── builtin-simulator/
│   │   │   │   ├── README.md
│   │   │   │   ├── bem-tools/
│   │   │   │   │   ├── bem-tools.less
│   │   │   │   │   ├── border-container.tsx
│   │   │   │   │   ├── border-detecting.tsx
│   │   │   │   │   ├── border-resizing.tsx
│   │   │   │   │   ├── border-selecting.tsx
│   │   │   │   │   ├── borders.less
│   │   │   │   │   ├── drag-resize-engine.ts
│   │   │   │   │   ├── index.tsx
│   │   │   │   │   ├── insertion.less
│   │   │   │   │   ├── insertion.tsx
│   │   │   │   │   └── manager.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── create-simulator.ts
│   │   │   │   ├── host-view.tsx
│   │   │   │   ├── host.less
│   │   │   │   ├── host.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── live-editing/
│   │   │   │   │   └── live-editing.ts
│   │   │   │   ├── node-selector/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── renderer.ts
│   │   │   │   ├── resource-consumer.ts
│   │   │   │   ├── utils/
│   │   │   │   │   ├── clickable.ts
│   │   │   │   │   ├── parse-metadata.ts
│   │   │   │   │   ├── path.ts
│   │   │   │   │   └── throttle.ts
│   │   │   │   └── viewport.ts
│   │   │   ├── component-actions.ts
│   │   │   ├── component-meta.ts
│   │   │   ├── context-menu-actions.scss
│   │   │   ├── context-menu-actions.ts
│   │   │   ├── designer/
│   │   │   │   ├── active-tracker.ts
│   │   │   │   ├── clipboard.ts
│   │   │   │   ├── designer-view.tsx
│   │   │   │   ├── designer.less
│   │   │   │   ├── designer.ts
│   │   │   │   ├── detecting.ts
│   │   │   │   ├── drag-ghost/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ghost.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── dragon.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── location.ts
│   │   │   │   ├── offset-observer.ts
│   │   │   │   ├── scroller.ts
│   │   │   │   └── setting/
│   │   │   │       ├── index.ts
│   │   │   │       ├── setting-entry-type.ts
│   │   │   │       ├── setting-field.ts
│   │   │   │       ├── setting-prop-entry.ts
│   │   │   │       ├── setting-top-entry.ts
│   │   │   │       └── utils.ts
│   │   │   ├── document/
│   │   │   │   ├── document-model.ts
│   │   │   │   ├── document-view.tsx
│   │   │   │   ├── history.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── node/
│   │   │   │   │   ├── exclusive-group.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── modal-nodes-manager.ts
│   │   │   │   │   ├── node-children.ts
│   │   │   │   │   ├── node.ts
│   │   │   │   │   ├── props/
│   │   │   │   │   │   ├── prop.ts
│   │   │   │   │   │   ├── props.ts
│   │   │   │   │   │   └── value-to-source.ts
│   │   │   │   │   └── transform-stage.ts
│   │   │   │   └── selection.ts
│   │   │   ├── icons/
│   │   │   │   ├── clone.tsx
│   │   │   │   ├── component.tsx
│   │   │   │   ├── container.tsx
│   │   │   │   ├── hidden.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── lock.tsx
│   │   │   │   ├── page.tsx
│   │   │   │   ├── remove.tsx
│   │   │   │   ├── setting.tsx
│   │   │   │   └── unlock.tsx
│   │   │   ├── index.ts
│   │   │   ├── less-variables.less
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── plugin/
│   │   │   │   ├── index.ts
│   │   │   │   ├── plugin-context.ts
│   │   │   │   ├── plugin-manager.ts
│   │   │   │   ├── plugin-types.ts
│   │   │   │   ├── plugin-utils.ts
│   │   │   │   ├── plugin.ts
│   │   │   │   └── sequencify.ts
│   │   │   ├── project/
│   │   │   │   ├── index.ts
│   │   │   │   ├── project-view.tsx
│   │   │   │   ├── project.less
│   │   │   │   └── project.ts
│   │   │   ├── simulator.ts
│   │   │   ├── transducers/
│   │   │   │   └── index.ts
│   │   │   ├── types/
│   │   │   │   └── index.ts
│   │   │   └── utils/
│   │   │       ├── index.ts
│   │   │       ├── invariant.ts
│   │   │       ├── misc.ts
│   │   │       ├── slot.ts
│   │   │       └── tree.ts
│   │   ├── tests/
│   │   │   ├── __mocks__/
│   │   │   │   ├── document-model.ts
│   │   │   │   └── node.ts
│   │   │   ├── bugs/
│   │   │   │   ├── misc.ts.bak
│   │   │   │   ├── prop-variable-jse.test.ts
│   │   │   │   └── why.md
│   │   │   ├── builtin-simulator/
│   │   │   │   ├── bem-tools/
│   │   │   │   │   ├── drag-resize-engine.test.ts
│   │   │   │   │   └── manager.test.tsx
│   │   │   │   ├── host.test.ts
│   │   │   │   ├── renderer.test.tsx
│   │   │   │   ├── resource-consumer.test.ts
│   │   │   │   ├── utils/
│   │   │   │   │   ├── parse-metadata.test.ts
│   │   │   │   │   ├── path.test.ts
│   │   │   │   │   └── throttle.test.ts
│   │   │   │   └── viewport.test.ts
│   │   │   ├── designer/
│   │   │   │   ├── active-tracker.test.ts
│   │   │   │   ├── builtin-hotkey.test.ts
│   │   │   │   ├── designer.test.ts
│   │   │   │   ├── detecting.test.ts
│   │   │   │   ├── dragon.test.ts
│   │   │   │   ├── location.test.ts
│   │   │   │   ├── scroller.test.ts
│   │   │   │   └── setting/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── setting-field.test.ts.snap
│   │   │   │       ├── setting-field.test.ts
│   │   │   │       ├── setting-prop-entry.test.ts
│   │   │   │       └── setting-top-entry.test.ts
│   │   │   ├── document/
│   │   │   │   ├── document-model/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── document-model.test.ts.snap
│   │   │   │   │   └── document-model.test.ts
│   │   │   │   ├── history/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── history.test.ts.snap
│   │   │   │   │   ├── history.test.ts
│   │   │   │   │   └── session.test.ts
│   │   │   │   ├── node/
│   │   │   │   │   ├── modal-nodes-manager.test.ts
│   │   │   │   │   ├── node-children.test.ts
│   │   │   │   │   ├── node.add.test.ts
│   │   │   │   │   ├── node.dragdrop.test.ts
│   │   │   │   │   ├── node.modify.test.ts
│   │   │   │   │   ├── node.remove.test.ts
│   │   │   │   │   ├── node.test.ts
│   │   │   │   │   └── props/
│   │   │   │   │       ├── __snapshots__/
│   │   │   │   │       │   └── value-to-source.test.ts.snap
│   │   │   │   │       ├── prop.test.ts
│   │   │   │   │       ├── props.test.ts
│   │   │   │   │       └── value-to-source.test.ts
│   │   │   │   └── selection.test.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── component-metadata/
│   │   │   │   │   ├── abcgroup.ts
│   │   │   │   │   ├── abcitem.ts
│   │   │   │   │   ├── abcnode.ts
│   │   │   │   │   ├── abcoption.ts
│   │   │   │   │   ├── button.ts
│   │   │   │   │   ├── dialog.ts
│   │   │   │   │   ├── div.ts
│   │   │   │   │   ├── div10.ts
│   │   │   │   │   ├── div2.ts
│   │   │   │   │   ├── div3.ts
│   │   │   │   │   ├── div4.ts
│   │   │   │   │   ├── div5.ts
│   │   │   │   │   ├── div6.ts
│   │   │   │   │   ├── div7.ts
│   │   │   │   │   ├── div8.ts
│   │   │   │   │   ├── div9.ts
│   │   │   │   │   ├── form.ts
│   │   │   │   │   ├── other.ts
│   │   │   │   │   ├── page.ts
│   │   │   │   │   ├── page2.ts
│   │   │   │   │   ├── root-content.ts
│   │   │   │   │   ├── root-footer.ts
│   │   │   │   │   └── root-header.ts
│   │   │   │   ├── disable-raf.ts
│   │   │   │   ├── schema/
│   │   │   │   │   ├── form-with-modal.ts
│   │   │   │   │   ├── form.ts
│   │   │   │   │   └── setting.ts
│   │   │   │   ├── silent-console.ts
│   │   │   │   ├── unhandled-rejection.ts
│   │   │   │   └── window.ts
│   │   │   ├── main/
│   │   │   │   ├── meta/
│   │   │   │   │   └── component-meta.test.ts
│   │   │   │   └── simulator.test.ts
│   │   │   ├── plugin/
│   │   │   │   ├── plugin-manager.test.ts
│   │   │   │   ├── plugin-utils.test.ts
│   │   │   │   └── sequencify.test.ts
│   │   │   ├── project/
│   │   │   │   ├── project-methods.test.ts
│   │   │   │   └── project.test.ts
│   │   │   ├── utils/
│   │   │   │   ├── bom.ts
│   │   │   │   ├── event.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── misc.ts
│   │   │   │   └── renderer.ts
│   │   │   └── utils-ut/
│   │   │       ├── invariant.test.ts
│   │   │       ├── misc.test.ts
│   │   │       └── slot.test.ts
│   │   └── tsconfig.json
│   ├── editor-core/
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── command.ts
│   │   │   ├── config.ts
│   │   │   ├── di/
│   │   │   │   ├── index.ts
│   │   │   │   ├── ioc-context.ts
│   │   │   │   └── setter.ts
│   │   │   ├── editor.ts
│   │   │   ├── event-bus.ts
│   │   │   ├── hotkey.ts
│   │   │   ├── index.ts
│   │   │   ├── intl/
│   │   │   │   ├── global-locale.ts
│   │   │   │   └── index.ts
│   │   │   ├── utils/
│   │   │   │   ├── app-preset.ts
│   │   │   │   ├── assets-transform.ts
│   │   │   │   ├── control.ts
│   │   │   │   ├── focus-tracker.ts
│   │   │   │   ├── get-public-path.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── logger.ts
│   │   │   │   ├── obx.ts
│   │   │   │   ├── preference.ts
│   │   │   │   └── request.ts
│   │   │   └── widgets/
│   │   │       ├── index.ts
│   │   │       ├── tip/
│   │   │       │   ├── help-tips.tsx
│   │   │       │   ├── index.ts
│   │   │       │   ├── style.less
│   │   │       │   ├── tip-container.tsx
│   │   │       │   ├── tip-handler.ts
│   │   │       │   ├── tip-item.tsx
│   │   │       │   ├── tip.tsx
│   │   │       │   └── utils.ts
│   │   │       └── title/
│   │   │           ├── index.tsx
│   │   │           └── title.less
│   │   ├── test/
│   │   │   └── command.test.ts
│   │   └── tsconfig.json
│   ├── editor-skeleton/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── area.ts
│   │   │   ├── components/
│   │   │   │   ├── draggable-line/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── field/
│   │   │   │   │   ├── fields.tsx
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── inlinetip.tsx
│   │   │   │   ├── popup/
│   │   │   │   │   ├── index.tsx
│   │   │   │   │   └── style.less
│   │   │   │   ├── settings/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── main.ts
│   │   │   │   │   ├── settings-pane.tsx
│   │   │   │   │   ├── settings-primary-pane.tsx
│   │   │   │   │   ├── style.less
│   │   │   │   │   └── utils.ts
│   │   │   │   ├── stage-box/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── stage-box.tsx
│   │   │   │   │   ├── stage-chain.ts
│   │   │   │   │   └── stage.tsx
│   │   │   │   └── widget-views/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.tsx
│   │   │   │       └── panel-operation-row.tsx
│   │   │   ├── context.ts
│   │   │   ├── icons/
│   │   │   │   ├── arrow.tsx
│   │   │   │   ├── clear.tsx
│   │   │   │   ├── convert.tsx
│   │   │   │   ├── exit.tsx
│   │   │   │   ├── fix.tsx
│   │   │   │   ├── float.tsx
│   │   │   │   ├── slot.tsx
│   │   │   │   └── variable.tsx
│   │   │   ├── index.ts
│   │   │   ├── layouts/
│   │   │   │   ├── bottom-area.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── left-area.tsx
│   │   │   │   ├── left-fixed-pane.tsx
│   │   │   │   ├── left-float-pane.tsx
│   │   │   │   ├── main-area.tsx
│   │   │   │   ├── right-area.tsx
│   │   │   │   ├── sub-top-area.tsx
│   │   │   │   ├── theme.less
│   │   │   │   ├── toolbar.tsx
│   │   │   │   ├── top-area.tsx
│   │   │   │   ├── workbench.less
│   │   │   │   └── workbench.tsx
│   │   │   ├── less-variables.less
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── register-defaults.ts
│   │   │   ├── skeleton.ts
│   │   │   ├── transducers/
│   │   │   │   ├── addon-combine.ts
│   │   │   │   ├── parse-func.ts
│   │   │   │   └── parse-props.ts
│   │   │   ├── types.ts
│   │   │   └── widget/
│   │   │       ├── dialog-dock.ts
│   │   │       ├── dock.ts
│   │   │       ├── index.ts
│   │   │       ├── panel-dock.ts
│   │   │       ├── panel.ts
│   │   │       ├── stage.ts
│   │   │       ├── utils.ts
│   │   │       ├── widget-container.ts
│   │   │       └── widget.ts
│   │   ├── tests/
│   │   │   └── widget/
│   │   │       └── utils.test.ts
│   │   └── tsconfig.json
│   ├── engine/
│   │   ├── README-zh_CN.md
│   │   ├── README.md
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── engine-core.ts
│   │   │   ├── index.ts
│   │   │   ├── inner-plugins/
│   │   │   │   ├── builtin-hotkey.ts
│   │   │   │   ├── component-meta-parser.ts
│   │   │   │   ├── default-context-menu.ts
│   │   │   │   ├── default-panel-registry.tsx
│   │   │   │   └── setter-registry.ts
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   └── modules/
│   │   │       ├── classes.ts
│   │   │       ├── designer-types.ts
│   │   │       ├── live-editing.ts
│   │   │       ├── lowcode-types.ts
│   │   │       ├── shell-model-factory.ts
│   │   │       ├── skeleton-types.ts
│   │   │       └── symbols.ts
│   │   └── tsconfig.json
│   ├── ignitor/
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── index.html
│   │   └── tsconfig.json
│   ├── plugin-command/
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── node-command.test.ts
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   └── src/
│   │       ├── history-command.ts
│   │       ├── index.ts
│   │       └── node-command.ts
│   ├── plugin-designer/
│   │   ├── .gitignore
│   │   ├── build.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.scss
│   │   │   └── index.tsx
│   │   └── tsconfig.json
│   ├── plugin-outline-pane/
│   │   ├── .gitignore
│   │   ├── build.json
│   │   ├── package.json
│   │   └── src/
│   │       ├── README.md
│   │       ├── controllers/
│   │       │   ├── pane-controller.ts
│   │       │   ├── ric-shim.d.ts
│   │       │   ├── tree-master.ts
│   │       │   ├── tree-node.ts
│   │       │   └── tree.ts
│   │       ├── helper/
│   │       │   ├── consts.ts
│   │       │   ├── dwell-timer.ts
│   │       │   └── indent-track.ts
│   │       ├── icons/
│   │       │   ├── arrow-right.tsx
│   │       │   ├── cond.tsx
│   │       │   ├── delete.tsx
│   │       │   ├── eye-close.tsx
│   │       │   ├── eye.tsx
│   │       │   ├── filter.tsx
│   │       │   ├── index.ts
│   │       │   ├── lock.tsx
│   │       │   ├── loop.tsx
│   │       │   ├── outline.tsx
│   │       │   ├── radio-active.tsx
│   │       │   ├── radio.tsx
│   │       │   ├── setting.tsx
│   │       │   └── unlock.tsx
│   │       ├── index.tsx
│   │       ├── locale/
│   │       │   ├── en-US.json
│   │       │   ├── index.ts
│   │       │   └── zh-CN.json
│   │       └── views/
│   │           ├── filter-tree.ts
│   │           ├── filter.tsx
│   │           ├── pane.tsx
│   │           ├── style.less
│   │           ├── tree-branches.tsx
│   │           ├── tree-node.tsx
│   │           ├── tree-title.tsx
│   │           └── tree.tsx
│   ├── react-renderer/
│   │   ├── README.md
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── demo/
│   │   │   ├── compose.md
│   │   │   ├── config/
│   │   │   │   ├── components/
│   │   │   │   │   ├── A.jsx
│   │   │   │   │   ├── Div.jsx
│   │   │   │   │   ├── Image.jsx
│   │   │   │   │   ├── Text.jsx
│   │   │   │   │   └── index.js
│   │   │   │   ├── constants.js
│   │   │   │   └── utils.js
│   │   │   ├── dataSource.md
│   │   │   ├── i18n.md
│   │   │   ├── list.md
│   │   │   ├── schemas/
│   │   │   │   ├── compose.js
│   │   │   │   ├── dataSource.js
│   │   │   │   ├── i18n.js
│   │   │   │   ├── list.js
│   │   │   │   └── table.js
│   │   │   └── table.md
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── tests/
│   │   │   ├── __snapshots__/
│   │   │   │   └── index.test.tsx.snap
│   │   │   ├── fixtures/
│   │   │   │   └── schema/
│   │   │   │       └── basic.ts
│   │   │   └── index.test.tsx
│   │   └── tsconfig.json
│   ├── react-simulator-renderer/
│   │   ├── .babelrc
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.plugin.js
│   │   ├── build.test.json
│   │   ├── build.umd.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── README.md
│   │   │   ├── builtin-components/
│   │   │   │   ├── builtin-components.ts
│   │   │   │   ├── leaf.tsx
│   │   │   │   └── slot.tsx
│   │   │   ├── host.ts
│   │   │   ├── index.ts
│   │   │   ├── locale/
│   │   │   │   ├── en-US.json
│   │   │   │   ├── index.ts
│   │   │   │   └── zh-CN.json
│   │   │   ├── renderer-view.tsx
│   │   │   ├── renderer.less
│   │   │   ├── renderer.ts
│   │   │   └── utils/
│   │   │       ├── get-client-rects.ts
│   │   │       ├── is-dom-node.ts
│   │   │       ├── misc.ts
│   │   │       ├── react-find-dom-nodes.ts
│   │   │       └── url.ts
│   │   ├── test/
│   │   │   ├── schema/
│   │   │   │   └── basic.ts
│   │   │   ├── src/
│   │   │   │   └── renderer/
│   │   │   │       ├── __snapshots__/
│   │   │   │       │   └── demo.test.tsx.snap
│   │   │   │       └── demo.test.tsx
│   │   │   └── utils/
│   │   │       ├── components.tsx
│   │   │       └── host.ts
│   │   └── tsconfig.json
│   ├── renderer-core/
│   │   ├── babel.config.js
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter/
│   │   │   │   └── index.ts
│   │   │   ├── components/
│   │   │   │   ├── Div.tsx
│   │   │   │   └── VisualDom/
│   │   │   │       ├── index.css
│   │   │   │       └── index.tsx
│   │   │   ├── context/
│   │   │   │   └── index.ts
│   │   │   ├── hoc/
│   │   │   │   ├── index.tsx
│   │   │   │   └── leaf.tsx
│   │   │   ├── index.ts
│   │   │   ├── renderer/
│   │   │   │   ├── addon.tsx
│   │   │   │   ├── base.tsx
│   │   │   │   ├── block.tsx
│   │   │   │   ├── component.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── page.tsx
│   │   │   │   ├── renderer.tsx
│   │   │   │   └── temp.tsx
│   │   │   ├── types/
│   │   │   │   └── index.ts
│   │   │   └── utils/
│   │   │       ├── common.ts
│   │   │       ├── data-helper.ts
│   │   │       ├── index.ts
│   │   │       ├── is-use-loop.ts
│   │   │       ├── logger.ts
│   │   │       └── request.ts
│   │   ├── tests/
│   │   │   ├── adapter/
│   │   │   │   └── adapter.test.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── schema/
│   │   │   │   │   └── basic.ts
│   │   │   │   └── unhandled-rejection.ts
│   │   │   ├── hoc/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── leaf.test.tsx.snap
│   │   │   │   └── leaf.test.tsx
│   │   │   ├── mock/
│   │   │   │   ├── loop.ts
│   │   │   │   ├── sample.ts
│   │   │   │   └── styleMock.js
│   │   │   ├── renderer/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── renderer.test.tsx.snap
│   │   │   │   ├── base.test.tsx
│   │   │   │   └── renderer.test.tsx
│   │   │   ├── setup.ts
│   │   │   └── utils/
│   │   │       ├── common.test.ts
│   │   │       ├── components.tsx
│   │   │       ├── data-helper.test.ts
│   │   │       ├── is-use-loop.test.ts
│   │   │       ├── node.ts
│   │   │       ├── react-env-init.ts
│   │   │       └── request.test.ts
│   │   └── tsconfig.json
│   ├── shell/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── package.json
│   │   └── src/
│   │       ├── api/
│   │       │   ├── canvas.ts
│   │       │   ├── command.ts
│   │       │   ├── common.tsx
│   │       │   ├── commonUI.tsx
│   │       │   ├── config.ts
│   │       │   ├── event.ts
│   │       │   ├── hotkey.ts
│   │       │   ├── index.ts
│   │       │   ├── logger.ts
│   │       │   ├── material.ts
│   │       │   ├── plugins.ts
│   │       │   ├── project.ts
│   │       │   ├── setters.ts
│   │       │   ├── simulator-host.ts
│   │       │   ├── skeleton.ts
│   │       │   └── workspace.ts
│   │       ├── components/
│   │       │   └── context-menu.tsx
│   │       ├── index.ts
│   │       ├── model/
│   │       │   ├── active-tracker.ts
│   │       │   ├── clipboard.ts
│   │       │   ├── component-meta.ts
│   │       │   ├── condition-group.ts
│   │       │   ├── detecting.ts
│   │       │   ├── document-model.ts
│   │       │   ├── drag-object.ts
│   │       │   ├── dragon.ts
│   │       │   ├── drop-location.ts
│   │       │   ├── editor-view.ts
│   │       │   ├── history.ts
│   │       │   ├── index.ts
│   │       │   ├── locate-event.ts
│   │       │   ├── modal-nodes-manager.ts
│   │       │   ├── node-children.ts
│   │       │   ├── node.ts
│   │       │   ├── plugin-instance.ts
│   │       │   ├── prop.ts
│   │       │   ├── props.ts
│   │       │   ├── resource.ts
│   │       │   ├── selection.ts
│   │       │   ├── setting-field.ts
│   │       │   ├── setting-top-entry.ts
│   │       │   ├── simulator-render.ts
│   │       │   ├── skeleton-item.ts
│   │       │   └── window.ts
│   │       └── symbols.ts
│   ├── types/
│   │   ├── .eslintignore
│   │   ├── .prettierrc.js
│   │   ├── CHANGELOG.md
│   │   ├── build.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── activity.ts
│   │   │   ├── assets.ts
│   │   │   ├── code-intermediate.ts
│   │   │   ├── code-result.ts
│   │   │   ├── deprecated/
│   │   │   │   ├── index.ts
│   │   │   │   ├── isActionContentObject.ts
│   │   │   │   ├── isCustomView.ts
│   │   │   │   ├── isDOMText.ts
│   │   │   │   ├── isDynamicSetter.ts
│   │   │   │   ├── isI18nData.ts
│   │   │   │   ├── isJSBlock.ts
│   │   │   │   ├── isJSExpression.ts
│   │   │   │   ├── isJSFunction.ts
│   │   │   │   ├── isJSSlot.ts
│   │   │   │   ├── isLowCodeComponentType.ts
│   │   │   │   ├── isNodeSchema.ts
│   │   │   │   ├── isPlainObject.ts
│   │   │   │   ├── isProCodeComponentType.ts
│   │   │   │   ├── isProjectSchema.ts
│   │   │   │   ├── isReactClass.ts
│   │   │   │   ├── isReactComponent.ts
│   │   │   │   ├── isSetterConfig.ts
│   │   │   │   └── isTitleConfig.ts
│   │   │   ├── editor.ts
│   │   │   ├── event/
│   │   │   │   ├── index.ts
│   │   │   │   ├── node.ts
│   │   │   │   └── prop.ts
│   │   │   ├── index.ts
│   │   │   ├── shell/
│   │   │   │   ├── api/
│   │   │   │   │   ├── canvas.ts
│   │   │   │   │   ├── command.ts
│   │   │   │   │   ├── common.ts
│   │   │   │   │   ├── commonUI.ts
│   │   │   │   │   ├── event.ts
│   │   │   │   │   ├── hotkey.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── logger.ts
│   │   │   │   │   ├── material.ts
│   │   │   │   │   ├── plugins.ts
│   │   │   │   │   ├── project.ts
│   │   │   │   │   ├── setters.ts
│   │   │   │   │   ├── simulator-host.ts
│   │   │   │   │   ├── skeleton.ts
│   │   │   │   │   └── workspace.ts
│   │   │   │   ├── enum/
│   │   │   │   │   ├── context-menu.ts
│   │   │   │   │   ├── drag-object-type.ts
│   │   │   │   │   ├── event-names.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── plugin-register-level.ts
│   │   │   │   │   ├── prop-value-changed-type.ts
│   │   │   │   │   ├── transform-stage.ts
│   │   │   │   │   └── transition-type.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── model/
│   │   │   │   │   ├── active-tracker.ts
│   │   │   │   │   ├── clipboard.ts
│   │   │   │   │   ├── component-meta.ts
│   │   │   │   │   ├── detecting.ts
│   │   │   │   │   ├── document-model.ts
│   │   │   │   │   ├── drag-object.ts
│   │   │   │   │   ├── dragon.ts
│   │   │   │   │   ├── drop-location.ts
│   │   │   │   │   ├── editor-view.ts
│   │   │   │   │   ├── editor.ts
│   │   │   │   │   ├── engine-config.ts
│   │   │   │   │   ├── exclusive-group.ts
│   │   │   │   │   ├── history.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── locate-event.ts
│   │   │   │   │   ├── modal-nodes-manager.ts
│   │   │   │   │   ├── node-children.ts
│   │   │   │   │   ├── node.ts
│   │   │   │   │   ├── plugin-context.ts
│   │   │   │   │   ├── plugin-instance.ts
│   │   │   │   │   ├── preference.ts
│   │   │   │   │   ├── prop.ts
│   │   │   │   │   ├── props.ts
│   │   │   │   │   ├── resource.ts
│   │   │   │   │   ├── scroll-target.ts
│   │   │   │   │   ├── scroller.ts
│   │   │   │   │   ├── selection.ts
│   │   │   │   │   ├── sensor.ts
│   │   │   │   │   ├── setting-field.ts
│   │   │   │   │   ├── setting-prop-entry.ts
│   │   │   │   │   ├── setting-target.ts
│   │   │   │   │   ├── setting-top-entry.ts
│   │   │   │   │   ├── simulator-render.ts
│   │   │   │   │   ├── skeleton-item.ts
│   │   │   │   │   └── window.ts
│   │   │   │   └── type/
│   │   │   │       ├── action-content-object.ts
│   │   │   │       ├── active-target.ts
│   │   │   │       ├── advanced.ts
│   │   │   │       ├── app-config.ts
│   │   │   │       ├── assets-json.ts
│   │   │   │       ├── block-schema.ts
│   │   │   │       ├── command.ts
│   │   │   │       ├── component-action.ts
│   │   │   │       ├── component-description.ts
│   │   │   │       ├── component-instance.ts
│   │   │   │       ├── component-metadata.ts
│   │   │   │       ├── component-schema.ts
│   │   │   │       ├── component-sort.ts
│   │   │   │       ├── composite-value.ts
│   │   │   │       ├── config-transducer.ts
│   │   │   │       ├── configure.ts
│   │   │   │       ├── container-schema.ts
│   │   │   │       ├── context-menu.ts
│   │   │   │       ├── custom-view.ts
│   │   │   │       ├── disposable.ts
│   │   │   │       ├── dom-text.ts
│   │   │   │       ├── drag-any-object.ts
│   │   │   │       ├── drag-node-data-object.ts
│   │   │   │       ├── drag-node-object.ts
│   │   │   │       ├── drag-object.ts
│   │   │   │       ├── dynamic-props.ts
│   │   │   │       ├── dynamic-setter.ts
│   │   │   │       ├── editor-get-options.ts
│   │   │   │       ├── editor-get-result.ts
│   │   │   │       ├── editor-register-options.ts
│   │   │   │       ├── editor-value-key.ts
│   │   │   │       ├── editor-view-config.ts
│   │   │   │       ├── editor-view.ts
│   │   │   │       ├── engine-options.ts
│   │   │   │       ├── field-config.ts
│   │   │   │       ├── field-extra-props.ts
│   │   │   │       ├── hotkey-callback-config.ts
│   │   │   │       ├── hotkey-callback.ts
│   │   │   │       ├── hotkey-callbacks.ts
│   │   │   │       ├── i18n-map.ts
│   │   │   │       ├── i8n-data.ts
│   │   │   │       ├── icon-config.ts
│   │   │   │       ├── icon-type.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── location.ts
│   │   │   │       ├── metadata-transducer.ts
│   │   │   │       ├── metadata.ts
│   │   │   │       ├── node-data-type.ts
│   │   │   │       ├── node-data.ts
│   │   │   │       ├── node-instance.ts
│   │   │   │       ├── node-schema.ts
│   │   │   │       ├── npm-info.ts
│   │   │   │       ├── npm.ts
│   │   │   │       ├── on-change-options.ts
│   │   │   │       ├── package.ts
│   │   │   │       ├── page-schema.ts
│   │   │   │       ├── plugin-config.ts
│   │   │   │       ├── plugin-creater.ts
│   │   │   │       ├── plugin-declaration-property.ts
│   │   │   │       ├── plugin-declaration.ts
│   │   │   │       ├── plugin-meta.ts
│   │   │   │       ├── plugin-register-options.ts
│   │   │   │       ├── plugin.ts
│   │   │   │       ├── preference-value-type.ts
│   │   │   │       ├── project-schema.ts
│   │   │   │       ├── prop-change-options.ts
│   │   │   │       ├── prop-config.ts
│   │   │   │       ├── prop-types.ts
│   │   │   │       ├── props-list.ts
│   │   │   │       ├── props-map.ts
│   │   │   │       ├── props-transducer.ts
│   │   │   │       ├── reference.ts
│   │   │   │       ├── registered-setter.ts
│   │   │   │       ├── remote-component-description.ts
│   │   │   │       ├── resource-list.ts
│   │   │   │       ├── resource-type-config.ts
│   │   │   │       ├── resource-type.ts
│   │   │   │       ├── root-schema.ts
│   │   │   │       ├── scrollable.ts
│   │   │   │       ├── set-value-options.ts
│   │   │   │       ├── setter-config.ts
│   │   │   │       ├── setter-type.ts
│   │   │   │       ├── simulator-renderer.ts
│   │   │   │       ├── slot-schema.ts
│   │   │   │       ├── snippet.ts
│   │   │   │       ├── tip-config.ts
│   │   │   │       ├── tip-content.ts
│   │   │   │       ├── title-config.ts
│   │   │   │       ├── title-content.ts
│   │   │   │       ├── transformed-component-metadata.ts
│   │   │   │       ├── value-type.ts
│   │   │   │       ├── widget-base-config.ts
│   │   │   │       └── widget-config-area.ts
│   │   │   ├── shell-model-factory.ts
│   │   │   └── utils.ts
│   │   └── tsconfig.json
│   ├── utils/
│   │   ├── build.json
│   │   ├── build.test.json
│   │   ├── jest.config.js
│   │   ├── jest.setup.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app-helper.ts
│   │   │   ├── asset.ts
│   │   │   ├── build-components.ts
│   │   │   ├── check-prop-types.ts
│   │   │   ├── check-types/
│   │   │   │   ├── index.ts
│   │   │   │   ├── is-action-content-object.ts
│   │   │   │   ├── is-basic-prop-type.ts
│   │   │   │   ├── is-component-schema.ts
│   │   │   │   ├── is-custom-view.ts
│   │   │   │   ├── is-dom-text.ts
│   │   │   │   ├── is-drag-any-object.ts
│   │   │   │   ├── is-drag-node-data-object.ts
│   │   │   │   ├── is-drag-node-object.ts
│   │   │   │   ├── is-dynamic-setter.ts
│   │   │   │   ├── is-function.ts
│   │   │   │   ├── is-i18n-data.ts
│   │   │   │   ├── is-isfunction.ts
│   │   │   │   ├── is-jsblock.ts
│   │   │   │   ├── is-jsexpression.ts
│   │   │   │   ├── is-jsslot.ts
│   │   │   │   ├── is-location-children-detail.ts
│   │   │   │   ├── is-location-data.ts
│   │   │   │   ├── is-lowcode-component-type.ts
│   │   │   │   ├── is-lowcode-project-schema.ts
│   │   │   │   ├── is-node-schema.ts
│   │   │   │   ├── is-node.ts
│   │   │   │   ├── is-object.ts
│   │   │   │   ├── is-procode-component-type.ts
│   │   │   │   ├── is-project-schema.ts
│   │   │   │   ├── is-required-prop-type.ts
│   │   │   │   ├── is-setter-config.ts
│   │   │   │   ├── is-setting-field.ts
│   │   │   │   └── is-title-config.ts
│   │   │   ├── clone-deep.ts
│   │   │   ├── clone-enumerable-property.ts
│   │   │   ├── context-menu.scss
│   │   │   ├── context-menu.tsx
│   │   │   ├── create-content.ts
│   │   │   ├── create-defer.ts
│   │   │   ├── create-icon.tsx
│   │   │   ├── css-helper.ts
│   │   │   ├── cursor.css
│   │   │   ├── cursor.ts
│   │   │   ├── env.ts
│   │   │   ├── get-prototype-of.ts
│   │   │   ├── has-own-property.ts
│   │   │   ├── index.ts
│   │   │   ├── is-css-url.ts
│   │   │   ├── is-element.ts
│   │   │   ├── is-es-module.ts
│   │   │   ├── is-form-event.ts
│   │   │   ├── is-function.ts
│   │   │   ├── is-object.ts
│   │   │   ├── is-plain-object.ts
│   │   │   ├── is-plugin-event-name.ts
│   │   │   ├── is-react.ts
│   │   │   ├── is-shaken.ts
│   │   │   ├── logger.ts
│   │   │   ├── misc.ts
│   │   │   ├── navtive-selection.ts
│   │   │   ├── node-helper.ts
│   │   │   ├── schema.ts
│   │   │   ├── script.ts
│   │   │   ├── set-prototype-of.ts
│   │   │   ├── shallow-equal.ts
│   │   │   ├── svg-icon.tsx
│   │   │   ├── transaction-manager.ts
│   │   │   ├── unique-id.ts
│   │   │   └── workspace.tsx
│   │   ├── test/
│   │   │   └── src/
│   │   │       ├── __snapshots__/
│   │   │       │   ├── is-react.test.tsx.snap
│   │   │       │   └── schema.test.ts.snap
│   │   │       ├── build-components/
│   │   │       │   ├── buildComponents.test.tsx
│   │   │       │   ├── getProjectUtils.test.ts
│   │   │       │   └── getSubComponent.test.ts
│   │   │       ├── check-prop-types.test.ts
│   │   │       ├── check-types/
│   │   │       │   ├── is-action-content-object.test.ts
│   │   │       │   ├── is-basic-prop-type.test.ts
│   │   │       │   ├── is-custom-view.test.tsx
│   │   │       │   ├── is-dom-text.test.ts
│   │   │       │   ├── is-drag-any-object.test.ts
│   │   │       │   ├── is-drag-node-data-object.test.ts
│   │   │       │   ├── is-drag-node-object.test.ts
│   │   │       │   ├── is-dynamic-setter.test.ts
│   │   │       │   ├── is-i18n-data.test.ts
│   │   │       │   ├── is-isfunction.test.ts
│   │   │       │   ├── is-jsblock.test.ts
│   │   │       │   ├── is-jsexpression.test.ts
│   │   │       │   ├── is-jsslot.test.ts
│   │   │       │   ├── is-location-children-detail.test.ts
│   │   │       │   ├── is-location-data.test.ts
│   │   │       │   ├── is-lowcode-component-type.test.ts
│   │   │       │   ├── is-lowcode-project-schema.test.ts
│   │   │       │   ├── is-node-schema.test.ts
│   │   │       │   ├── is-node.test.ts
│   │   │       │   ├── is-procode-component-type.test.ts
│   │   │       │   ├── is-project-schema.test.ts
│   │   │       │   ├── is-required-prop-type.test.ts
│   │   │       │   ├── is-setter-config.test.ts
│   │   │       │   ├── is-setting-field.test.ts
│   │   │       │   └── is-title-config.test.ts
│   │   │       ├── clone-deep.test.ts
│   │   │       ├── clone-enumerable-property.test.ts
│   │   │       ├── create-content.test.tsx
│   │   │       ├── create-defer.test.ts
│   │   │       ├── is-object.test.ts
│   │   │       ├── is-react.test.tsx
│   │   │       ├── is-shaken.test.ts
│   │   │       ├── misc.test.ts
│   │   │       ├── navtive-selection.test.ts
│   │   │       ├── schema.test.ts
│   │   │       ├── script.test.ts
│   │   │       ├── svg-icon.test.tsx
│   │   │       ├── transaction-manager.test.ts
│   │   │       └── unique-id.test.ts
│   │   └── tsconfig.json
│   └── workspace/
│       ├── build.json
│       ├── build.test.json
│       ├── jest.config.js
│       ├── package.json
│       ├── src/
│       │   ├── context/
│       │   │   ├── base-context.ts
│       │   │   └── view-context.ts
│       │   ├── index.ts
│       │   ├── inner-plugins/
│       │   │   └── webview.tsx
│       │   ├── layouts/
│       │   │   └── workbench.tsx
│       │   ├── less-variables.less
│       │   ├── resource-type.ts
│       │   ├── resource.ts
│       │   ├── skeleton-context.ts
│       │   ├── view/
│       │   │   ├── editor-view.tsx
│       │   │   ├── resource-view.less
│       │   │   ├── resource-view.tsx
│       │   │   └── window-view.tsx
│       │   ├── window.ts
│       │   └── workspace.ts
│       └── tsconfig.json
├── scripts/
│   ├── build.sh
│   ├── create.sh
│   ├── set-repo.js
│   ├── setup-for-test.sh
│   ├── setup-skip-build.sh
│   ├── setup.js
│   ├── setup.sh
│   ├── start-server.sh
│   ├── start.js
│   ├── start.sh
│   ├── sync-oss.js
│   ├── sync.sh
│   └── watchdog.js
└── tsconfig.json
Download .txt
Showing preview only (433K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4909 symbols across 1011 files)

FILE: docs/scripts/getDocsFromDir.js
  function isNil (line 11) | function isNil(value) {
  function getMarkdownOrder (line 15) | function getMarkdownOrder(filepath) {

FILE: docs/src/pages/index-old.tsx
  function HomepageHeader (line 9) | function HomepageHeader() {
  function Home (line 30) | function Home(): JSX.Element {

FILE: docs/src/pages/index.tsx
  function ToIndex (line 4) | function ToIndex(): JSX.Element {

FILE: modules/code-generator/scripts/build-standalone.js
  constant UMD_GLOBAL_NAME (line 9) | const UMD_GLOBAL_NAME = 'AliLowCodeCodeGenerator';
  function transformCjsToUmdFile (line 112) | function transformCjsToUmdFile(file) {

FILE: modules/code-generator/scripts/build-template-static-files.js
  constant JSON5 (line 10) | const JSON5 = require('json5');
  constant PROJECT_ROOT (line 13) | const PROJECT_ROOT = path.join(__dirname, '..');
  constant TEMPLATES (line 15) | const TEMPLATES = [
  function buildTemplateStaticFiles (line 30) | function buildTemplateStaticFiles({ sourceDir, outputDir }) {

FILE: modules/code-generator/scripts/build.js
  function buildAll (line 15) | function buildAll() {
  function buildFormat (line 41) | function buildFormat(format, outDir) {

FILE: modules/code-generator/scripts/move-files-to-build-dest.js
  constant BUILD_DEST (line 5) | const BUILD_DEST = process.env.BUILD_DEST || '.package';

FILE: modules/code-generator/src/cli/init-solution.ts
  function initSolution (line 10) | async function initSolution(args: string[], options: {
  function ensureDirExists (line 56) | async function ensureDirExists(dirPath: string) {

FILE: modules/code-generator/src/cli/run.ts
  function run (line 20) | async function run(
  function getProjectBuilderFactory (line 89) | async function getProjectBuilderFactory(
  function isLocalSolution (line 130) | function isLocalSolution(solution: string) {
  function loadSchemaFile (line 134) | async function loadSchemaFile(schemaFile: string): Promise<IPublicTypePr...

FILE: modules/code-generator/src/cli/solutions/example-solution.ts
  function getLowcodeSolutionTemplateFiles (line 1) | function getLowcodeSolutionTemplateFiles() {

FILE: modules/code-generator/src/config/env.ts
  constant CODE_GENERATOR_ROOT (line 3) | const CODE_GENERATOR_ROOT = path.join(__dirname, '../..');

FILE: modules/code-generator/src/const/file.ts
  constant FILE_TYPE_FAMILY (line 3) | const FILE_TYPE_FAMILY = [[FileType.TSX, FileType.TS, FileType.JSX, File...

FILE: modules/code-generator/src/const/generator.ts
  constant COMMON_CHUNK_NAME (line 1) | const COMMON_CHUNK_NAME = {
  constant CLASS_DEFINE_CHUNK_NAME (line 15) | const CLASS_DEFINE_CHUNK_NAME = {
  constant DEFAULT_LINK_AFTER (line 29) | const DEFAULT_LINK_AFTER = {
  constant COMMON_SUB_MODULE_NAME (line 129) | const COMMON_SUB_MODULE_NAME = 'index';

FILE: modules/code-generator/src/const/index.ts
  constant NATIVE_ELE_PKG (line 1) | const NATIVE_ELE_PKG = 'native';
  constant CONTAINER_TYPE (line 3) | const CONTAINER_TYPE = {
  constant SUPPORT_SCHEMA_VERSION_LIST (line 9) | const SUPPORT_SCHEMA_VERSION_LIST = ['0.0.1', '1.0.0'];
  constant BUILTIN_SLOT_NAMES (line 12) | const BUILTIN_SLOT_NAMES = [

FILE: modules/code-generator/src/core/jsx/handlers/transformJsExpression.ts
  function transformJsExpr (line 7) | function transformJsExpr(

FILE: modules/code-generator/src/core/jsx/handlers/transformThis2Context.ts
  function transformThis2Context (line 10) | function transformThis2Context(

FILE: modules/code-generator/src/core/jsx/util/isLiteralAtomicExpr.ts
  function isLiteralAtomicExpr (line 4) | function isLiteralAtomicExpr(expr: string): boolean {

FILE: modules/code-generator/src/core/jsx/util/isSimpleStraightLiteral.ts
  function isSimpleStraightLiteral (line 4) | function isSimpleStraightLiteral(expr: Expression): boolean {

FILE: modules/code-generator/src/generator/ChunkBuilder.ts
  type ChunkGroupInfo (line 6) | interface ChunkGroupInfo {
  function whichFamily (line 11) | function whichFamily(type: FileType): [number, FileType[]] | undefined {
  class ChunkBuilder (line 81) | class ChunkBuilder implements IChunkBuilder {
    method constructor (line 84) | constructor(plugins: BuilderComponentPlugin[] = []) {
    method run (line 88) | async run(
    method getPlugins (line 114) | getPlugins() {
    method addPlugin (line 118) | addPlugin(plugin: BuilderComponentPlugin) {

FILE: modules/code-generator/src/generator/CodeBuilder.ts
  class CodeBuilder (line 10) | class CodeBuilder implements ICodeBuilder {
    method constructor (line 18) | constructor(chunkDefinitions: ICodeChunk[] = []) {
    method link (line 26) | link(chunkDefinitions: ICodeChunk[] = []): string {
    method generateByType (line 79) | generateByType(type: string, content: unknown): string {
    method cleanupInvalidChunks (line 98) | private cleanupInvalidChunks(linkAfter: string[], chunks: ICodeChunk[]) {

FILE: modules/code-generator/src/generator/ModuleBuilder.ts
  function createModuleBuilder (line 22) | function createModuleBuilder(

FILE: modules/code-generator/src/generator/ProjectBuilder.ts
  type IModuleInfo (line 21) | interface IModuleInfo {
  type ProjectBuilderInitOptions (line 27) | interface ProjectBuilderInitOptions {
  class ProjectBuilder (line 60) | class ProjectBuilder implements IProjectBuilder {
    method constructor (line 85) | constructor(builderOptions: ProjectBuilderInitOptions) {
    method generateProject (line 110) | async generateProject(originalSchema: IPublicTypeProjectSchema | strin...
    method createModuleBuilders (line 308) | private createModuleBuilders(extraContextData: Record<string, unknown>...
    method generateExtraSlots (line 337) | private async generateExtraSlots(
  function createProjectBuilder (line 354) | function createProjectBuilder(initOptions: ProjectBuilderInitOptions): I...
  function getDirFromRoot (line 358) | function getDirFromRoot(root: ResultDir, path: string[]): ResultDir {

FILE: modules/code-generator/src/parser/SchemaParser.ts
  function getRootComponentName (line 50) | function getRootComponentName(typeName: string, maps: Record<string, IEx...
  function processChildren (line 75) | function processChildren(schema: IPublicTypeNodeSchema): void {
  function getInternalDep (line 109) | function getInternalDep(internalDeps: Record<string, IInternalDependency...
  class SchemaParser (line 114) | class SchemaParser implements ISchemaParser {
    method validate (line 115) | validate(schema: IPublicTypeProjectSchema): boolean {
    method parse (line 123) | parse(schemaSrc: IPublicTypeProjectSchema | string): IParseResult {
    method getProjectRemark (line 333) | getProjectRemark(containers: IContainerInfo[]): ProjectRemark {
    method getComponentNames (line 339) | getComponentNames(children: IPublicTypeNodeDataType): string[] {
    method decodeSchema (line 351) | decodeSchema(schemaSrc: string | IPublicTypeProjectSchema): IPublicTyp...
    method collectDataSourcesTypes (line 367) | private collectDataSourcesTypes(schema: IPublicTypeProjectSchema): str...

FILE: modules/code-generator/src/plugins/common/esmodule.ts
  constant DEP_MAIN_BLOCKLIST (line 22) | const DEP_MAIN_BLOCKLIST = ['lib', 'lib/index', 'es', 'es/index', 'main'];
  constant DEFAULT_EXPORT_NAME (line 23) | const DEFAULT_EXPORT_NAME = '__default__';
  function groupDepsByPack (line 25) | function groupDepsByPack(deps: IDependency[]): Record<string, IDependenc...
  type IDependencyItem (line 54) | interface IDependencyItem {
  type IExportItem (line 63) | interface IExportItem {
  function getDependencyIdentifier (line 70) | function getDependencyIdentifier(info: IDependencyItem): string {
  function getExportNameOfDep (line 74) | function getExportNameOfDep(dep: IDependency): string {
  function throwNewError (line 101) | function throwNewError(msg: string): never {
  function buildPackageImport (line 105) | function buildPackageImport(
  type PluginConfig (line 443) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/const.ts
  constant RAX_CHUNK_NAME (line 1) | const RAX_CHUNK_NAME = {

FILE: modules/code-generator/src/plugins/component/rax/containerInitState.ts
  type PluginConfig (line 15) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/containerInjectContext.ts
  type PluginConfig (line 15) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/containerInjectDataSourceEngine.ts
  type PluginConfig (line 30) | interface PluginConfig extends RaxFrameworkOptions {
  function wrapAsFunction (line 181) | function wrapAsFunction(value: IPublicTypeCompositeValue, scope: IScope)...

FILE: modules/code-generator/src/plugins/component/rax/containerInjectUtils.ts
  type PluginConfig (line 13) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/containerLifeCycle.ts
  type PluginConfig (line 18) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/containerMethods.ts
  type PluginConfig (line 14) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/rax/jsx.ts
  type PluginConfig (line 43) | interface PluginConfig {
  method expression (line 88) | expression(input: IPublicTypeJSExpression, scope: IScope) {
  method function (line 93) | function(input, scope: IScope) {
  function generateRaxLoopCtrl (line 172) | function generateRaxLoopCtrl(
  function isImportAliasDefineChunk (line 216) | function isImportAliasDefineChunk(chunk: ICodeChunk): chunk is ICodeChun...
  function generateNodeAttrForRax (line 232) | function generateNodeAttrForRax(
  function generateEventHandlerAttrForRax (line 257) | function generateEventHandlerAttrForRax(

FILE: modules/code-generator/src/plugins/component/react/const.ts
  constant REACT_CHUNK_NAME (line 1) | const REACT_CHUNK_NAME = {

FILE: modules/code-generator/src/plugins/component/react/containerInitState.ts
  type PluginConfig (line 15) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerInjectConstants.ts
  type PluginConfig (line 15) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerInjectContext.ts
  type PluginConfig (line 15) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerInjectDataSourceEngine.ts
  type PluginConfig (line 34) | interface PluginConfig {
  function wrapAsFunction (line 192) | function wrapAsFunction(value: IPublicTypeCompositeValue, scope: IScope)...

FILE: modules/code-generator/src/plugins/component/react/containerInjectI18n.ts
  type PluginConfig (line 16) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerInjectUtils.ts
  type PluginConfig (line 17) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerLifeCycle.ts
  type PluginConfig (line 18) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/containerMethod.ts
  type PluginConfig (line 16) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/component/react/jsx.ts
  type PluginConfig (line 25) | interface PluginConfig {
  method expression (line 50) | expression(input: IPublicTypeJSExpression, scope: IScope, config) {
  method function (line 56) | function(input, scope: IScope) {

FILE: modules/code-generator/src/plugins/component/style/css.ts
  type PluginConfig (line 12) | interface PluginConfig {

FILE: modules/code-generator/src/plugins/project/framework/icejs/plugins/packageJSON.ts
  type IIceJsPackageJSON (line 15) | interface IIceJsPackageJSON extends PackageJSON {
  type IceJsPackageJsonPluginConfig (line 26) | type IceJsPackageJsonPluginConfig = {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/README.md.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/abc.json.ts
  function getFile (line 3) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/build.json.ts
  function getFile (line 3) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/editorconfig.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintignore.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/eslintrc.js.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/gitignore.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/jsconfig.json.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierignore.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/prettierrc.js.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/src/layouts/BasicLayout/menuConfig.js.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintignore.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/stylelintrc.js.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/files/tsconfig.json.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/index.ts
  method generateTemplate (line 47) | generateTemplate(): ResultDir {

FILE: modules/code-generator/src/plugins/project/framework/icejs/template/static-files.ts
  function generateStaticFiles (line 27) | function generateStaticFiles(root = createResultDir('.')): ResultDir {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/plugins/appConfig.ts
  type AppConfigPluginConfig (line 10) | interface AppConfigPluginConfig {
  function getContent (line 14) | function getContent() {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/plugins/buildConfig.ts
  type BuildConfigPluginConfig (line 12) | interface BuildConfigPluginConfig {
  function getContent (line 18) | function getContent(cfg?: BuildConfigPluginConfig, routesContent?: strin...
  function getRoutesContent (line 115) | function getRoutesContent(navData: any, needShell = true) {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/plugins/packageJSON.ts
  type IIceJs3PackageJSON (line 15) | interface IIceJs3PackageJSON extends PackageJSON {
  type IceJs3PackageJsonPluginConfig (line 19) | type IceJs3PackageJsonPluginConfig = {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/README.md.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/browserslistrc.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/document.ts
  function getFile (line 5) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/gitignore.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Footer/index.style.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/Logo/index.style.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/components/PageNav/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/index.jsx.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/src/layouts/BasicLayout/menuConfig.js.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/tsconfig.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/files/typings.ts
  function getFile (line 4) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/index.ts
  method generateTemplate (line 52) | generateTemplate() {

FILE: modules/code-generator/src/plugins/project/framework/icejs3/template/static-files.ts
  function generateStaticFiles (line 18) | function generateStaticFiles(root = createResultDir('.')): ResultDir {

FILE: modules/code-generator/src/plugins/project/framework/rax/plugins/globalStyle.ts
  type GlobalStylePluginConfig (line 12) | interface GlobalStylePluginConfig {

FILE: modules/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts
  function getNpmDependencies (line 87) | function getNpmDependencies(project: IProjectInfo): IPublicTypeNpmInfo[] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintignore.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.eslintrc.js.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.gitignore.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierignore.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.prettierrc.js.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintignore.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/.stylelintrc.js.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/README.md.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/jsconfig.json.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/files/tsconfig.json.ts
  function getFile (line 6) | function getFile(): [string[], ResultFile] {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/index.ts
  method generateTemplate (line 55) | async generateTemplate(): Promise<ResultDir> {

FILE: modules/code-generator/src/plugins/project/framework/rax/template/static-files.ts
  function generateStaticFiles (line 17) | function generateStaticFiles(root = createResultDir('.')): ResultDir {

FILE: modules/code-generator/src/plugins/project/framework/rax/types/RaxFrameworkOptions.ts
  type RaxFrameworkOptions (line 1) | type RaxFrameworkOptions = {
  type MiniAppBuildType (line 81) | type MiniAppBuildType = 'compile' | 'runtime';

FILE: modules/code-generator/src/postprocessor/prettier/index.ts
  constant PARSERS (line 8) | const PARSERS = ['css', 'scss', 'less', 'json', 'html', 'vue'];
  type ProcessorConfig (line 10) | interface ProcessorConfig {

FILE: modules/code-generator/src/publisher/disk/index.ts
  type IDiskFactoryParams (line 8) | interface IDiskFactoryParams extends IPublisherFactoryParams {
  type IDiskPublisher (line 15) | interface IDiskPublisher extends IPublisher<IDiskFactoryParams, string> {

FILE: modules/code-generator/src/publisher/disk/utils.ts
  type IFileSystem (line 5) | interface IFileSystem {

FILE: modules/code-generator/src/publisher/zip/index.ts
  type ZipBuffer (line 7) | type ZipBuffer = Buffer | Blob;
  type ZipPublisherResponse (line 9) | type ZipPublisherResponse = string | ZipBuffer;
  type ZipFactoryParams (line 11) | interface ZipFactoryParams extends IPublisherFactoryParams {
  type ZipPublisher (line 16) | interface ZipPublisher extends IPublisher<ZipFactoryParams, ZipPublisher...

FILE: modules/code-generator/src/solutions/icejs.ts
  type IceJsProjectBuilderOptions (line 27) | type IceJsProjectBuilderOptions = IProjectBuilderOptions;
  function createIceJsProjectBuilder (line 29) | function createIceJsProjectBuilder(

FILE: modules/code-generator/src/solutions/icejs3.ts
  type IceJs3ProjectBuilderOptions (line 27) | type IceJs3ProjectBuilderOptions = IProjectBuilderOptions;
  function createIceJsProjectBuilder (line 29) | function createIceJsProjectBuilder(

FILE: modules/code-generator/src/solutions/rax-app.ts
  type RaxProjectBuilderOptions (line 25) | interface RaxProjectBuilderOptions extends IProjectBuilderOptions, RaxFr...
  function createRaxProjectBuilder (line 27) | function createRaxProjectBuilder(

FILE: modules/code-generator/src/standalone-loader.ts
  constant DEFAULT_WORKER_JS (line 11) | const DEFAULT_WORKER_JS = `https://cdn.jsdelivr.net/npm/@alilc/lowcode-c...
  constant DEFAULT_TIMEOUT_IN_MS (line 13) | const DEFAULT_TIMEOUT_IN_MS = 60 * 1000;
  function init (line 17) | async function init({
  type Result (line 25) | type Result = ResultDir | FlattenFile[];
  function generateCode (line 27) | async function generateCode(options: {
  function loadWorkerJs (line 101) | async function loadWorkerJs(workerJsUrl: string) {
  function print (line 125) | function print(msg: string, ...args: unknown[]) {
  function printErr (line 130) | function printErr(msg: string, ...args: unknown[]) {

FILE: modules/code-generator/src/standalone-worker.ts
  function run (line 16) | async function run(msg: { solution: string; schema: IPublicTypeProjectSc...
  function print (line 61) | function print(text: string, ...args: any[]) {
  function printErr (line 70) | function printErr(text: string, ...args: any[]) {

FILE: modules/code-generator/src/types/analyze.ts
  type ICompAnalyzeResult (line 3) | interface ICompAnalyzeResult {
  type TComponentAnalyzer (line 7) | type TComponentAnalyzer = (container: IPublicTypeContainerSchema) => ICo...

FILE: modules/code-generator/src/types/core.ts
  type FileType (line 14) | enum FileType {
  type ChunkType (line 29) | enum ChunkType {
  type PluginType (line 35) | enum PluginType {
  type ChunkContent (line 41) | type ChunkContent = string | any;
  type CodeGeneratorFunction (line 42) | type CodeGeneratorFunction<T> = (content: T) => string;
  type ICodeChunk (line 44) | interface ICodeChunk {
  type IBaseCodeStruct (line 54) | interface IBaseCodeStruct {
  type ICodeStruct (line 59) | interface ICodeStruct extends IBaseCodeStruct {
  type IContextData (line 65) | interface IContextData extends IProjectBuilderOptions {
  type BuilderComponentPlugin (line 79) | type BuilderComponentPlugin = (initStruct: ICodeStruct) => Promise<ICode...
  type BuilderComponentPluginFactory (line 81) | type BuilderComponentPluginFactory<T> = (config?: T) => BuilderComponent...
  type IChunkBuilder (line 83) | interface IChunkBuilder {
  type ICodeBuilder (line 89) | interface ICodeBuilder {
  type ICompiledModule (line 94) | interface ICompiledModule {
  type IModuleBuilder (line 98) | interface IModuleBuilder {
  type ICodeGenerator (line 111) | interface ICodeGenerator {
  type ISchemaParser (line 123) | interface ISchemaParser {
  type IProjectTemplate (line 128) | interface IProjectTemplate {
  type IProjectSlot (line 133) | interface IProjectSlot {
  type IProjectPlugins (line 138) | interface IProjectPlugins {
  type IProjectBuilderOptions (line 142) | interface IProjectBuilderOptions {
  type IProjectBuilder (line 176) | interface IProjectBuilder {
  type ProjectPreProcessor (line 181) | type ProjectPreProcessor = (schema: IPublicTypeProjectSchema) =>
  type ProjectPostProcessorOptions (line 184) | interface ProjectPostProcessorOptions {
  type ProjectPostProcessor (line 190) | type ProjectPostProcessor = (
  type PostProcessorFactory (line 198) | type PostProcessorFactory<T> = (config?: T) => PostProcessor;
  type PostProcessor (line 201) | type PostProcessor = (content: string, fileType: string, name?: string) ...
  type IPluginOptions (line 204) | interface IPluginOptions {
  type BaseGenerator (line 208) | type BaseGenerator<I, T, C> = (
  type CompositeTypeGenerator (line 214) | type CompositeTypeGenerator<I, T> =
  type NodeGenerator (line 218) | type NodeGenerator<T> = (nodeItem: IPublicTypeNodeDataType, scope: IScop...
  type HandlerSet (line 223) | interface HandlerSet<T> {
  type CompositeValueGeneratorOptions (line 234) | interface CompositeValueGeneratorOptions {
  type IScope (line 243) | interface IScope {

FILE: modules/code-generator/src/types/deps.ts
  type INpmPackage (line 1) | interface INpmPackage {
  type IExternalDependency (line 12) | interface IExternalDependency extends INpmPackage, IDependency {}
  type InternalDependencyType (line 14) | enum InternalDependencyType {
  type DependencyType (line 21) | enum DependencyType {
  type IInternalDependency (line 26) | interface IInternalDependency extends IDependency {
  type IDependency (line 31) | interface IDependency {

FILE: modules/code-generator/src/types/error.ts
  class CodeGeneratorError (line 2) | class CodeGeneratorError extends Error {
    method constructor (line 5) | constructor(message: string, detail?: unknown) {
  class ComponentValidationError (line 13) | class ComponentValidationError extends CodeGeneratorError {}
  class CompatibilityError (line 15) | class CompatibilityError extends CodeGeneratorError {}
  class PublisherError (line 17) | class PublisherError extends CodeGeneratorError {}

FILE: modules/code-generator/src/types/file.ts
  type FlattenFile (line 4) | interface FlattenFile {

FILE: modules/code-generator/src/types/intermediate.ts
  type IParseResult (line 11) | interface IParseResult {
  type IWithDependency (line 19) | interface IWithDependency {
  type IContainerInfo (line 23) | interface IContainerInfo extends IPublicTypeContainerSchema, IWithDepend...
  type IUtilInfo (line 29) | interface IUtilInfo extends IWithDependency {
  type IRouterInfo (line 33) | interface IRouterInfo extends IWithDependency {
  type ProjectRemark (line 44) | interface ProjectRemark {
  type IProjectInfo (line 50) | interface IProjectInfo {
  type IPageMeta (line 63) | interface IPageMeta {

FILE: modules/code-generator/src/types/jsx.ts
  type PIECE_TYPE (line 4) | enum PIECE_TYPE {
  type CodePiece (line 12) | interface CodePiece {
  type AttrData (line 18) | interface AttrData {
  type AttrPlugin (line 23) | type AttrPlugin = BaseGenerator<AttrData, CodePiece[], NodeGeneratorConf...
  type NodePlugin (line 24) | type NodePlugin = BaseGenerator<IPublicTypeNodeSchema, CodePiece[], Node...
  type NodeGeneratorConfig (line 26) | interface NodeGeneratorConfig {

FILE: modules/code-generator/src/types/publisher.ts
  type PublisherFactory (line 3) | type PublisherFactory<T, U> = (configuration?: Partial<T>) => U;
  type IPublisher (line 5) | interface IPublisher<T, U> {
  type IPublisherFactoryParams (line 11) | interface IPublisherFactoryParams {
  type IPublisherResponse (line 14) | interface IPublisherResponse<T> {

FILE: modules/code-generator/src/utils/OrderedSet.ts
  class OrderedSet (line 1) | class OrderedSet<T> {
    method constructor (line 5) | constructor(items?: T[]) {
    method add (line 12) | add(item: T) {
    method delete (line 19) | delete(item: T) {
    method has (line 26) | has(item: T) {
    method toArray (line 30) | toArray() {

FILE: modules/code-generator/src/utils/Scope.ts
  class Scope (line 4) | class Scope implements IScope {
    method createRootScope (line 8) | static createRootScope(): IScope {
    method constructor (line 14) | constructor(public readonly parent: IScope | null = null) {
    method createSubScope (line 18) | createSubScope(ownIdentifiers: string[]): IScope {

FILE: modules/code-generator/src/utils/ScopeBindings.ts
  type IScopeBindings (line 3) | interface IScopeBindings {
  class ScopeBindings (line 16) | class ScopeBindings implements IScopeBindings {
    method constructor (line 21) | constructor(p: IScopeBindings | null = null) {
    method hasBinding (line 25) | hasBinding(varName: string): boolean {
    method hasOwnBinding (line 29) | hasOwnBinding(varName: string): boolean {
    method addBinding (line 33) | addBinding(varName: string): void {
    method removeBinding (line 37) | removeBinding(varName: string): void {
    method getAllBindings (line 41) | getAllBindings(): string[] {
    method getAllOwnedBindings (line 53) | getAllOwnedBindings(): string[] {

FILE: modules/code-generator/src/utils/aopHelper.ts
  function executeFunctionStack (line 3) | function executeFunctionStack<I, T, C>(

FILE: modules/code-generator/src/utils/common.ts
  function camel2dash (line 8) | function camel2dash(input: string): string {
  function camelize (line 15) | function camelize(str: string): string {
  function generateID (line 19) | function generateID(): string {
  function upperCaseFirst (line 23) | function upperCaseFirst(inputValue: string): string {
  function uniqueArray (line 27) | function uniqueArray<T>(arr: T[], by: (i: T) => string) {
  function getStaticExprValue (line 39) | function getStaticExprValue<T>(expr: string): T {
  function isJSExpressionFn (line 45) | function isJSExpressionFn(data: any): data is IPublicTypeJSFunction {
  function isInternalDependency (line 49) | function isInternalDependency(
  function isExternalDependency (line 55) | function isExternalDependency(

FILE: modules/code-generator/src/utils/compositeType.ts
  type ILegaoVariable (line 21) | interface ILegaoVariable {
  function isVariable (line 27) | function isVariable(v: any): v is ILegaoVariable {
  type DataSource (line 34) | interface DataSource {
  function isDataSource (line 42) | function isDataSource(v: unknown): v is DataSource {
  function generateArray (line 46) | function generateArray(
  function generateObject (line 55) | function generateObject(
  function generateString (line 79) | function generateString(value: string): string {
  function generateNumber (line 84) | function generateNumber(value: number): string {
  function generateBool (line 88) | function generateBool(value: boolean): string {
  function genFunction (line 92) | function genFunction(value: IPublicTypeJSFunction): string {
  function genJsSlot (line 102) | function genJsSlot(value: IPublicTypeJSSlot, scope: IScope, options: Com...
  function generateUnknownType (line 109) | function generateUnknownType(
  function generateCompositeType (line 221) | function generateCompositeType(

FILE: modules/code-generator/src/utils/dataSource.ts
  type DataSourceDependenciesConfig (line 4) | interface DataSourceDependenciesConfig {
  function buildDataSourceDependencies (line 23) | function buildDataSourceDependencies(

FILE: modules/code-generator/src/utils/encodeJsxAttrString.ts
  constant SPECIAL_CHARS (line 4) | const SPECIAL_CHARS = '\n\r\'"<>&';
  constant SPECIAL_CHARS_REG (line 5) | const SPECIAL_CHARS_REG = new RegExp(
  function encodeJsxStringNode (line 12) | function encodeJsxStringNode(str: string): string {

FILE: modules/code-generator/src/utils/errors.ts
  function getErrorMessage (line 4) | function getErrorMessage(error: unknown): string | null {

FILE: modules/code-generator/src/utils/expressionParser.ts
  class ParseError (line 10) | class ParseError extends Error {
    method constructor (line 15) | constructor(expr: string | t.Expression, detail: unknown) {
  constant MAYBE_EXPRESSIONS (line 23) | const MAYBE_EXPRESSIONS: {
  type ParseExpressionGetGlobalVariablesOptions (line 131) | interface ParseExpressionGetGlobalVariablesOptions {
  constant CROSS_THIS_SCOPE_TYPE_NODE (line 135) | const CROSS_THIS_SCOPE_TYPE_NODE: {
  constant JS_KEYWORDS (line 154) | const JS_KEYWORDS = ['arguments', 'this', 'super'];
  function parseExpressionGetKeywords (line 156) | function parseExpressionGetKeywords(expr: string | null | undefined): st...
  function parseExpressionGetGlobalVariables (line 206) | function parseExpressionGetGlobalVariables(
  function parseExpressionConvertThis2Context (line 258) | function parseExpressionConvertThis2Context(
  function parseExpression (line 333) | function parseExpression(expr: string) {
  function transformExpressionLocalRef (line 341) | function transformExpressionLocalRef(expr: string, scope: IScope) {

FILE: modules/code-generator/src/utils/format.ts
  function format (line 4) | function format(content: string, options = {}) {

FILE: modules/code-generator/src/utils/jsExpression.ts
  function parseFunction (line 10) | function parseFunction(content: string): t.FunctionExpression | null {
  function transformFuncExpr2MethodMember (line 31) | function transformFuncExpr2MethodMember(methodName: string, content: str...
  function getArrowFunction (line 52) | function getArrowFunction(content: string) {
  function getBodyStatements (line 68) | function getBodyStatements(content: string) {
  function isBroadJSFunction (line 87) | function isBroadJSFunction(value: unknown): boolean {
  function generateExpression (line 91) | function generateExpression(value: any, scope: IScope): string {
  function getFunctionSource (line 105) | function getFunctionSource(cfg: IPublicTypeJSFunction): string {
  function generateFunction (line 109) | function generateFunction(

FILE: modules/code-generator/src/utils/jsSlot.ts
  function generateSingleLineComment (line 5) | function generateSingleLineComment(commentText: string): string {
  function generateJsSlot (line 9) | function generateJsSlot(slot: any, scope: IScope, generator: NodeGenerat...
  function generateNodeDataOrArrayForJsSlot (line 41) | function generateNodeDataOrArrayForJsSlot(

FILE: modules/code-generator/src/utils/jsxHelpers.ts
  function unwrapJsExprQuoteInJsx (line 5) | function unwrapJsExprQuoteInJsx(jsxExpr: string): string {

FILE: modules/code-generator/src/utils/nodeToJSX.ts
  function mergeNodeGeneratorConfig (line 24) | function mergeNodeGeneratorConfig(
  function isPureString (line 55) | function isPureString(v: string) {
  function generateAttrValue (line 60) | function generateAttrValue(
  function generateAttr (line 78) | function generateAttr(
  function generateAttrs (line 118) | function generateAttrs(
  function generateBasicNode (line 149) | function generateBasicNode(
  function generateSimpleNode (line 165) | function generateSimpleNode(
  function linkPieces (line 185) | function linkPieces(pieces: CodePiece[]): string {
  function generateNodeSchema (line 221) | function generateNodeSchema(
  function generateReactLoopCtrl (line 256) | function generateReactLoopCtrl(
  function generateConditionReactCtrl (line 310) | function generateConditionReactCtrl(
  function generateReactExprInJS (line 345) | function generateReactExprInJS(
  function createNodeGenerator (line 370) | function createNodeGenerator(cfg: NodeGeneratorConfig = {}): NodeGenerat...
  function createReactNodeGenerator (line 403) | function createReactNodeGenerator(cfg?: NodeGeneratorConfig): NodeGenera...

FILE: modules/code-generator/src/utils/pathHelper.ts
  function relativePath (line 3) | function relativePath(from: string[], to: string[]): string[] {
  function getSlotRelativePath (line 26) | function getSlotRelativePath(options: {

FILE: modules/code-generator/src/utils/resultHelper.ts
  function createResultFile (line 7) | function createResultFile(name: string, ext = 'jsx', content = ''): Resu...
  function createResultDir (line 15) | function createResultDir(name: string): ResultDir {
  function addDirectory (line 23) | function addDirectory(target: ResultDir, dir: ResultDir): void {
  function addFile (line 33) | function addFile(target: ResultDir, file: ResultFile): void {
  function flattenResult (line 43) | function flattenResult(dir: ResultDir, cwd = ''): FlattenFile[] {
  type GlobOptions (line 58) | type GlobOptions = {
  function findFile (line 70) | function findFile(
  function getFileNameWithExt (line 128) | function getFileNameWithExt(file: ResultFile) {
  function getResultNameOrDefault (line 132) | function getResultNameOrDefault(result: ResultDir, defaultDir = '/') {
  function joinPath (line 136) | function joinPath(...pathParts: string[]): string {
  function findDir (line 171) | function findDir(
  function removeFilesFromResult (line 195) | function removeFilesFromResult(
  function removeDirsFromResult (line 222) | function removeDirsFromResult(
  function splitPath (line 247) | function splitPath(filePath: string) {

FILE: modules/code-generator/src/utils/schema.ts
  function isContainerSchema (line 18) | function isContainerSchema(x: any): x is IPublicTypeContainerSchema {
  function isNpmInfo (line 27) | function isNpmInfo(x: any): x is IPublicTypeNpmInfo {
  constant DEFAULT_MAX_DEPTH (line 37) | const DEFAULT_MAX_DEPTH = 100000;
  function handleSubNodes (line 46) | function handleSubNodes<T>(
  function isValidContainerType (line 144) | function isValidContainerType(schema: IPublicTypeNodeSchema) {
  type ContainerType (line 152) | const enum ContainerType {

FILE: modules/code-generator/src/utils/templateHelper.ts
  type FuncFileGenerator (line 4) | type FuncFileGenerator = () => [string[], ResultFile];
  function insertFile (line 6) | function insertFile(root: ResultDir, path: string[], file: ResultFile) {
  function runFileGenerator (line 22) | function runFileGenerator(root: ResultDir, fun: FuncFileGenerator) {

FILE: modules/code-generator/src/utils/theme.ts
  type ThemeInfo (line 6) | interface ThemeInfo {
  function getThemeInfo (line 11) | function getThemeInfo(theme: string): ThemeInfo {

FILE: modules/code-generator/src/utils/version.ts
  function calcCompatibleVersion (line 3) | function calcCompatibleVersion(v1: string | undefined | null, v2: string...

FILE: modules/code-generator/tests/bugfix/i18n-with-params.test.ts
  function exportProject (line 31) | function exportProject(
  function readOutputTextFile (line 52) | function readOutputTextFile(outputFilePath: string): string {

FILE: modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts
  function exportProject (line 198) | function exportProject(
  function readOutputTextFile (line 220) | function readOutputTextFile(outputFilePath: string): string {

FILE: modules/code-generator/tests/bugfix/icejs-js-function1.test.ts
  function exportProject (line 28) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts
  function exportProject (line 28) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts
  function exportProject (line 34) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/icejs-page-map1.test.ts
  function exportProject (line 22) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/page-element1.test.ts
  function exportProject (line 18) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/page-element2.test.ts
  function exportProject (line 18) | function exportProject(inputPath: string, outputPath: string) {

FILE: modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts
  function exportProject (line 33) | function exportProject(
  function readOutputTextFile (line 55) | function readOutputTextFile(outputFilePath: string): string {

FILE: modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts
  function exportProject (line 28) | function exportProject(
  function readOutputTextFile (line 50) | function readOutputTextFile(outputFilePath: string): string {

FILE: modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts
  function exportProject (line 32) | function exportProject(
  function readOutputTextFile (line 54) | function readOutputTextFile(outputFilePath: string): string {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 31) | class Test$$Page extends React.Component {
    method dataSourceMap (line 43) | get dataSourceMap() {
    method constants (line 51) | get constants() {
    method constructor (line 55) | constructor(props, context) {
    method _defineDataSourceConfig (line 75) | _defineDataSourceConfig() {
    method componentDidMount (line 136) | componentDidMount() {
    method render (line 142) | render() {
  function __$$eval (line 187) | function __$$eval(expr) {
  function __$$evalArray (line 193) | function __$$evalArray(expr) {
  function __$$createChildContext (line 198) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
  class Aaaa$$Page (line 21) | class Aaaa$$Page extends React.Component {
    method dataSourceMap (line 32) | get dataSourceMap() {
    method constants (line 40) | get constants() {
    method constructor (line 44) | constructor(props, context) {
    method _defineDataSourceConfig (line 58) | _defineDataSourceConfig() {
    method componentDidMount (line 79) | componentDidMount() {
    method render (line 83) | render() {
  function __$$eval (line 100) | function __$$eval(expr) {
  function __$$evalArray (line 106) | function __$$evalArray(expr) {
  function __$$createChildContext (line 111) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
  class RefsManager (line 9) | class RefsManager {
    method constructor (line 10) | constructor() {
    method clearNullRefs (line 14) | clearNullRefs() {
    method get (line 27) | get(refName) {
    method getAll (line 36) | getAll(refName) {
    method linkRef (line 45) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 25) | class Test$$Page extends React.Component {
    method constants (line 28) | get constants() {
    method constructor (line 32) | constructor(props, context) {
    method componentDidMount (line 52) | componentDidMount() {
    method render (line 56) | render() {
  function __$$eval (line 111) | function __$$eval(expr) {
  function __$$evalArray (line 117) | function __$$evalArray(expr) {
  function __$$createChildContext (line 122) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 44) | class Test$$Page extends React.Component {
    method constants (line 47) | get constants() {
    method constructor (line 51) | constructor(props, context) {
    method componentDidMount (line 65) | componentDidMount() {}
    method render (line 67) | render() {
  function __$$eval (line 89) | function __$$eval(expr) {
  function __$$evalArray (line 95) | function __$$evalArray(expr) {
  function __$$createChildContext (line 100) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 30) | class Test$$Page extends React.Component {
    method dataSourceMap (line 39) | get dataSourceMap() {
    method constants (line 47) | get constants() {
    method constructor (line 51) | constructor(props, context) {
    method _defineDataSourceConfig (line 71) | _defineDataSourceConfig() {
    method componentWillUnmount (line 96) | componentWillUnmount() {
    method componentDidUpdate (line 100) | componentDidUpdate(prevProps, prevState, snapshot) {
    method testFunc (line 104) | testFunc() {
    method onClick (line 108) | onClick() {
    method closeDialog (line 114) | closeDialog() {
    method onSearch (line 120) | onSearch(values) {
    method onClear (line 126) | onClear() {
    method onPageChange (line 133) | onPageChange(page, pageSize) {
    method componentDidMount (line 137) | componentDidMount() {
    method render (line 143) | render() {
  function __$$eval (line 274) | function __$$eval(expr) {
  function __$$evalArray (line 280) | function __$$evalArray(expr) {
  function __$$createChildContext (line 285) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 37) | class Test$$Page extends React.Component {
    method constants (line 40) | get constants() {
    method constructor (line 44) | constructor(props, context) {
    method componentWillUnmount (line 70) | componentWillUnmount() {
    method componentDidUpdate (line 74) | componentDidUpdate() {
    method onChange (line 78) | onChange() {
    method getActions (line 82) | getActions() {
    method onCreateOrder (line 86) | onCreateOrder() {
    method onCancelModal (line 90) | onCancelModal() {
    method onConfirmCreateOrder (line 94) | onConfirmCreateOrder() {
    method componentDidMount (line 98) | componentDidMount() {}
    method render (line 100) | render() {
  function __$$eval (line 371) | function __$$eval(expr) {
  function __$$evalArray (line 377) | function __$$evalArray(expr) {
  function __$$createChildContext (line 382) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 31) | class Test$$Page extends React.Component {
    method dataSourceMap (line 43) | get dataSourceMap() {
    method constants (line 51) | get constants() {
    method constructor (line 55) | constructor(props, context) {
    method _defineDataSourceConfig (line 75) | _defineDataSourceConfig() {
    method componentDidMount (line 136) | componentDidMount() {
    method render (line 142) | render() {
  function __$$eval (line 187) | function __$$eval(expr) {
  function __$$evalArray (line 193) | function __$$evalArray(expr) {
  function __$$createChildContext (line 198) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 34) | class Test$$Page extends React.Component {
    method constants (line 37) | get constants() {
    method constructor (line 41) | constructor(props, context) {
    method componentDidUpdate (line 112) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 114) | componentWillUnmount() {}
    method __jp__init (line 116) | __jp__init() {
    method __jp__initRouter (line 120) | __jp__initRouter() {
    method __jp__initDataSource (line 124) | __jp__initDataSource() {
    method __jp__initEnv (line 128) | __jp__initEnv() {
    method __jp__initUtils (line 132) | __jp__initUtils() {
    method onFinishFirst (line 136) | onFinishFirst() {
    method onClickPreSecond (line 140) | onClickPreSecond() {
    method onFinishSecond (line 144) | onFinishSecond() {
    method onClickModifyThird (line 148) | onClickModifyThird() {
    method onOkModifyDialogThird (line 152) | onOkModifyDialogThird() {
    method onCancelModifyDialogThird (line 161) | onCancelModifyDialogThird() {
    method onFinishFailed (line 169) | onFinishFailed() {}
    method onClickPreThird (line 171) | onClickPreThird() {
    method onClickFirstBack (line 178) | onClickFirstBack() {
    method onClickSecondBack (line 183) | onClickSecondBack() {
    method onClickThirdBack (line 188) | onClickThirdBack() {
    method onValuesChange (line 193) | onValuesChange(_, values) {
    method componentDidMount (line 202) | componentDidMount() {}
    method render (line 204) | render() {
  function __$$eval (line 1058) | function __$$eval(expr) {
  function __$$evalArray (line 1064) | function __$$evalArray(expr) {
  function __$$createChildContext (line 1069) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
  class Example$$Page (line 19) | class Example$$Page extends React.Component {
    method dataSourceMap (line 28) | get dataSourceMap() {
    method constants (line 36) | get constants() {
    method constructor (line 40) | constructor(props, context) {
    method _defineDataSourceConfig (line 54) | _defineDataSourceConfig() {
    method componentDidMount (line 75) | componentDidMount() {
    method render (line 79) | render() {
  function __$$eval (line 98) | function __$$eval(expr) {
  function __$$evalArray (line 104) | function __$$evalArray(expr) {
  function __$$createChildContext (line 109) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
  class $$Page (line 21) | class $$Page extends React.Component {
    method dataSourceMap (line 30) | get dataSourceMap() {
    method constants (line 38) | get constants() {
    method constructor (line 42) | constructor(props, context) {
    method _defineDataSourceConfig (line 56) | _defineDataSourceConfig() {
    method componentDidMount (line 80) | componentDidMount() {
    method render (line 84) | render() {
  function __$$eval (line 107) | function __$$eval(expr) {
  function __$$evalArray (line 113) | function __$$evalArray(expr) {
  function __$$createChildContext (line 118) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 42) | class Test$$Page extends React.Component {
    method constants (line 45) | get constants() {
    method constructor (line 49) | constructor(props, context) {
    method componentDidUpdate (line 85) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 87) | componentWillUnmount() {}
    method __jp__init (line 89) | __jp__init() {
    method __jp__initRouter (line 93) | __jp__initRouter() {
    method __jp__initDataSource (line 103) | __jp__initDataSource() {
    method __jp__initEnv (line 107) | __jp__initEnv() {
    method __jp__initConfig (line 111) | __jp__initConfig() {
    method __jp__initUtils (line 115) | __jp__initUtils() {
    method fetchPkgs (line 123) | fetchPkgs() {
    method onPageChange (line 127) | onPageChange(pageIndex, pageSize) {
    method renderTime (line 135) | renderTime(time) {
    method renderUserName (line 139) | renderUserName(user) {
    method reload (line 143) | reload() {
    method handleResult (line 147) | handleResult() {
    method handleDetail (line 151) | handleDetail() {
    method onResultCancel (line 155) | onResultCancel() {
    method formatResult (line 161) | formatResult(item) {
    method handleDownload (line 169) | handleDownload() {
    method onFinish (line 173) | onFinish() {
    method componentDidMount (line 177) | componentDidMount() {
    method render (line 190) | render() {
  function __$$eval (line 804) | function __$$eval(expr) {
  function __$$evalArray (line 810) | function __$$evalArray(expr) {
  function __$$createChildContext (line 815) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/document.tsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 10) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 20) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 42) | class Test$$Page extends React.Component {
    method constants (line 45) | get constants() {
    method constructor (line 49) | constructor(props, context) {
    method componentDidUpdate (line 93) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 95) | componentWillUnmount() {}
    method __jp__init (line 97) | __jp__init() {
    method __jp__initRouter (line 101) | __jp__initRouter() {
    method __jp__initDataSource (line 105) | __jp__initDataSource() {
    method __jp__initEnv (line 109) | __jp__initEnv() {
    method __jp__initConfig (line 113) | __jp__initConfig() {
    method __jp__initUtils (line 117) | __jp__initUtils() {
    method setSearchItem (line 121) | setSearchItem() {
    method fetchProject (line 125) | fetchProject() {
    method handleProjectSearch (line 129) | handleProjectSearch() {
    method handleProjectChange (line 133) | handleProjectChange(id) {
    method fetchUser (line 139) | fetchUser() {
    method handleUserSearch (line 143) | handleUserSearch() {
    method handleUserChange (line 147) | handleUserChange(user) {
    method fetchPkgs (line 154) | fetchPkgs() {
    method onPageChange (line 158) | onPageChange(pageIndex, pageSize) {
    method renderTime (line 166) | renderTime(time) {
    method renderUserName (line 170) | renderUserName(user) {
    method reload (line 174) | reload() {
    method handleResult (line 178) | handleResult() {
    method handleDetail (line 182) | handleDetail() {
    method onResultCancel (line 186) | onResultCancel() {
    method formatResult (line 190) | formatResult() {
    method handleDownload (line 194) | handleDownload() {
    method onFinish (line 198) | onFinish() {
    method componentDidMount (line 202) | componentDidMount() {
    method render (line 214) | render() {
  function __$$eval (line 958) | function __$$eval(expr) {
  function __$$evalArray (line 964) | function __$$evalArray(expr) {
  function __$$createChildContext (line 969) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/layout.jsx
  function Layout (line 4) | function Layout() {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/typings.d.ts
  type Window (line 5) | interface Window {

FILE: modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 22) | class Home$$Page extends Component {
    method constructor (line 34) | constructor(props, context) {
    method componentDidMount (line 40) | componentDidMount() {
    method componentWillUnmount (line 44) | componentWillUnmount() {}
    method render (line 46) | render() {
    method _createContext (line 68) | _createContext() {
    method _defineDataSourceConfig (line 111) | _defineDataSourceConfig() {
    method _defineUtils (line 116) | _defineUtils() {
    method _defineMethods (line 122) | _defineMethods() {
  function __$$eval (line 129) | function __$$eval(expr) {
  function __$$evalArray (line 135) | function __$$evalArray(expr) {
  function __$$createChildContext (line 140) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 30) | class Home$$Page extends Component {
    method constructor (line 69) | constructor(props, context) {
    method componentDidMount (line 75) | componentDidMount() {
    method componentWillUnmount (line 81) | componentWillUnmount() {
    method render (line 85) | render() {
    method _createContext (line 171) | _createContext() {
    method _defineDataSourceConfig (line 214) | _defineDataSourceConfig() {
    method _defineUtils (line 293) | _defineUtils() {
    method _defineLifeCycles (line 299) | _defineLifeCycles() {
    method _defineMethods (line 322) | _defineMethods() {
  function __$$eval (line 334) | function __$$eval(expr) {
  function __$$evalArray (line 340) | function __$$evalArray(expr) {
  function __$$createChildContext (line 345) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/utils.js
  class RefsManager (line 18) | class RefsManager {
    method constructor (line 19) | constructor() {
    method clearNullRefs (line 23) | clearNullRefs() {
    method get (line 34) | get(refName) {
    method getAll (line 43) | getAll(refName) {
    method linkRef (line 52) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.jsx
  class Detail$$Page (line 26) | class Detail$$Page extends Component {
    method constructor (line 38) | constructor(props, context) {
    method componentDidMount (line 44) | componentDidMount() {
    method componentWillUnmount (line 48) | componentWillUnmount() {}
    method render (line 50) | render() {
    method _createContext (line 77) | _createContext() {
    method _defineDataSourceConfig (line 120) | _defineDataSourceConfig() {
    method _defineUtils (line 125) | _defineUtils() {
    method _defineMethods (line 131) | _defineMethods() {
  function __$$eval (line 138) | function __$$eval(expr) {
  function __$$evalArray (line 144) | function __$$evalArray(expr) {
  function __$$createChildContext (line 149) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 26) | class Home$$Page extends Component {
    method constructor (line 38) | constructor(props, context) {
    method componentDidMount (line 44) | componentDidMount() {
    method componentWillUnmount (line 48) | componentWillUnmount() {}
    method render (line 50) | render() {
    method _createContext (line 77) | _createContext() {
    method _defineDataSourceConfig (line 120) | _defineDataSourceConfig() {
    method _defineUtils (line 125) | _defineUtils() {
    method _defineMethods (line 131) | _defineMethods() {
  function __$$eval (line 138) | function __$$eval(expr) {
  function __$$evalArray (line 144) | function __$$evalArray(expr) {
  function __$$createChildContext (line 149) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.jsx
  class List$$Page (line 26) | class List$$Page extends Component {
    method constructor (line 38) | constructor(props, context) {
    method componentDidMount (line 44) | componentDidMount() {
    method componentWillUnmount (line 48) | componentWillUnmount() {}
    method render (line 50) | render() {
    method _createContext (line 80) | _createContext() {
    method _defineDataSourceConfig (line 123) | _defineDataSourceConfig() {
    method _defineUtils (line 128) | _defineUtils() {
    method _defineMethods (line 134) | _defineMethods() {
  function __$$eval (line 141) | function __$$eval(expr) {
  function __$$evalArray (line 147) | function __$$evalArray(expr) {
  function __$$createChildContext (line 152) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 24) | class Home$$Page extends Component {
    method constructor (line 36) | constructor(props, context) {
    method componentDidMount (line 42) | componentDidMount() {
    method componentWillUnmount (line 46) | componentWillUnmount() {}
    method render (line 48) | render() {
    method _createContext (line 72) | _createContext() {
    method _defineDataSourceConfig (line 115) | _defineDataSourceConfig() {
    method _defineUtils (line 120) | _defineUtils() {
    method _defineMethods (line 126) | _defineMethods() {
  function __$$eval (line 133) | function __$$eval(expr) {
  function __$$evalArray (line 139) | function __$$evalArray(expr) {
  function __$$createChildContext (line 144) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 22) | class Home$$Page extends Component {
    method constructor (line 34) | constructor(props, context) {
    method componentDidMount (line 40) | componentDidMount() {
    method componentWillUnmount (line 44) | componentWillUnmount() {}
    method render (line 46) | render() {
    method _createContext (line 74) | _createContext() {
    method _defineDataSourceConfig (line 117) | _defineDataSourceConfig() {
    method _defineUtils (line 122) | _defineUtils() {
    method _defineMethods (line 128) | _defineMethods() {
  function __$$eval (line 135) | function __$$eval(expr) {
  function __$$evalArray (line 141) | function __$$evalArray(expr) {
  function __$$createChildContext (line 146) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 24) | class Home$$Page extends Component {
    method constructor (line 36) | constructor(props, context) {
    method componentDidMount (line 42) | componentDidMount() {
    method componentWillUnmount (line 46) | componentWillUnmount() {}
    method render (line 48) | render() {
    method _createContext (line 80) | _createContext() {
    method _defineDataSourceConfig (line 123) | _defineDataSourceConfig() {
    method _defineUtils (line 128) | _defineUtils() {
    method _defineMethods (line 134) | _defineMethods() {
  function __$$eval (line 141) | function __$$eval(expr) {
  function __$$evalArray (line 147) | function __$$evalArray(expr) {
  function __$$createChildContext (line 152) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 22) | class Home$$Page extends Component {
    method constructor (line 34) | constructor(props, context) {
    method componentDidMount (line 40) | componentDidMount() {
    method componentWillUnmount (line 44) | componentWillUnmount() {}
    method render (line 46) | render() {
    method _createContext (line 74) | _createContext() {
    method _defineDataSourceConfig (line 117) | _defineDataSourceConfig() {
    method _defineUtils (line 122) | _defineUtils() {
    method _defineMethods (line 128) | _defineMethods() {
  function __$$eval (line 135) | function __$$eval(expr) {
  function __$$evalArray (line 141) | function __$$evalArray(expr) {
  function __$$createChildContext (line 146) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 24) | class Home$$Page extends Component {
    method constructor (line 36) | constructor(props, context) {
    method componentDidMount (line 42) | componentDidMount() {
    method componentWillUnmount (line 46) | componentWillUnmount() {}
    method render (line 48) | render() {
    method _createContext (line 80) | _createContext() {
    method _defineDataSourceConfig (line 123) | _defineDataSourceConfig() {
    method _defineUtils (line 128) | _defineUtils() {
    method _defineMethods (line 134) | _defineMethods() {
  function __$$eval (line 141) | function __$$eval(expr) {
  function __$$evalArray (line 147) | function __$$evalArray(expr) {
  function __$$createChildContext (line 152) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 24) | class Home$$Page extends Component {
    method constructor (line 36) | constructor(props, context) {
    method componentDidMount (line 42) | componentDidMount() {
    method componentWillUnmount (line 46) | componentWillUnmount() {}
    method render (line 48) | render() {
    method _createContext (line 83) | _createContext() {
    method _defineDataSourceConfig (line 126) | _defineDataSourceConfig() {
    method _defineUtils (line 131) | _defineUtils() {
    method _defineMethods (line 137) | _defineMethods() {
  function __$$eval (line 144) | function __$$eval(expr) {
  function __$$evalArray (line 150) | function __$$evalArray(expr) {
  function __$$createChildContext (line 155) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 24) | class Home$$Page extends Component {
    method constructor (line 36) | constructor(props, context) {
    method componentDidMount (line 42) | componentDidMount() {
    method componentWillUnmount (line 46) | componentWillUnmount() {}
    method render (line 48) | render() {
    method _createContext (line 85) | _createContext() {
    method _defineDataSourceConfig (line 128) | _defineDataSourceConfig() {
    method _defineUtils (line 133) | _defineUtils() {
    method _defineMethods (line 139) | _defineMethods() {
  function __$$eval (line 146) | function __$$eval(expr) {
  function __$$evalArray (line 152) | function __$$evalArray(expr) {
  function __$$createChildContext (line 157) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
  class Aaaa$$Page (line 24) | class Aaaa$$Page extends Component {
    method constructor (line 41) | constructor(props, context) {
    method componentDidMount (line 47) | componentDidMount() {
    method componentWillUnmount (line 51) | componentWillUnmount() {}
    method render (line 53) | render() {
    method _createContext (line 75) | _createContext() {
    method _defineDataSourceConfig (line 118) | _defineDataSourceConfig() {
    method _defineUtils (line 145) | _defineUtils() {
    method _defineMethods (line 151) | _defineMethods() {
  function __$$eval (line 158) | function __$$eval(expr) {
  function __$$evalArray (line 164) | function __$$evalArray(expr) {
  function __$$createChildContext (line 169) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/utils.js
  class RefsManager (line 9) | class RefsManager {
    method constructor (line 10) | constructor() {
    method clearNullRefs (line 14) | clearNullRefs() {
    method get (line 25) | get(refName) {
    method getAll (line 34) | getAll(refName) {
    method linkRef (line 43) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.jsx
  class Home$$Page (line 22) | class Home$$Page extends Component {
    method constructor (line 34) | constructor(props, context) {
    method componentDidMount (line 40) | componentDidMount() {
    method componentWillUnmount (line 44) | componentWillUnmount() {}
    method render (line 46) | render() {
    method _createContext (line 75) | _createContext() {
    method _defineDataSourceConfig (line 131) | _defineDataSourceConfig() {
    method _defineUtils (line 136) | _defineUtils() {
    method _defineMethods (line 142) | _defineMethods() {
  function __$$eval (line 149) | function __$$eval(expr) {
  function __$$evalArray (line 155) | function __$$evalArray(expr) {
  function __$$createChildContext (line 160) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/document/index.jsx
  function Document (line 4) | function Document() {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
  class Example$$Page (line 22) | class Example$$Page extends Component {
    method constructor (line 37) | constructor(props, context) {
    method componentDidMount (line 43) | componentDidMount() {
    method componentWillUnmount (line 47) | componentWillUnmount() {}
    method render (line 49) | render() {
    method _createContext (line 77) | _createContext() {
    method _defineDataSourceConfig (line 120) | _defineDataSourceConfig() {
    method _defineUtils (line 147) | _defineUtils() {
    method _defineMethods (line 153) | _defineMethods() {
  function __$$eval (line 160) | function __$$eval(expr) {
  function __$$evalArray (line 166) | function __$$evalArray(expr) {
  function __$$createChildContext (line 171) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 19) | get(refName) {
    method getAll (line 28) | getAll(refName) {
    method linkRef (line 37) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 31) | class Test$$Page extends React.Component {
    method dataSourceMap (line 43) | get dataSourceMap() {
    method constants (line 51) | get constants() {
    method constructor (line 55) | constructor(props, context) {
    method _defineDataSourceConfig (line 75) | _defineDataSourceConfig() {
    method componentDidMount (line 136) | componentDidMount() {
    method render (line 142) | render() {
  function __$$eval (line 187) | function __$$eval(expr) {
  function __$$evalArray (line 193) | function __$$evalArray(expr) {
  function __$$createChildContext (line 198) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
  class Aaaa$$Page (line 21) | class Aaaa$$Page extends React.Component {
    method dataSourceMap (line 32) | get dataSourceMap() {
    method constants (line 40) | get constants() {
    method constructor (line 44) | constructor(props, context) {
    method _defineDataSourceConfig (line 58) | _defineDataSourceConfig() {
    method componentDidMount (line 79) | componentDidMount() {
    method render (line 83) | render() {
  function __$$eval (line 100) | function __$$eval(expr) {
  function __$$evalArray (line 106) | function __$$evalArray(expr) {
  function __$$createChildContext (line 111) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
  class RefsManager (line 9) | class RefsManager {
    method constructor (line 10) | constructor() {
    method clearNullRefs (line 14) | clearNullRefs() {
    method get (line 27) | get(refName) {
    method getAll (line 36) | getAll(refName) {
    method linkRef (line 45) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 25) | class Test$$Page extends React.Component {
    method constants (line 28) | get constants() {
    method constructor (line 32) | constructor(props, context) {
    method componentDidMount (line 52) | componentDidMount() {
    method render (line 56) | render() {
  function __$$eval (line 111) | function __$$eval(expr) {
  function __$$evalArray (line 117) | function __$$evalArray(expr) {
  function __$$createChildContext (line 122) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 44) | class Test$$Page extends React.Component {
    method constants (line 47) | get constants() {
    method constructor (line 51) | constructor(props, context) {
    method componentDidMount (line 65) | componentDidMount() {}
    method render (line 67) | render() {
  function __$$eval (line 89) | function __$$eval(expr) {
  function __$$evalArray (line 95) | function __$$evalArray(expr) {
  function __$$createChildContext (line 100) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 30) | class Test$$Page extends React.Component {
    method dataSourceMap (line 39) | get dataSourceMap() {
    method constants (line 47) | get constants() {
    method constructor (line 51) | constructor(props, context) {
    method _defineDataSourceConfig (line 71) | _defineDataSourceConfig() {
    method componentWillUnmount (line 96) | componentWillUnmount() {
    method componentDidUpdate (line 100) | componentDidUpdate(prevProps, prevState, snapshot) {
    method testFunc (line 104) | testFunc() {
    method onClick (line 108) | onClick() {
    method closeDialog (line 114) | closeDialog() {
    method onSearch (line 120) | onSearch(values) {
    method onClear (line 126) | onClear() {
    method onPageChange (line 133) | onPageChange(page, pageSize) {
    method componentDidMount (line 137) | componentDidMount() {
    method render (line 143) | render() {
  function __$$eval (line 274) | function __$$eval(expr) {
  function __$$evalArray (line 280) | function __$$evalArray(expr) {
  function __$$createChildContext (line 285) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 37) | class Test$$Page extends React.Component {
    method constants (line 40) | get constants() {
    method constructor (line 44) | constructor(props, context) {
    method componentWillUnmount (line 70) | componentWillUnmount() {
    method componentDidUpdate (line 74) | componentDidUpdate() {
    method onChange (line 78) | onChange() {
    method getActions (line 82) | getActions() {
    method onCreateOrder (line 86) | onCreateOrder() {
    method onCancelModal (line 90) | onCancelModal() {
    method onConfirmCreateOrder (line 94) | onConfirmCreateOrder() {
    method componentDidMount (line 98) | componentDidMount() {}
    method render (line 100) | render() {
  function __$$eval (line 371) | function __$$eval(expr) {
  function __$$evalArray (line 377) | function __$$evalArray(expr) {
  function __$$createChildContext (line 382) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 31) | class Test$$Page extends React.Component {
    method dataSourceMap (line 43) | get dataSourceMap() {
    method constants (line 51) | get constants() {
    method constructor (line 55) | constructor(props, context) {
    method _defineDataSourceConfig (line 75) | _defineDataSourceConfig() {
    method componentDidMount (line 136) | componentDidMount() {
    method render (line 142) | render() {
  function __$$eval (line 187) | function __$$eval(expr) {
  function __$$evalArray (line 193) | function __$$evalArray(expr) {
  function __$$createChildContext (line 198) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 34) | class Test$$Page extends React.Component {
    method constants (line 37) | get constants() {
    method constructor (line 41) | constructor(props, context) {
    method componentDidUpdate (line 112) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 114) | componentWillUnmount() {}
    method __jp__init (line 116) | __jp__init() {
    method __jp__initRouter (line 120) | __jp__initRouter() {
    method __jp__initDataSource (line 124) | __jp__initDataSource() {
    method __jp__initEnv (line 128) | __jp__initEnv() {
    method __jp__initUtils (line 132) | __jp__initUtils() {
    method onFinishFirst (line 136) | onFinishFirst() {
    method onClickPreSecond (line 140) | onClickPreSecond() {
    method onFinishSecond (line 144) | onFinishSecond() {
    method onClickModifyThird (line 148) | onClickModifyThird() {
    method onOkModifyDialogThird (line 152) | onOkModifyDialogThird() {
    method onCancelModifyDialogThird (line 161) | onCancelModifyDialogThird() {
    method onFinishFailed (line 169) | onFinishFailed() {}
    method onClickPreThird (line 171) | onClickPreThird() {
    method onClickFirstBack (line 178) | onClickFirstBack() {
    method onClickSecondBack (line 183) | onClickSecondBack() {
    method onClickThirdBack (line 188) | onClickThirdBack() {
    method onValuesChange (line 193) | onValuesChange(_, values) {
    method componentDidMount (line 202) | componentDidMount() {}
    method render (line 204) | render() {
  function __$$eval (line 1058) | function __$$eval(expr) {
  function __$$evalArray (line 1064) | function __$$evalArray(expr) {
  function __$$createChildContext (line 1069) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
  class Example$$Page (line 19) | class Example$$Page extends React.Component {
    method dataSourceMap (line 28) | get dataSourceMap() {
    method constants (line 36) | get constants() {
    method constructor (line 40) | constructor(props, context) {
    method _defineDataSourceConfig (line 54) | _defineDataSourceConfig() {
    method componentDidMount (line 75) | componentDidMount() {
    method render (line 79) | render() {
  function __$$eval (line 98) | function __$$eval(expr) {
  function __$$evalArray (line 104) | function __$$evalArray(expr) {
  function __$$createChildContext (line 109) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
  class $$Page (line 21) | class $$Page extends React.Component {
    method dataSourceMap (line 30) | get dataSourceMap() {
    method constants (line 38) | get constants() {
    method constructor (line 42) | constructor(props, context) {
    method _defineDataSourceConfig (line 56) | _defineDataSourceConfig() {
    method componentDidMount (line 80) | componentDidMount() {
    method render (line 84) | render() {
  function __$$eval (line 107) | function __$$eval(expr) {
  function __$$evalArray (line 113) | function __$$evalArray(expr) {
  function __$$createChildContext (line 118) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 42) | class Test$$Page extends React.Component {
    method constants (line 45) | get constants() {
    method constructor (line 49) | constructor(props, context) {
    method componentDidUpdate (line 85) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 87) | componentWillUnmount() {}
    method __jp__init (line 89) | __jp__init() {
    method __jp__initRouter (line 93) | __jp__initRouter() {
    method __jp__initDataSource (line 103) | __jp__initDataSource() {
    method __jp__initEnv (line 107) | __jp__initEnv() {
    method __jp__initConfig (line 111) | __jp__initConfig() {
    method __jp__initUtils (line 115) | __jp__initUtils() {
    method fetchPkgs (line 123) | fetchPkgs() {
    method onPageChange (line 127) | onPageChange(pageIndex, pageSize) {
    method renderTime (line 135) | renderTime(time) {
    method renderUserName (line 139) | renderUserName(user) {
    method reload (line 143) | reload() {
    method handleResult (line 147) | handleResult() {
    method handleDetail (line 151) | handleDetail() {
    method onResultCancel (line 155) | onResultCancel() {
    method formatResult (line 161) | formatResult(item) {
    method handleDownload (line 169) | handleDownload() {
    method onFinish (line 173) | onFinish() {
    method componentDidMount (line 177) | componentDidMount() {
    method render (line 190) | render() {
  function __$$eval (line 804) | function __$$eval(expr) {
  function __$$evalArray (line 810) | function __$$evalArray(expr) {
  function __$$createChildContext (line 815) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 42) | class Test$$Page extends React.Component {
    method constants (line 45) | get constants() {
    method constructor (line 49) | constructor(props, context) {
    method componentDidUpdate (line 93) | componentDidUpdate(prevProps, prevState, snapshot) {}
    method componentWillUnmount (line 95) | componentWillUnmount() {}
    method __jp__init (line 97) | __jp__init() {
    method __jp__initRouter (line 101) | __jp__initRouter() {
    method __jp__initDataSource (line 105) | __jp__initDataSource() {
    method __jp__initEnv (line 109) | __jp__initEnv() {
    method __jp__initConfig (line 113) | __jp__initConfig() {
    method __jp__initUtils (line 117) | __jp__initUtils() {
    method setSearchItem (line 121) | setSearchItem() {
    method fetchProject (line 125) | fetchProject() {
    method handleProjectSearch (line 129) | handleProjectSearch() {
    method handleProjectChange (line 133) | handleProjectChange(id) {
    method fetchUser (line 139) | fetchUser() {
    method handleUserSearch (line 143) | handleUserSearch() {
    method handleUserChange (line 147) | handleUserChange(user) {
    method fetchPkgs (line 154) | fetchPkgs() {
    method onPageChange (line 158) | onPageChange(pageIndex, pageSize) {
    method renderTime (line 166) | renderTime(time) {
    method renderUserName (line 170) | renderUserName(user) {
    method reload (line 174) | reload() {
    method handleResult (line 178) | handleResult() {
    method handleDetail (line 182) | handleDetail() {
    method onResultCancel (line 186) | onResultCancel() {
    method formatResult (line 190) | formatResult() {
    method handleDownload (line 194) | handleDownload() {
    method onFinish (line 198) | onFinish() {
    method componentDidMount (line 202) | componentDidMount() {
    method render (line 214) | render() {
  function __$$eval (line 958) | function __$$eval(expr) {
  function __$$evalArray (line 964) | function __$$evalArray(expr) {
  function __$$createChildContext (line 969) | function __$$createChildContext(oldContext, ext) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-app/demo_11-jsslot-2/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
  function Footer (line 5) | function Footer() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
  function Logo (line 6) | function Logo({ image, text, url }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
  function getNavMenuItems (line 11) | function getNavMenuItems(menusData) {
  function getSubMenuOrItem (line 21) | function getSubMenuOrItem(item, index) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
  function BasicLayout (line 30) | function BasicLayout({ children }) {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/pages/Test/index.jsx
  class Test$$Page (line 9) | class Test$$Page extends React.Component {
    method constructor (line 10) | constructor(props, context) {
    method componentDidMount (line 20) | componentDidMount() {
    method $ (line 24) | $(refName) {
    method $$ (line 28) | $$(refName) {
    method render (line 32) | render() {

FILE: modules/code-generator/tests/fixtures/test-cases/react-module/demo1/expected/demo-project/src/utils.js
  class RefsManager (line 3) | class RefsManager {
    method constructor (line 4) | constructor() {
    method clearNullRefs (line 8) | clearNullRefs() {
    method get (line 21) | get(refName) {
    method getAll (line 30) | getAll(refName) {
    method linkRef (line 39) | linkRef(refName) {

FILE: modules/code-generator/tests/helpers/solutionHelper.ts
  function removeActualDirRecursiveSync (line 8) | function removeActualDirRecursiveSync(actualDir: string, caseFullDir: st...
  function runPrettierSync (line 12) | function runPrettierSync(files: string[], cwd: string) {
  function diffActualAndExpectedSync (line 16) | function diffActualAndExpectedSync(caseFullDir: string): string {
  function ensureShellExec (line 31) | function ensureShellExec(
  function colorizeDiffOutput (line 54) | function colorizeDiffOutput(output: string): string {
  function getSubDirectoriesSync (line 75) | function getSubDirectoriesSync(baseDir: string) {
  method toBeSameFileContents (line 84) | toBeSameFileContents(caseFullDir: string) {
  type Matchers (line 102) | interface Matchers<R> {

FILE: modules/code-generator/tests/public/cli.test.ts
  constant PROJECT_ROOT (line 5) | const PROJECT_ROOT = path.resolve(__dirname, '../..');

FILE: modules/code-generator/tests/public/solutions/icejs3-app.test.ts
  constant TEST_CASES_DIR (line 19) | const TEST_CASES_DIR = path.join(__dirname, '../../fixtures/test-cases/i...
  constant SHOULD_UPDATE_EXPECTED (line 20) | const SHOULD_UPDATE_EXPECTED = process.env.UPDATE_EXPECTED === 'true';
  function defineTest (line 24) | function defineTest(caseDirName: string) {
  function exportProject (line 52) | async function exportProject(schemaJson: IPublicTypeProjectSchema, targe...

FILE: modules/code-generator/tests/public/solutions/rax-app.test.ts
  constant TEST_CASES_DIR (line 20) | const TEST_CASES_DIR = path.join(__dirname, '../../fixtures/test-cases/r...
  constant SHOULD_UPDATE_EXPECTED (line 21) | const SHOULD_UPDATE_EXPECTED = process.env.UPDATE_EXPECTED === 'true';
  function defineTest (line 25) | function defineTest(caseDirName: string) {
  function exportProject (line 53) | async function exportProject(schemaJson: IPublicTypeProjectSchema, targe...

FILE: modules/code-generator/tests/public/solutions/react-app.test.ts
  constant TEST_CASES_DIR (line 19) | const TEST_CASES_DIR = path.join(__dirname, '../../fixtures/test-cases/r...
  constant SHOULD_UPDATE_EXPECTED (line 20) | const SHOULD_UPDATE_EXPECTED = process.env.UPDATE_EXPECTED === 'true';
  function defineTest (line 24) | function defineTest(caseDirName: string) {
  function exportProject (line 52) | async function exportProject(schemaJson: IPublicTypeProjectSchema, targe...

FILE: modules/code-generator/tests/utils/resultHelper/removeDirsFromResult.test.ts
  function listAllDirs (line 99) | function listAllDirs(result: ResultDir): string[] {

FILE: modules/code-generator/tests/utils/resultHelper/removeFilesFromResult.test.ts
  function listAllFiles (line 100) | function listAllFiles(result: ResultDir): string[] {

FILE: modules/code-generator/tests/utils/version.test.ts
  constant NO_COMPATIBLE_VERSIONS (line 3) | const NO_COMPATIBLE_VERSIONS = /no compatible versions/;

FILE: modules/material-parser/demo/component.jsx
  class Demo (line 7) | class Demo extends React.Component {
    method render (line 8) | render() {

FILE: modules/material-parser/demo/component.tsx
  type DemoProps (line 6) | interface DemoProps {

FILE: modules/material-parser/src/core/schema/types.ts
  type ComponentMeta (line 10) | type ComponentMeta = BasicSection & PropsSection & ConfigureSection;
  type PropType (line 11) | type PropType = BasicType | RequiredType | ComplexType;
  type BasicType (line 12) | type BasicType = 'array' | 'bool' | 'func' | 'number' | 'object' | 'stri...
  type ComplexType (line 13) | type ComplexType = OneOf | OneOfType | ArrayOf | ObjectOf | Shape | Exact;
  type ConfigureProp (line 14) | type ConfigureProp = {
  type BasicSection (line 22) | interface BasicSection {
  type Npm (line 34) | interface Npm {
  type PropsSection (line 43) | interface PropsSection {
  type RequiredType (line 53) | interface RequiredType {
  type OneOf (line 57) | interface OneOf {
  type OneOfType (line 63) | interface OneOfType {
  type ArrayOf (line 69) | interface ArrayOf {
  type ObjectOf (line 75) | interface ObjectOf {
  type Shape (line 81) | interface Shape {
  type Exact (line 90) | interface Exact {
  type ConfigureSection (line 99) | interface ConfigureSection {
  type ConfigureFieldProp (line 113) | interface ConfigureFieldProp {
  type ConfigureFieldSetter (line 119) | interface ConfigureFieldSetter {
  type ConfigureGroupProp (line 144) | interface ConfigureGroupProp {
  type ConfigureComponent (line 149) | interface ConfigureComponent {

FILE: modules/material-parser/src/generate.ts
  function genManifest (line 37) | async function genManifest(

FILE: modules/material-parser/src/localize.ts
  function createFakePackage (line 21) | async function createFakePackage(params: {
  function createworkDir (line 62) | async function createworkDir(tempDir?: string): Promise<string> {
  function getPkgNameAndVersion (line 78) | function getPkgNameAndVersion(pkgNameWithVersion: string): { [key: strin...
  function localize (line 93) | async function localize(options: IMaterializeOnlineOptions): Promise<{

FILE: modules/material-parser/src/parse/dynamic/index.ts
  type IComponentInfo (line 9) | interface IComponentInfo {
  function getKeys (line 30) | function getKeys(com: any) {
  function isComponent (line 38) | function isComponent(obj: any) {

FILE: modules/material-parser/src/parse/dynamic/requireInSandbox.ts
  function requireInSandbox (line 6) | function requireInSandbox(filePath: string, PropTypes: any) {

FILE: modules/material-parser/src/parse/index.ts
  type IParseArgs (line 10) | interface IParseArgs extends IMaterialScanModel {
  function isTSLike (line 21) | function isTSLike(str) {

FILE: modules/material-parser/src/parse/js/handlers/defaultPropsHandler.ts
  type NodePathType (line 5) | type NodePathType = typeof NodePath;
  function getDefaultValue (line 16) | function getDefaultValue(path: NodePathType) {
  function getStatelessPropsPath (line 53) | function getStatelessPropsPath(componentDefinition: any) {
  function getDefaultPropsPath (line 62) | function getDefaultPropsPath(componentDefinition: any) {
  function getDefaultValuesFromProps (line 84) | function getDefaultValuesFromProps(properties: any[], documentation: any...
  function defaultPropsHandler (line 115) | function defaultPropsHandler(documentation: any, componentDefinition: an...

FILE: modules/material-parser/src/parse/js/handlers/preProcessHandler.ts
  function preProcessHandler (line 1) | function preProcessHandler(documentation: any, path: any) {

FILE: modules/material-parser/src/parse/js/handlers/propTypeHandler.ts
  function isPropTypesExpression (line 33) | function isPropTypesExpression(path: any) {
  function amendPropTypes (line 41) | function amendPropTypes(getDescriptor: any, path: any, documentation, pr...
  function getDefinePropertyValuePath (line 84) | function getDefinePropertyValuePath(nodePath: any, propName: string) {
  function getPropTypeHandler (line 109) | function getPropTypeHandler(propName: string) {

FILE: modules/material-parser/src/parse/js/handlers/propTypeJsDocHandler.ts
  function getType (line 10) | function getType(type = 'void') {
  function generateRaw (line 20) | function generateRaw(params = [], returns = { type: 'void' }): string {
  function resolveDocumentation (line 25) | function resolveDocumentation(documentation) {
  function propTypeJsDocHandler (line 53) | function propTypeJsDocHandler(documentation, path) {

FILE: modules/material-parser/src/parse/js/index.ts
  function parse (line 9) | function parse(filePath: string): IMaterialParsedModel[] {

FILE: modules/material-parser/src/parse/js/resolver/checkIsIIFE.ts
  function checkIsIIFE (line 1) | function checkIsIIFE(path: any) {

FILE: modules/material-parser/src/parse/js/resolver/findAssignedMethods.ts
  function findAssignedMethods (line 7) | function findAssignedMethods(scope: any, idPath: any) {

FILE: modules/material-parser/src/parse/js/resolver/index.ts
  function ignore (line 29) | function ignore() {
  function isComponentDefinition (line 33) | function isComponentDefinition(path: any) {
  function resolveDefinition (line 42) | function resolveDefinition(definition: any) {
  function getDefinition (line 58) | function getDefinition(definition: any, cache: ICache = {}): any {
  type IMethodsPath (line 157) | interface IMethodsPath {
  function getSubComponents (line 167) | function getSubComponents(path: any, scope: any, cache: ICache) {
  function findAllExportedComponentDefinition (line 279) | function findAllExportedComponentDefinition(ast: any) {

FILE: modules/material-parser/src/parse/js/resolver/isReactComponentStaticMember.ts
  function isReactComponentStaticMember (line 6) | function isReactComponentStaticMember(methodPath: any) {

FILE: modules/material-parser/src/parse/js/resolver/isStaticMethod.ts
  function isStaticMethod (line 9) | function isStaticMethod(path: any) {

FILE: modules/material-parser/src/parse/js/resolver/resolveExportDeclaration.ts
  function resolveExportDeclaration (line 5) | function resolveExportDeclaration(path: any) {

FILE: modules/material-parser/src/parse/js/resolver/resolveHOC.ts
  function resolveHOC (line 11) | function resolveHOC(path: any): any {

FILE: modules/material-parser/src/parse/js/resolver/resolveIIFE.ts
  function resolveIIFE (line 11) | function resolveIIFE(path: any) {

FILE: modules/material-parser/src/parse/js/resolver/resolveImport.ts
  function isImportLike (line 8) | function isImportLike(path) {
  function isRequireLike (line 17) | function isRequireLike(path: any) {
  function resolveToImport (line 30) | function resolveToImport(initialPath) {
  function getPath (line 77) | function getPath(path: any, name: any) {
  function resolveImport (line 101) | function resolveImport(path: any, callback: any) {

FILE: modules/material-parser/src/parse/js/resolver/resolveTranspiledClass.ts
  function resolveTranspiledClass (line 8) | function resolveTranspiledClass(path: any) {

FILE: modules/material-parser/src/parse/js/utils/cache.ts
  type ICache (line 1) | interface ICache {
  function set (line 7) | function set(scope: string, name: string, value: any) {
  function get (line 12) | function get(scope: string, name: string) {
  function has (line 16) | function has(scope: string, name: string) {

FILE: modules/material-parser/src/parse/js/utils/evaluate.ts
  function isInfinity (line 5) | function isInfinity(path) {
  function wrapValue (line 9) | function wrapValue(value, confident = true) {
  function evaluate (line 16) | function evaluate(path: any) {

FILE: modules/material-parser/src/parse/js/utils/findJSFilePath.ts
  function findJSFilePath (line 4) | function findJSFilePath(fileBasePath: string): string {

FILE: modules/material-parser/src/parse/js/utils/getComposedPath.ts
  function getComposedPropTypesPath (line 15) | function getComposedPropTypesPath(documentation, propName, p) {

FILE: modules/material-parser/src/parse/js/utils/getRoot.ts
  function getRoot (line 1) | function getRoot(path: any) {

FILE: modules/material-parser/src/parse/js/utils/makeProxy.ts
  function makeProxy (line 1) | function makeProxy(target: { [name: string]: any }, meta: any = {}): any {

FILE: modules/material-parser/src/parse/transform.ts
  function transformType (line 7) | function transformType(itemType: any) {
  function combineOneOfValues (line 201) | function combineOneOfValues(propType) {
  function transformItem (line 253) | function transformItem(name: string, item: any) {

FILE: modules/material-parser/src/parse/ts/generateDTS.ts
  function generateDTS (line 15) | function generateDTS({

FILE: modules/material-parser/src/parse/ts/index.ts
  type ExtendedType (line 15) | type ExtendedType = ts.Type & {
  function getNextParentIds (line 20) | function getNextParentIds(parentIds: number[], type: ts.Type) {
  function getSymbolName (line 29) | function getSymbolName(symbol: ts.Symbol) {
  function getFunctionParams (line 39) | function getFunctionParams(parameters: any[] = [], checker, parentIds, t...
  function getFunctionReturns (line 51) | function getFunctionReturns(node: any, checker, parentIds, type) {
  function isComplexType (line 90) | function isComplexType(type) {
  function getDocgenTypeHelper (line 108) | function getDocgenTypeHelper(
  class MyParser (line 391) | class MyParser extends Parser {
    method getDocgenType (line 392) | getDocgenType(propType: ts.Type): any {
    method extractPropsFromTypeIfStatelessComponent (line 405) | public extractPropsFromTypeIfStatelessComponent(type: ts.Type): ts.Sym...
  type SymbolWithMeta (line 460) | interface SymbolWithMeta extends ts.Symbol {
  function getComponentName (line 467) | function getComponentName(exportName, displayName) {
  function parseTS (line 479) | function parseTS(filePath: string, args: IParseArgs): ComponentDoc[] {

FILE: modules/material-parser/src/scan.ts
  function scan (line 13) | async function scan(

FILE: modules/material-parser/src/types/Basic.ts
  type Json (line 1) | interface Json {
  type JsonArray (line 4) | type JsonArray = Array<string | number | boolean | Date | Json | JsonArr...
  type Expand (line 5) | type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;

FILE: modules/material-parser/src/types/ChannelType.ts
  type ChannelType (line 4) | enum ChannelType {

FILE: modules/material-parser/src/types/DSLType.ts
  type DSLType (line 4) | type DSLType = 'react' | 'rax';

FILE: modules/material-parser/src/types/IAccesser.ts
  type IAccesser (line 7) | interface IAccesser {

FILE: modules/material-parser/src/types/IExtensionConfigManifest.ts
  type IExtensionConfigManifest (line 6) | type IExtensionConfigManifest = (params: {

FILE: modules/material-parser/src/types/IMaterialParsedModel.ts
  type IPropType (line 5) | interface IPropType {
  type IPropTypes (line 12) | type IPropTypes = IPropType[];
  type IMaterialParsedModel (line 14) | interface IMaterialParsedModel {

FILE: modules/material-parser/src/types/IMaterialScanModel.ts
  type IMaterialScanModel (line 4) | interface IMaterialScanModel {

FILE: modules/material-parser/src/types/IMaterializeOptions.ts
  type IMaterializeCommonOptions (line 7) | interface IMaterializeCommonOptions {
  type IMaterializeLocalOptions (line 22) | interface IMaterializeLocalOptions extends IMaterializeCommonOptions {
  type IMaterializeOnlineCommonOptions (line 52) | interface IMaterializeOnlineCommonOptions {
  type IMaterializeOnlineEntryOptions (line 69) | interface IMaterializeOnlineEntryOptions {
  type IMaterializeOnlinePackageAndVersionOptions (line 78) | interface IMaterializeOnlinePackageAndVersionOptions {
  type IMaterializeOnlineOptions (line 102) | type IMaterializeOnlineOptions = Expand<
  type IMaterializeOptions (line 111) | type IMaterializeOptions = Expand<IMaterializeLocalOptions | IMaterializ...
  type IInternalMaterializeOptions (line 113) | type IInternalMaterializeOptions = Expand<

FILE: modules/material-parser/src/types/Meta.ts
  type IFileMeta (line 3) | interface IFileMeta {
  type IDefinitionMeta (line 9) | interface IDefinitionMeta {

FILE: modules/material-parser/src/utils.ts
  function isNPMInstalled (line 8) | async function isNPMInstalled(args: {
  function isNPMModuleInstalled (line 16) | async function isNPMModuleInstalled(
  function install (line 24) | async function install(args: { workDir: string; moduleDir: string; npmCl...
  function installModule (line 34) | async function installModule(
  function installTypeDTS (line 47) | function installTypeDTS(args: {
  function installTypeScript (line 56) | async function installTypeScript(args: {
  function installPeerAndDevDeps (line 66) | async function installPeerAndDevDeps(args: {
  function syncTypeModules (line 93) | async function syncTypeModules(args: {
  function resolvePkgJson (line 107) | async function resolvePkgJson(pkgJsonPath: string): Promise<{ [k: string...
  function loadFile (line 113) | function loadFile(filePath: string): string {
  function isPrimitive (line 121) | function isPrimitive(val) {
  function isEvaluable (line 125) | function isEvaluable(value) {
  function safeEval (line 135) | function safeEval(value: any) {

FILE: modules/material-parser/src/validate/index.ts
  function validateSchema (line 8) | function validateSchema(json: Json) {

FILE: modules/material-parser/test/fixtures/dts-component/index.d.ts
  type WhaleLayoutProps (line 6) | interface WhaleLayoutProps {
  class WhaleLayout (line 166) | class WhaleLayout extends React.Component<WhaleLayoutProps, any> { }

FILE: modules/material-parser/test/fixtures/dts-component/src/index.jsx
  class WhaleTelephone (line 14) | class WhaleTelephone extends React.Component {
    method constructor (line 36) | constructor(props) {
    method componentDidMount (line 44) | componentDidMount() {
    method componentWillUnmount (line 51) | componentWillUnmount() {
    method render (line 91) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/amManifest.js
  function _update (line 4) | function _update(Nygma, node) {
  method didMount (line 74) | didMount (props) {
  method didUpdate (line 81) | didUpdate (Nygma, node, args) {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeBlank/index.js
  function AIMakeBlank (line 20) | function AIMakeBlank() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/IconFont.js
  function createFromIconfont (line 13) | function createFromIconfont(options) {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeIcon/index.js
  function AIMakeIcon (line 19) | function AIMakeIcon() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeImage/index.js
  function AIMakeImage (line 18) | function AIMakeImage() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeLink/index.js
  function AIMakeLink (line 21) | function AIMakeLink() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakePlaceholder/index.js
  function AIMakePlaceholder (line 17) | function AIMakePlaceholder() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/AIMakeText/index.js
  function AIMakeText (line 20) | function AIMakeText() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/Root/index.js
  function Root (line 15) | function Root() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCBackgroundProps.js
  function _class (line 29) | function _class() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCBoxModelProps.js
  function _class (line 40) | function _class() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCFlexLayoutProps.js
  function _class (line 32) | function _class() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCLayoutProps.js
  function _class (line 31) | function _class() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/es/basic/utils/HOCTextProps.js
  function _class (line 31) | function _class() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/amManifest.js
  function _update (line 5) | function _update(Nygma, node) {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeBlank/index.js
  class AIMakeBlank (line 9) | class AIMakeBlank extends Component {
    method render (line 29) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/IconFont.js
  function createFromIconfont (line 8) | function createFromIconfont(options) {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeIcon/index.js
  class AIMakeIcon (line 7) | class AIMakeIcon extends Component {
    method render (line 28) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeImage/index.js
  class AIMakeImage (line 6) | class AIMakeImage extends Component {
    method render (line 16) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeLink/index.js
  class AIMakeLink (line 9) | class AIMakeLink extends Component {
    method render (line 27) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakePlaceholder/index.js
  class AIMakePlaceholder (line 7) | class AIMakePlaceholder extends Component {
    method render (line 23) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/AIMakeText/index.js
  class AIMakeText (line 9) | class AIMakeText extends Component {
    method render (line 43) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/Root/index.js
  class Root (line 4) | class Root extends React.Component {
    method render (line 22) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCBackgroundProps.js
  method render (line 32) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCBoxModelProps.js
  method render (line 54) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCFlexLayoutProps.js
  method render (line 43) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCLayoutProps.js
  method render (line 38) | render() {

FILE: modules/material-parser/test/fixtures/multiple-exported-component/src/basic/utils/HOCTextProps.js
  method render (line 38) | render() {

FILE: modules/material-parser/test/fixtures/rax-component/src/index.tsx
  type Props (line 7) | interface Props {

FILE: modules/material-parser/test/fixtures/single-exported-component/es/index.js
  function Demo (line 19) | function Demo() {

FILE: modules/material-parser/test/fixtures/ts-component/src/main-module.tsx
  type Gender (line 8) | enum Gender {
  type Obj (line 13) | interface Obj {
  type Func (line 18) | type Func = (a: string) => JSX.Element;
  type Union (line 19) | type Union =
  type Props (line 26) | interface Props {
  type AppProps (line 85) | interface AppProps extends React.FC<Props> {
  method func (line 98) | func(a: string) {

FILE: modules/material-parser/test/fixtures/ts-component/src/sub-module.tsx
  type Props (line 3) | interface Props {
  class SubModule (line 7) | class SubModule extends React.Component<Props> {
    method render (line 12) | render() {

FILE: modules/material-parser/test/fixtures/ts-component2/src/empty.tsx
  type DefaultEmptyImg (line 4) | interface DefaultEmptyImg {

FILE: modules/material-parser/test/fixtures/ts-component2/src/index.tsx
  type EmptyProps (line 5) | interface EmptyProps extends React.HTMLAttributes<HTMLDivElement> {
  type EmptyType (line 16) | interface EmptyType extends React.FC<EmptyProps> {

FILE: modules/material-parser/test/fixtures/without-display-name/index.js
  method render (line 9) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/border-container.tsx
  class BorderContainerInstance (line 11) | class BorderContainerInstance extends PureComponent<{
    method render (line 18) | render() {
  function getTitle (line 40) | function getTitle(title: string | IPublicTypeI18nData | ReactElement) {
  class BorderContainer (line 50) | class BorderContainer extends Component<{
    method scale (line 57) | get scale() {
    method scrollX (line 61) | get scrollX() {
    method scrollY (line 65) | get scrollY() {
    method componentDidMount (line 69) | componentDidMount() {
    method render (line 81) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx
  class BorderDetectingInstance (line 9) | class BorderDetectingInstance extends PureComponent<{
    method render (line 17) | render() {
  class BorderDetecting (line 47) | class BorderDetecting extends Component<{ host: BuiltinSimulatorHost }> {
    method scale (line 48) | get scale() {
    method scrollX (line 52) | get scrollX() {
    method scrollY (line 56) | get scrollY() {
    method current (line 60) | get current() {
    method render (line 75) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx
  class BoxResizing (line 12) | class BoxResizing extends Component<{ host: BuiltinSimulatorHost }> {
    method host (line 15) | get host(): BuiltinSimulatorHost {
    method dragging (line 19) | get dragging(): boolean {
    method selecting (line 23) | get selecting() {
    method componentDidUpdate (line 32) | componentDidUpdate() {
    method render (line 37) | render() {
  class BoxResizingForNode (line 58) | class BoxResizingForNode extends Component<{ host: BuiltinSimulatorHost;...
    method host (line 61) | get host(): BuiltinSimulatorHost {
    method dragging (line 65) | get dragging(): boolean {
    method instances (line 69) | get instances() {
    method render (line 73) | render() {
  class BoxResizingInstance (line 101) | class BoxResizingInstance extends Component<{
    method constructor (line 122) | constructor(props: any) {
    method componentWillUnmount (line 127) | componentWillUnmount() {
    method componentDidMount (line 134) | componentDidMount() {
    method willBind (line 192) | willBind() {
    method render (line 236) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx
  class BorderSelectingInstance (line 21) | class BorderSelectingInstance extends Component<{
    method componentWillUnmount (line 26) | componentWillUnmount() {
    method render (line 30) | render() {
  class Toolbar (line 67) | @observer
    method render (line 69) | render() {
  function createAction (line 123) | function createAction(content: ReactNode | ComponentType<any> | IPublicT...
  class BorderSelectingForNode (line 159) | class BorderSelectingForNode extends Component<{ host: ISimulatorHost; n...
    method host (line 160) | get host(): ISimulatorHost {
    method dragging (line 164) | get dragging(): boolean {
    method instances (line 168) | get instances() {
    method render (line 172) | render() {
  class BorderSelecting (line 198) | class BorderSelecting extends Component<{ host: BuiltinSimulatorHost }> {
    method host (line 199) | get host(): BuiltinSimulatorHost {
    method dragging (line 203) | get dragging(): boolean {
    method selecting (line 207) | get selecting() {
    method render (line 216) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/drag-resize-engine.ts
  class DragResizeEngine (line 8) | class DragResizeEngine {
    method constructor (line 15) | constructor(designer: Designer) {
    method isDragResizing (line 20) | isDragResizing() {
    method from (line 30) | from(shell: Element, direction: string, boost: (e: MouseEvent) => any) {
    method onResizeStart (line 96) | onResizeStart(func: (e: MouseEvent, direction: string, node: any) => a...
    method onResize (line 103) | onResize(
    method onResizeEnd (line 112) | onResizeEnd(func: (e: MouseEvent, direction: string, node: any) => any) {
    method getMasterSensors (line 119) | private getMasterSensors(): ISimulatorHost[] {

FILE: packages/designer/src/builtin-simulator/bem-tools/index.tsx
  class BemTools (line 13) | class BemTools extends Component<{ host: BuiltinSimulatorHost }> {
    method render (line 14) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/insertion.tsx
  type InsertionData (line 14) | interface InsertionData {
  function processChildrenDetail (line 26) | function processChildrenDetail(sim: ISimulatorHost, container: INode, de...
  function processDetail (line 97) | function processDetail({ target, detail, document }: DropLocation): Inse...
  class InsertionView (line 116) | class InsertionView extends Component<{ host: BuiltinSimulatorHost }> {
    method render (line 117) | render() {

FILE: packages/designer/src/builtin-simulator/bem-tools/manager.ts
  type BemToolsData (line 6) | type BemToolsData = {
  class BemToolsManager (line 11) | class BemToolsManager {
    method constructor (line 16) | constructor(designer: Designer) {
    method addBemTools (line 20) | addBemTools(toolsData: BemToolsData) {
    method removeBemTools (line 27) | removeBemTools(name: string) {
    method getAllBemTools (line 34) | getAllBemTools() {

FILE: packages/designer/src/builtin-simulator/create-simulator.ts
  function createSimulator (line 16) | function createSimulator(

FILE: packages/designer/src/builtin-simulator/host-view.tsx
  type SimulatorHostProps (line 16) | type SimulatorHostProps = BuiltinSimulatorProps & {
  class BuiltinSimulatorHostView (line 21) | class BuiltinSimulatorHostView extends Component<SimulatorHostProps> {
    method constructor (line 24) | constructor(props: any) {
    method shouldComponentUpdate (line 32) | shouldComponentUpdate(nextProps: BuiltinSimulatorProps) {
    method render (line 37) | render() {
  class Canvas (line 47) | @observer
    method render (line 49) | render() {
  class Content (line 70) | @observer
    method componentDidMount (line 78) | componentDidMount() {
    method componentWillUnmount (line 93) | componentWillUnmount() {
    method render (line 97) | render() {

FILE: packages/designer/src/builtin-simulator/host.ts
  type LibraryItem (line 78) | type LibraryItem = IPublicTypePackage & {
  type DeviceStyleProps (line 85) | interface DeviceStyleProps {
  type BuiltinSimulatorProps (line 90) | interface BuiltinSimulatorProps {
  class BuiltinSimulatorHost (line 142) | class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorPro...
    method currentDocument (line 166) | get currentDocument() {
    method renderEnv (line 170) | get renderEnv(): string {
    method device (line 174) | get device(): string {
    method locale (line 178) | get locale(): string {
    method deviceClassName (line 182) | get deviceClassName(): string | undefined {
    method designMode (line 186) | get designMode(): 'live' | 'design' | 'preview' {
    method requestHandlersMap (line 192) | get requestHandlersMap(): any {
    method thisRequiredInJSE (line 198) | get thisRequiredInJSE(): boolean {
    method enableStrictNotFoundMode (line 202) | get enableStrictNotFoundMode(): any {
    method notFoundComponent (line 206) | get notFoundComponent(): any {
    method faultComponent (line 210) | get faultComponent(): any {
    method faultComponentMap (line 214) | get faultComponentMap(): any {
    method componentsAsset (line 218) | get componentsAsset(): Asset | undefined {
    method theme (line 222) | get theme(): Asset | undefined {
    method componentsMap (line 226) | get componentsMap() {
    method deviceStyle (line 231) | get deviceStyle(): DeviceStyleProps | undefined {
    method contentWindow (line 239) | get contentWindow() {
    method contentDocument (line 247) | get contentDocument() {
    method renderer (line 253) | get renderer() {
    method sensorAvailable (line 280) | get sensorAvailable(): boolean {
    method constructor (line 286) | constructor(project: Project, designer: Designer) {
    method stopAutoRepaintNode (line 318) | stopAutoRepaintNode() {
    method enableAutoRepaintNode (line 322) | enableAutoRepaintNode() {
    method setProps (line 329) | setProps(props: BuiltinSimulatorProps) {
    method set (line 333) | set(key: string, value: any) {
    method get (line 340) | get(key: string): any {
    method connect (line 353) | connect(
    method reaction (line 361) | reaction(expression: (reaction: IReactionPublic) => unknown, effect: (...
    method autorun (line 366) | autorun(effect: (reaction: IReactionPublic) => void, options?: IReacti...
    method purge (line 370) | purge(): void {
    method mountViewport (line 375) | mountViewport(viewport: HTMLElement | null) {
    method buildLibrary (line 396) | buildLibrary(library?: LibraryItem[]) {
    method rerender (line 431) | rerender() {
    method mountContentFrame (line 436) | async mountContentFrame(iframe: HTMLIFrameElement | null): Promise<voi...
    method setupComponents (line 509) | async setupComponents(library: LibraryItem[]) {
    method setupEvents (line 521) | setupEvents() {
    method postEvent (line 531) | postEvent(eventName: string, ...data: any[]) {
    method setupDragAndClick (line 535) | setupDragAndClick() {
    method setupDetecting (line 717) | setupDetecting() {
    method setupLiveEditing (line 765) | setupLiveEditing() {
    method setSuspense (line 811) | setSuspense(/** _suspended: boolean */) {
    method setupContextMenu (line 830) | setupContextMenu() {
    method generateComponentMetadata (line 868) | generateComponentMetadata(componentName: string): IPublicTypeComponent...
    method getComponent (line 898) | getComponent(componentName: string): Component | null {
    method createComponent (line 902) | createComponent(/** _schema: IPublicTypeComponentSchema */): Component...
    method setInstance (line 907) | setInstance(docId: string, id: string, instances: IPublicTypeComponent...
    method getComponentInstances (line 921) | getComponentInstances(node: INode, context?: IPublicTypeNodeInstance):...
    method getComponentContext (line 941) | getComponentContext(/* node: Node */): any {
    method getClosestNodeInstance (line 948) | getClosestNodeInstance(
    method computeRect (line 958) | computeRect(node: INode): IPublicTypeRect | null {
    method computeComponentInstanceRect (line 969) | computeComponentInstanceRect(instance: IPublicTypeComponentInstance, s...
    method findDOMNodes (line 1035) | findDOMNodes(instance: IPublicTypeComponentInstance, selector?: string...
    method getNodeInstanceFromElement (line 1054) | getNodeInstanceFromElement(target: Element | null): IPublicTypeNodeIns...
    method scrollToNode (line 1076) | scrollToNode(node: Node, detail?: any /* , tryTimes = 0 */) {
    method setNativeSelection (line 1107) | setNativeSelection(enableFlag: boolean) {
    method setDraggingState (line 1114) | setDraggingState(state: boolean) {
    method setCopyState (line 1121) | setCopyState(state: boolean) {
    method clearState (line 1128) | clearState() {
    method fixEvent (line 1135) | fixEvent(e: ILocateEvent): ILocateEvent {
    method isEnter (line 1166) | isEnter(e: ILocateEvent): boolean {
    method deactiveSensor (line 1179) | deactiveSensor() {
    method locate (line 1189) | locate(e: ILocateEvent): any {
    method getDropContainer (line 1386) | getDropContainer(e: ILocateEvent): DropContainer | null {
    method isAcceptable (line 1487) | isAcceptable(): boolean {
    method handleAccept (line 1494) | handleAccept({ container }: DropContainer, e: ILocateEvent): boolean {
    method getNearByContainer (line 1517) | getNearByContainer(
  function isHTMLTag (line 1555) | function isHTMLTag(name: string) {
  function isPointInRect (line 1559) | function isPointInRect(point: CanvasPoint, rect: IPublicTypeRect) {
  function distanceToRect (line 1568) | function distanceToRect(point: CanvasPoint, rect: IPublicTypeRect) {
  function distanceToEdge (line 1581) | function distanceToEdge(point: CanvasPoint, rect: IPublicTypeRect) {
  function isNearAfter (line 1591) | function isNearAfter(point: CanvasPoint, rect: IPublicTypeRect, inline: ...
  function getMatched (line 1601) | function getMatched(elements: Array<Element | Text>, selector: string): ...

FILE: packages/designer/src/builtin-simulator/live-editing/live-editing.ts
  constant EDITOR_KEY (line 5) | const EDITOR_KEY = 'data-setter-prop';
  function getSetterPropElement (line 7) | function getSetterPropElement(ele: HTMLElement, root: HTMLElement): HTML...
  function defaultSaveContent (line 15) | function defaultSaveContent(content: string, prop: Prop) {
  type EditingTarget (line 19) | interface EditingTarget {
  function addLiveEditingSaveHandler (line 26) | function addLiveEditingSaveHandler(handler: SaveHandler) {
  function clearLiveEditingSaveHandler (line 29) | function clearLiveEditingSaveHandler() {
  function addLiveEditingSpecificRule (line 34) | function addLiveEditingSpecificRule(rule: SpecificRule) {
  function clearLiveEditingSpecificRule (line 37) | function clearLiveEditingSpecificRule() {
  class LiveEditing (line 41) | class LiveEditing {
    method apply (line 54) | apply(target: EditingTarget) {
    method editing (line 168) | get editing() {
    method saveAndDispose (line 172) | saveAndDispose() {
    method dispose (line 180) | dispose() {
  type SpecificRule (line 189) | type SpecificRule = (target: EditingTarget) => (IPublicTypeLiveTextEditi...
  type SaveHandler (line 193) | interface SaveHandler {
  function setCaret (line 198) | function setCaret(event: MouseEvent) {
  function selectRange (line 208) | function selectRange(doc: Document, range: Range) {
  function queryPropElement (line 216) | function queryPropElement(rootElement: HTMLElement, targetElement: HTMLE...

FILE: packages/designer/src/builtin-simulator/node-selector/index.tsx
  type IProps (line 11) | interface IProps {
  type IState (line 15) | interface IState {
  type UnionNode (line 19) | type UnionNode = INode | null;
  class InstanceNodeSelector (line 22) | class InstanceNodeSelector extends React.Component<IProps, IState> {
    method componentDidMount (line 27) | componentDidMount() {
    method render (line 124) | render() {

FILE: packages/designer/src/builtin-simulator/renderer.ts
  type BuiltinSimulatorRenderer (line 4) | type BuiltinSimulatorRenderer = IPublicTypeSimulatorRenderer<Component, ...
  function isSimulatorRenderer (line 6) | function isSimulatorRenderer(obj: any): obj is BuiltinSimulatorRenderer {

FILE: packages/designer/src/builtin-simulator/resource-consumer.ts
  constant UNSET (line 5) | const UNSET = Symbol('unset');
  type MasterProvider (line 6) | type MasterProvider = (master: BuiltinSimulatorHost) => any;
  type RendererConsumer (line 7) | type RendererConsumer<T> = (renderer: BuiltinSimulatorRenderer, data: T)...
  class ResourceConsumer (line 21) | class ResourceConsumer<T = any> {
    method constructor (line 34) | constructor(provider: () => T, private consumer?: RendererConsumer<T>) {
    method consume (line 41) | consume(consumerOrRenderer: BuiltinSimulatorRenderer | ((data: T) => a...
    method dispose (line 71) | dispose() {
    method waitFirstConsume (line 81) | waitFirstConsume(): Promise<any> {

FILE: packages/designer/src/builtin-simulator/utils/parse-metadata.ts
  type LowcodeCheckType (line 19) | interface LowcodeCheckType {
  function makeRequired (line 28) | function makeRequired(propType: any, lowcodeType: string | object): Lowc...
  function define (line 45) | function define(propType: any = PropTypes.any, lowcodeType: string | obj...
  function parseProps (line 140) | function parseProps(component: any): IPublicTypePropConfig[] {
  function parseMetadata (line 214) | function parseMetadata(component: any): any {

FILE: packages/designer/src/builtin-simulator/utils/path.ts
  function isPackagePath (line 5) | function isPackagePath(path: string): boolean {
  function toTitleCase (line 13) | function toTitleCase(s: string): string {
  function generateComponentName (line 24) | function generateComponentName(path: string): string {
  function getNormalizedImportPath (line 36) | function getNormalizedImportPath(path: string): string {
  function makeRelativePath (line 62) | function makeRelativePath(toPath: string, fromPath: string) {
  function normalizeArray (line 101) | function normalizeArray(parts: string[], allowAboveRoot: boolean) {
  function normalize (line 125) | function normalize(path: string): string {
  function resolveAbsoluatePath (line 142) | function resolveAbsoluatePath(path: string, base: string): string {
  function joinPath (line 154) | function joinPath(...segments: string[]) {
  function removeVersion (line 168) | function removeVersion(path: string): string {

FILE: packages/designer/src/builtin-simulator/utils/throttle.ts
  function throttle (line 4) | function throttle(func: Function, delay: number) {

FILE: packages/designer/src/builtin-simulator/viewport.ts
  class Viewport (line 5) | class Viewport implements IViewport {
    method bounds (line 10) | get bounds(): DOMRect {
    method contentBounds (line 21) | get contentBounds(): DOMRect {
    method constructor (line 28) | constructor() {
    method mount (line 32) | mount(viewportElement: HTMLElement | null) {
    method touch (line 40) | touch() {
    method height (line 46) | get height(): number {
    method height (line 53) | set height(newHeight: number) {
    method width (line 61) | get width(): number {
    method width (line 68) | set width(newWidth: number) {
    method scale (line 81) | get scale(): number {
    method scale (line 85) | set scale(newScale: number) {
    method contentHeight (line 99) | get contentHeight(): number | AutoFit {
    method contentHeight (line 103) | set contentHeight(newContentHeight: number | AutoFit) {
    method contentWidth (line 107) | get contentWidth(): number | AutoFit {
    method contentWidth (line 111) | set contentWidth(val: number | AutoFit) {
    method scrollX (line 119) | get scrollX() {
    method scrollY (line 123) | get scrollY() {
    method scrollTarget (line 132) | get scrollTarget(): ScrollTarget | undefined {
    method scrolling (line 138) | get scrolling(): boolean {
    method setScrollTarget (line 142) | setScrollTarget(target: Window) {
    method toGlobalPoint (line 163) | toGlobalPoint(point: Point): Point {
    method toLocalPoint (line 175) | toLocalPoint(point: Point): Point {

FILE: packages/designer/src/component-actions.ts
  function deduplicateRef (line 13) | function deduplicateRef(node: IPublicModelNode | null | undefined) {
  class ComponentActions (line 21) | class ComponentActions {
    method action (line 31) | action(node: IPublicModelNode) {
    method action (line 43) | action(node: IPublicModelNode) {
    method action (line 59) | action(node: IPublicModelNode) {
    method action (line 92) | action(node: IPublicModelNode) {
    method action (line 108) | action(node: IPublicModelNode) {
    method constructor (line 120) | constructor() {
    method removeBuiltinComponentAction (line 125) | removeBuiltinComponentAction(name: string) {
    method addBuiltinComponentAction (line 131) | addBuiltinComponentAction(action: IPublicTypeComponentAction) {
    method modifyBuiltinComponentAction (line 135) | modifyBuiltinComponentAction(
    method registerMetadataTransducer (line 145) | registerMetadataTransducer(
    method getRegisteredMetadataTransducers (line 160) | getRegisteredMetadataTransducers(): IPublicTypeMetadataTransducer[] {

FILE: packages/designer/src/component-meta.ts
  function ensureAList (line 27) | function ensureAList(list?: string | string[]): string[] | null {
  function buildFilter (line 43) | function buildFilter(rule?: string | string[] | RegExp | IPublicTypeNest...
  type IComponentMeta (line 64) | interface IComponentMeta extends IPublicModelComponentMeta<INode> {
  class ComponentMeta (line 76) | class ComponentMeta implements IComponentMeta {
    method npm (line 83) | get npm() {
    method npm (line 87) | set npm(_npm: any) {
    method componentName (line 93) | get componentName(): string {
    method isContainer (line 99) | get isContainer(): boolean {
    method isMinimalRenderUnit (line 103) | get isMinimalRenderUnit(): boolean {
    method isModal (line 109) | get isModal(): boolean {
    method descriptor (line 115) | get descriptor(): string | undefined {
    method rootSelector (line 121) | get rootSelector(): string | undefined {
    method configure (line 127) | get configure(): IPublicTypeFieldConfig[] {
    method liveTextEditing (line 134) | get liveTextEditing() {
    method isTopFixed (line 140) | get isTopFixed(): boolean {
    method title (line 152) | get title(): string | IPublicTypeI18nData | ReactElement {
    method icon (line 161) | get icon() {
    method acceptable (line 173) | get acceptable(): boolean {
    method advanced (line 177) | get advanced(): IPublicTypeAdvanced {
    method constructor (line 187) | constructor(readonly designer: Designer, metadata: IPublicTypeComponen...
    method setNpm (line 191) | setNpm(info: IPublicTypeNpmInfo) {
    method parseMetadata (line 197) | private parseMetadata(metadata: IPublicTypeComponentMetadata) {
    method refreshMetadata (line 285) | refreshMetadata() {
    method transformMetadata (line 289) | private transformMetadata(
    method isRootComponent (line 307) | isRootComponent(includeBlock = true): boolean {
    method availableActions (line 315) | get availableActions() {
    method setMetadata (line 335) | setMetadata(metadata: IPublicTypeComponentMetadata) {
    method getMetadata (line 339) | getMetadata(): IPublicTypeTransformedComponentMetadata {
    method checkNestingUp (line 343) | checkNestingUp(my: INode | IPublicTypeNodeData, parent: INode) {
    method checkNestingDown (line 354) | checkNestingDown(my: INode, target: INode | IPublicTypeNodeSchema | IP...
    method onMetadataChange (line 369) | onMetadataChange(fn: (args: any) => void): IPublicTypeDisposable {
  function isComponentMeta (line 378) | function isComponentMeta(obj: any): obj is ComponentMeta {
  function preprocessMetadata (line 382) | function preprocessMetadata(metadata: IPublicTypeComponentMetadata): IPu...

FILE: packages/designer/src/context-menu-actions.ts
  type IContextMenuActions (line 8) | interface IContextMenuActions {
  class GlobalContextMenuActions (line 22) | class GlobalContextMenuActions {
    method constructor (line 29) | constructor() {
    method initEvent (line 96) | initEvent() {
    method registerContextMenuActions (line 112) | registerContextMenuActions(contextMenu: ContextMenuActions) {
  class ContextMenuActions (line 119) | class ContextMenuActions implements IContextMenuActions {
    method constructor (line 130) | constructor(designer: IDesigner) {
    method initEvent (line 194) | initEvent() {
    method addMenuAction (line 216) | addMenuAction(action: IPublicTypeContextMenuAction) {
    method removeMenuAction (line 223) | removeMenuAction(name: string) {
    method adjustMenuLayout (line 230) | adjustMenuLayout(fn: (actions: IPublicTypeContextMenuItem[]) => IPubli...

FILE: packages/designer/src/designer/active-tracker.ts
  type IActiveTracker (line 9) | interface IActiveTracker extends Omit< IPublicModelActiveTracker, 'track...
  type ActiveTarget (line 17) | interface ActiveTarget extends Omit< IPublicTypeActiveTarget, 'node' > {
  class ActiveTracker (line 21) | class ActiveTracker implements IActiveTracker {
    method track (line 26) | track(originalTarget: ActiveTarget | INode) {
    method currentNode (line 35) | get currentNode() {
    method detail (line 39) | get detail() {
    method intance (line 47) | get intance() {
    method instance (line 51) | get instance() {
    method onChange (line 55) | onChange(fn: (target: ActiveTarget) => void): () => void {

FILE: packages/designer/src/designer/clipboard.ts
  function getDataFromPasteEvent (line 3) | function getDataFromPasteEvent(event: ClipboardEvent) {
  type IClipboard (line 28) | interface IClipboard extends IPublicModelClipboard {
  class Clipboard (line 34) | class Clipboard implements IClipboard {
    method constructor (line 39) | constructor() {
    method isCopyPasteEvent (line 43) | isCopyPasteEvent(e: Event) {
    method isCopyPaster (line 47) | private isCopyPaster(el: any) {
    method initCopyPaster (line 51) | initCopyPaster(el: HTMLTextAreaElement) {
    method injectCopyPaster (line 70) | injectCopyPaster(document: Document) {
    method setData (line 90) | setData(data: any): void {
    method waitPasteData (line 102) | waitPasteData(keyboardEvent: KeyboardEvent, cb: (data: any, e: Clipboa...

FILE: packages/designer/src/designer/designer-view.tsx
  type IProps (line 8) | type IProps = DesignerProps & {
  class DesignerView (line 12) | class DesignerView extends Component<IProps> {
    method constructor (line 16) | constructor(props: IProps) {
    method shouldComponentUpdate (line 28) | shouldComponentUpdate(nextProps: DesignerProps) {
    method componentDidMount (line 41) | componentDidMount() {
    method UNSAFE_componentWillMount (line 49) | UNSAFE_componentWillMount() {
    method render (line 53) | render() {

FILE: packages/designer/src/designer/designer.ts
  type DesignerProps (line 39) | interface DesignerProps {
  type IDesigner (line 63) | interface IDesigner {
  class Designer (line 123) | class Designer implements IDesigner {
    method currentDocument (line 164) | get currentDocument() {
    method currentHistory (line 168) | get currentHistory() {
    method currentSelection (line 172) | get currentSelection() {
    method constructor (line 176) | constructor(props: DesignerProps) {
    method postEvent (line 303) | postEvent(event: string, ...args: any[]) {
    method dropLocation (line 307) | get dropLocation() {
    method createLocation (line 314) | createLocation(locationData: IPublicTypeLocationData<INode>): DropLoca...
    method clearLocation (line 331) | clearLocation() {
    method createScroller (line 339) | createScroller(scrollable: IPublicTypeScrollable): IPublicModelScroller {
    method createOffsetObserver (line 343) | createOffsetObserver(nodeInstance: INodeSelector): OffsetObserver | nu...
    method clearOobxList (line 352) | private clearOobxList(force?: boolean) {
    method touchOffsetObserver (line 363) | touchOffsetObserver() {
    method createSettingEntry (line 368) | createSettingEntry(nodes: INode[]): ISettingTopEntry {
    method getSuitableInsertion (line 376) | getSuitableInsertion(
    method setProps (line 414) | setProps(nextProps: DesignerProps) {
    method loadIncrementalAssets (line 460) | async loadIncrementalAssets(incrementalAssets: IPublicTypeAssetsJson):...
    method refreshComponentMetasMap (line 483) | refreshComponentMetasMap() {
    method get (line 487) | get(key: string): any {
    method simulatorComponent (line 491) | get simulatorComponent(): ComponentType<any> | undefined {
    method simulatorProps (line 495) | get simulatorProps(): Record<string, any> {
    method projectSimulatorProps (line 505) | get projectSimulatorProps(): any {
    method suspensed (line 517) | get suspensed(): boolean {
    method suspensed (line 521) | set suspensed(flag: boolean) {
    method schema (line 529) | get schema(): IPublicTypeProjectSchema {
    method setSchema (line 533) | setSchema(schema?: IPublicTypeProjectSchema) {
    method buildComponentMetasMap (line 537) | buildComponentMetasMap(metas: IPublicTypeComponentMetadata[]) {
    method createComponentMeta (line 541) | createComponentMeta(data: IPublicTypeComponentMetadata): IComponentMet...
    method getGlobalComponentActions (line 566) | getGlobalComponentActions(): IPublicTypeComponentAction[] | null {
    method getComponentMeta (line 570) | getComponentMeta(
    method getComponentMetasMap (line 592) | getComponentMetasMap() {
    method componentsMap (line 596) | get componentsMap(): { [key: string]: IPublicTypeNpmInfo | Component } {
    method transformProps (line 615) | transformProps(props: IPublicTypeCompositeObject | IPublicTypePropsLis...
    method addPropsReducer (line 637) | addPropsReducer(reducer: IPublicTypePropsTransducer, stage: IPublicEnu...
    method autorun (line 650) | autorun(effect: (reaction: IReactionPublic) => void, options?: IReacti...
    method purge (line 654) | purge() {

FILE: packages/designer/src/designer/detecting.ts
  constant DETECTING_CHANGE_EVENT (line 6) | const DETECTING_CHANGE_EVENT = 'detectingChange';
  type IDetecting (line 7) | interface IDetecting extends Omit<IPublicModelDetecting<INode>,
  class Detecting (line 21) | class Detecting implements IDetecting {
    method enable (line 28) | get enable() {
    method enable (line 32) | set enable(flag: boolean) {
    method constructor (line 45) | constructor() {
    method current (line 49) | get current() {
    method capture (line 53) | capture(node: INode | null) {
    method release (line 60) | release(node: INode | null) {
    method leave (line 67) | leave(document: IDocumentModel | undefined) {
    method onDetectingChange (line 73) | onDetectingChange(fn: (node: INode) => void) {

FILE: packages/designer/src/designer/drag-ghost/index.tsx
  type offBinding (line 9) | type offBinding = () => any;
  class DragGhost (line 12) | class DragGhost extends Component<{ designer: Designer }> {
    method constructor (line 25) | constructor(props: any) {
    method getTitles (line 57) | getTitles(dragObject: IPublicModelDragObject) {
    method componentWillUnmount (line 67) | componentWillUnmount() {
    method renderGhostGroup (line 73) | renderGhostGroup() {
    method render (line 84) | render() {

FILE: packages/designer/src/designer/dragon.ts
  type ILocateEvent (line 19) | interface ILocateEvent extends IPublicModelLocateEvent {
  function isDragNodeObject (line 31) | function isDragNodeObject(obj: any): obj is IPublicTypeDragNodeObject {
  function isDragNodeDataObject (line 38) | function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataO...
  function isDragAnyObject (line 45) | function isDragAnyObject(obj: any): obj is IPublicTypeDragAnyObject {
  function isLocateEvent (line 49) | function isLocateEvent(e: any): e is ILocateEvent {
  constant SHAKE_DISTANCE (line 53) | const SHAKE_DISTANCE = 4;
  function isShaken (line 58) | function isShaken(e1: MouseEvent | DragEvent, e2: MouseEvent | DragEvent...
  function isInvalidPoint (line 70) | function isInvalidPoint(e: any, last: any): boolean {
  function isSameAs (line 79) | function isSameAs(e1: MouseEvent | DragEvent, e2: MouseEvent | DragEvent...
  function setShaken (line 83) | function setShaken(e: any) {
  function getSourceSensor (line 87) | function getSourceSensor(dragObject: IPublicModelDragObject): ISimulator...
  function isDragEvent (line 94) | function isDragEvent(e: any): e is DragEvent {
  type IDragon (line 98) | interface IDragon extends IPublicModelDragon<
  class Dragon (line 108) | class Dragon implements IDragon {
    method activeSensor (line 120) | get activeSensor(): IPublicModelSensor | undefined {
    method dragging (line 128) | get dragging(): boolean {
    method constructor (line 136) | constructor(readonly designer: IDesigner) {
    method from (line 146) | from(shell: Element, boost: (e: MouseEvent) => IPublicModelDragObject ...
    method boost (line 173) | boost(dragObject: IPublicModelDragObject, boostEvent: MouseEvent | Dra...
    method getMasterSensors (line 544) | private getMasterSensors(): ISimulatorHost[] {
    method getSimulators (line 559) | private getSimulators() {
    method setNativeSelection (line 564) | private setNativeSelection(enableFlag: boolean) {
    method setDraggingState (line 574) | private setDraggingState(state: boolean) {
    method setCopyState (line 584) | private setCopyState(state: boolean) {
    method clearState (line 594) | private clearState() {
    method addSensor (line 605) | addSensor(sensor: any) {
    method removeSensor (line 612) | removeSensor(sensor: any) {
    method onDragstart (line 619) | onDragstart(func: (e: ILocateEvent) => any) {
    method onDrag (line 626) | onDrag(func: (e: ILocateEvent) => any) {
    method onDragend (line 633) | onDragend(func: (x: { dragObject: IPublicModelDragObject; copy: boolea...

FILE: packages/designer/src/designer/location.ts
  type Point (line 12) | interface Point {
  type CanvasPoint (line 17) | interface CanvasPoint {
  type Rects (line 22) | type Rects = DOMRect[] & {
  function isLocationData (line 29) | function isLocationData(obj: any): boolean {
  function isLocationChildrenDetail (line 36) | function isLocationChildrenDetail(obj: any): boolean {
  function isRowContainer (line 40) | function isRowContainer(container: Element | Text, win?: Window) {
  function isChildInline (line 58) | function isChildInline(child: Element | Text, win?: Window) {
  function getRectTarget (line 66) | function getRectTarget(rect: IPublicTypeRect | null) {
  function isVerticalContainer (line 74) | function isVerticalContainer(rect: IPublicTypeRect | null) {
  function isVertical (line 82) | function isVertical(rect: IPublicTypeRect | null) {
  function isText (line 90) | function isText(elem: any): elem is Text {
  function isDocument (line 94) | function isDocument(elem: any): elem is Document {
  function getWindow (line 98) | function getWindow(elem: Element | Document): Window {
  type IDropLocation (line 101) | interface IDropLocation extends Omit<IPublicModelDropLocation, 'target' ...
  class DropLocation (line 112) | class DropLocation implements IDropLocation {
    method document (line 121) | get document(): IDocumentModel | null {
    method constructor (line 125) | constructor({ target, detail, source, event }: IPublicTypeLocationData...
    method clone (line 132) | clone(event: ILocateEvent): IDropLocation {
    method getContainer (line 145) | getContainer() {
    method getInsertion (line 153) | getInsertion() {

FILE: packages/designer/src/designer/offset-observer.ts
  class OffsetObserver (line 7) | class OffsetObserver {
    method height (line 30) | get height() {
    method width (line 34) | get width() {
    method top (line 38) | get top() {
    method left (line 42) | get left() {
    method bottom (line 46) | get bottom() {
    method right (line 50) | get right() {
    method offsetLeft (line 56) | get offsetLeft() {
    method offsetTop (line 66) | get offsetTop() {
    method offsetHeight (line 76) | get offsetHeight() {
    method offsetWidth (line 83) | get offsetWidth() {
    method scale (line 90) | get scale() {
    method constructor (line 104) | constructor(readonly nodeInstance: INodeSelector) {
    method purge (line 153) | purge() {
    method isPurged (line 160) | isPurged() {
  function createOffsetObserver (line 165) | function createOffsetObserver(nodeInstance: INodeSelector): OffsetObserv...

FILE: packages/designer/src/designer/scroller.ts
  type IScrollTarget (line 4) | interface IScrollTarget extends IPublicModelScrollTarget {
  class ScrollTarget (line 7) | class ScrollTarget implements IScrollTarget {
    method left (line 8) | get left() {
    method top (line 12) | get top() {
    method constructor (line 18) | constructor(private target: Window | Element) {
    method scrollTo (line 24) | scrollTo(options: { left?: number; top?: number }) {
    method scrollToXY (line 28) | scrollToXY(x: number, y: number) {
    method scrollHeight (line 32) | get scrollHeight(): number {
    method scrollWidth (line 36) | get scrollWidth(): number {
  function isWindow (line 41) | function isWindow(obj: any): obj is Window {
  function easing (line 45) | function easing(n: number) {
  constant SCROLL_ACCURACY (line 49) | const SCROLL_ACCURACY = 30;
  type IScroller (line 51) | interface IScroller extends IPublicModelScroller {
  class Scroller (line 54) | class Scroller implements IScroller {
    method constructor (line 58) | constructor(scrollable: IPublicTypeScrollable) {
    method scrollTarget (line 62) | get scrollTarget(): IScrollTarget | null {
    method scrollTo (line 74) | scrollTo(options: { left?: number; top?: number }) {
    method scrolling (line 127) | scrolling(point: { globalX: number; globalY: number }) {
    method cancel (line 183) | cancel() {

FILE: packages/designer/src/designer/setting/setting-entry-type.ts
  type ISettingEntry (line 6) | interface ISettingEntry {

FILE: packages/designer/src/designer/setting/setting-field.ts
  function getSettingFieldCollectorKey (line 23) | function getSettingFieldCollectorKey(parent: ISettingTopEntry | ISetting...
  type ISettingField (line 35) | interface ISettingField extends ISettingPropEntry, Omit<IBaseModelSettin...
  class SettingField (line 81) | class SettingField extends SettingPropEntry implements ISettingField {
    method title (line 99) | get title() {
    method constructor (line 111) | constructor(
    method setter (line 142) | get setter(): IPublicTypeSetterType | null {
    method expanded (line 155) | get expanded(): boolean {
    method setExpanded (line 159) | setExpanded(value: boolean) {
    method items (line 163) | get items(): Array<ISettingField | IPublicTypeCustomView> {
    method config (line 167) | get config(): IPublicTypeFieldConfig {
    method initItems (line 171) | private initItems(
    method disposeItems (line 186) | private disposeItems() {
    method createField (line 192) | createField(config: IPublicTypeFieldConfig): ISettingField {
    method purge (line 197) | purge() {
    method getConfig (line 203) | getConfig<K extends keyof IPublicTypeFieldConfig>(
    method getItems (line 212) | getItems(
    method setValue (line 224) | setValue(
    method getHotValue (line 237) | getHotValue(): any {
    method setMiniAppDataSourceValue (line 251) | setMiniAppDataSourceValue(data: any, options?: any) {
    method setHotValue (line 264) | setHotValue(data: any, options?: IPublicTypeSetValueOptions) {
    method onEffect (line 309) | onEffect(action: () => void): IPublicTypeDisposable {
    method internalToShellField (line 313) | internalToShellField() {
  function isSettingField (line 321) | function isSettingField(obj: any): obj is ISettingField {

FILE: packages/designer/src/designer/setting/setting-prop-entry.ts
  type ISettingPropEntry (line 11) | interface ISettingPropEntry extends ISettingEntry {
  class SettingPropEntry (line 41) | class SettingPropEntry implements ISettingPropEntry {
    method name (line 72) | get name() {
    method path (line 76) | get path() {
    method constructor (line 86) | constructor(readonly parent: ISettingTopEntry | ISettingField, name: s...
    method getId (line 114) | getId() {
    method setKey (line 118) | setKey(key: string | number) {
    method getKey (line 130) | getKey() {
    method remove (line 134) | remove() {
    method valueState (line 155) | get valueState(): number {
    method getValue (line 192) | getValue(): any {
    method setValue (line 209) | setValue(val: any, isHotValue?: boolean, force?: boolean, extraOptions...
    method clearValue (line 234) | clearValue() {
    method get (line 252) | get(propName: string | number) {
    method setPropValue (line 260) | setPropValue(propName: string | number, value: any) {
    method clearPropValue (line 268) | clearPropValue(propName: string | number) {
    method getPropValue (line 276) | getPropValue(propName: string | number): any {
    method getExtraPropValue (line 283) | getExtraPropValue(propName: string) {
    method setExtraPropValue (line 290) | setExtraPropValue(propName: string, value: any) {
    method getNode (line 295) | getNode() {
    method getName (line 299) | getName(): string {
    method getProps (line 303) | getProps() {
    method props (line 308) | get props() {
    method onValueChange (line 312) | onValueChange(func: () => any) {
    method valueChange (line 323) | valueChange(options: IPublicTypeSetValueOptions = {}) {
    method notifyValueChange (line 331) | notifyValueChange(oldValue: any, newValue: any) {
    method getDefaultValue (line 340) | getDefaultValue() {
    method isIgnore (line 344) | isIgnore() {
    method getVariableValue (line 348) | getVariableValue() {
    method setVariableValue (line 356) | setVariableValue(value: string) {
    method setUseVariable (line 365) | setUseVariable(flag: boolean) {
    method isUseVariable (line 381) | isUseVariable() {
    method useVariable (line 385) | get useVariable() {
    method getMockOrValue (line 389) | getMockOrValue() {
    method internalToShellField (line 397) | internalToShellField(): IPublicModelSettingField {

FILE: packages/designer/src/designer/setting/setting-top-entry.ts
  function generateSessionId (line 10) | function generateSessionId(nodes: INode[]) {
  type ISettingTopEntry (line 17) | interface ISettingTopEntry extends ISettingEntry, IPublicModelSettingTop...
  class SettingTopEntry (line 38) | class SettingTopEntry implements ISettingTopEntry {
    method componentMeta (line 55) | get componentMeta() {
    method items (line 59) | get items() {
    method isSameComponent (line 66) | get isSameComponent(): boolean {
    method isSingle (line 73) | get isSingle(): boolean {
    method isLocked (line 77) | get isLocked(): boolean {
    method isMultiple (line 84) | get isMultiple(): boolean {
    method constructor (line 98) | constructor(readonly editor: IPublicModelEditor, readonly nodes: INode...
    method setupComponentMeta (line 116) | private setupComponentMeta() {
    method setupItems (line 138) | private setupItems() {
    method setupEvents (line 154) | private setupEvents() {
    method getValue (line 163) | getValue(): any {
    method setValue (line 170) | setValue(val: any) {
    method get (line 178) | get(propName: string | number): ISettingField | null {
    method setPropValue (line 186) | setPropValue(propName: string | number, value: any) {
    method clearPropValue (line 195) | clearPropValue(propName: string | number) {
    method getPropValue (line 204) | getPropValue(propName: string | number): any {
    method getExtraPropValue (line 211) | getExtraPropValue(propName: string) {
    method setExtraPropValue (line 218) | setExtraPropValue(propName: string, value: any) {
    method setProps (line 225) | setProps(data: object) {
    method mergeProps (line 232) | mergeProps(data: object) {
    method disposeItems (line 238) | private disposeItems() {
    method purge (line 243) | purge() {
    method getProp (line 251) | getProp(propName: string | number) {
    method getStatus (line 256) | getStatus() {
    method setStatus (line 260) | setStatus() {
    method getChildren (line 264) | getChildren() {
    method getDOMNode (line 268) | getDOMNode() {
    method getId (line 272) | getId() {
    method getPage (line 276) | getPage() {
    method node (line 283) | get node() {
    method getNode (line 287) | getNode() {
  type Purgeable (line 292) | interface Purgeable {
  function isPurgeable (line 295) | function isPurgeable(obj: any): obj is Purgeable {

FILE: packages/designer/src/designer/setting/utils.ts
  function getHotterFromSetter (line 7) | function getHotterFromSetter(setter) {
  function getTransducerFromSetter (line 11) | function getTransducerFromSetter(setter) {
  function combineTransducer (line 21) | function combineTransducer(transducer, arr, context) {
  class Transducer (line 33) | class Transducer {
    method constructor (line 38) | constructor(context: ISettingField, config: { setter: IPublicTypeField...
    method toHot (line 81) | toHot(data) {
    method toNative (line 85) | toNative(data) {

FILE: packages/designer/src/document/document-model.ts
  type GetDataType (line 51) | type GetDataType<T, NodeType> = T extends undefined
  type IDocumentModel (line 59) | interface IDocumentModel extends Omit<IPublicModelDocumentModel<
  class DocumentModel (line 156) | class DocumentModel implements IDocumentModel {
    method simulator (line 204) | get simulator(): ISimulatorHost | null {
    method nodesMap (line 208) | get nodesMap(): Map<string, INode> {
    method fileName (line 212) | get fileName(): string {
    method fileName (line 216) | set fileName(fileName: string) {
    method focusNode (line 220) | get focusNode(): INode | null {
    method modalNode (line 241) | get modalNode() {
    method currentRoot (line 245) | get currentRoot() {
    method dropLocation (line 253) | set dropLocation(loc: IDropLocation | null) {
    method dropLocation (line 265) | get dropLocation() {
    method schema (line 272) | get sch
Condensed preview — 2530 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,199K chars).
[
  {
    "path": ".editorconfig",
    "chars": 208,
    "preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ni"
  },
  {
    "path": ".eslintignore",
    "chars": 125,
    "preview": "# 忽略目录\nnode_modules\ntest-cases\ntest\noutput\nbuild\ndist\ndemo\nes\nlib\ntests\n.*\n~*\n\n# 忽略文件\n**/*.min.js\n**/*-min.js\n**/*.bundl"
  },
  {
    "path": ".eslintrc.js",
    "chars": 1971,
    "preview": "module.exports = {\n  extends: 'eslint-config-ali/typescript/react',\n  parserOptions: {\n    project: [], // for lint perf"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 353,
    "preview": "# ref: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-reposito"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "chars": 1617,
    "preview": "---\nname: Bug report / 提交 bug\nabout: Create a report to help us improve / 提交一个好的 issue 帮助我们优化引擎,[引擎的 issue 说明](https://l"
  },
  {
    "path": ".github/workflows/check base branch.yml",
    "chars": 1095,
    "preview": "name: Check Base Branch\n\non:\n  pull_request:\n    types: [opened]\n\njobs:\n  code-review:\n    name: Check\n    runs-on: ubun"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3244,
    "preview": "name: Node CI\n\non:\n push:\n    branches:\n      - main\n pull_request:\n    branches:\n      - main\n\njobs:\n  upload-designer-"
  },
  {
    "path": ".github/workflows/cov packages.yml",
    "chars": 3028,
    "preview": "name: coverage\n\non:\n  pull_request:\n    paths:\n      - 'packages/**'\n      - '!packages/**.md'\n\njobs:\n  cov-designer:\n  "
  },
  {
    "path": ".github/workflows/help wanted.yml",
    "chars": 591,
    "preview": "name: Help Wanted\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply-helper:\n    runs-on: ubuntu-latest\n    steps:\n     "
  },
  {
    "path": ".github/workflows/insufficient information.yml",
    "chars": 744,
    "preview": "name: Insufficient Info\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply-helper:\n    runs-on: ubuntu-latest\n    steps:"
  },
  {
    "path": ".github/workflows/pr comment by chatgpt.yml",
    "chars": 545,
    "preview": "name: Pull Request Review By ChatGPT\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n\njobs:\n  code-revie"
  },
  {
    "path": ".github/workflows/pre build.yml",
    "chars": 591,
    "preview": "name: Pre Build\n\non:\n  push:\n    paths:\n      - 'packages/**'\n      - '!packages/**.md'\n  pull_request:\n    paths:\n     "
  },
  {
    "path": ".github/workflows/publish docs.yml",
    "chars": 1643,
    "preview": "name: Update and Publish Docs\n\non:\n  push:\n    branches:\n      - develop\n    paths:\n      - 'docs/docs/**'\n  workflow_di"
  },
  {
    "path": ".github/workflows/publish engine beta.yml",
    "chars": 827,
    "preview": "name: Publish Engine Beta\n\non:\n  push:\n    branches:\n      - 'release/[0-9]+.[0-9]+.[0-9]+-beta'\n    paths:\n      - 'pac"
  },
  {
    "path": ".github/workflows/publish engine.yml",
    "chars": 998,
    "preview": "name: Publish Engine\n\non:\n  workflow_dispatch:\n    inputs:\n      publishCommand:\n        description: 'publish command'\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 1099,
    "preview": "name: 'Close stale issues and PRs'\non:\n  schedule:\n    - cron: '30 1 * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n "
  },
  {
    "path": ".github/workflows/test modules.yml",
    "chars": 819,
    "preview": "name: Lint & Test (Mods)\n\non:\n  push:\n    paths:\n      - 'modules/**'\n      - '!modules/**.md'\n  pull_request:\n    paths"
  },
  {
    "path": ".github/workflows/test packages.yml",
    "chars": 2848,
    "preview": "name: Lint & Test (Pkgs)\n\non:\n  push:\n    paths:\n      - 'packages/**'\n      - '!packages/**.md'\n  pull_request:\n    pat"
  },
  {
    "path": ".gitignore",
    "chars": 1482,
    "preview": "# project custom\nbuild\ndist\npackages/*/lib/\npackages/*/es/\npackages/*/dist/\npackages/*/output/\npackages/demo/\npackage-lo"
  },
  {
    "path": ".prettierrc.js",
    "chars": 115,
    "preview": "module.exports = {\n  printWidth: 100,\n  tabWidth: 2,\n  semi: true,\n  singleQuote: true,\n  trailingComma: 'all',\n};\n"
  },
  {
    "path": ".stylelintignore",
    "chars": 84,
    "preview": "# 忽略目录\nnode_modules/\nbuild/\ndist/\n\n# 忽略文件\n**/*.min.css\n**/*-min.css\n**/*.bundle.css\n"
  },
  {
    "path": ".stylelintrc.js",
    "chars": 97,
    "preview": "module.exports = {\n  extends: 'stylelint-config-ali',\n  rules: {\n    \"selector-max-id\": 2\n  }\n};\n"
  },
  {
    "path": "CONTRIBUTOR.md",
    "chars": 1213,
    "preview": "十分感谢参与贡献过低代码引擎的小伙伴们,下面名单按字母排序:\n- [albertxiao1994](https://github.com/albertxiao1994)\n- [alex-mm](https://github.com/alex"
  },
  {
    "path": "LICENSE",
    "chars": 1064,
    "preview": "MIT License\n\nCopyright (c) 2021 Alibaba\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof"
  },
  {
    "path": "abc.json",
    "chars": 161,
    "preview": "{\n  \"name\": \"lowcode-engine\",\n  \"assets\": {\n    \"type\": \"command\",\n    \"command\": {\n      \"cmd\": [\n        \"./scripts/de"
  },
  {
    "path": "babel.config.js",
    "chars": 183,
    "preview": "module.exports = {\n  plugins: [\n    ['@babel/plugin-proposal-decorators', { legacy: true }],\n    [require.resolve('@babe"
  },
  {
    "path": "commitlint.config.js",
    "chars": 42,
    "preview": "module.exports = {\n  extends: ['ali'],\n};\n"
  },
  {
    "path": "deploy-space/lerna.json",
    "chars": 170,
    "preview": "{\n  \"version\": \"independent\",\n  \"npmClient\": \"yarn\",\n  \"registry\": \"http://registry.npm.alibaba-inc.com\",\n  \"useWorkspac"
  },
  {
    "path": "deploy-space/package.json",
    "chars": 264,
    "preview": "{\n  \"private\": true,\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/*\"\n    ],\n    \"nohoist\": [\n      \"**/css-module"
  },
  {
    "path": "deploy-space/static/index.html",
    "chars": 4253,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge,chr"
  },
  {
    "path": "deploy-space/static/preview.html",
    "chars": 4397,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge,chr"
  },
  {
    "path": "deploy-space/tsconfig.json",
    "chars": 1690,
    "preview": "{\n  \"compilerOptions\": {\n    \"declaration\": false,\n    \"lib\": [\"es2015\", \"dom\"],\n    // Target latest version of ECMAScr"
  },
  {
    "path": "docs/.gitignore",
    "chars": 233,
    "preview": "# Dependencies\n/node_modules\n\n# Production\n/build\n\n# Generated files\n.docusaurus\n.cache-loader\n\n# Misc\n.DS_Store\n.env.lo"
  },
  {
    "path": "docs/README.md",
    "chars": 676,
    "preview": "# Low-Code Engine 文档中心(site)\n\nThis website is built using [Docusaurus 2](https://docusaurus.io/), a modern static websit"
  },
  {
    "path": "docs/babel.config.js",
    "chars": 89,
    "preview": "module.exports = {\n  presets: [require.resolve('@docusaurus/core/lib/babel/preset')],\n};\n"
  },
  {
    "path": "docs/community/issue.md",
    "chars": 3034,
    "preview": "---\ntitle: 关于引擎的 issue 说明\nsidebar_position: 2\n---\n> 提交地址:[https://github.com/alibaba/lowcode-engine/issues](https://gith"
  },
  {
    "path": "docs/config/navbar.js",
    "chars": 1696,
    "preview": "/**\n * 此配置的修改,如未生效,可以重新启动下即可\n */\nmodule.exports = {\n  title: '',\n  logo: {\n    alt: 'LowCode-Engine',\n    src: 'https://"
  },
  {
    "path": "docs/config/sidebars.js",
    "chars": 2369,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "docs/config/sidebarsCommunity.js",
    "chars": 233,
    "preview": "module.exports = {\n  community: [\n    {\n      type: 'autogenerated',\n      dirName: '.',\n    },\n    {\n      type: 'link'"
  },
  {
    "path": "docs/docs/api/canvas.md",
    "chars": 2151,
    "preview": "---\ntitle: canvas - 画布 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiCanvas](https://github.com/alibaba/lowcode-"
  },
  {
    "path": "docs/docs/api/command.md",
    "chars": 1504,
    "preview": "---\ntitle: command - 指令 API\nsidebar_position: 10\n---\n\n\n\n## 模块概览\n\n该模块使得与命令系统的交互成为可能,提供了一种全面的方式来处理、执行和管理应用程序中的命令。\n\n\n\n## 接口"
  },
  {
    "path": "docs/docs/api/common.md",
    "chars": 3361,
    "preview": "---\ntitle: common - 通用 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiCommon](https://github.com/alibaba/lowcode-"
  },
  {
    "path": "docs/docs/api/commonUI.md",
    "chars": 7196,
    "preview": "---\ntitle: commonUI - UI 组件库\nsidebar_position: 10\n---\n\n## 简介\nCommonUI API 是一个专为低代码引擎设计的组件 UI 库,使用它开发的插件,可以保证在不同项目和主题切换中能"
  },
  {
    "path": "docs/docs/api/config.md",
    "chars": 3254,
    "preview": "---\ntitle: config - 配置 API\nsidebar_position: 5\n---\n\n> **@types** [IPublicModelEngineConfig](https://github.com/alibaba/l"
  },
  {
    "path": "docs/docs/api/configOptions.md",
    "chars": 4800,
    "preview": "---\ntitle: config options - 配置列表\nsidebar_position: 5\n---\n\n> **@types** [IPublicTypeEngineOptions](https://github.com/ali"
  },
  {
    "path": "docs/docs/api/event.md",
    "chars": 2404,
    "preview": "---\ntitle: event - 事件 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiEvent](https://github.com/alibaba/lowcode-en"
  },
  {
    "path": "docs/docs/api/hotkey.md",
    "chars": 1558,
    "preview": "---\ntitle:  hotkey - 快捷键 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiHotkey](https://github.com/alibaba/lowcod"
  },
  {
    "path": "docs/docs/api/index.md",
    "chars": 1078,
    "preview": "---\ntitle: API 总览\nsidebar_position: 0\n---\n\n引擎提供的公开 API 分为`命名空间`和`模型`两类,其中`命名空间`用于聚合一大类的 API,`模型`为各 API 涉及到的对象模型。\n\n## 命名空"
  },
  {
    "path": "docs/docs/api/init.md",
    "chars": 825,
    "preview": "---\ntitle: init - 初始化 API\nsidebar_position: 0\n---\n\n> **@since** v1.0.0\n\n\n## 模块简介\n提供 init 等方法\n## 方法\n#### init\n初始化引擎\n\n**方法"
  },
  {
    "path": "docs/docs/api/logger.md",
    "chars": 1769,
    "preview": "---\ntitle: logger - 日志 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiLogger](https://github.com/alibaba/lowcode-"
  },
  {
    "path": "docs/docs/api/material.md",
    "chars": 10445,
    "preview": "---\ntitle: material - 物料 API\nsidebar_position: 10\n---\n\n> **@types** [IPublicApiMaterial](https://github.com/alibaba/lowc"
  },
  {
    "path": "docs/docs/api/model/_category_.json",
    "chars": 93,
    "preview": "{\n  \"label\": \"模型定义 Models\",\n  \"position\": 100,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/api/model/clipboard.md",
    "chars": 733,
    "preview": "---\ntitle: Clipboard\nsidebar_position: 14\n---\n\n> **@types** [IPublicModelClipboard](https://github.com/alibaba/lowcode-e"
  },
  {
    "path": "docs/docs/api/model/component-meta.md",
    "chars": 3622,
    "preview": "---\ntitle: ComponentMeta\nsidebar_position: 15\n---\n\n> **@types** [IPublicModelComponentMeta](https://github.com/alibaba/l"
  },
  {
    "path": "docs/docs/api/model/detecting.md",
    "chars": 1378,
    "preview": "---\ntitle: Detecting\nsidebar_position: 6\n---\n> **@types** [IPublicModelDetecting](https://github.com/alibaba/lowcode-eng"
  },
  {
    "path": "docs/docs/api/model/document-model.md",
    "chars": 9908,
    "preview": "---\ntitle: DocumentModel\nsidebar_position: 0\n---\n> **@types** [IPublicModelDocumentModel](https://github.com/alibaba/low"
  },
  {
    "path": "docs/docs/api/model/dragon.md",
    "chars": 2075,
    "preview": "---\ntitle: Dragon\nsidebar_position: 99\n---\n> **@types** [IPublicModelDragon](https://github.com/alibaba/lowcode-engine/b"
  },
  {
    "path": "docs/docs/api/model/drop-location.md",
    "chars": 1124,
    "preview": "---\ntitle: DropLocation\nsidebar_position: 13\n---\n\n> **@types** [IPublicModelDropLocation](https://github.com/alibaba/low"
  },
  {
    "path": "docs/docs/api/model/editor-view.md",
    "chars": 561,
    "preview": "---\ntitle: EditorView\nsidebar_position: 12\n---\n\n> **[@experimental](./#experimental)**<br/>\n> **@types** [IPublicModelEd"
  },
  {
    "path": "docs/docs/api/model/history.md",
    "chars": 1877,
    "preview": "---\ntitle: History\nsidebar_position: 5\n---\n> **@types** [IPublicModelHistory](https://github.com/alibaba/lowcode-engine/"
  },
  {
    "path": "docs/docs/api/model/modal-nodes-manager.md",
    "chars": 1633,
    "preview": "---\ntitle: ModalNodesManager\nsidebar_position: 7\n---\n> **@types** [IPublicModelModalNodesManager](https://github.com/ali"
  },
  {
    "path": "docs/docs/api/model/node-children.md",
    "chars": 6314,
    "preview": "---\ntitle: NodeChildren\nsidebar_position: 2\n---\n> **@types** [IPublicModelNodeChildren](https://github.com/alibaba/lowco"
  },
  {
    "path": "docs/docs/api/model/node.md",
    "chars": 11130,
    "preview": "---\ntitle: Node\nsidebar_position: 1\n---\n> **@types** [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/m"
  },
  {
    "path": "docs/docs/api/model/plugin-instance.md",
    "chars": 544,
    "preview": "---\ntitle: PluginInstance\nsidebar_position: 12\n---\n\n> **@types** [IPublicModelPluginInstance](https://github.com/alibaba"
  },
  {
    "path": "docs/docs/api/model/prop.md",
    "chars": 1679,
    "preview": "---\ntitle: Prop\nsidebar_position: 3\n---\n> **@types** [IPublicModelProp](https://github.com/alibaba/lowcode-engine/blob/m"
  },
  {
    "path": "docs/docs/api/model/props.md",
    "chars": 3041,
    "preview": "---\ntitle: Props\nsidebar_position: 4\n---\n> **@types** [IPublicModelProps](https://github.com/alibaba/lowcode-engine/blob"
  },
  {
    "path": "docs/docs/api/model/resource.md",
    "chars": 547,
    "preview": "---\ntitle: Resource\nsidebar_position: 13\n---\n\n> **[@experimental](./#experimental)**<br/>\n> **@types** [IPublicModelReso"
  },
  {
    "path": "docs/docs/api/model/selection.md",
    "chars": 2436,
    "preview": "---\ntitle: Selection\nsidebar_position: 6\n---\n> **@types** [IPublicModelSelection](https://github.com/alibaba/lowcode-eng"
  },
  {
    "path": "docs/docs/api/model/setting-field.md",
    "chars": 4753,
    "preview": "---\ntitle: SettingField\nsidebar_position: 6\n---\n> **@types** [IPublicModelSettingField](https://github.com/alibaba/lowco"
  },
  {
    "path": "docs/docs/api/model/setting-top-entry.md",
    "chars": 1091,
    "preview": "---\ntitle: SettingTopEntry\nsidebar_position: 6\n---\n> **@types** [IPublicModelSettingTopEntry](https://github.com/alibaba"
  },
  {
    "path": "docs/docs/api/model/simulatorRender.md",
    "chars": 442,
    "preview": "---\ntitle: SimulatorRender\nsidebar_position: 6\n---\n> **@types** [IPublicModelSimulatorRender](https://github.com/alibaba"
  },
  {
    "path": "docs/docs/api/model/window.md",
    "chars": 1654,
    "preview": "---\ntitle: Window\nsidebar_position: 12\n---\n\n> **[@experimental](./#experimental)**<br/>\n> **@types** [IPublicModelWindow"
  },
  {
    "path": "docs/docs/api/plugins.md",
    "chars": 6027,
    "preview": "---\ntitle: plugins - 插件 API\nsidebar_position: 2\n---\n> **@types** [IPublicApiPlugins](https://github.com/alibaba/lowcode-"
  },
  {
    "path": "docs/docs/api/project.md",
    "chars": 8126,
    "preview": "---\ntitle: project - 模型 API\nsidebar_position: 10\n---\n## 模块简介\n\n引擎编排模块中包含多种模型,包括:\n- [文档模型 DocumentModel](./model/document-"
  },
  {
    "path": "docs/docs/api/setters.md",
    "chars": 4516,
    "preview": "---\ntitle: setters - 设置器 API\nsidebar_position: 10\n---\n> **@types** [IPublicApiSetters](https://github.com/alibaba/lowcod"
  },
  {
    "path": "docs/docs/api/simulatorHost.md",
    "chars": 1433,
    "preview": "---\ntitle: simulatorHost - 模拟器 API\nsidebar_position: 10\n---\n> **@types** [IPublicApiSimulatorHost](https://github.com/al"
  },
  {
    "path": "docs/docs/api/skeleton.md",
    "chars": 11809,
    "preview": "---\ntitle: skeleton - 面板 API\nsidebar_position: 10\n---\n> **@types** [IPublicApiSkeleton](https://github.com/alibaba/lowco"
  },
  {
    "path": "docs/docs/api/workspace.md",
    "chars": 3060,
    "preview": "---\ntitle: workspace - 应用级 API\nsidebar_position: 10\n---\n\n> **[@experimental](./#experimental)**<br/>\n> **@types** [IPubl"
  },
  {
    "path": "docs/docs/article/index.md",
    "chars": 1237,
    "preview": "# 官方文章\n- [2023/11/09 UIPaaS | 基于 LowCodeEngine 的低代码平台孵化器](https://mp.weixin.qq.com/s/mKuv3_Wvgt5T3AGErUGBQQ)\n- [2023/04/"
  },
  {
    "path": "docs/docs/demoUsage/advanced/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"进阶功能\",\n  \"position\": 3,\n  \"collapsed\": false,\n  \"collapsible\": false\n}\n"
  },
  {
    "path": "docs/docs/demoUsage/advanced/hotkey.md",
    "chars": 400,
    "preview": "---\ntitle: 8. 编辑器快捷键\nsidebar_position: 0\n---\n- 任意时机:\n   - `⌘` `S` 保存\n   - `⌘` `P` 预览\n   - `⌘` `D` 查看 Diff\n   - `⌘` `Z` 撤"
  },
  {
    "path": "docs/docs/demoUsage/appendix/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"常见问题\",\n  \"position\": 4,\n  \"collapsed\": false,\n  \"collapsible\": false\n}\n"
  },
  {
    "path": "docs/docs/demoUsage/appendix/api.md",
    "chars": 398,
    "preview": "---\ntitle: demo 使用相关 API\nsidebar_position: 2\n---\n## 数据源相关\n### 请求数据源\n```javascript\n// 请求 userList(userList 在数据源面板中定义)\n\nth"
  },
  {
    "path": "docs/docs/demoUsage/appendix/loop.md",
    "chars": 978,
    "preview": "---\ntitle: 如何使用循环值\nsidebar_position: 0\n---\n1.设置循环数据\n![image.png](https://img.alicdn.com/imgextra/i1/O1CN01Gw1kXO1qaXulQC"
  },
  {
    "path": "docs/docs/demoUsage/intro.md",
    "chars": 2976,
    "preview": "---\ntitle: 1. 试用低代码引擎 Demo\nsidebar_position: 0\n---\n低代码编辑器中的区块主要包含这些功能点:\n![image.png](https://img.alicdn.com/imgextra/i2/"
  },
  {
    "path": "docs/docs/demoUsage/makeStuff/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"如何制作\",\n  \"position\": 1,\n  \"collapsed\": false,\n  \"collapsible\": false\n}\n"
  },
  {
    "path": "docs/docs/demoUsage/makeStuff/dialog.md",
    "chars": 1018,
    "preview": "---\ntitle: 3. 如何通过按钮展示/隐藏弹窗\nsidebar_position: 1\n---\n> 说明:这个方式依赖低代码弹窗组件是否对外保留了相关的 API,不同的物料支持的方式不一样,这里只针对综合场景的弹窗物料。\n\n## 1"
  },
  {
    "path": "docs/docs/demoUsage/makeStuff/table.md",
    "chars": 5122,
    "preview": "---\ntitle: 2. 如何制作表格\nsidebar_position: 0\n---\n## 步骤详解\n### 拖入组件\n\n一个常见的表格页面会包含查询框、表格和分页按钮。这些都在 Fusion UI 中进行了相应的封装,我们可以在左侧组"
  },
  {
    "path": "docs/docs/demoUsage/panels/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"面板详解\",\n  \"position\": 2,\n  \"collapsed\": false,\n  \"collapsible\": false\n}\n"
  },
  {
    "path": "docs/docs/demoUsage/panels/canvas.md",
    "chars": 2279,
    "preview": "---\ntitle: 5. 画布详解\nsidebar_position: 1\n---\n## 组件操作\n### 画布操作\n点击组件在右侧面板中能够显示出对应组件的属性配置选项\n![Dec-17-2021 19-28-28.gif](https"
  },
  {
    "path": "docs/docs/demoUsage/panels/code.md",
    "chars": 5427,
    "preview": "---\ntitle: 7. 源码面板详解\nsidebar_position: 3\n---\n在源码面板中,您可以完成低代码中的代码部分编写。\n\n## 面板功能拆解\n\n![image.png](https://img.alicdn.com/im"
  },
  {
    "path": "docs/docs/demoUsage/panels/component.md",
    "chars": 1294,
    "preview": "---\ntitle: 4. 组件面板详解\nsidebar_position: 0\n---\n## 概述\n组件面板顾名思义就是承载组件的面板,组件面板会获取并解析传入给低代码引擎的资产包数据 (数据结构[点此查看](https://lowcod"
  },
  {
    "path": "docs/docs/demoUsage/panels/datasource.md",
    "chars": 5035,
    "preview": "---\ntitle: 8. 数据源面板详解\nsidebar_position: 4\n---\n## 🪚 概述\n数据源面板主要负责管理低代码中远程数据源内容,通过可视化编辑的方式操作低代码协议中的数据源 Schema,配合 [数据源引擎](/s"
  },
  {
    "path": "docs/docs/demoUsage/panels/settings.md",
    "chars": 4952,
    "preview": "---\ntitle: 6. 设置面板详解\nsidebar_position: 2\n---\n# 设置器介绍\n## 展示区域\n设置器,又称为 Setter,主要展示在编辑器的右边区域,如下图:\n![image.png](https://img."
  },
  {
    "path": "docs/docs/faq/faq001.md",
    "chars": 177,
    "preview": "---\ntitle: build-scripts 的使用文档\nsidebar_position: 1\ntags: [FAQ]\n---\nbuild-scripts 是一个开源项目,详见 [https://github.com/ice-lab/"
  },
  {
    "path": "docs/docs/faq/faq002.md",
    "chars": 1145,
    "preview": "---\ntitle: 渲染唯一标识(key)\nsidebar_position: 2\ntags: [FAQ]\n---\n渲染唯一标识(key)和 React 中组件的 key 属性的原理是一致的,都是为了在渲染场景或者组件切换的场景中唯一标识"
  },
  {
    "path": "docs/docs/faq/faq003.md",
    "chars": 686,
    "preview": "---\ntitle: 点击事件如何添加参数\nsidebar_position: 3\ntags: [FAQ]\n---\n背景:\n\n- [Antd Table 下 button 点击事件怎么拿到行数据?](https://github.com/a"
  },
  {
    "path": "docs/docs/faq/faq004.md",
    "chars": 1310,
    "preview": "---\ntitle: 最小渲染单元配置\nsidebar_position: 4\ntags: [FAQ]\n---\n## 背景\n在低代码引擎画布中,每一个节点的更新是**增量更新**机制。也就是通过 API 监听到组件的参数配置变化的时候,只更"
  },
  {
    "path": "docs/docs/faq/faq005.md",
    "chars": 603,
    "preview": "---\ntitle: 如何通过 this.utils 使用第三方工具扩展\nsidebar_position: 5\ntags: [FAQ]\n---\n## 设计器\n### 通过引擎 API 配置\n[API-init](/site/docs/ap"
  },
  {
    "path": "docs/docs/faq/faq006.md",
    "chars": 120,
    "preview": "---\ntitle: 如何通过 API 手动调用数据源请求\nsidebar_position: 6\ntags: [FAQ]\n---\n参考:[DataSource API](/site/docs/demoUsage/appendix/api)"
  },
  {
    "path": "docs/docs/faq/faq007.md",
    "chars": 362,
    "preview": "---\ntitle: 设置面板中的高级 tab 如何配置\nsidebar_position: 7\ntags: [FAQ]\n---\n![93DC003C-D9A1-4F4F-98A1-F22C0A89EA92.png](https://img"
  },
  {
    "path": "docs/docs/faq/faq008.md",
    "chars": 116,
    "preview": "---\ntitle: 某某 npm 包对应的源码在哪里?\nsidebar_position: 8\ntags: [FAQ]\n---\n\n详见 [NPM 包对应源码位置汇总](/site/docs/guide/appendix/npms)"
  },
  {
    "path": "docs/docs/faq/faq009.md",
    "chars": 2683,
    "preview": "---\ntitle: 物料出现 Component Not Found 相关报错\nsidebar_position: 9\ntags: [FAQ]\n---\n## 预览态,antd 资产包按顺序加载,但是没有按顺序执行\n资产包按顺序加载,但是没"
  },
  {
    "path": "docs/docs/faq/faq010.md",
    "chars": 446,
    "preview": "---\ntitle: 插件面板如何调整位置\nsidebar_position: 10\ntags: [FAQ]\n---\n使用 index 配置来定义位置,内置的默认都是 0\n```json\nAliLowCodeEngine.skeleton."
  },
  {
    "path": "docs/docs/faq/faq011.md",
    "chars": 752,
    "preview": "---\ntitle: 如何获取物料当前处于编辑态还是渲染态\nsidebar_position: 11\ntags: [FAQ]\n---\n## 简单场景\n可以利用 props.__designMode\n\n![image.png](https:/"
  },
  {
    "path": "docs/docs/faq/faq012.md",
    "chars": 1668,
    "preview": "---\ntitle: Procode 物料如何调用数据源方法\nsidebar_position: 12\ntags: [FAQ]\n---\n## 解决方案\n给物料插入如下配置,可以默认给物料提供 reloadDataSource 的参数。\n``"
  },
  {
    "path": "docs/docs/faq/faq013.md",
    "chars": 969,
    "preview": "---\ntitle: Modal 类组件 hidden 属性被强制设置 true\nsidebar_position: 13\ntags: [FAQ]\n---\n## 注意\n弹窗的正确弹出方式请参考:[如何通过按钮展示/隐藏弹窗](/site/d"
  },
  {
    "path": "docs/docs/faq/faq014.md",
    "chars": 519,
    "preview": "---\ntitle: VERSION_PLACEHOLDER is not defined\nsidebar_position: 14\ntags: [FAQ]\n---\n# 问题原因\n由于 lowcode-engine 目前只提供 cdn 的使"
  },
  {
    "path": "docs/docs/faq/faq015.md",
    "chars": 183,
    "preview": "---\ntitle: 已有组件如何快速接入引擎\nsidebar_position: 15\ntags: [FAQ]\n---\n你可以通过在线工具「Parts 造物」生产物料描述协议,然后使用到你的项目中去。\n文档地址:[利用 Parts 造物快"
  },
  {
    "path": "docs/docs/faq/faq016.md",
    "chars": 429,
    "preview": "---\ntitle: Cannot read property 'Icon' of Undefined\nsidebar_position: 16\ntags: [FAQ]\n---\n@alifd/next 是 React 画布下必须的资源,不能"
  },
  {
    "path": "docs/docs/faq/faq017.md",
    "chars": 239,
    "preview": "---\ntitle: vue 画布支持说明\nsidebar_position: 17\ntags: [FAQ]\n---\n#### 低代码引擎官方是否支持 Vue 画布\n短期没有支持的计划\n\n#### 社区研发的 Vue 画布\n##### 肯耐"
  },
  {
    "path": "docs/docs/faq/faq018.md",
    "chars": 620,
    "preview": "---\ntitle: 是否可以生成 Vue 页面代码?\nsidebar_position: 18\ntags: [FAQ]\n---\n低代码引擎在架构上是和具体语言无关的,通过一定的扩展和插件是可以生成 Vue 页面代码的。\n如果只是用现有的基"
  },
  {
    "path": "docs/docs/faq/faq019.md",
    "chars": 256,
    "preview": "---\ntitle: windows 下运行出现报错\nsidebar_position: 19\ntags: [FAQ]\n---\n由于阿里内部研发人员没有 windows 开发的诉求,windows 环境下相关的技术兼容短期内暂时没有支持计划"
  },
  {
    "path": "docs/docs/faq/faq020.md",
    "chars": 1187,
    "preview": "---\ntitle: Can't import the named export from non ECMAScript module\nsidebar_position: 20\ntags: [FAQ]\n---\n如果您是自己配置的引擎打包,那"
  },
  {
    "path": "docs/docs/faq/faq021.md",
    "chars": 450,
    "preview": "---\ntitle: 提交 PR 时,明明签署过 CLA,仍被提示需要签署\nsidebar_position: 21\ntags: [FAQ]\n---\n## 问题原因\n\n原因是:git commit 时,本地 git config 配置的 e"
  },
  {
    "path": "docs/docs/faq/faq022.md",
    "chars": 733,
    "preview": "---\ntitle: 节点无法拖拽到 Page 下\nsidebar_position: 22\ntags: [FAQ]\n---\n查看 Page 节点的 childWhitelist 配置,如果 Page 配置了 childWhitelist,"
  },
  {
    "path": "docs/docs/faq/faq023.md",
    "chars": 717,
    "preview": "---\ntitle: Slot组件渲染报错问题\nsidebar_position: 23\ntags: [FAQ]\n---\n\n## 问题描述\n在低代码引擎的页面渲染过程中,可能会遇到一个关于Slot组件的报错,提示“Slot找不到”。实际上,"
  },
  {
    "path": "docs/docs/faq/faq024.md",
    "chars": 3299,
    "preview": "---\ntitle: workspace 模式常见问题\nsidebar_position: 23\ntags: [FAQ]\n---\n\n#### 如何判断是否开启了IDE模式?\n\n- **通过官方API判断**:您可以通过访问 [workspa"
  },
  {
    "path": "docs/docs/faq/index.md",
    "chars": 1317,
    "preview": "---\ntitle: FAQ 概述\nsidebar_position: -1\ntags: [FAQ]\n---\n\n不定期将社区常见问题及答案维护到此处\n\n## Demo 使用\n- [渲染唯一标识(key)](/site/docs/faq/fa"
  },
  {
    "path": "docs/docs/guide/appendix/_category_.json",
    "chars": 82,
    "preview": "{\n  \"label\": \"附录\",\n  \"position\": 5,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/appendix/glossary.md",
    "chars": 148,
    "preview": "---\ntitle: 名词解释\nsidebar_position: 0\n---\n![glossary](https://img.alicdn.com/imgextra/i2/O1CN01vPZjCM1jT26YujpGk_!!6000000"
  },
  {
    "path": "docs/docs/guide/appendix/metaSpec.md",
    "chars": 186,
    "preview": "---\ntitle: 搭建组件协议结构\nsidebar_position: 1\n---\n完整协议[查看](/site/docs/specs/material-spec)\n\n![](https://img.alicdn.com/imgextr"
  },
  {
    "path": "docs/docs/guide/appendix/npms.md",
    "chars": 6137,
    "preview": "---\ntitle: NPM 包对应源码位置汇总\nsidebar_position: 3\n---\n| 包名 | 仓库 | 路径 |\n| --- | --- | --- |\n| @alilc/lowcode-code-generator | "
  },
  {
    "path": "docs/docs/guide/appendix/repos.md",
    "chars": 2055,
    "preview": "---\ntitle: 低代码仓库列表\nsidebar_position: 2\n---\n## 1. 引擎主包\n包含引擎的 4 大模块,入料、编排、渲染和出码。\n\n仓库地址:[https://github.com/alibaba/lowcode"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/_category_.json",
    "chars": 42,
    "preview": "{\n  \"label\": \"预置设置器详情\",\n  \"position\": 5\n}\n"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/array.md",
    "chars": 1875,
    "preview": "---\ntitle: ArraySetter\n---\n\n## 简介\n用来展示属性类型为数组的 setter\n## 展示\n![image.png](https://img.alicdn.com/imgextra/i3/O1CN01BXCpnh"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/behavior.md",
    "chars": 126,
    "preview": "---\ntitle: BehaviorSetter\n---\n\n详见 [npm 包说明](https://g.alicdn.com/code/npm/@ali/lowcode-setter-behavior/0.1.1/build/index"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/bool.md",
    "chars": 244,
    "preview": "---\ntitle: BoolSetter\n---\n## 简介\n开关选择器\n## 展示\n\n![](https://img.alicdn.com/imgextra/i3/O1CN01KS7ndr1mHX0MITGPH_!!6000000004"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/color.md",
    "chars": 263,
    "preview": "---\ntitle: ColorSetter\n---\n用来选择颜色。\n## 展示\n<img src=\"https://img.alicdn.com/imgextra/i4/O1CN01iYKRA920aDn1uhs3M_!!60000000"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/event.md",
    "chars": 1545,
    "preview": "---\ntitle: EventSetter\n---\n## 简介\n可以将事件绑定在物料上\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i3/O1CN01mAMfxZ20WYca6KqJb"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/function.md",
    "chars": 1287,
    "preview": "---\ntitle: FunctionSetter\n---\n## 简介\n可以将function绑定在物料上\n\n## 设置器返回\n\n设置器返回一个Function对象,调用function()运行Function对象得到运行结果。\n\n如下是一"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/icon.md",
    "chars": 1279,
    "preview": "---\ntitle: IconSetter\n---\n## 简介\n用来选择图标\n## 展示\n<img src=\"https://img.alicdn.com/imgextra/i1/O1CN01hdJPHx1zwNKa78YgN_!!6000"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/mixed.md",
    "chars": 279,
    "preview": "---\ntitle: MixedSetter\n---\n## 简介\n可以让属性同时支持多个 setter\n\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i4/O1CN01zlCJu21iB"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/number.md",
    "chars": 360,
    "preview": "---\ntitle: NumberSetter\n---\n## 简介\n用于输入数字。\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i3/O1CN01b9bRiX1C6F4pCV7GB_!!"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/radioGroup.md",
    "chars": 411,
    "preview": "---\ntitle: RadioGroupSetter\n---\n## 简介\n用于直观的展示选择并选择。\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i2/O1CN01rId9td25yY"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/select.md",
    "chars": 434,
    "preview": "---\ntitle: SelectSetter\n---\n## 简介\n用来选择组件。在限定的可选性内进行选择,核心能力是选择\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i4/O1CN01"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/slot.md",
    "chars": 1926,
    "preview": "---\ntitle: SlotSetter\n---\n## 简介\n通过一个开启一个 slot(插槽),可以在物料特定的一个位置渲染一个或者多个节点。slot 比较适合物料的局部自定义渲染。\n\n## 展示\n\n<img src=\"https://"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/string.md",
    "chars": 262,
    "preview": "---\ntitle: StringSetter\n---\n## 简介\n\n用来展示和修改字符串类型的属性值,不可换行\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i4/O1CN0102tNB"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/style.md",
    "chars": 2076,
    "preview": "---\ntitle: StyleSetter\n---\n## 简介\n通过开启 StyleSetter,我们可以将样式配置面板来配置样式属性。\n\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/textArea.md",
    "chars": 282,
    "preview": "---\ntitle: TextAreaSetter\n---\n## 简介\n表单输入组件。\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i3/O1CN012p7cxS1KsLbETRYpY_"
  },
  {
    "path": "docs/docs/guide/appendix/setterDetails/variable.md",
    "chars": 370,
    "preview": "---\ntitle: VariableSetter\n---\n## 简介\n\n用来给属性值设定变量\n\n## 展示\n\n<img src=\"https://img.alicdn.com/imgextra/i3/O1CN01RhKkpP1Qexivg"
  },
  {
    "path": "docs/docs/guide/appendix/setters.md",
    "chars": 3146,
    "preview": "---\ntitle: 预置设置器列表\nsidebar_position: 4\n---\n| 预置 Setter | 返回类型 | 用途 | 截图 |\n| --- | --- | --- | --- |\n| [ArraySetter](./se"
  },
  {
    "path": "docs/docs/guide/create/_category_.json",
    "chars": 88,
    "preview": "{\n  \"label\": \"创建低代码编辑器\",\n  \"position\": 1,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/create/useEditor.md",
    "chars": 4626,
    "preview": "---\ntitle: 接入编辑器\nsidebar_position: 0\n---\n\n您有两种方式初始化低代码编辑器:\n\n1. clone 低代码项目的官方 demo,直接启动项目。适合普通人。\n2. 手工引入低代码 UMD 包,手工配置、打"
  },
  {
    "path": "docs/docs/guide/create/useRenderer.md",
    "chars": 3436,
    "preview": "---\ntitle: 接入运行时\nsidebar_position: 1\n---\n\n低代码引擎的编辑器将产出两份数据:\n\n- 资产包数据 assets:包含物料名称、包名及其获取方式,对应协议中的[《低代码引擎资产包协议规范》](/site"
  },
  {
    "path": "docs/docs/guide/design/_category_.json",
    "chars": 86,
    "preview": "{\n  \"label\": \"引擎设计原理\",\n  \"position\": 3,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/design/datasourceEngine.md",
    "chars": 4551,
    "preview": "---\ntitle: 数据源引擎设计\nsidebar_position: 7\n---\n## 核心原理\n\n考虑之后的扩展性和兼容性,核心分为了 2 类包,一个是 **datasource-engine** ,另一个是 **datasource"
  },
  {
    "path": "docs/docs/guide/design/editor.md",
    "chars": 11136,
    "preview": "---\ntitle: 编排模块设计\nsidebar_position: 3\n---\n本篇重点介绍如何从零开始设计编排模块,设计思路是什么?思考编排的本质是什么?围绕着本质,如何设计并实现对应的功能模块。\n\n![image.png](http"
  },
  {
    "path": "docs/docs/guide/design/generator.md",
    "chars": 3286,
    "preview": "---\ntitle: 出码模块设计\nsidebar_position: 5\n---\n\n本篇主要讲解了出码模块实现的基本思路与一些概念。如需接入出码和定制出码方案,可以参考《[使用出码功能](/site/docs/guide/expand/r"
  },
  {
    "path": "docs/docs/guide/design/materialParser.md",
    "chars": 3853,
    "preview": "---\ntitle: 入料模块设计\nsidebar_position: 2\n---\n## 介绍\n入料模块负责物料接入,通过自动扫描、解析源码组件,产出一份符合《中后台低代码组件描述协议》的** **JSON Schema。这份 Schema"
  },
  {
    "path": "docs/docs/guide/design/renderer.md",
    "chars": 6374,
    "preview": "---\ntitle: 渲染模块设计\nsidebar_position: 4\n---\n## 低代码渲染介绍\n\n<img src=\"https://img.alicdn.com/imgextra/i1/O1CN01TXW6Ku1iQSGIPzn"
  },
  {
    "path": "docs/docs/guide/design/setter.md",
    "chars": 2077,
    "preview": "---\ntitle: 设置器设计\nsidebar_position: 6\n---\n\n设置器,又称为 Setter,是作为物料属性和用户交互的重要途径,在编辑器日常使用中有着非常重要的作用,本文重点介绍 Setter 的设计原理和使用方式,帮"
  },
  {
    "path": "docs/docs/guide/design/specs.md",
    "chars": 3201,
    "preview": "---\ntitle: 协议栈简介\nsidebar_position: 1\n---\n## 什么是低代码协议\n低代码引擎体系基于三份协议来构建,分别是 [《低代码引擎搭建协议规范》](/site/docs/specs/lowcode-spec)"
  },
  {
    "path": "docs/docs/guide/design/summary.md",
    "chars": 2134,
    "preview": "---\ntitle: 架构综述\nsidebar_position: 0\n---\n## 分层架构描述\n![image.png](https://img.alicdn.com/imgextra/i4/O1CN016l8gDo1z7zlRlW1P"
  },
  {
    "path": "docs/docs/guide/expand/_category_.json",
    "chars": 88,
    "preview": "{\n  \"label\": \"扩展低代码编辑器\",\n  \"position\": 2,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/expand/editor/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"扩展编辑态\",\n  \"position\": 1,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/expand/editor/cli.md",
    "chars": 4702,
    "preview": "---\ntitle: 低代码生态脚手架 & 调试机制\nsidebar_position: 10\n---\n## 脚手架简述\n\n在 fork 低代码编辑器 demo 项目后,您可以直接在项目中任意扩展低代码编辑器。如果您想要将自己的组件/插件/"
  },
  {
    "path": "docs/docs/guide/expand/editor/graph.md",
    "chars": 4105,
    "preview": "---\ntitle: 图编排扩展\nsidebar_position: 8\n---\n## 项目运行\n### 前置准备\n1. 参考 https://lowcode-engine.cn/site/docs/guide/quickStart/sta"
  },
  {
    "path": "docs/docs/guide/expand/editor/material.md",
    "chars": 9312,
    "preview": "---\ntitle: 物料扩展\nsidebar_position: 1\n---\n## 物料简述\n物料是页面搭建的原料,按照粒度可分为组件、区块和模板:\n\n1. 组件:组件是页面搭建最小的可复用单元,其只对外暴露配置项,用户无需感知其内部实现"
  },
  {
    "path": "docs/docs/guide/expand/editor/metaSpec.md",
    "chars": 10842,
    "preview": "---\ntitle: 物料描述详解\nsidebar_position: 2\n---\n## 物料描述概述\n\n中后台前端体系中,存在大量的组件,程序员可以通过阅读文档,知悉组件的用法。可是搭建平台无法理解 README,而且很多时候,READM"
  },
  {
    "path": "docs/docs/guide/expand/editor/parts/_category_.json",
    "chars": 43,
    "preview": "{\n  \"label\": \"Parts 造物\",\n  \"position\": 1\n}\n"
  },
  {
    "path": "docs/docs/guide/expand/editor/parts/partsIntro.md",
    "chars": 605,
    "preview": "---\ntitle: 介绍\nsidebar_position: 1\n---\n## 介绍\n![](https://gw.alicdn.com/imgextra/i2/O1CN01Gyq6AZ1nOENPTVXX7_!!600000000507"
  },
  {
    "path": "docs/docs/guide/expand/editor/parts/partsassets.md",
    "chars": 9478,
    "preview": "---\ntitle: 资产包管理\nsidebar_position: 4\n---\n\n## 介绍\n\n通过前述介绍,相信大家已经了解如何使用「[Parts·造物](https://parts.lowcode-engine.cn/)」来将已有的 "
  },
  {
    "path": "docs/docs/guide/expand/editor/parts/partslcc.md",
    "chars": 3051,
    "preview": "---\ntitle: 低代码组件\nsidebar_position: 2\n---\n## 什么是低代码组件\n我们先了解一下什么是低代码组件,为什么要用低代码组件。\n\n低代码组件是通过可视化的方式生产的组件,这些组件既可以用于低代码搭建体系,也"
  },
  {
    "path": "docs/docs/guide/expand/editor/parts/prototype.md",
    "chars": 3911,
    "preview": "---\ntitle: React 组件导入\nsidebar_position: 3\n---\n## 介绍\n大家在使用[低代码引擎](https://lowcode-engine.cn/)构建低代码应用平台时,遇到的一个主要问题是如何让已有的 "
  },
  {
    "path": "docs/docs/guide/expand/editor/pluginContextMenu.md",
    "chars": 2675,
    "preview": "---\ntitle: 插件扩展 - 编排扩展\nsidebar_position: 6\n---\n\n## 场景一:扩展选中节点操作项\n\n### 增加节点操作项\n![image.png](https://img.alicdn.com/imgext"
  },
  {
    "path": "docs/docs/guide/expand/editor/pluginWidget.md",
    "chars": 5133,
    "preview": "---\ntitle: 插件扩展 - 面板扩展\nsidebar_position: 5\n---\n\n## 插件简述\n\n插件功能赋予低代码引擎更高的灵活性,低代码引擎的生态提供了一些官方的插件,但是无法满足所有人的需求,所以提供了强大的插件定制功"
  },
  {
    "path": "docs/docs/guide/expand/editor/setter.md",
    "chars": 4769,
    "preview": "---\ntitle: 设置器扩展\nsidebar_position: 7\n---\n## 设置器简述\n\n设置器主要用于低代码组件属性值的设置,顾名思义叫\"设置器\",又称为 Setter。由于组件的属性有各种类型,需要有与之对应的设置器支持,每"
  },
  {
    "path": "docs/docs/guide/expand/editor/summary.md",
    "chars": 2494,
    "preview": "---\ntitle: 编辑态扩展简述\nsidebar_position: 0\n---\n## 扩展点简述\n\n我们可以从 Demo 的项目中看到页面中有很多的区块:\n![image.png](https://img.alicdn.com/img"
  },
  {
    "path": "docs/docs/guide/expand/editor/theme.md",
    "chars": 4558,
    "preview": "---\ntitle: 主题色扩展\nsidebar_position: 9\n---\n\n## 简介\n\n主题色扩展允许用户定制多样的设计器主题,增加界面的个性化和品牌识别度。\n\n## 设计器主题色定制\n\n在 CSS 的根级别定义主题色变量可以确保"
  },
  {
    "path": "docs/docs/guide/expand/runtime/_category_.json",
    "chars": 85,
    "preview": "{\n  \"label\": \"扩展运行时\",\n  \"position\": 2,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/expand/runtime/codeGeneration.md",
    "chars": 3736,
    "preview": "---\ntitle: 使用出码功能\nsidebar_position: 1\n---\n\n## 出码简述\n所谓出码,即将低代码编排出的 schema 进行解析并转换成最终可执行的代码的过程。\n## 出码的适用范围\n出码是为了更高效的运行和更灵活"
  },
  {
    "path": "docs/docs/guide/expand/runtime/renderer.md",
    "chars": 8569,
    "preview": "---\ntitle: 使用渲染模块\nsidebar_position: 0\n---\n## 快速使用\n渲染依赖于 schema 和 components。其中 schema 和 components 需要一一对应,schema 中使用到的组件"
  },
  {
    "path": "docs/docs/guide/quickStart/_category_.json",
    "chars": 82,
    "preview": "{\n  \"label\": \"入门\",\n  \"position\": 0,\n  \"collapsed\": false,\n  \"collapsible\": true\n}\n"
  },
  {
    "path": "docs/docs/guide/quickStart/demo.md",
    "chars": 1318,
    "preview": "---\ntitle: 试用低代码引擎 Demo\nsidebar_position: 2\n---\n## 访问地址\n\n低代码引擎的 Demo 可以通过如下永久链接访问到:\n\n[设计器 demo](https://lowcode-engine.c"
  },
  {
    "path": "docs/docs/guide/quickStart/intro.md",
    "chars": 2670,
    "preview": "---\ntitle: 简介\nsidebar_position: 1\n---\n\n# 阿里低代码引擎简介\n\n## 低代码介绍\n\n零代码、低代码的概念在整个全球行业内已经流行了很长一段时间。通常意义上的低代码定义会有三个关键点:\n\n1. 一个用于"
  },
  {
    "path": "docs/docs/guide/quickStart/start.md",
    "chars": 10210,
    "preview": "---\nsidebar_position: 3\ntitle: 快速开始\n---\n\n## 前置知识\n\n我们假定你已经对 HTML 和 JavaScript 都比较熟悉了。即便你之前使用其他编程语言,你也可以跟上这篇教程的。除此之外,我们假定你"
  },
  {
    "path": "docs/docs/participate/code-specification.md",
    "chars": 558,
    "preview": "---\ntitle: 编码规约\nsidebar_position: 5\n---\n\n编码规约\n---\n\n### 命名\n\n - 使用 `PascalCase` 为类型命名\n - 使用 `I` 做为接口名前缀\n - 使用 `PascalCase`"
  },
  {
    "path": "docs/docs/participate/flow.md",
    "chars": 3896,
    "preview": "---\ntitle: 研发协作流程\nsidebar_position: 2\n---\n## 代码风格\n引擎项目配置了 eslint 和 stylelint,在每次 git commit 前都会检查代码风格,假如有报错,请修改后再提交。(**严"
  },
  {
    "path": "docs/docs/participate/index.md",
    "chars": 2789,
    "preview": "---\ntitle: 参与贡献\nsidebar_position: 0\n---\n\n### 环境准备\n\n开发 LowcodeEngine 需要 Node.js 16+。\n\n推荐使用 nvm 管理 Node.js,避免权限问题的同时,还能够随时"
  },
  {
    "path": "docs/docs/participate/meet.md",
    "chars": 1124,
    "preview": "---\ntitle: 开源社区例会\nsidebar_position: 0\n---\n\n## **简介**\n\n低代码引擎开源社区致力于共同推动低代码技术的发展和创新。本社区汇集了低代码技术领域的开发者、技术专家和行业观察者,通过定期的例会来交"
  },
  {
    "path": "docs/docs/specs/assets-spec.md",
    "chars": 19821,
    "preview": "---\ntitle: 《低代码引擎资产包协议规范》\nsidebar_position: 2\n---\n## 1 介绍\n\n### 1.1 本协议规范涉及的问题域\n\n- 定义本协议版本号规范\n- 定义本协议中每个子规范需要被支持的 Level\n-"
  },
  {
    "path": "docs/docs/specs/lowcode-spec.md",
    "chars": 57600,
    "preview": "---\ntitle: 《低代码引擎搭建协议规范》\nsidebar_position: 0\n---\n\n## 1 介绍\n\n### 1.1 本协议规范涉及的问题域\n\n- 定义本协议版本号规范\n- 定义本协议中每个子规范需要被支持的 Level\n-"
  },
  {
    "path": "docs/docs/specs/material-spec.md",
    "chars": 50601,
    "preview": "---\ntitle: 《低代码引擎物料协议规范》\nsidebar_position: 1\n---\n\n## 1 介绍\n\n### 1.1 本协议规范涉及的问题域\n\n- 定义本协议版本号规范\n- 定义本协议中每个子规范需要被支持的 Level\n-"
  },
  {
    "path": "docs/docs/video/index.md",
    "chars": 1020,
    "preview": "# 官方视频\n- [2023/11/20 云栖大会|阿里开源低代码引擎及商业解决方案](https://www.bilibili.com/video/BV1Ku4y1w7Zr)\n- [2023/08/03 初识低代码引擎](https://"
  },
  {
    "path": "docs/docusaurus.config.js",
    "chars": 2391,
    "preview": "/* eslint-disable @typescript-eslint/no-require-imports */\n// Note: type annotations allow type checking and IDEs autoco"
  },
  {
    "path": "docs/package.json",
    "chars": 1626,
    "preview": "{\n  \"name\": \"@alilc/lowcode-engine-docs\",\n  \"version\": \"1.2.31\",\n  \"description\": \"低代码引擎版本化文档\",\n  \"license\": \"MIT\",\n  \"f"
  },
  {
    "path": "docs/scripts/getDocsFromDir.js",
    "chars": 1687,
    "preview": "const fs = require('fs');\nconst path = require('path');\nconst glob = require('glob');\nconst matter = require('gray-matte"
  },
  {
    "path": "docs/scripts/sync-oss.js",
    "chars": 922,
    "preview": "#!/usr/bin/env node\nconst http = require('http');\nconst package = require('../package.json');\nconst { version, name } = "
  },
  {
    "path": "docs/src/css/custom.css",
    "chars": 3981,
    "preview": "\n/**\n * Any CSS included here will be global. The classic template\n * bundles Infima by default. Infima is a CSS framewo"
  },
  {
    "path": "docs/src/pages/index-old.tsx",
    "chars": 1076,
    "preview": "import React from 'react';\nimport clsx from 'clsx';\nimport Link from '@docusaurus/Link';\nimport useDocusaurusContext fro"
  },
  {
    "path": "docs/src/pages/index.module.css",
    "chars": 434,
    "preview": "/**\n * CSS files with the .module.css suffix will be treated as CSS modules\n * and scoped locally.\n */\n\n.heroBanner {\n  "
  },
  {
    "path": "docs/src/pages/index.tsx",
    "chars": 311,
    "preview": "import React from 'react';\nimport BrowserOnly from '@docusaurus/BrowserOnly';\n\nexport default function ToIndex(): JSX.El"
  },
  {
    "path": "docs/src/pages/markdown-page.md",
    "chars": 185,
    "preview": "<!-- ---\ntitle: Markdown page example\n--- -->\n\n# 文档能力介绍\n\n这是一个使用 Markdown 编写的任意页面,访问地址为 /markdown-page\n\nProduct Docs Capa"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 190,
    "preview": "{\n  // This file is not used in compilation. It is here just for a nice editor experience.\n  \"extends\": \"@tsconfig/docus"
  },
  {
    "path": "index.ts",
    "chars": 187,
    "preview": "import renderer from './packages/react-simulator-renderer/src/renderer';\n\nif (typeof window !== 'undefined') {\n  (window"
  },
  {
    "path": "lerna.json",
    "chars": 652,
    "preview": "{\n  \"lerna\": \"4.0.0\",\n  \"version\": \"1.3.2\",\n  \"npmClient\": \"yarn\",\n  \"useWorkspaces\": true,\n  \"packages\": [\n    \"package"
  },
  {
    "path": "modules/code-generator/.gitignore",
    "chars": 1498,
    "preview": "# project custom\nbuild\nes\ndist\noutput\npackage-lock.json\nyarn.lock\ndeploy-space/packages\ndeploy-space/.env\n/demo/\n/demo-o"
  },
  {
    "path": "modules/code-generator/.prettierrc.js",
    "chars": 115,
    "preview": "module.exports = {\n  printWidth: 100,\n  tabWidth: 2,\n  semi: true,\n  singleQuote: true,\n  trailingComma: 'all',\n};\n"
  },
  {
    "path": "modules/code-generator/.versionrc",
    "chars": 85,
    "preview": "{\n  \"releaseCommitMessageFormat\": \"chore(release): code-generator - {{currentTag}}\"\n}"
  }
]

// ... and 2330 more files (download for full content)

About this extraction

This page contains the full source code of the alibaba/lowcode-engine GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2530 files (5.4 MB), approximately 1.6M tokens, and a symbol index with 4909 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!