@mybricks/to-code-taro 1.0.1 → 1.0.3

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.
Files changed (201) hide show
  1. package/README.md +58 -0
  2. package/dist/cjs/core/comlib/{Index.js → index.js} +4 -4
  3. package/dist/cjs/core/mybricks/index.js +47 -47
  4. package/dist/cjs/core/utils/ComContext.js +3 -0
  5. package/dist/cjs/core/utils/hooks.js +125 -0
  6. package/dist/cjs/core/utils/index.js +21 -57
  7. package/dist/cjs/core/utils/page.js +67 -0
  8. package/dist/cjs/core/utils/useContext.js +2 -1
  9. package/dist/cjs/generate/generateTaroProjectJson.d.ts +3 -14
  10. package/dist/cjs/generate/generateTaroProjectJson.js +9 -6
  11. package/dist/cjs/generate/utils/tabBarImages.d.ts +1 -1
  12. package/dist/cjs/handleCom.d.ts +1 -1
  13. package/dist/cjs/handleCom.js +91 -177
  14. package/dist/cjs/handleDom.js +7 -44
  15. package/dist/cjs/handleExtension.d.ts +2 -2
  16. package/dist/cjs/handleExtension.js +5 -5
  17. package/dist/cjs/handleGlobal.d.ts +2 -12
  18. package/dist/cjs/handleGlobal.js +23 -7
  19. package/dist/cjs/handleModule.js +3 -3
  20. package/dist/cjs/handleSlot.d.ts +2 -9
  21. package/dist/cjs/handleSlot.js +47 -150
  22. package/dist/cjs/index.d.ts +1 -1
  23. package/dist/cjs/index.js +4 -3
  24. package/dist/cjs/processors/processComEvents.d.ts +9 -0
  25. package/dist/cjs/processors/processComEvents.js +122 -0
  26. package/dist/cjs/processors/processModule.d.ts +31 -0
  27. package/dist/cjs/processors/processModule.js +125 -0
  28. package/dist/cjs/processors/processScene.d.ts +32 -0
  29. package/dist/cjs/processors/processScene.js +124 -0
  30. package/dist/cjs/processors/processSceneLogic.d.ts +4 -0
  31. package/dist/cjs/processors/processSceneLogic.js +166 -0
  32. package/dist/cjs/taro-template.json +15 -7
  33. package/dist/cjs/toCodeTaro.d.ts +26 -5
  34. package/dist/cjs/toCodeTaro.js +59 -343
  35. package/dist/cjs/utils/builder/buildResult.d.ts +21 -0
  36. package/dist/cjs/utils/builder/buildResult.js +91 -0
  37. package/dist/cjs/utils/common/ImportManager.d.ts +19 -0
  38. package/dist/cjs/utils/common/ImportManager.js +105 -0
  39. package/dist/cjs/utils/common/helper.d.ts +2 -0
  40. package/dist/cjs/utils/common/helper.js +31 -0
  41. package/dist/cjs/utils/common/object.d.ts +5 -0
  42. package/dist/cjs/utils/common/object.js +58 -0
  43. package/dist/cjs/utils/common/string.d.ts +8 -0
  44. package/dist/cjs/utils/common/string.js +46 -0
  45. package/dist/cjs/utils/{pageConfig → config/content}/converter.js +1 -1
  46. package/dist/cjs/utils/{pageConfig → config/content}/index.js +9 -9
  47. package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.js +12 -22
  48. package/dist/{esm/utils/pageConfig → cjs/utils/config/content}/saveBase64Image.d.ts +1 -1
  49. package/dist/cjs/utils/{pageConfig → config/content}/saveBase64Image.js +8 -17
  50. package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.js +9 -32
  51. package/dist/cjs/utils/config/content/types.js +17 -0
  52. package/dist/cjs/utils/{pageConfig → config/content}/validator.js +1 -1
  53. package/dist/{esm/utils → cjs/utils/config}/handlePageConfig.d.ts +1 -1
  54. package/dist/cjs/utils/{handlePageConfig.js → config/handlePageConfig.js} +4 -4
  55. package/dist/cjs/utils/context/buildContext.d.ts +24 -0
  56. package/dist/cjs/utils/context/buildContext.js +65 -0
  57. package/dist/cjs/utils/context/buildFrameMap.d.ts +16 -0
  58. package/dist/cjs/utils/context/buildFrameMap.js +106 -0
  59. package/dist/cjs/utils/context/buildGlobalData.d.ts +13 -0
  60. package/dist/cjs/utils/context/buildGlobalData.js +58 -0
  61. package/dist/cjs/utils/context/collectJSModules.d.ts +37 -0
  62. package/dist/cjs/utils/context/collectJSModules.js +91 -0
  63. package/dist/cjs/utils/context/createEventQueries.d.ts +45 -0
  64. package/dist/cjs/utils/context/createEventQueries.js +99 -0
  65. package/dist/cjs/utils/context/createProvider.d.ts +21 -0
  66. package/dist/cjs/utils/context/createProvider.js +49 -0
  67. package/dist/cjs/utils/index.d.ts +10 -62
  68. package/dist/cjs/utils/index.js +21 -282
  69. package/dist/cjs/utils/{convertNamespace.js → logic/convertNamespace.js} +1 -1
  70. package/dist/cjs/utils/{genJSModules.js → logic/genJSModules.js} +1 -1
  71. package/dist/{esm/utils → cjs/utils/logic}/handleProcess.d.ts +2 -2
  72. package/dist/cjs/utils/{handleProcess.js → logic/handleProcess.js} +14 -11
  73. package/dist/cjs/utils/logic/processChildren.d.ts +12 -0
  74. package/dist/cjs/utils/logic/processChildren.js +82 -0
  75. package/dist/cjs/utils/style/color.d.ts +4 -0
  76. package/dist/cjs/utils/style/color.js +45 -0
  77. package/dist/cjs/utils/style/converter.d.ts +7 -0
  78. package/dist/cjs/utils/style/converter.js +181 -0
  79. package/dist/cjs/utils/{getComponentClassName.js → style/getComponentClassName.js} +1 -1
  80. package/dist/cjs/utils/{pxtransform.js → style/pxtransform.js} +1 -1
  81. package/dist/cjs/utils/style/types.d.ts +23 -0
  82. package/dist/cjs/utils/{pageConfig → style}/types.js +1 -1
  83. package/dist/cjs/utils/{code → templates}/component.js +1 -1
  84. package/dist/cjs/utils/{code → templates}/index.js +4 -4
  85. package/dist/cjs/utils/{code → templates}/renderManager.js +1 -1
  86. package/dist/cjs/utils/{code → templates}/scene.js +1 -1
  87. package/dist/esm/core/mybricks/index.js +1 -1
  88. package/dist/esm/core/utils/ComContext.js +1 -0
  89. package/dist/esm/core/utils/hooks.js +118 -0
  90. package/dist/esm/core/utils/index.js +6 -57
  91. package/dist/esm/core/utils/page.js +50 -0
  92. package/dist/esm/core/utils/useContext.js +2 -1
  93. package/dist/esm/generate/generateTaroProjectJson.d.ts +3 -14
  94. package/dist/esm/generate/generateTaroProjectJson.js +27 -23
  95. package/dist/esm/generate/utils/tabBarImages.d.ts +1 -1
  96. package/dist/esm/handleCom.d.ts +1 -1
  97. package/dist/esm/handleCom.js +159 -244
  98. package/dist/esm/handleDom.js +9 -48
  99. package/dist/esm/handleExtension.d.ts +2 -2
  100. package/dist/esm/handleExtension.js +5 -5
  101. package/dist/esm/handleGlobal.d.ts +2 -12
  102. package/dist/esm/handleGlobal.js +17 -3
  103. package/dist/esm/handleModule.js +3 -3
  104. package/dist/esm/handleSlot.d.ts +2 -9
  105. package/dist/esm/handleSlot.js +97 -174
  106. package/dist/esm/index.d.ts +1 -1
  107. package/dist/esm/index.js +1 -1
  108. package/dist/esm/processors/processComEvents.d.ts +9 -0
  109. package/dist/esm/processors/processComEvents.js +110 -0
  110. package/dist/esm/processors/processModule.d.ts +31 -0
  111. package/dist/esm/processors/processModule.js +126 -0
  112. package/dist/esm/processors/processScene.d.ts +32 -0
  113. package/dist/esm/processors/processScene.js +126 -0
  114. package/dist/esm/processors/processSceneLogic.d.ts +4 -0
  115. package/dist/esm/processors/processSceneLogic.js +160 -0
  116. package/dist/esm/taro-template.json +15 -7
  117. package/dist/esm/toCodeTaro.d.ts +26 -5
  118. package/dist/esm/toCodeTaro.js +96 -396
  119. package/dist/esm/utils/builder/buildResult.d.ts +21 -0
  120. package/dist/esm/utils/builder/buildResult.js +61 -0
  121. package/dist/esm/utils/common/ImportManager.d.ts +19 -0
  122. package/dist/esm/utils/common/ImportManager.js +103 -0
  123. package/dist/esm/utils/common/helper.d.ts +2 -0
  124. package/dist/esm/utils/common/helper.js +4 -0
  125. package/dist/esm/utils/common/object.d.ts +5 -0
  126. package/dist/esm/utils/common/object.js +32 -0
  127. package/dist/esm/utils/common/string.d.ts +8 -0
  128. package/dist/esm/utils/common/string.js +21 -0
  129. package/dist/esm/utils/config/content/pageConfig.js +40 -0
  130. package/dist/{cjs/utils/pageConfig → esm/utils/config/content}/saveBase64Image.d.ts +1 -1
  131. package/dist/esm/utils/{pageConfig → config/content}/saveBase64Image.js +11 -30
  132. package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.js +12 -34
  133. package/dist/{cjs/utils → esm/utils/config}/handlePageConfig.d.ts +1 -1
  134. package/dist/esm/utils/{handlePageConfig.js → config/handlePageConfig.js} +1 -1
  135. package/dist/esm/utils/context/buildContext.d.ts +24 -0
  136. package/dist/esm/utils/context/buildContext.js +53 -0
  137. package/dist/esm/utils/context/buildFrameMap.d.ts +16 -0
  138. package/dist/esm/utils/context/buildFrameMap.js +131 -0
  139. package/dist/esm/utils/context/buildGlobalData.d.ts +13 -0
  140. package/dist/esm/utils/context/buildGlobalData.js +44 -0
  141. package/dist/esm/utils/context/collectJSModules.d.ts +37 -0
  142. package/dist/esm/utils/context/collectJSModules.js +87 -0
  143. package/dist/esm/utils/context/createEventQueries.d.ts +45 -0
  144. package/dist/esm/utils/context/createEventQueries.js +98 -0
  145. package/dist/esm/utils/context/createProvider.d.ts +21 -0
  146. package/dist/esm/utils/context/createProvider.js +33 -0
  147. package/dist/esm/utils/index.d.ts +10 -62
  148. package/dist/esm/utils/index.js +12 -345
  149. package/dist/{cjs/utils → esm/utils/logic}/handleProcess.d.ts +2 -2
  150. package/dist/esm/utils/{handleProcess.js → logic/handleProcess.js} +11 -5
  151. package/dist/esm/utils/logic/processChildren.d.ts +12 -0
  152. package/dist/esm/utils/logic/processChildren.js +48 -0
  153. package/dist/esm/utils/style/color.d.ts +4 -0
  154. package/dist/esm/utils/style/color.js +17 -0
  155. package/dist/esm/utils/style/converter.d.ts +7 -0
  156. package/dist/esm/utils/style/converter.js +176 -0
  157. package/dist/esm/utils/style/types.d.ts +23 -0
  158. package/dist/esm/utils/style/types.js +1 -0
  159. package/package.json +1 -1
  160. package/dist/esm/utils/pageConfig/pageConfig.js +0 -60
  161. /package/dist/cjs/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  162. /package/dist/cjs/utils/{pageConfig → config/content}/index.d.ts +0 -0
  163. /package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  164. /package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  165. /package/dist/cjs/utils/{pageConfig → config/content}/types.d.ts +0 -0
  166. /package/dist/cjs/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  167. /package/dist/cjs/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  168. /package/dist/cjs/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  169. /package/dist/cjs/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  170. /package/dist/cjs/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  171. /package/dist/cjs/utils/{code → templates}/component.d.ts +0 -0
  172. /package/dist/cjs/utils/{code → templates}/index.d.ts +0 -0
  173. /package/dist/cjs/utils/{code → templates}/renderManager.d.ts +0 -0
  174. /package/dist/cjs/utils/{code → templates}/scene.d.ts +0 -0
  175. /package/dist/esm/core/comlib/{Index.js → index.js} +0 -0
  176. /package/dist/esm/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  177. /package/dist/esm/utils/{pageConfig → config/content}/converter.js +0 -0
  178. /package/dist/esm/utils/{pageConfig → config/content}/index.d.ts +0 -0
  179. /package/dist/esm/utils/{pageConfig → config/content}/index.js +0 -0
  180. /package/dist/esm/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  181. /package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  182. /package/dist/esm/utils/{pageConfig → config/content}/types.d.ts +0 -0
  183. /package/dist/esm/utils/{pageConfig → config/content}/types.js +0 -0
  184. /package/dist/esm/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  185. /package/dist/esm/utils/{pageConfig → config/content}/validator.js +0 -0
  186. /package/dist/esm/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  187. /package/dist/esm/utils/{convertNamespace.js → logic/convertNamespace.js} +0 -0
  188. /package/dist/esm/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  189. /package/dist/esm/utils/{genJSModules.js → logic/genJSModules.js} +0 -0
  190. /package/dist/esm/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  191. /package/dist/esm/utils/{getComponentClassName.js → style/getComponentClassName.js} +0 -0
  192. /package/dist/esm/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  193. /package/dist/esm/utils/{pxtransform.js → style/pxtransform.js} +0 -0
  194. /package/dist/esm/utils/{code → templates}/component.d.ts +0 -0
  195. /package/dist/esm/utils/{code → templates}/component.js +0 -0
  196. /package/dist/esm/utils/{code → templates}/index.d.ts +0 -0
  197. /package/dist/esm/utils/{code → templates}/index.js +0 -0
  198. /package/dist/esm/utils/{code → templates}/renderManager.d.ts +0 -0
  199. /package/dist/esm/utils/{code → templates}/renderManager.js +0 -0
  200. /package/dist/esm/utils/{code → templates}/scene.d.ts +0 -0
  201. /package/dist/esm/utils/{code → templates}/scene.js +0 -0
@@ -1,51 +1,55 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import * as fs from 'fs';
3
- import * as path from 'path';
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
4
  import { findDir, ensureDir } from "./utils/fileNode";
5
5
  import { handleCommonDir } from "./utils/commonDir";
6
6
  import { handleTabBarImages } from "./utils/tabBarImages";
7
7
  import { updateAppConfig } from "./utils/appConfig";
8
8
  /**
9
9
  * 根据数组生成文件结构 JSON 对象
10
- * @param items 包含 content、cssContent、pageConfigContent、tabBarConfig 等信息的数组
10
+ * @param result 包含 files 和 assets 的生成结果对象
11
11
  * @returns 返回文件结构的 JSON 对象数组
12
12
  */
13
- var generateTaroProjectJson = function generateTaroProjectJson() {
13
+ var generateTaroProjectJson = function generateTaroProjectJson(result) {
14
14
  var _pagesDir$children, _srcDir$children;
15
- var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
15
+ var _result$files = result.files,
16
+ files = _result$files === void 0 ? [] : _result$files,
17
+ _result$assets = result.assets,
18
+ assets = _result$assets === void 0 ? {} : _result$assets;
19
+
16
20
  // 读取模板 JSON 文件
17
- var templateJsonPath = path.join(__dirname, '../taro-template.json');
21
+ var templateJsonPath = path.join(__dirname, "../taro-template.json");
18
22
  if (!fs.existsSync(templateJsonPath)) {
19
23
  throw new Error("\u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728: ".concat(templateJsonPath));
20
24
  }
21
- var templateJson = JSON.parse(fs.readFileSync(templateJsonPath, 'utf-8'));
25
+ var templateJson = JSON.parse(fs.readFileSync(templateJsonPath, "utf-8"));
22
26
 
23
27
  // 找到 src 目录
24
28
  var srcDir = templateJson.find(function (node) {
25
- return node.path === 'src';
29
+ return node.path === "src";
26
30
  });
27
31
  srcDir.children = srcDir.children || [];
28
32
 
29
33
  // 找到 pages 目录
30
- var pagesDir = findDir(templateJson, 'src/pages');
34
+ var pagesDir = findDir(templateJson, "src/pages");
31
35
  if (!pagesDir) {
32
- throw new Error('未找到 pages 目录');
36
+ throw new Error("未找到 pages 目录");
33
37
  }
34
38
  pagesDir.children = pagesDir.children || [];
35
39
 
36
40
  // 确保 common 目录存在
37
- var commonDir = ensureDir(srcDir, 'src/common');
41
+ var commonDir = ensureDir(srcDir, "src/common");
38
42
 
39
43
  // 确保 assets/tabbar 目录存在
40
- var assetsDir = ensureDir(srcDir, 'src/assets');
41
- var tabbarDir = ensureDir(assetsDir, 'src/assets/tabbar');
44
+ var assetsDir = ensureDir(srcDir, "src/assets");
45
+ var tabbarDir = ensureDir(assetsDir, "src/assets/tabbar");
42
46
 
43
- // 从 items 的扩展字段中获取 TabBar 图片文件信息
44
- var imageFiles = items.__tabBarImageFiles || [];
47
+ // 从 assets 中获取 TabBar 图片文件信息
48
+ var imageFiles = assets.tabBarImages || [];
45
49
 
46
50
  // 过滤出类型为 normal 的项
47
- var normalItems = items.filter(function (item) {
48
- return item.type === 'normal';
51
+ var normalItems = files.filter(function (item) {
52
+ return item.type === "normal";
49
53
  });
50
54
 
51
55
  // 处理所有 normal 类型的项,生成页面节点数组
@@ -54,8 +58,8 @@ var generateTaroProjectJson = function generateTaroProjectJson() {
54
58
  var pageName = item.meta.id;
55
59
 
56
60
  // 生成完整的文件内容:import 语句 + content
57
- var importCode = ((_item$importManager = item.importManager) === null || _item$importManager === void 0 ? void 0 : _item$importManager.toCode()) || '';
58
- var fileContent = item.content || '';
61
+ var importCode = ((_item$importManager = item.importManager) === null || _item$importManager === void 0 ? void 0 : _item$importManager.toCode()) || "";
62
+ var fileContent = item.content || "";
59
63
  var fullContent = importCode ? "".concat(importCode, "\n").concat(fileContent) : fileContent;
60
64
 
61
65
  // 使用 item 中的 pageConfigContent,如果没有则使用默认配置
@@ -67,7 +71,7 @@ var generateTaroProjectJson = function generateTaroProjectJson() {
67
71
  content: configContent
68
72
  }, {
69
73
  path: "src/pages/".concat(pageName, "/index.less"),
70
- content: item.cssContent || ''
74
+ content: item.cssContent || ""
71
75
  }, {
72
76
  path: "src/pages/".concat(pageName, "/index.tsx"),
73
77
  content: fullContent
@@ -86,17 +90,17 @@ var generateTaroProjectJson = function generateTaroProjectJson() {
86
90
 
87
91
  // 更新 app.config.ts
88
92
  var appConfigFile = (_srcDir$children = srcDir.children) === null || _srcDir$children === void 0 ? void 0 : _srcDir$children.find(function (node) {
89
- return node.path === 'src/app.config.ts';
93
+ return node.path === "src/app.config.ts";
90
94
  });
91
95
  if (appConfigFile) {
92
- updateAppConfig(appConfigFile, normalItems, items);
96
+ updateAppConfig(appConfigFile, normalItems, files);
93
97
  }
94
98
 
95
99
  // 处理 TabBar 图片文件
96
100
  handleTabBarImages(tabbarDir, imageFiles);
97
101
 
98
102
  // 处理 common 目录下的文件
99
- handleCommonDir(commonDir, items);
103
+ handleCommonDir(commonDir, files);
100
104
  return templateJson;
101
105
  };
102
106
  export default generateTaroProjectJson;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * TabBar 图片文件处理工具
3
3
  */
4
- import type { ImageFileInfo } from '../../utils/pageConfig';
4
+ import type { ImageFileInfo } from '../../utils/config/content';
5
5
  interface FileNode {
6
6
  path: string;
7
7
  content: string | null;
@@ -1,5 +1,5 @@
1
1
  import { ImportManager } from "./utils";
2
- import { RenderManager } from "./utils/code/renderManager";
2
+ import { RenderManager } from "./utils/templates/renderManager";
3
3
  import type { UI, BaseConfig } from "./toCodeTaro";
4
4
  export type Com = Extract<UI["children"][0], {
5
5
  type: "com";
@@ -1,54 +1,59 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
- import { convertComponentStyle, firstCharToUpperCase, indentation, convertStyleAryToCss } from "./utils";
6
- import { getUiComponentCode } from "./utils/code";
5
+ import { convertComponentStyle, firstCharToUpperCase, convertStyleAryToCss, indentation } from "./utils";
6
+ import { getUiComponentCode } from "./utils/templates";
7
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";
8
+ import { RenderManager } from "./utils/templates/renderManager";
9
+ import { processComEvents } from "./processors/processComEvents";
10
+ import { genSlotRenderRef, formatSlotContent } from "./utils/templates/component";
11
11
  var handleCom = function handleCom(com, config) {
12
- var _config$getComponentC, _scene$coms, _props$style;
13
12
  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;
13
+ props = com.props;
21
14
 
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
- };
15
+ // 1. 处理 JS 计算组件
16
+ if (isJsCalculation(meta)) {
17
+ return handleJsCalculation(com, config);
49
18
  }
50
19
 
51
- // 确保组件名是大驼峰
20
+ // 2. 注册到 Provider 并获取元信息
21
+ var _prepareComponent = prepareComponent(com, config),
22
+ componentName = _prepareComponent.componentName,
23
+ eventHandlers = _prepareComponent.eventHandlers,
24
+ comEventCode = _prepareComponent.comEventCode;
25
+
26
+ // 3. 处理样式
27
+ var _prepareStyles = prepareStyles(com),
28
+ cssContent = _prepareStyles.cssContent,
29
+ rootStyle = _prepareStyles.rootStyle;
30
+
31
+ // 4. 处理插槽
32
+ var _processComSlots = processComSlots(com, config, cssContent),
33
+ slotsCode = _processComSlots.slotsCode,
34
+ accumulatedCssContent = _processComSlots.accumulatedCssContent,
35
+ eventCode = _processComSlots.eventCode;
36
+
37
+ // 5. 生成组件 UI 代码
38
+ var ui = generateUiCode(com, config, componentName, rootStyle, comEventCode, slotsCode, eventHandlers);
39
+ return {
40
+ slots: [],
41
+ scopeSlots: [],
42
+ ui: ui,
43
+ js: eventCode,
44
+ cssContent: accumulatedCssContent,
45
+ outputsConfig: Object.keys(eventHandlers).length > 0 ? _defineProperty({}, meta.id, eventHandlers) : undefined
46
+ };
47
+ };
48
+
49
+ /**
50
+ * 准备组件信息
51
+ */
52
+ var prepareComponent = function prepareComponent(com, config) {
53
+ var meta = com.meta;
54
+ var _config$getComponentM = config.getComponentMeta(meta),
55
+ importInfo = _config$getComponentM.importInfo,
56
+ callName = _config$getComponentM.callName;
52
57
  var componentName = firstCharToUpperCase(callName || importInfo.name);
53
58
  var importName = firstCharToUpperCase(importInfo.name);
54
59
  config.addParentDependencyImport({
@@ -57,241 +62,151 @@ var handleCom = function handleCom(com, config) {
57
62
  importType: importInfo.type
58
63
  });
59
64
  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);
65
+ currentProvider.coms.add(meta.id);
66
+ currentProvider.controllers.add(meta.id);
67
+ var _processComEvents = processComEvents(com, config),
68
+ comEventCode = _processComEvents.comEventCode,
69
+ outputsConfig = _processComEvents.outputsConfig;
70
+ return {
71
+ componentName: componentName,
72
+ eventHandlers: outputsConfig[meta.id] || {},
73
+ comEventCode: comEventCode
74
+ };
75
+ };
67
76
 
68
- // 在 JS 块中生成 inputs 映射逻辑
69
- var indentJs = indentation(config.codeStyle.indent * (config.depth + 1));
70
- var eventCode = "";
77
+ /**
78
+ * 准备样式
79
+ */
80
+ var prepareStyles = function prepareStyles(com) {
81
+ var _props$style;
82
+ var meta = com.meta,
83
+ props = com.props;
84
+ var resultStyle = convertComponentStyle(props.style);
85
+ var cssContent = convertStyleAryToCss((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.styleAry, meta.id);
86
+ return {
87
+ cssContent: cssContent,
88
+ rootStyle: resultStyle.root || {}
89
+ };
90
+ };
91
+
92
+ /**
93
+ * 生成 UI 代码
94
+ */
95
+ var generateUiCode = function generateUiCode(com, config, componentName, rootStyle, comEventCode, slotsCode, eventHandlers) {
96
+ var _scene$coms;
97
+ var meta = com.meta,
98
+ props = com.props;
71
99
  var scene = config.getCurrentScene();
72
100
  var sceneCom = (_scene$coms = scene.coms) === null || _scene$coms === void 0 ? void 0 : _scene$coms[meta.id];
73
-
74
- // 恢复:使用实例级激活的 inputs(无论是否连线)
75
101
  var componentInputs = (sceneCom === null || sceneCom === void 0 ? void 0 : sceneCom.inputs) || [];
76
102
  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
- };
103
+ return getUiComponentCode({
104
+ componentName: componentName,
105
+ meta: meta,
106
+ props: props,
107
+ resultStyle: {
108
+ root: rootStyle
109
+ },
110
+ componentInputs: componentInputs.length > 0 ? componentInputs : undefined,
111
+ componentOutputs: componentOutputs.length > 0 ? componentOutputs : undefined,
112
+ comEventCode: comEventCode,
113
+ slotsCode: slotsCode,
114
+ eventHandlers: eventHandlers
115
+ }, {
116
+ codeStyle: config.codeStyle,
117
+ depth: config.depth + 1,
118
+ verbose: config.verbose
181
119
  });
182
- currentProvider.coms.add(meta.id);
183
- currentProvider.controllers.add(meta.id);
120
+ };
121
+ var isJsCalculation = function isJsCalculation(meta) {
122
+ return meta.def.namespace === "mybricks.taro._muilt-inputJs" || meta.def.namespace === "mybricks.core-comlib.js-ai";
123
+ };
184
124
 
185
- // 生成组件 JSX 代码
186
- // 使用 getUiComponentCode 函数生成组件代码(参照鸿蒙的实现方式)
187
- var indent = indentation(config.codeStyle.indent * config.depth);
188
- var indent2 = indentation(config.codeStyle.indent * (config.depth + 1));
125
+ /**
126
+ * 处理 JS 计算组件
127
+ */
128
+ var handleJsCalculation = function handleJsCalculation(com, config) {
129
+ var _props$data, _props$data2, _props$data3;
130
+ var meta = com.meta,
131
+ props = com.props;
132
+ 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);
133
+ if (transformCode && config.addJSModule) {
134
+ var _meta$model, _meta$model2;
135
+ config.addJSModule({
136
+ id: meta.id,
137
+ title: meta.title || "JS计算",
138
+ transformCode: typeof transformCode === "string" ? transformCode : "",
139
+ inputs: ((_meta$model = meta.model) === null || _meta$model === void 0 ? void 0 : _meta$model.inputs) || [],
140
+ outputs: ((_meta$model2 = meta.model) === null || _meta$model2 === void 0 ? void 0 : _meta$model2.outputs) || [],
141
+ data: props.data || {}
142
+ });
143
+ }
144
+ return {
145
+ slots: [],
146
+ scopeSlots: [],
147
+ ui: "",
148
+ js: "",
149
+ cssContent: "",
150
+ outputsConfig: undefined
151
+ };
152
+ };
189
153
 
190
- // 处理插槽代码
154
+ /**
155
+ * 处理组件插槽
156
+ */
157
+ var processComSlots = function processComSlots(com, config, initialCss) {
158
+ var meta = com.meta,
159
+ props = com.props,
160
+ slots = com.slots;
191
161
  var slotsCode = "";
192
- var accumulatedCssContent = cssContent;
193
- var renderCode = ""; // 收集的 render 函数定义代码
194
- var renderManager = config.renderManager || new RenderManager();
162
+ var accumulatedCssContent = initialCss;
163
+ var eventCode = "";
195
164
  if (slots) {
196
- // 处理插槽 - Taro/React 中,插槽通过 slots prop 传递
197
- // 参照鸿蒙的思考方式:非作用域插槽直接处理,作用域插槽需要特殊处理
198
- var slotsObjectCode = "";
165
+ var renderManager = config.renderManager || new RenderManager();
199
166
  var slotEntries = Object.entries(slots);
200
- slotEntries.forEach(function (_ref4, index) {
167
+ slotEntries.forEach(function (_ref2, index) {
201
168
  var _props$style2;
202
- var _ref5 = _slicedToArray(_ref4, 2),
203
- slotId = _ref5[0],
204
- slot = _ref5[1];
205
- // 尝试从 props.style.slots 中获取原始 layout 信息
169
+ var _ref3 = _slicedToArray(_ref2, 2),
170
+ slotId = _ref3[0],
171
+ slot = _ref3[1];
206
172
  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
173
  if (rawSlotInfo !== null && rawSlotInfo !== void 0 && rawSlotInfo.layout) {
208
174
  slot.layout = rawSlotInfo.layout;
209
175
  }
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;
176
+ var result = handleSlot(slot, _objectSpread(_objectSpread({}, config), {}, {
177
+ checkIsRoot: function checkIsRoot() {
178
+ return false;
179
+ },
180
+ depth: 1,
181
+ renderManager: renderManager
182
+ }));
183
+ eventCode += result.js;
184
+ if (result.cssContent) {
185
+ accumulatedCssContent += (accumulatedCssContent ? "\n" : "") + result.cssContent;
227
186
  }
228
-
229
- // 生成 render 函数ID:组件ID_插槽ID
230
187
  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; // 根组件缩进
188
+ var baseIndentSize = config.codeStyle.indent;
189
+ var rootIndent = config.codeStyle.indent;
237
190
  var renderBodyIndent = indentation(rootIndent + config.codeStyle.indent);
238
191
  var formattedContent = formatSlotContent({
239
- uiContent: ui,
192
+ uiContent: result.ui,
240
193
  baseIndentSize: baseIndentSize,
241
194
  renderBodyIndent: renderBodyIndent
242
195
  });
243
-
244
- // 注册 render 函数到 renderManager
245
196
  renderManager.register(renderId, formattedContent);
246
-
247
- // 生成插槽渲染函数引用
248
197
  var slotIndent = indentation(config.codeStyle.indent * (config.depth + 2));
249
- slotsObjectCode += genSlotRenderRef({
198
+ slotsCode += genSlotRenderRef({
250
199
  slotId: slotId,
251
200
  renderId: renderId,
252
201
  indent: slotIndent,
253
202
  isLast: index === slotEntries.length - 1
254
203
  });
255
204
  });
256
- slotsCode = slotsObjectCode;
257
- // render 函数定义代码会在根组件级别统一生成,这里不需要单独生成
258
205
  }
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
206
  return {
289
- slots: [],
290
- scopeSlots: [],
291
- ui: ui,
292
- js: eventCode,
293
- cssContent: accumulatedCssContent,
294
- outputsConfig: Object.keys(outputsConfig).length > 0 ? outputsConfig : undefined
207
+ slotsCode: slotsCode,
208
+ accumulatedCssContent: accumulatedCssContent,
209
+ eventCode: eventCode
295
210
  };
296
211
  };
297
212
  export default handleCom;
@@ -1,62 +1,23 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
2
  import { indentation, convertStyleAryToCss, convertRootStyle } from "./utils";
4
- import handleCom from "./handleCom";
3
+ import { processChildren } from "./utils/logic/processChildren";
5
4
  var handleDom = function handleDom(dom, config) {
6
5
  var _domProps$style;
7
6
  var props = dom.props,
8
7
  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), {}, {
8
+ var domProps = props;
9
+ var childResults = processChildren(children, _objectSpread(_objectSpread({}, config), {}, {
16
10
  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
- });
11
+ }));
12
+ var cssContent = (convertStyleAryToCss((_domProps$style = domProps.style) === null || _domProps$style === void 0 ? void 0 : _domProps$style.styleAry, domProps.id) || "") + (childResults.cssContent ? "\n" + childResults.cssContent : "");
52
13
  var indent = indentation(config.codeStyle.indent * config.depth);
53
14
  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>");
15
+ var ui = "".concat(indent, "<View").concat(domProps.id ? " id=\"".concat(domProps.id, "\" className=\"").concat(domProps.id, "\"") : "", " style={").concat(styleCode, "}>\n").concat(childResults.ui, "\n").concat(indent, "</View>");
55
16
  return {
56
17
  ui: ui,
57
- js: jsCode,
58
- slots: level0Slots,
59
- scopeSlots: level1Slots,
18
+ js: childResults.js,
19
+ slots: childResults.slots,
20
+ scopeSlots: childResults.scopeSlots,
60
21
  cssContent: cssContent
61
22
  };
62
23
  };