@mybricks/to-code-taro 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abstractEventTypeDef.d.ts +11 -0
- package/dist/cjs/abstractEventTypeDef.js +93 -0
- package/dist/cjs/core/comlib/Index.js +45 -0
- package/dist/cjs/core/comlib/_ScanQrcode.js +60 -0
- package/dist/cjs/core/comlib/_SetStorage.js +76 -0
- package/dist/cjs/core/comlib/_ShowToast.js +96 -0
- package/dist/cjs/core/mybricks/MyBricksDescriptor.js +213 -0
- package/dist/cjs/core/mybricks/Subject.js +115 -0
- package/dist/cjs/core/mybricks/constant.js +70 -0
- package/dist/cjs/core/mybricks/context.js +33 -0
- package/dist/cjs/core/mybricks/createEnv.js +39 -0
- package/dist/cjs/core/mybricks/createJSHandle.js +150 -0
- package/dist/cjs/core/mybricks/createModuleEventsHandle.js +49 -0
- package/dist/cjs/core/mybricks/createReactiveInputHandler.js +63 -0
- package/dist/cjs/core/mybricks/event.js +70 -0
- package/dist/cjs/core/mybricks/index.js +871 -0
- package/dist/cjs/core/mybricks/log.js +38 -0
- package/dist/cjs/core/mybricks/utils.js +69 -0
- package/dist/cjs/core/mybricks/variables.js +217 -0
- package/dist/cjs/core/utils/ComContext.js +39 -0
- package/dist/cjs/core/utils/index.js +88 -0
- package/dist/cjs/core/utils/useContext.js +53 -0
- package/dist/cjs/core/utils/with.js +84 -0
- package/dist/cjs/generate/generateTaroProjectJson.d.ts +24 -0
- package/dist/cjs/generate/generateTaroProjectJson.js +101 -0
- package/dist/cjs/generate/generateTaroTempalteJson.d.ts +15 -0
- package/dist/cjs/generate/generateTaroTempalteJson.js +103 -0
- package/dist/cjs/generate/utils/appConfig.d.ts +21 -0
- package/dist/cjs/generate/utils/appConfig.js +47 -0
- package/dist/cjs/generate/utils/commonDir.d.ts +21 -0
- package/dist/cjs/generate/utils/commonDir.js +50 -0
- package/dist/cjs/generate/utils/fileNode.d.ts +17 -0
- package/dist/cjs/generate/utils/fileNode.js +57 -0
- package/dist/cjs/generate/utils/index.d.ts +7 -0
- package/dist/cjs/generate/utils/index.js +29 -0
- package/dist/cjs/generate/utils/tabBarImages.d.ts +14 -0
- package/dist/cjs/generate/utils/tabBarImages.js +36 -0
- package/dist/cjs/handleCom.d.ts +31 -0
- package/dist/cjs/handleCom.js +260 -0
- package/dist/cjs/handleDom.d.ts +19 -0
- package/dist/cjs/handleDom.js +86 -0
- package/dist/cjs/handleExtension.d.ts +10 -0
- package/dist/cjs/handleExtension.js +300 -0
- package/dist/cjs/handleGlobal.d.ts +21 -0
- package/dist/cjs/handleGlobal.js +155 -0
- package/dist/cjs/handleModule.d.ts +15 -0
- package/dist/cjs/handleModule.js +108 -0
- package/dist/cjs/handleSlot.d.ts +27 -0
- package/dist/cjs/handleSlot.js +197 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/taro-template.json +5370 -0
- package/dist/cjs/toCodeTaro.d.ts +130 -0
- package/dist/cjs/toCodeTaro.js +427 -0
- package/dist/cjs/utils/code/component.d.ts +19 -0
- package/dist/cjs/utils/code/component.js +85 -0
- package/dist/cjs/utils/code/index.d.ts +18 -0
- package/dist/cjs/utils/code/index.js +71 -0
- package/dist/cjs/utils/code/renderManager.d.ts +22 -0
- package/dist/cjs/utils/code/renderManager.js +80 -0
- package/dist/cjs/utils/code/scene.d.ts +19 -0
- package/dist/cjs/utils/code/scene.js +82 -0
- package/dist/cjs/utils/convertNamespace.d.ts +11 -0
- package/dist/cjs/utils/convertNamespace.js +43 -0
- package/dist/cjs/utils/genJSModules.d.ts +12 -0
- package/dist/cjs/utils/genJSModules.js +116 -0
- package/dist/cjs/utils/getComponentClassName.d.ts +16 -0
- package/dist/cjs/utils/getComponentClassName.js +47 -0
- package/dist/cjs/utils/handlePageConfig.d.ts +24 -0
- package/dist/cjs/utils/handlePageConfig.js +73 -0
- package/dist/cjs/utils/handleProcess.d.ts +9 -0
- package/dist/cjs/utils/handleProcess.js +370 -0
- package/dist/cjs/utils/index.d.ts +62 -0
- package/dist/cjs/utils/index.js +321 -0
- package/dist/cjs/utils/pageConfig/converter.d.ts +17 -0
- package/dist/cjs/utils/pageConfig/converter.js +83 -0
- package/dist/cjs/utils/pageConfig/index.d.ts +10 -0
- package/dist/cjs/utils/pageConfig/index.js +33 -0
- package/dist/cjs/utils/pageConfig/pageConfig.d.ts +10 -0
- package/dist/cjs/utils/pageConfig/pageConfig.js +87 -0
- package/dist/cjs/utils/pageConfig/saveBase64Image.d.ts +14 -0
- package/dist/cjs/utils/pageConfig/saveBase64Image.js +81 -0
- package/dist/cjs/utils/pageConfig/tabBarConfig.d.ts +13 -0
- package/dist/cjs/utils/pageConfig/tabBarConfig.js +74 -0
- package/dist/cjs/utils/pageConfig/types.d.ts +68 -0
- package/dist/cjs/utils/pageConfig/types.js +17 -0
- package/dist/cjs/utils/pageConfig/validator.d.ts +13 -0
- package/dist/cjs/utils/pageConfig/validator.js +67 -0
- package/dist/cjs/utils/pxtransform.d.ts +28 -0
- package/dist/cjs/utils/pxtransform.js +102 -0
- package/dist/esm/abstractEventTypeDef.d.ts +11 -0
- package/dist/esm/abstractEventTypeDef.js +63 -0
- package/dist/esm/core/comlib/Index.js +3 -0
- package/dist/esm/core/comlib/_ScanQrcode.js +27 -0
- package/dist/esm/core/comlib/_SetStorage.js +52 -0
- package/dist/esm/core/comlib/_ShowToast.js +68 -0
- package/dist/esm/core/mybricks/MyBricksDescriptor.js +232 -0
- package/dist/esm/core/mybricks/Subject.js +143 -0
- package/dist/esm/core/mybricks/constant.js +18 -0
- package/dist/esm/core/mybricks/context.js +5 -0
- package/dist/esm/core/mybricks/createEnv.js +9 -0
- package/dist/esm/core/mybricks/createJSHandle.js +138 -0
- package/dist/esm/core/mybricks/createModuleEventsHandle.js +26 -0
- package/dist/esm/core/mybricks/createReactiveInputHandler.js +40 -0
- package/dist/esm/core/mybricks/event.js +44 -0
- package/dist/esm/core/mybricks/index.js +952 -0
- package/dist/esm/core/mybricks/log.js +12 -0
- package/dist/esm/core/mybricks/utils.js +41 -0
- package/dist/esm/core/mybricks/variables.js +190 -0
- package/dist/esm/core/utils/ComContext.js +10 -0
- package/dist/esm/core/utils/index.js +57 -0
- package/dist/esm/core/utils/useContext.js +24 -0
- package/dist/esm/core/utils/with.js +67 -0
- package/dist/esm/generate/generateTaroProjectJson.d.ts +24 -0
- package/dist/esm/generate/generateTaroProjectJson.js +102 -0
- package/dist/esm/generate/generateTaroTempalteJson.d.ts +15 -0
- package/dist/esm/generate/generateTaroTempalteJson.js +94 -0
- package/dist/esm/generate/utils/appConfig.d.ts +21 -0
- package/dist/esm/generate/utils/appConfig.js +30 -0
- package/dist/esm/generate/utils/commonDir.d.ts +21 -0
- package/dist/esm/generate/utils/commonDir.js +36 -0
- package/dist/esm/generate/utils/fileNode.d.ts +17 -0
- package/dist/esm/generate/utils/fileNode.js +49 -0
- package/dist/esm/generate/utils/index.d.ts +7 -0
- package/dist/esm/generate/utils/index.js +8 -0
- package/dist/esm/generate/utils/tabBarImages.d.ts +14 -0
- package/dist/esm/generate/utils/tabBarImages.js +15 -0
- package/dist/esm/handleCom.d.ts +31 -0
- package/dist/esm/handleCom.js +297 -0
- package/dist/esm/handleDom.d.ts +19 -0
- package/dist/esm/handleDom.js +63 -0
- package/dist/esm/handleExtension.d.ts +10 -0
- package/dist/esm/handleExtension.js +243 -0
- package/dist/esm/handleGlobal.d.ts +21 -0
- package/dist/esm/handleGlobal.js +117 -0
- package/dist/esm/handleModule.d.ts +15 -0
- package/dist/esm/handleModule.js +78 -0
- package/dist/esm/handleSlot.d.ts +27 -0
- package/dist/esm/handleSlot.js +205 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/taro-template.json +5370 -0
- package/dist/esm/toCodeTaro.d.ts +130 -0
- package/dist/esm/toCodeTaro.js +452 -0
- package/dist/esm/utils/code/component.d.ts +19 -0
- package/dist/esm/utils/code/component.js +54 -0
- package/dist/esm/utils/code/index.d.ts +18 -0
- package/dist/esm/utils/code/index.js +51 -0
- package/dist/esm/utils/code/renderManager.d.ts +22 -0
- package/dist/esm/utils/code/renderManager.js +62 -0
- package/dist/esm/utils/code/scene.d.ts +19 -0
- package/dist/esm/utils/code/scene.js +47 -0
- package/dist/esm/utils/convertNamespace.d.ts +11 -0
- package/dist/esm/utils/convertNamespace.js +27 -0
- package/dist/esm/utils/genJSModules.d.ts +12 -0
- package/dist/esm/utils/genJSModules.js +44 -0
- package/dist/esm/utils/getComponentClassName.d.ts +16 -0
- package/dist/esm/utils/getComponentClassName.js +37 -0
- package/dist/esm/utils/handlePageConfig.d.ts +24 -0
- package/dist/esm/utils/handlePageConfig.js +68 -0
- package/dist/esm/utils/handleProcess.d.ts +9 -0
- package/dist/esm/utils/handleProcess.js +379 -0
- package/dist/esm/utils/index.d.ts +62 -0
- package/dist/esm/utils/index.js +345 -0
- package/dist/esm/utils/pageConfig/converter.d.ts +17 -0
- package/dist/esm/utils/pageConfig/converter.js +105 -0
- package/dist/esm/utils/pageConfig/index.d.ts +10 -0
- package/dist/esm/utils/pageConfig/index.js +11 -0
- package/dist/esm/utils/pageConfig/pageConfig.d.ts +10 -0
- package/dist/esm/utils/pageConfig/pageConfig.js +60 -0
- package/dist/esm/utils/pageConfig/saveBase64Image.d.ts +14 -0
- package/dist/esm/utils/pageConfig/saveBase64Image.js +105 -0
- package/dist/esm/utils/pageConfig/tabBarConfig.d.ts +13 -0
- package/dist/esm/utils/pageConfig/tabBarConfig.js +82 -0
- package/dist/esm/utils/pageConfig/types.d.ts +68 -0
- package/dist/esm/utils/pageConfig/types.js +1 -0
- package/dist/esm/utils/pageConfig/validator.d.ts +13 -0
- package/dist/esm/utils/pageConfig/validator.js +64 -0
- package/dist/esm/utils/pxtransform.d.ts +28 -0
- package/dist/esm/utils/pxtransform.js +121 -0
- package/package.json +74 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* app.config.ts 更新工具
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 更新 app.config.ts
|
|
7
|
+
*/
|
|
8
|
+
export function updateAppConfig(appConfigFile, normalItems, items) {
|
|
9
|
+
if (!appConfigFile.content) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
var content = appConfigFile.content;
|
|
13
|
+
|
|
14
|
+
// 更新 pages 配置(使用 scene id)
|
|
15
|
+
var newPagePaths = normalItems.map(function (item) {
|
|
16
|
+
return " 'pages/".concat(item.meta.id, "/index'");
|
|
17
|
+
}).join(',\n');
|
|
18
|
+
content = content.replace(/pages:\s*\[([\s\S]*?)\]/, "pages: [\n".concat(newPagePaths, "\n ]"));
|
|
19
|
+
|
|
20
|
+
// 添加 TabBar 配置(从 items 中读取)
|
|
21
|
+
var tabBarConfigItem = items.find(function (item) {
|
|
22
|
+
return item.type === 'tabBarConfig';
|
|
23
|
+
});
|
|
24
|
+
if (tabBarConfigItem !== null && tabBarConfigItem !== void 0 && tabBarConfigItem.tabBarConfig) {
|
|
25
|
+
content = content.replace(/window:\s*\{([\s\S]*?)\n\s*\}/, function (match) {
|
|
26
|
+
return "".concat(match, ",\n").concat(tabBarConfigItem.tabBarConfig);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
appConfigFile.content = content;
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common 目录处理工具
|
|
3
|
+
*/
|
|
4
|
+
interface FileNode {
|
|
5
|
+
path: string;
|
|
6
|
+
content: string | null;
|
|
7
|
+
children?: FileNode[];
|
|
8
|
+
}
|
|
9
|
+
interface GenerateItem {
|
|
10
|
+
type: string;
|
|
11
|
+
content?: string;
|
|
12
|
+
importManager?: {
|
|
13
|
+
toCode: () => string;
|
|
14
|
+
};
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 处理 common 目录下的文件
|
|
19
|
+
*/
|
|
20
|
+
export declare function handleCommonDir(commonDir: FileNode, items: GenerateItem[]): void;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common 目录处理工具
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 处理 common 目录下的文件
|
|
7
|
+
*/
|
|
8
|
+
export function handleCommonDir(commonDir, items) {
|
|
9
|
+
commonDir.children = commonDir.children || [];
|
|
10
|
+
|
|
11
|
+
// 处理 jsModules
|
|
12
|
+
var jsModulesItem = items.find(function (item) {
|
|
13
|
+
return item.type === 'jsModules';
|
|
14
|
+
});
|
|
15
|
+
if (jsModulesItem) {
|
|
16
|
+
var _jsModulesItem$import;
|
|
17
|
+
var importCode = ((_jsModulesItem$import = jsModulesItem.importManager) === null || _jsModulesItem$import === void 0 ? void 0 : _jsModulesItem$import.toCode()) || '';
|
|
18
|
+
var fileContent = jsModulesItem.content || '';
|
|
19
|
+
var fullContent = importCode ? "".concat(importCode, "\n").concat(fileContent) : fileContent;
|
|
20
|
+
commonDir.children.push({
|
|
21
|
+
path: 'src/common/jsModules.ts',
|
|
22
|
+
content: fullContent
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// 处理 commonIndex
|
|
27
|
+
var commonIndexItem = items.find(function (item) {
|
|
28
|
+
return item.type === 'commonIndex';
|
|
29
|
+
});
|
|
30
|
+
if (commonIndexItem) {
|
|
31
|
+
commonDir.children.push({
|
|
32
|
+
path: 'src/common/index.ts',
|
|
33
|
+
content: commonIndexItem.content || ''
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文件节点相关工具函数
|
|
3
|
+
*/
|
|
4
|
+
interface FileNode {
|
|
5
|
+
path: string;
|
|
6
|
+
content: string | null;
|
|
7
|
+
children?: FileNode[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 查找目录节点
|
|
11
|
+
*/
|
|
12
|
+
export declare function findDir(nodes: FileNode[], targetPath: string): FileNode | null;
|
|
13
|
+
/**
|
|
14
|
+
* 确保目录存在,如果不存在则创建
|
|
15
|
+
*/
|
|
16
|
+
export declare function ensureDir(parentDir: FileNode, dirPath: string): FileNode;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
|
+
/**
|
|
3
|
+
* 文件节点相关工具函数
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 查找目录节点
|
|
8
|
+
*/
|
|
9
|
+
export function findDir(nodes, targetPath) {
|
|
10
|
+
var _iterator = _createForOfIteratorHelper(nodes),
|
|
11
|
+
_step;
|
|
12
|
+
try {
|
|
13
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
14
|
+
var node = _step.value;
|
|
15
|
+
if (node.path === targetPath) {
|
|
16
|
+
return node;
|
|
17
|
+
}
|
|
18
|
+
if (node.children) {
|
|
19
|
+
var found = findDir(node.children, targetPath);
|
|
20
|
+
if (found) return found;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
} catch (err) {
|
|
24
|
+
_iterator.e(err);
|
|
25
|
+
} finally {
|
|
26
|
+
_iterator.f();
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 确保目录存在,如果不存在则创建
|
|
33
|
+
*/
|
|
34
|
+
export function ensureDir(parentDir, dirPath) {
|
|
35
|
+
parentDir.children = parentDir.children || [];
|
|
36
|
+
var dir = parentDir.children.find(function (node) {
|
|
37
|
+
return node.path === dirPath;
|
|
38
|
+
});
|
|
39
|
+
if (!dir) {
|
|
40
|
+
dir = {
|
|
41
|
+
path: dirPath,
|
|
42
|
+
content: null,
|
|
43
|
+
children: []
|
|
44
|
+
};
|
|
45
|
+
parentDir.children.push(dir);
|
|
46
|
+
}
|
|
47
|
+
dir.children = dir.children || [];
|
|
48
|
+
return dir;
|
|
49
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TabBar 图片文件处理工具
|
|
3
|
+
*/
|
|
4
|
+
import type { ImageFileInfo } from '../../utils/pageConfig';
|
|
5
|
+
interface FileNode {
|
|
6
|
+
path: string;
|
|
7
|
+
content: string | null;
|
|
8
|
+
children?: FileNode[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 处理 TabBar 图片文件
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleTabBarImages(tabbarDir: FileNode, imageFiles: ImageFileInfo[]): void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TabBar 图片文件处理工具
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 处理 TabBar 图片文件
|
|
7
|
+
*/
|
|
8
|
+
export function handleTabBarImages(tabbarDir, imageFiles) {
|
|
9
|
+
imageFiles.forEach(function (imageFile) {
|
|
10
|
+
tabbarDir.children.push({
|
|
11
|
+
path: imageFile.filePath,
|
|
12
|
+
content: imageFile.fileContent.toString('base64')
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ImportManager } from "./utils";
|
|
2
|
+
import { RenderManager } from "./utils/code/renderManager";
|
|
3
|
+
import type { UI, BaseConfig } from "./toCodeTaro";
|
|
4
|
+
export type Com = Extract<UI["children"][0], {
|
|
5
|
+
type: "com";
|
|
6
|
+
}>;
|
|
7
|
+
type HandleComResult = {
|
|
8
|
+
ui: string;
|
|
9
|
+
js: string;
|
|
10
|
+
slots: string[];
|
|
11
|
+
scopeSlots: string[];
|
|
12
|
+
cssContent: string;
|
|
13
|
+
renderCode?: string;
|
|
14
|
+
outputsConfig?: Record<string, any>;
|
|
15
|
+
};
|
|
16
|
+
export interface HandleComConfig extends BaseConfig {
|
|
17
|
+
addParentDependencyImport: (typeof ImportManager)["prototype"]["addImport"];
|
|
18
|
+
addConsumer: (provider: ReturnType<BaseConfig["getCurrentProvider"]>) => void;
|
|
19
|
+
addComId: (comId: string) => void;
|
|
20
|
+
renderManager?: RenderManager;
|
|
21
|
+
addJSModule?: (module: {
|
|
22
|
+
id: string;
|
|
23
|
+
title: string;
|
|
24
|
+
transformCode: string;
|
|
25
|
+
inputs: string[];
|
|
26
|
+
outputs: string[];
|
|
27
|
+
data: any;
|
|
28
|
+
}) => void;
|
|
29
|
+
}
|
|
30
|
+
declare const handleCom: (com: Com, config: HandleComConfig) => HandleComResult;
|
|
31
|
+
export default handleCom;
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
import { convertComponentStyle, firstCharToUpperCase, indentation, convertStyleAryToCss } from "./utils";
|
|
6
|
+
import { getUiComponentCode } from "./utils/code";
|
|
7
|
+
import handleSlot from "./handleSlot";
|
|
8
|
+
import { genSlotRenderRef, formatSlotContent } from "./utils/code/component";
|
|
9
|
+
import { RenderManager } from "./utils/code/renderManager";
|
|
10
|
+
import { handleProcess } from "./utils/handleProcess";
|
|
11
|
+
var handleCom = function handleCom(com, config) {
|
|
12
|
+
var _config$getComponentC, _scene$coms, _props$style;
|
|
13
|
+
var meta = com.meta,
|
|
14
|
+
props = com.props,
|
|
15
|
+
slots = com.slots,
|
|
16
|
+
events = com.events;
|
|
17
|
+
var isModule = meta.def.namespace.startsWith("mybricks.taro.module");
|
|
18
|
+
var _config$getComponentM = config.getComponentMeta(meta),
|
|
19
|
+
importInfo = _config$getComponentM.importInfo,
|
|
20
|
+
callName = _config$getComponentM.callName;
|
|
21
|
+
|
|
22
|
+
// 检查是否是 JS 计算组件(_muilt-inputJs 或 js-ai)
|
|
23
|
+
var isJsCalculationComponent = meta.def.namespace === "mybricks.taro._muilt-inputJs" || meta.def.namespace === "mybricks.core-comlib.js-ai";
|
|
24
|
+
if (isJsCalculationComponent) {
|
|
25
|
+
var _props$data, _props$data2, _props$data3;
|
|
26
|
+
// 收集 JS 计算组件信息
|
|
27
|
+
// 优先使用原始代码(code),而不是转译后的代码(transformCode),避免包含 Babel 辅助函数
|
|
28
|
+
var transformCode = ((_props$data = props.data) === null || _props$data === void 0 || (_props$data = _props$data.fns) === null || _props$data === void 0 ? void 0 : _props$data.code) || ((_props$data2 = props.data) === null || _props$data2 === void 0 || (_props$data2 = _props$data2.fns) === null || _props$data2 === void 0 ? void 0 : _props$data2.transformCode) || ((_props$data3 = props.data) === null || _props$data3 === void 0 ? void 0 : _props$data3.fns);
|
|
29
|
+
if (transformCode && config.addJSModule) {
|
|
30
|
+
var _meta$model, _meta$model2;
|
|
31
|
+
config.addJSModule({
|
|
32
|
+
id: meta.id,
|
|
33
|
+
title: meta.title || "JS计算",
|
|
34
|
+
transformCode: typeof transformCode === 'string' ? transformCode : '',
|
|
35
|
+
inputs: ((_meta$model = meta.model) === null || _meta$model === void 0 ? void 0 : _meta$model.inputs) || [],
|
|
36
|
+
outputs: ((_meta$model2 = meta.model) === null || _meta$model2 === void 0 ? void 0 : _meta$model2.outputs) || [],
|
|
37
|
+
data: props.data || {}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// JS 计算组件:不引入组件,在调用时使用 jsModules
|
|
41
|
+
return {
|
|
42
|
+
slots: [],
|
|
43
|
+
scopeSlots: [],
|
|
44
|
+
ui: '',
|
|
45
|
+
js: '',
|
|
46
|
+
cssContent: '',
|
|
47
|
+
outputsConfig: undefined
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// 确保组件名是大驼峰
|
|
52
|
+
var componentName = firstCharToUpperCase(callName || importInfo.name);
|
|
53
|
+
var importName = firstCharToUpperCase(importInfo.name);
|
|
54
|
+
config.addParentDependencyImport({
|
|
55
|
+
packageName: importInfo.from,
|
|
56
|
+
dependencyNames: [importName],
|
|
57
|
+
importType: importInfo.type
|
|
58
|
+
});
|
|
59
|
+
var currentProvider = config.getCurrentProvider();
|
|
60
|
+
var providerName = currentProvider.name;
|
|
61
|
+
var componentController = ((_config$getComponentC = config.getComponentController) === null || _config$getComponentC === void 0 ? void 0 : _config$getComponentC.call(config, {
|
|
62
|
+
com: meta,
|
|
63
|
+
scene: config.getCurrentScene()
|
|
64
|
+
})) || "controller_".concat(meta.id);
|
|
65
|
+
var providerPath = "controllers.current.".concat(providerName);
|
|
66
|
+
var controllerPath = "".concat(providerPath, ".").concat(componentController);
|
|
67
|
+
|
|
68
|
+
// 在 JS 块中生成 inputs 映射逻辑
|
|
69
|
+
var indentJs = indentation(config.codeStyle.indent * (config.depth + 1));
|
|
70
|
+
var eventCode = "";
|
|
71
|
+
var scene = config.getCurrentScene();
|
|
72
|
+
var sceneCom = (_scene$coms = scene.coms) === null || _scene$coms === void 0 ? void 0 : _scene$coms[meta.id];
|
|
73
|
+
|
|
74
|
+
// 恢复:使用实例级激活的 inputs(无论是否连线)
|
|
75
|
+
var componentInputs = (sceneCom === null || sceneCom === void 0 ? void 0 : sceneCom.inputs) || [];
|
|
76
|
+
var componentOutputs = (sceneCom === null || sceneCom === void 0 ? void 0 : sceneCom.outputs) || meta.outputs || [];
|
|
77
|
+
|
|
78
|
+
// 不再生成 data_${meta.id},WithCom 内部会使用 useModel
|
|
79
|
+
// 不再生成 inputs 映射逻辑,WithCom 内部会使用 useBindInputs
|
|
80
|
+
|
|
81
|
+
var comEventCode = "";
|
|
82
|
+
// 收集 outputs 配置数据(用于 Provider)
|
|
83
|
+
var outputsConfig = {};
|
|
84
|
+
var eventConfig = {};
|
|
85
|
+
var resultStyle = convertComponentStyle(props.style);
|
|
86
|
+
var cssContent = convertStyleAryToCss((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.styleAry, meta.id);
|
|
87
|
+
var outputEvents = events || {};
|
|
88
|
+
Object.entries(outputEvents).forEach(function (_ref) {
|
|
89
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
90
|
+
eventId = _ref2[0],
|
|
91
|
+
eventInfo = _ref2[1];
|
|
92
|
+
var type = eventInfo.type,
|
|
93
|
+
isAbstract = eventInfo.isAbstract,
|
|
94
|
+
diagramId = eventInfo.diagramId,
|
|
95
|
+
schema = eventInfo.schema,
|
|
96
|
+
active = eventInfo.active;
|
|
97
|
+
if (active === false) return; // 过滤未激活的事件
|
|
98
|
+
|
|
99
|
+
if (isAbstract) {
|
|
100
|
+
config.setAbstractEventTypeDefMap({
|
|
101
|
+
comId: com.meta.id,
|
|
102
|
+
eventId: eventId,
|
|
103
|
+
typeDef: config.getTypeDef(),
|
|
104
|
+
schema: schema
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (type === "fx") {
|
|
109
|
+
var fxsMap = config.getFxsMap();
|
|
110
|
+
var _currentProvider = config.getCurrentProvider();
|
|
111
|
+
var _scene = config.getCurrentScene();
|
|
112
|
+
var pinProxy = _scene.pinProxies["".concat(props.id, "-").concat(eventId)];
|
|
113
|
+
var fxProvider = fxsMap[pinProxy.frameId];
|
|
114
|
+
var isGlobal = fxProvider.name === "global";
|
|
115
|
+
if (fxProvider.name !== _currentProvider.name) {
|
|
116
|
+
if (isGlobal) {
|
|
117
|
+
config.addParentDependencyImport({
|
|
118
|
+
packageName: config.getComponentPackageName(),
|
|
119
|
+
dependencyNames: ["globalFxs"],
|
|
120
|
+
importType: "named"
|
|
121
|
+
});
|
|
122
|
+
} else {
|
|
123
|
+
config.addConsumer(fxProvider);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
var _indent = indentation(config.codeStyle.indent * (config.depth + 2));
|
|
127
|
+
comEventCode += "".concat(_indent).concat(eventId, ": ").concat(isGlobal ? "globalFxs" : "comRefs.current.".concat(fxProvider.name, "_Fxs"), ".").concat(pinProxy.frameId, ",\n");
|
|
128
|
+
// 收集 fx 类型的 outputs 配置
|
|
129
|
+
eventConfig[eventId] = {
|
|
130
|
+
connected: true
|
|
131
|
+
};
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (type !== "defined") {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!diagramId) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
var event = config.getEventByDiagramId(diagramId);
|
|
141
|
+
if (!event) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// 事件处理函数的参数名
|
|
146
|
+
var paramName = "value";
|
|
147
|
+
var process = handleProcess(event, _objectSpread(_objectSpread({}, config), {}, {
|
|
148
|
+
target: 'comRefs.current',
|
|
149
|
+
depth: config.depth + 3,
|
|
150
|
+
addParentDependencyImport: config.addParentDependencyImport,
|
|
151
|
+
getParams: function getParams() {
|
|
152
|
+
// 返回参数名,这样在 process 中会使用这个变量名
|
|
153
|
+
return _defineProperty({}, eventId, paramName);
|
|
154
|
+
}
|
|
155
|
+
})).replace(/this\./g, 'comRefs.current.').replace(/comRefs\.current\.([a-zA-Z0-9_]+)\.controller_/g, 'comRefs.current.$1.').replace(/comRefs\.current\.slot_Index\./g, 'comRefs.current.'); // 移除 slot_Index 作用域
|
|
156
|
+
|
|
157
|
+
if (process.includes("pageParams")) {
|
|
158
|
+
config.addParentDependencyImport({
|
|
159
|
+
packageName: config.getComponentPackageName(),
|
|
160
|
+
dependencyNames: ["page"],
|
|
161
|
+
importType: "named"
|
|
162
|
+
});
|
|
163
|
+
process = indentation(config.codeStyle.indent * (config.depth + 3)) + "const pageParams: any = page.getParams(\"".concat(config.getCurrentScene().id, "\");\n") + process;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// 生成事件处理函数代码(参照鸿蒙的实现方式)
|
|
167
|
+
// handlerCode 应该是函数体代码,不包含事件名
|
|
168
|
+
var handlerCode = "(".concat(paramName, ": any) => {\n").concat(process, "\n").concat(indentation(config.codeStyle.indent * (config.depth + 2)), "}");
|
|
169
|
+
if (!outputsConfig[meta.id]) {
|
|
170
|
+
outputsConfig[meta.id] = {};
|
|
171
|
+
}
|
|
172
|
+
// 将事件名转换为 onXxx 格式(onClick, onScroll 等)
|
|
173
|
+
// 如果 eventId 已经是 onXxx 格式,直接使用;否则转换为 onXxx
|
|
174
|
+
var onEventName = eventId.startsWith('on') ? eventId : "on".concat(eventId.charAt(0).toUpperCase()).concat(eventId.slice(1));
|
|
175
|
+
outputsConfig[meta.id][onEventName] = handlerCode;
|
|
176
|
+
|
|
177
|
+
// 收集 defined 类型的 outputs 配置
|
|
178
|
+
eventConfig[eventId] = {
|
|
179
|
+
connected: true
|
|
180
|
+
};
|
|
181
|
+
});
|
|
182
|
+
currentProvider.coms.add(meta.id);
|
|
183
|
+
currentProvider.controllers.add(meta.id);
|
|
184
|
+
|
|
185
|
+
// 生成组件 JSX 代码
|
|
186
|
+
// 使用 getUiComponentCode 函数生成组件代码(参照鸿蒙的实现方式)
|
|
187
|
+
var indent = indentation(config.codeStyle.indent * config.depth);
|
|
188
|
+
var indent2 = indentation(config.codeStyle.indent * (config.depth + 1));
|
|
189
|
+
|
|
190
|
+
// 处理插槽代码
|
|
191
|
+
var slotsCode = "";
|
|
192
|
+
var accumulatedCssContent = cssContent;
|
|
193
|
+
var renderCode = ""; // 收集的 render 函数定义代码
|
|
194
|
+
var renderManager = config.renderManager || new RenderManager();
|
|
195
|
+
if (slots) {
|
|
196
|
+
// 处理插槽 - 在 Taro/React 中,插槽通过 slots prop 传递
|
|
197
|
+
// 参照鸿蒙的思考方式:非作用域插槽直接处理,作用域插槽需要特殊处理
|
|
198
|
+
var slotsObjectCode = "";
|
|
199
|
+
var slotEntries = Object.entries(slots);
|
|
200
|
+
slotEntries.forEach(function (_ref4, index) {
|
|
201
|
+
var _props$style2;
|
|
202
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
203
|
+
slotId = _ref5[0],
|
|
204
|
+
slot = _ref5[1];
|
|
205
|
+
// 尝试从 props.style.slots 中获取原始 layout 信息
|
|
206
|
+
var rawSlotInfo = (_props$style2 = props.style) === null || _props$style2 === void 0 || (_props$style2 = _props$style2.slots) === null || _props$style2 === void 0 ? void 0 : _props$style2[slotId];
|
|
207
|
+
if (rawSlotInfo !== null && rawSlotInfo !== void 0 && rawSlotInfo.layout) {
|
|
208
|
+
slot.layout = rawSlotInfo.layout;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// 参照鸿蒙:非作用域插槽 depth 从 1 开始
|
|
212
|
+
// 因为插槽内容会在 render 函数内部,需要从第 1 层开始缩进
|
|
213
|
+
var _handleSlot = handleSlot(slot, _objectSpread(_objectSpread({}, config), {}, {
|
|
214
|
+
checkIsRoot: function checkIsRoot() {
|
|
215
|
+
return false;
|
|
216
|
+
},
|
|
217
|
+
depth: 1,
|
|
218
|
+
// 参照鸿蒙:非作用域插槽 depth 从 1 开始
|
|
219
|
+
renderManager: renderManager // 传递 renderManager
|
|
220
|
+
})),
|
|
221
|
+
js = _handleSlot.js,
|
|
222
|
+
ui = _handleSlot.ui,
|
|
223
|
+
slotCssContent = _handleSlot.cssContent;
|
|
224
|
+
eventCode += js;
|
|
225
|
+
if (slotCssContent) {
|
|
226
|
+
accumulatedCssContent += (accumulatedCssContent ? "\n" : "") + slotCssContent;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// 生成 render 函数ID:组件ID_插槽ID
|
|
230
|
+
var renderId = "".concat(meta.id, "_").concat(slotId);
|
|
231
|
+
|
|
232
|
+
// 格式化插槽内容为 render 函数体代码
|
|
233
|
+
var baseIndentSize = config.codeStyle.indent; // 通常是 2
|
|
234
|
+
// render 函数定义在根组件内部,缩进是根组件的缩进(通常是 2 个空格)
|
|
235
|
+
// render 函数体内部的缩进 = 根组件缩进(2个空格) + 函数体内部缩进(2个空格)= 4个空格
|
|
236
|
+
var rootIndent = config.codeStyle.indent; // 根组件缩进
|
|
237
|
+
var renderBodyIndent = indentation(rootIndent + config.codeStyle.indent);
|
|
238
|
+
var formattedContent = formatSlotContent({
|
|
239
|
+
uiContent: ui,
|
|
240
|
+
baseIndentSize: baseIndentSize,
|
|
241
|
+
renderBodyIndent: renderBodyIndent
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// 注册 render 函数到 renderManager
|
|
245
|
+
renderManager.register(renderId, formattedContent);
|
|
246
|
+
|
|
247
|
+
// 生成插槽渲染函数引用
|
|
248
|
+
var slotIndent = indentation(config.codeStyle.indent * (config.depth + 2));
|
|
249
|
+
slotsObjectCode += genSlotRenderRef({
|
|
250
|
+
slotId: slotId,
|
|
251
|
+
renderId: renderId,
|
|
252
|
+
indent: slotIndent,
|
|
253
|
+
isLast: index === slotEntries.length - 1
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
slotsCode = slotsObjectCode;
|
|
257
|
+
// render 函数定义代码会在根组件级别统一生成,这里不需要单独生成
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// 使用 getUiComponentCode 函数生成组件代码
|
|
261
|
+
var componentResultStyle = _objectSpread({}, resultStyle);
|
|
262
|
+
var rootStyle = componentResultStyle.root || {};
|
|
263
|
+
delete componentResultStyle.root;
|
|
264
|
+
|
|
265
|
+
// 从 outputsConfig 中提取事件处理函数
|
|
266
|
+
var eventHandlers = outputsConfig[meta.id] || {};
|
|
267
|
+
var uiComponentCode = getUiComponentCode({
|
|
268
|
+
componentName: componentName,
|
|
269
|
+
meta: meta,
|
|
270
|
+
props: props,
|
|
271
|
+
resultStyle: {
|
|
272
|
+
root: rootStyle
|
|
273
|
+
},
|
|
274
|
+
// 传递 root style
|
|
275
|
+
componentInputs: componentInputs.length > 0 ? componentInputs : undefined,
|
|
276
|
+
componentOutputs: componentOutputs.length > 0 ? componentOutputs : undefined,
|
|
277
|
+
comEventCode: comEventCode,
|
|
278
|
+
slotsCode: slotsCode,
|
|
279
|
+
eventHandlers: eventHandlers // 传递事件处理函数
|
|
280
|
+
}, {
|
|
281
|
+
codeStyle: config.codeStyle,
|
|
282
|
+
depth: config.depth + 1,
|
|
283
|
+
verbose: config.verbose
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// WithCom 内部已经包含了 View 包装,不需要外层再包一层 View
|
|
287
|
+
var ui = uiComponentCode;
|
|
288
|
+
return {
|
|
289
|
+
slots: [],
|
|
290
|
+
scopeSlots: [],
|
|
291
|
+
ui: ui,
|
|
292
|
+
js: eventCode,
|
|
293
|
+
cssContent: accumulatedCssContent,
|
|
294
|
+
outputsConfig: Object.keys(outputsConfig).length > 0 ? outputsConfig : undefined
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
export default handleCom;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { UI, BaseConfig } from "./toCodeTaro";
|
|
2
|
+
import { ImportManager } from "./utils";
|
|
3
|
+
type Dom = Extract<UI["children"][0], {
|
|
4
|
+
type: "dom";
|
|
5
|
+
}>;
|
|
6
|
+
interface HandleDomConfig extends BaseConfig {
|
|
7
|
+
addParentDependencyImport: (typeof ImportManager)["prototype"]["addImport"];
|
|
8
|
+
addConsumer: (provider: ReturnType<BaseConfig["getCurrentProvider"]>) => void;
|
|
9
|
+
addComId: (comId: string) => void;
|
|
10
|
+
}
|
|
11
|
+
type HandleDomResult = {
|
|
12
|
+
ui: string;
|
|
13
|
+
js: string;
|
|
14
|
+
slots: string[];
|
|
15
|
+
scopeSlots: string[];
|
|
16
|
+
cssContent: string;
|
|
17
|
+
};
|
|
18
|
+
declare const handleDom: (dom: Dom, config: HandleDomConfig) => HandleDomResult;
|
|
19
|
+
export default handleDom;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import { indentation, convertStyleAryToCss, convertRootStyle } from "./utils";
|
|
4
|
+
import handleCom from "./handleCom";
|
|
5
|
+
var handleDom = function handleDom(dom, config) {
|
|
6
|
+
var _domProps$style;
|
|
7
|
+
var props = dom.props,
|
|
8
|
+
children = dom.children;
|
|
9
|
+
var domProps = props; // 扩展类型以支持 id 属性
|
|
10
|
+
var uiCode = "";
|
|
11
|
+
var jsCode = "";
|
|
12
|
+
var cssContent = convertStyleAryToCss((_domProps$style = domProps.style) === null || _domProps$style === void 0 ? void 0 : _domProps$style.styleAry, domProps.id);
|
|
13
|
+
var level0Slots = [];
|
|
14
|
+
var level1Slots = [];
|
|
15
|
+
var nextConfig = _objectSpread(_objectSpread({}, config), {}, {
|
|
16
|
+
depth: config.depth + 1
|
|
17
|
+
});
|
|
18
|
+
children.forEach(function (child) {
|
|
19
|
+
if (child.type === "com") {
|
|
20
|
+
var _handleCom = handleCom(child, nextConfig),
|
|
21
|
+
_ui = _handleCom.ui,
|
|
22
|
+
js = _handleCom.js,
|
|
23
|
+
slots = _handleCom.slots,
|
|
24
|
+
scopeSlots = _handleCom.scopeSlots,
|
|
25
|
+
childCssContent = _handleCom.cssContent;
|
|
26
|
+
uiCode += uiCode ? "\n" + _ui : _ui;
|
|
27
|
+
jsCode += js;
|
|
28
|
+
if (childCssContent) {
|
|
29
|
+
cssContent += (cssContent ? "\n" : "") + childCssContent;
|
|
30
|
+
}
|
|
31
|
+
level0Slots.push.apply(level0Slots, _toConsumableArray(slots));
|
|
32
|
+
level1Slots.push.apply(level1Slots, _toConsumableArray(scopeSlots));
|
|
33
|
+
} else if (child.type === "module") {
|
|
34
|
+
// 模块处理
|
|
35
|
+
uiCode += uiCode ? "\n" + "模块" : "模块";
|
|
36
|
+
} else {
|
|
37
|
+
var _handleDom = handleDom(child, nextConfig),
|
|
38
|
+
_ui2 = _handleDom.ui,
|
|
39
|
+
_js = _handleDom.js,
|
|
40
|
+
_slots = _handleDom.slots,
|
|
41
|
+
_scopeSlots = _handleDom.scopeSlots,
|
|
42
|
+
_childCssContent = _handleDom.cssContent;
|
|
43
|
+
uiCode += uiCode ? "\n" + _ui2 : _ui2;
|
|
44
|
+
jsCode += _js;
|
|
45
|
+
if (_childCssContent) {
|
|
46
|
+
cssContent += (cssContent ? "\n" : "") + _childCssContent;
|
|
47
|
+
}
|
|
48
|
+
level0Slots.push.apply(level0Slots, _toConsumableArray(_slots));
|
|
49
|
+
level1Slots.push.apply(level1Slots, _toConsumableArray(_scopeSlots));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
var indent = indentation(config.codeStyle.indent * config.depth);
|
|
53
|
+
var styleCode = JSON.stringify(convertRootStyle(domProps.style));
|
|
54
|
+
var ui = "".concat(indent, "<View").concat(domProps.id ? " id=\"".concat(domProps.id, "\" className=\"").concat(domProps.id, "\"") : "", " style={").concat(styleCode, "}>\n").concat(uiCode, "\n").concat(indent, "</View>");
|
|
55
|
+
return {
|
|
56
|
+
ui: ui,
|
|
57
|
+
js: jsCode,
|
|
58
|
+
slots: level0Slots,
|
|
59
|
+
scopeSlots: level1Slots,
|
|
60
|
+
cssContent: cssContent
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export default handleDom;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 处理Extension事件卡片
|
|
3
|
+
*/
|
|
4
|
+
import type { ToTaroCodeConfig, Result } from "./toCodeTaro";
|
|
5
|
+
interface HandleExtensionParams {
|
|
6
|
+
tojson: any;
|
|
7
|
+
extensionEvents: any[];
|
|
8
|
+
}
|
|
9
|
+
declare const handleExtension: (params: HandleExtensionParams, config: ToTaroCodeConfig) => Result;
|
|
10
|
+
export default handleExtension;
|