@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,10 +1,10 @@
1
1
  /**
2
2
  * 处理Extension事件卡片
3
3
  */
4
- import type { ToTaroCodeConfig, Result } from "./toCodeTaro";
4
+ import type { ToTaroCodeConfig, GeneratedFile } from "./toCodeTaro";
5
5
  interface HandleExtensionParams {
6
6
  tojson: any;
7
7
  extensionEvents: any[];
8
8
  }
9
- declare const handleExtension: (params: HandleExtensionParams, config: ToTaroCodeConfig) => Result;
9
+ declare const handleExtension: (params: HandleExtensionParams, config: ToTaroCodeConfig) => GeneratedFile[];
10
10
  export default handleExtension;
@@ -5,11 +5,11 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
5
5
  */
6
6
 
7
7
  import { ImportManager, indentation } from "./utils";
8
- import { handleProcess } from "./utils/handleProcess";
8
+ import { handleProcess } from "./utils/logic/handleProcess";
9
9
  var handleExtension = function handleExtension(params, config) {
10
10
  var tojson = params.tojson,
11
11
  extensionEvents = params.extensionEvents;
12
- var result = [];
12
+ var files = [];
13
13
  var importManager = new ImportManager(config);
14
14
  var addDependencyImport = importManager.addImport.bind(importManager);
15
15
  var eventCode = genEvent({
@@ -36,7 +36,7 @@ var handleExtension = function handleExtension(params, config) {
36
36
  }, _objectSpread(_objectSpread({}, config), {}, {
37
37
  addParentDependencyImport: addDependencyImport
38
38
  }));
39
- result.push({
39
+ files.push({
40
40
  type: "api",
41
41
  content: (apiCode ? "".concat(apiCode, "\n\n") : "") + (configCode ? "".concat(configCode, "\n\n") : "") + eventCode,
42
42
  importManager: importManager,
@@ -53,14 +53,14 @@ var handleExtension = function handleExtension(params, config) {
53
53
  addParentDependencyImport: addDependencyExtensionBusImport
54
54
  }));
55
55
  if (busCode) {
56
- result.push({
56
+ files.push({
57
57
  content: busCode,
58
58
  importManager: extensionBusImportManager,
59
59
  type: "extension-bus",
60
60
  name: "系统总线"
61
61
  });
62
62
  }
63
- return result;
63
+ return files;
64
64
  };
65
65
  export default handleExtension;
66
66
  var genConfig = function genConfig(params, config) {
@@ -1,21 +1,11 @@
1
1
  /**
2
2
  * 处理全局变量和全局Fx
3
3
  */
4
- import { ImportManager } from "./utils";
5
- import type { ToTaroCodeConfig } from "./toCodeTaro";
4
+ import type { ToTaroCodeConfig, GeneratedFile } from "./toCodeTaro";
6
5
  interface HandleGlobalParams {
7
6
  tojson: any;
8
7
  globalFxs: any[];
9
8
  globalVars: any[];
10
9
  }
11
- declare const handleGlobal: (params: HandleGlobalParams, config: ToTaroCodeConfig) => {
12
- content: string;
13
- cssContent?: string;
14
- pageConfigContent?: string;
15
- importManager: ImportManager;
16
- type: "module" | "fx" | "global" | "extension-event" | "extension-api" | "extension-config" | "api" | "normal" | "popup" | "extension-bus" | "abstractEventTypeDef" | "jsModules" | "commonIndex" | "tabBarConfig";
17
- meta?: import("@mybricks/to-code-react/dist/cjs/toCode/types").Scene;
18
- name: string;
19
- tabBarConfig?: string;
20
- };
10
+ declare const handleGlobal: (params: HandleGlobalParams, config: ToTaroCodeConfig) => GeneratedFile[];
21
11
  export default handleGlobal;
@@ -7,7 +7,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
7
7
 
8
8
  /* eslint-disable @typescript-eslint/no-explicit-any */
9
9
  import { ImportManager, indentation } from "./utils";
10
- import { handleProcess } from "./utils/handleProcess";
10
+ import { handleProcess } from "./utils/logic/handleProcess";
11
11
  var handleGlobal = function handleGlobal(params, config) {
12
12
  var tojson = params.tojson,
13
13
  globalFxs = params.globalFxs,
@@ -100,6 +100,20 @@ var handleGlobal = function handleGlobal(params, config) {
100
100
  });
101
101
  var varCode = "/** 全局变量 */" + "\nclass GlobalVars {" + "\n".concat(globalVarsInitCode) + "\n".concat(indent, "init() {") + "".concat(globalVarsRegisterChangeCode) + "\n".concat(indent, "}") + "\n}" + "\n\nexport const globalVars = new GlobalVars()";
102
102
  var fxCode = "/** 全局Fx */" + "\nclass GlobalFxs {" + "\n".concat(globalFxsInitCode) + "}" + "\n\nexport const globalFxs = new GlobalFxs()";
103
+ if (varCode.includes("createVariable(")) {
104
+ globalAddDependencyImport({
105
+ packageName: config.getUtilsPackageName(),
106
+ dependencyNames: ["createVariable"],
107
+ importType: "named"
108
+ });
109
+ }
110
+ if (fxCode.includes("createFx(")) {
111
+ globalAddDependencyImport({
112
+ packageName: config.getUtilsPackageName(),
113
+ dependencyNames: ["createFx"],
114
+ importType: "named"
115
+ });
116
+ }
103
117
  if (fxCode.includes("merge(")) {
104
118
  globalAddDependencyImport({
105
119
  packageName: config.getUtilsPackageName(),
@@ -107,11 +121,11 @@ var handleGlobal = function handleGlobal(params, config) {
107
121
  importType: "named"
108
122
  });
109
123
  }
110
- return {
124
+ return [{
111
125
  type: "global",
112
126
  content: varCode + "\n\n" + fxCode,
113
127
  importManager: globalImportManager,
114
128
  name: "global"
115
- };
129
+ }];
116
130
  };
117
131
  export default handleGlobal;
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import { indentation, genObjectCode, convertComponentStyle, convertStyleAryToCss, firstCharToUpperCase } from "./utils";
5
- import { handleProcess } from "./utils/handleProcess";
5
+ import { handleProcess } from "./utils/logic/handleProcess";
6
6
  var handleModule = function handleModule(module, config) {
7
7
  var _config$getFileName, _props$style, _config$getComponentC;
8
8
  var events = module.events,
@@ -35,10 +35,10 @@ var handleModule = function handleModule(module, config) {
35
35
  if (process.includes("pageParams")) {
36
36
  config.addParentDependencyImport({
37
37
  packageName: config.getComponentPackageName(),
38
- dependencyNames: ["page"],
38
+ dependencyNames: ["page", "SUBJECT_VALUE"],
39
39
  importType: "named"
40
40
  });
41
- process = indentation(config.codeStyle.indent * (config.depth + 2)) + "const pageParams: any = page.getParams(\"".concat(config.getCurrentScene().id, "\");\n") + process;
41
+ process = indentation(config.codeStyle.indent * (config.depth + 2)) + "const pageParams: any = page.getParams(\"".concat(config.getCurrentScene().id, "\")[SUBJECT_VALUE];\n") + process;
42
42
  }
43
43
  comEventCode += "".concat(indent).concat(eventId, ": (").concat(defaultValue, ": any) => {\n") + process + "\n".concat(indent, "},\n");
44
44
  });
@@ -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
  interface HandleSlotConfig extends BaseConfig {
5
5
  addParentDependencyImport?: (typeof ImportManager)["prototype"]["addImport"];
@@ -7,14 +7,7 @@ interface HandleSlotConfig extends BaseConfig {
7
7
  addConsumer?: (provider: ReturnType<BaseConfig["getCurrentProvider"]>) => void;
8
8
  checkIsRoot: () => boolean;
9
9
  renderManager?: RenderManager;
10
- addJSModule?: (module: {
11
- id: string;
12
- title: string;
13
- transformCode: string;
14
- inputs: string[];
15
- outputs: string[];
16
- data: any;
17
- }) => void;
10
+ addJSModule?: (module: any) => void;
18
11
  }
19
12
  declare const handleSlot: (ui: UI, config: HandleSlotConfig) => {
20
13
  js: string;
@@ -1,11 +1,9 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import { ImportManager, indentation, convertStyleAryToCss, convertRootStyle, getRootComponentClassName } from "./utils";
3
- import handleCom from "./handleCom";
4
- import { handleProcess } from "./utils/handleProcess";
5
- import { genRootDefineCode, genSlotDefineCode, genComponentTemplate, wrapInEffect } from "./utils/code/scene";
6
- import { RenderManager } from "./utils/code/renderManager";
7
- import handleDom from "./handleDom";
8
- import handleModule from "./handleModule";
3
+ import { genRootDefineCode, genSlotDefineCode, genComponentTemplate, wrapInEffect } from "./utils/templates/scene";
4
+ import { RenderManager } from "./utils/templates/renderManager";
5
+ import { processChildren } from "./utils/logic/processChildren";
6
+ import { processSceneLogic } from "./processors/processSceneLogic";
9
7
  var handleSlot = function handleSlot(ui, config) {
10
8
  var _meta, _props$style;
11
9
  var importManager = new ImportManager(config);
@@ -13,193 +11,118 @@ var handleSlot = function handleSlot(ui, config) {
13
11
  props = _ui$props === void 0 ? {} : _ui$props,
14
12
  _ui$children = ui.children,
15
13
  children = _ui$children === void 0 ? [] : _ui$children;
16
- var uiCode = "";
17
- var jsCode = "";
18
- var effectCode = ""; // 专门存放需要在 useEffect 中执行的代码
14
+ var isRoot = config.checkIsRoot();
19
15
  var slotId = ((_meta = ui.meta) === null || _meta === void 0 ? void 0 : _meta.id) || ui.id;
20
16
 
21
- // 创建或使用传入的 renderManager
22
- // 如果是根组件,创建新的 renderManager;否则使用传入的(共享同一个实例)
23
- var renderManager = config.checkIsRoot() ? new RenderManager() : config.renderManager || new RenderManager();
24
- var currentProvider = config.getCurrentProvider();
17
+ // 1. 初始化依赖与基础定义
25
18
  var addDependencyImport = config.addParentDependencyImport || importManager.addImport.bind(importManager);
19
+ setupImports(addDependencyImport, config, isRoot);
26
20
  var indent2 = indentation(config.codeStyle.indent);
27
- var envDefineCode = "";
28
- if (config.checkIsRoot()) {
29
- // 只有根节点需要注入 useRef 和基础定义
30
- addDependencyImport({
31
- packageName: "react",
32
- dependencyNames: ["useRef", "useEffect", "useState"],
33
- importType: "named"
34
- });
35
- // 添加 Taro View 组件的导入
36
- addDependencyImport({
37
- packageName: "@tarojs/components",
38
- dependencyNames: ["View"],
39
- importType: "named"
40
- });
41
- // 添加工具包的 import
42
- var utilsPackageName = config.getUtilsPackageName();
43
- addDependencyImport({
44
- packageName: utilsPackageName,
45
- dependencyNames: ["WithCom", "WithWrapper"],
46
- importType: "named"
47
- });
48
- addDependencyImport({
49
- packageName: "./index.less",
50
- dependencyNames: [],
51
- importType: "module"
52
- });
53
- envDefineCode = genRootDefineCode(indent2, utilsPackageName);
54
- // 添加 useAppContext 的导入(根节点)
55
- addDependencyImport({
56
- packageName: config.getComponentPackageName(),
57
- dependencyNames: ["useAppContext"],
58
- importType: "named"
59
- });
60
- } else {
61
- // 插槽内部也需要声明自己的 inputs/outputs 变量
62
- envDefineCode = genSlotDefineCode(indent2);
63
- // 非根节点也需要 useAppContext,需要添加导入
64
- addDependencyImport({
65
- packageName: config.getComponentPackageName(),
66
- dependencyNames: ["useAppContext"],
67
- importType: "named"
68
- });
69
- }
70
-
71
- // 不再需要初始化控制器对象,WithCom 内部会处理
21
+ var envDefineCode = isRoot ? genRootDefineCode(indent2, config.getUtilsPackageName()) : genSlotDefineCode(indent2);
72
22
 
73
- var cssContent = convertStyleAryToCss((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.styleAry, slotId);
74
- var nextConfig = _objectSpread(_objectSpread({}, config), {}, {
23
+ // 2. 处理子节点
24
+ var renderManager = isRoot ? new RenderManager() : config.renderManager || new RenderManager();
25
+ var childResults = processChildren(children, _objectSpread(_objectSpread({}, config), {}, {
75
26
  depth: config.depth + 1,
76
27
  addParentDependencyImport: addDependencyImport,
77
- renderManager: renderManager // 传递 renderManager
78
- });
79
- children.forEach(function (child) {
80
- if (child.type === "com") {
81
- var _handleCom = handleCom(child, nextConfig),
82
- _ui = _handleCom.ui,
83
- js = _handleCom.js,
84
- childCssContent = _handleCom.cssContent;
85
- uiCode += uiCode ? "\n" + _ui : _ui;
86
- jsCode += js;
87
- if (childCssContent) {
88
- cssContent += (cssContent ? "\n" : "") + childCssContent;
89
- }
90
- } else if (child.type === "module") {
91
- var _handleModule = handleModule(child, nextConfig),
92
- _ui2 = _handleModule.ui,
93
- _childCssContent = _handleModule.cssContent;
94
- uiCode += uiCode ? "\n" + _ui2 : _ui2;
95
- if (_childCssContent) {
96
- cssContent += (cssContent ? "\n" : "") + _childCssContent;
97
- }
98
- } else {
99
- var _handleDom = handleDom(child, nextConfig),
100
- _ui3 = _handleDom.ui,
101
- _js = _handleDom.js,
102
- _childCssContent2 = _handleDom.cssContent;
103
- uiCode += uiCode ? "\n" + _ui3 : _ui3;
104
- jsCode += _js;
105
- if (_childCssContent2) {
106
- cssContent += (cssContent ? "\n" : "") + _childCssContent2;
107
- }
108
- }
109
- });
28
+ renderManager: renderManager
29
+ }));
110
30
 
111
- // 识别场景级逻辑(如 Start 节点)
112
- if (config.checkIsRoot()) {
113
- var _ui$meta;
114
- var _scene = ((_ui$meta = ui.meta) === null || _ui$meta === void 0 ? void 0 : _ui$meta.scene) || ui.meta;
115
- // 深度识别:尝试从 scene.events 或 ui.events 中获取
116
- var sceneEvents = (_scene === null || _scene === void 0 ? void 0 : _scene.events) || ui.events || [];
117
- if (Array.isArray(sceneEvents)) {
118
- sceneEvents.forEach(function (eventInfo) {
119
- var type = eventInfo.type,
120
- diagramId = eventInfo.diagramId,
121
- active = eventInfo.active;
122
- // 识别"启动"或"自动执行"类事件
123
- if (active !== false && type === "defined" && diagramId) {
124
- var event = config.getEventByDiagramId(diagramId);
125
- if (event) {
126
- var process = handleProcess(event, _objectSpread(_objectSpread({}, config), {}, {
127
- target: 'comRefs.current',
128
- depth: 2,
129
- addParentDependencyImport: addDependencyImport,
130
- getParams: function getParams() {
131
- return {};
132
- }
133
- })).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 作用域
31
+ // 3. 处理场景逻辑 (Start, Inputs 等)
32
+ var effectCode = processSceneLogic(ui, config, addDependencyImport);
134
33
 
135
- if (process.trim()) {
136
- effectCode += "\n".concat(indent2, " ").concat(process.trim());
137
- }
138
- }
139
- }
140
- });
141
- }
142
- }
34
+ // 4. 合并样式与代码
35
+ var cssContent = (convertStyleAryToCss((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.styleAry, slotId) || "") + (childResults.cssContent ? "\n" + childResults.cssContent : "");
36
+ var renderCodeBlock = isRoot && renderManager ? renderManager.toCode(indentation(config.codeStyle.indent)) : "";
37
+ var combinedJsCode = "".concat(envDefineCode).concat(childResults.js).concat(renderCodeBlock ? "\n".concat(renderCodeBlock) : "").concat(wrapInEffect(indent2, effectCode));
38
+
39
+ // 5. 生成 UI 结构
40
+ var uiResult = generateSlotUi(ui, props, childResults.ui, config);
143
41
 
144
- // 如果是根组件,生成所有 render 函数定义代码(放在 inputs/outputs 映射之后)
145
- var renderCodeBlock = "";
146
- if (config.checkIsRoot() && renderManager) {
147
- var renderIndent = indentation(config.codeStyle.indent);
148
- renderCodeBlock = renderManager.toCode(renderIndent);
42
+ // 6. 如果是根场景,生成完整文件
43
+ if (isRoot) {
44
+ finalizeRootComponent(ui, config, importManager, combinedJsCode, uiResult, cssContent);
149
45
  }
150
- // 识别并提取 jsCode 中可能存在的自执行代码(如果有的话)
151
- // render 函数定义放在 jsCode(inputs/outputs 映射)之后
152
- var combinedJsCode = "".concat(envDefineCode).concat(jsCode).concat(renderCodeBlock ? "\n".concat(renderCodeBlock) : "").concat(wrapInEffect(indent2, effectCode));
153
- var indent = indentation(config.codeStyle.indent * config.depth);
46
+ return {
47
+ js: childResults.js,
48
+ combinedJsCode: combinedJsCode,
49
+ ui: uiResult,
50
+ cssContent: cssContent,
51
+ slots: [],
52
+ scopeSlots: []
53
+ };
54
+ };
154
55
 
155
- // 识别初始化逻辑(如果 handleCom 或逻辑处理层能标记哪些是初始化逻辑更好,
156
- // 目前我们可以在这里做一层包装,或者在 handleCom 生成时就包装好)
157
- // 暂时在根场景中,如果有特定的初始化执行逻辑,统一放入 useEffect
56
+ /**
57
+ * 设置基础导入
58
+ */
59
+ var setupImports = function setupImports(addImport, config, isRoot) {
60
+ var utilsPkg = config.getUtilsPackageName();
61
+ var comPkg = config.getComponentPackageName();
62
+ addImport({
63
+ packageName: "react",
64
+ dependencyNames: ["useRef", "useEffect", "useState"],
65
+ importType: "named"
66
+ });
67
+ addImport({
68
+ packageName: "@tarojs/components",
69
+ dependencyNames: ["View"],
70
+ importType: "named"
71
+ });
72
+ addImport({
73
+ packageName: utilsPkg,
74
+ dependencyNames: ["WithCom", "WithWrapper"],
75
+ importType: "named"
76
+ });
77
+ addImport({
78
+ packageName: comPkg,
79
+ dependencyNames: ["useAppContext"],
80
+ importType: "named"
81
+ });
82
+ if (isRoot) {
83
+ addImport({
84
+ packageName: "./index.less",
85
+ dependencyNames: [],
86
+ importType: "module"
87
+ });
88
+ }
89
+ };
158
90
 
159
- // 生成 Taro View 组件
91
+ /**
92
+ * 生成 Slot 的 UI 代码
93
+ */
94
+ var generateSlotUi = function generateSlotUi(ui, props, childrenUi, config) {
95
+ var indent = indentation(config.codeStyle.indent * config.depth);
160
96
  var mergedStyle = _objectSpread(_objectSpread({
161
- width: '100%',
162
- height: '100%'
163
- }, ui.style), props.style || {});
97
+ width: "100%",
98
+ height: "100%"
99
+ }, ui.style || {}), props.style || {});
164
100
  var styleCode = JSON.stringify(convertRootStyle(_objectSpread(_objectSpread({}, mergedStyle), {}, {
165
101
  layout: ui.layout || mergedStyle.layout
166
102
  })));
103
+ var rootClassName = getRootComponentClassName(config.getCurrentScene(), config.checkIsRoot());
104
+ var classNameAttr = rootClassName ? " className='".concat(rootClassName, "'") : "";
105
+ return "".concat(indent, "<View").concat(classNameAttr, " style={").concat(styleCode, "}>\n").concat(childrenUi, "\n").concat(indent, "</View>");
106
+ };
167
107
 
168
- // 获取根组件的 className(只在根组件时获取)
169
- var scene = config.getCurrentScene();
170
- var rootClassName = getRootComponentClassName(scene, config.checkIsRoot());
171
- var classNameAttr = rootClassName ? " className='".concat(rootClassName, "'") : '';
172
- var uiResult = "".concat(indent, "<View").concat(classNameAttr, " style={").concat(styleCode, "}>\n").concat(uiCode, "\n").concat(indent, "</View>");
173
-
174
- // 如果是根场景,需要将生成的代码添加到结果中
175
- if (config.checkIsRoot()) {
176
- var _config$getFileName, _meta2, _meta3;
177
- var _scene2 = config.getCurrentScene();
178
- var fileName = ((_config$getFileName = config.getFileName) === null || _config$getFileName === void 0 ? void 0 : _config$getFileName.call(config, ui.meta.slotId)) || ui.meta.title || "index";
179
- var componentId = ((_meta2 = ui.meta) === null || _meta2 === void 0 ? void 0 : _meta2.id) || ui.id || ((_meta3 = ui.meta) === null || _meta3 === void 0 ? void 0 : _meta3.slotId) || "Index";
180
- // 兼容首字符为数字的情况,添加 I 前缀
181
- var componentName = "I".concat(String(componentId).replace(/[^a-zA-Z0-9]/g, '_'));
182
-
183
- // 生成完整的组件代码,使用函数组件模板
184
- var componentCode = genComponentTemplate({
185
- componentName: componentName,
186
- combinedJsCode: combinedJsCode,
187
- uiResult: uiResult
188
- });
189
- config.add({
190
- importManager: importManager,
191
- content: componentCode,
192
- cssContent: cssContent,
193
- name: fileName
194
- });
195
- }
196
- return {
197
- js: jsCode,
108
+ /**
109
+ * 完成根组件的注册
110
+ */
111
+ var finalizeRootComponent = function finalizeRootComponent(ui, config, importManager, combinedJsCode, uiResult, cssContent) {
112
+ var _config$getFileName, _ui$meta, _ui$meta2;
113
+ var fileName = ((_config$getFileName = config.getFileName) === null || _config$getFileName === void 0 ? void 0 : _config$getFileName.call(config, ui.meta.slotId)) || ui.meta.title || "index";
114
+ var componentId = ((_ui$meta = ui.meta) === null || _ui$meta === void 0 ? void 0 : _ui$meta.id) || ui.id || ((_ui$meta2 = ui.meta) === null || _ui$meta2 === void 0 ? void 0 : _ui$meta2.slotId) || "Index";
115
+ var componentName = "I".concat(String(componentId).replace(/[^a-zA-Z0-9]/g, "_"));
116
+ var componentCode = genComponentTemplate({
117
+ componentName: componentName,
198
118
  combinedJsCode: combinedJsCode,
199
- ui: uiResult,
119
+ uiResult: uiResult
120
+ });
121
+ config.add({
122
+ importManager: importManager,
123
+ content: componentCode,
200
124
  cssContent: cssContent,
201
- slots: [],
202
- scopeSlots: []
203
- };
125
+ name: fileName
126
+ });
204
127
  };
205
128
  export default handleSlot;
@@ -1,3 +1,3 @@
1
- export { default } from './toCodeTaro';
1
+ export { default as toCodeTaro } from './toCodeTaro';
2
2
  export { default as generateTaroProjectJson } from './generate/generateTaroProjectJson';
3
3
  export { default as generateTaroTempalteJson } from './generate/generateTaroTempalteJson';
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { default } from "./toCodeTaro";
1
+ export { default as toCodeTaro } from "./toCodeTaro";
2
2
  export { default as generateTaroProjectJson } from "./generate/generateTaroProjectJson";
3
3
  export { default as generateTaroTempalteJson } from "./generate/generateTaroTempalteJson";
@@ -0,0 +1,9 @@
1
+ import type { HandleComConfig, Com } from "../handleCom";
2
+ /**
3
+ * 处理组件事件
4
+ */
5
+ export declare const processComEvents: (com: Com, config: HandleComConfig) => {
6
+ comEventCode: string;
7
+ outputsConfig: Record<string, any>;
8
+ eventConfig: Record<string, any>;
9
+ };
@@ -0,0 +1,110 @@
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
+ import { indentation } from "../utils";
5
+ import { handleProcess } from "../utils/logic/handleProcess";
6
+ /**
7
+ * 处理组件事件
8
+ */
9
+ export var processComEvents = function processComEvents(com, config) {
10
+ var meta = com.meta,
11
+ events = com.events;
12
+ var comEventCode = "";
13
+ var outputsConfig = {};
14
+ var eventConfig = {};
15
+ var outputEvents = events || {};
16
+ Object.entries(outputEvents).forEach(function (_ref) {
17
+ var _ref2 = _slicedToArray(_ref, 2),
18
+ eventId = _ref2[0],
19
+ eventInfo = _ref2[1];
20
+ var type = eventInfo.type,
21
+ isAbstract = eventInfo.isAbstract,
22
+ diagramId = eventInfo.diagramId,
23
+ schema = eventInfo.schema,
24
+ active = eventInfo.active;
25
+ if (active === false) return;
26
+ if (isAbstract) {
27
+ config.setAbstractEventTypeDefMap({
28
+ comId: com.meta.id,
29
+ eventId: eventId,
30
+ typeDef: config.getTypeDef(),
31
+ schema: schema
32
+ });
33
+ return;
34
+ }
35
+ if (type === "fx") {
36
+ processFxEvent(eventId, com, config, function (code) {
37
+ comEventCode += code;
38
+ });
39
+ eventConfig[eventId] = {
40
+ connected: true
41
+ };
42
+ return;
43
+ }
44
+ if (type !== "defined" || !diagramId) return;
45
+ var event = config.getEventByDiagramId(diagramId);
46
+ if (!event) return;
47
+ var paramName = "value";
48
+ var process = handleProcess(event, _objectSpread(_objectSpread({}, config), {}, {
49
+ target: "comRefs.current",
50
+ depth: config.depth + 3,
51
+ addParentDependencyImport: config.addParentDependencyImport,
52
+ getParams: function getParams() {
53
+ return _defineProperty({}, eventId, paramName);
54
+ }
55
+ })).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.");
56
+ if (process.includes("pageParams")) {
57
+ config.addParentDependencyImport({
58
+ packageName: config.getComponentPackageName(),
59
+ dependencyNames: ["page", "SUBJECT_VALUE"],
60
+ importType: "named"
61
+ });
62
+ var indent = indentation(config.codeStyle.indent * (config.depth + 3));
63
+ // 使用 SUBJECT_VALUE 获取当前参数值,保持与 MyBricks 逻辑一致
64
+ process = "".concat(indent, "const pageParams: any = page.getParams(\"").concat(config.getCurrentScene().id, "\")[SUBJECT_VALUE];\n").concat(process);
65
+ }
66
+ var handlerIndent = indentation(config.codeStyle.indent * (config.depth + 2));
67
+ var handlerCode = "(".concat(paramName, ": any) => {\n").concat(process, "\n").concat(handlerIndent, "}");
68
+ if (!outputsConfig[meta.id]) {
69
+ outputsConfig[meta.id] = {};
70
+ }
71
+ var onEventName = eventId.startsWith("on") ? eventId : "on".concat(eventId.charAt(0).toUpperCase()).concat(eventId.slice(1));
72
+ outputsConfig[meta.id][onEventName] = handlerCode;
73
+ eventConfig[eventId] = {
74
+ connected: true
75
+ };
76
+ });
77
+ return {
78
+ comEventCode: comEventCode,
79
+ outputsConfig: outputsConfig,
80
+ eventConfig: eventConfig
81
+ };
82
+ };
83
+
84
+ /**
85
+ * 处理 FX 事件
86
+ */
87
+ var processFxEvent = function processFxEvent(eventId, com, config, addCode) {
88
+ var fxsMap = config.getFxsMap();
89
+ var currentProvider = config.getCurrentProvider();
90
+ var scene = config.getCurrentScene();
91
+ var pinProxy = scene.pinProxies["".concat(com.props.id, "-").concat(eventId)];
92
+ if (!pinProxy) return;
93
+ var fxProvider = fxsMap[pinProxy.frameId];
94
+ if (!fxProvider) return;
95
+ var isGlobal = fxProvider.name === "global";
96
+ if (fxProvider.name !== currentProvider.name) {
97
+ if (isGlobal) {
98
+ config.addParentDependencyImport({
99
+ packageName: config.getComponentPackageName(),
100
+ dependencyNames: ["globalFxs"],
101
+ importType: "named"
102
+ });
103
+ } else {
104
+ config.addConsumer(fxProvider);
105
+ }
106
+ }
107
+ var indent = indentation(config.codeStyle.indent * (config.depth + 2));
108
+ var code = "".concat(indent).concat(eventId, ": ").concat(isGlobal ? "globalFxs" : "comRefs.current.".concat(fxProvider.name, "_Fxs"), ".").concat(pinProxy.frameId, ",\n");
109
+ addCode(code);
110
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 处理模块(Module)
3
+ * 参考鸿蒙实现,将模块处理逻辑独立出来
4
+ */
5
+ import type { ToTaroCodeConfig, GeneratedFile } from "../toCodeTaro";
6
+ import toCode from "@mybricks/to-code-react/dist/cjs/toCode";
7
+ import { type Provider } from "../utils/context/createProvider";
8
+ import type { JSModulesMap } from "../utils/context/collectJSModules";
9
+ type ToCodeResult = ReturnType<typeof toCode>;
10
+ type Module = ToCodeResult["modules"][0];
11
+ interface ProcessModuleParams {
12
+ module: Module;
13
+ config: ToTaroCodeConfig;
14
+ globalVarTypeDef: Record<string, any>;
15
+ defaultFxsMap: Record<string, Provider>;
16
+ abstractEventTypeDefMap: Record<string, any>;
17
+ jsModulesMap: JSModulesMap;
18
+ getExtensionEventById: (id: string) => any;
19
+ getSceneById: (id: string) => any;
20
+ getFrameById?: (id: string) => any;
21
+ addResult: (result: GeneratedFile) => void;
22
+ }
23
+ /**
24
+ * 处理单个模块
25
+ */
26
+ export declare const processModule: (params: ProcessModuleParams) => void;
27
+ /**
28
+ * 处理所有模块
29
+ */
30
+ export declare const processModules: (modules: Module[], params: Omit<ProcessModuleParams, "module">) => void;
31
+ export {};