@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.
Files changed (181) hide show
  1. package/dist/cjs/abstractEventTypeDef.d.ts +11 -0
  2. package/dist/cjs/abstractEventTypeDef.js +93 -0
  3. package/dist/cjs/core/comlib/Index.js +45 -0
  4. package/dist/cjs/core/comlib/_ScanQrcode.js +60 -0
  5. package/dist/cjs/core/comlib/_SetStorage.js +76 -0
  6. package/dist/cjs/core/comlib/_ShowToast.js +96 -0
  7. package/dist/cjs/core/mybricks/MyBricksDescriptor.js +213 -0
  8. package/dist/cjs/core/mybricks/Subject.js +115 -0
  9. package/dist/cjs/core/mybricks/constant.js +70 -0
  10. package/dist/cjs/core/mybricks/context.js +33 -0
  11. package/dist/cjs/core/mybricks/createEnv.js +39 -0
  12. package/dist/cjs/core/mybricks/createJSHandle.js +150 -0
  13. package/dist/cjs/core/mybricks/createModuleEventsHandle.js +49 -0
  14. package/dist/cjs/core/mybricks/createReactiveInputHandler.js +63 -0
  15. package/dist/cjs/core/mybricks/event.js +70 -0
  16. package/dist/cjs/core/mybricks/index.js +871 -0
  17. package/dist/cjs/core/mybricks/log.js +38 -0
  18. package/dist/cjs/core/mybricks/utils.js +69 -0
  19. package/dist/cjs/core/mybricks/variables.js +217 -0
  20. package/dist/cjs/core/utils/ComContext.js +39 -0
  21. package/dist/cjs/core/utils/index.js +88 -0
  22. package/dist/cjs/core/utils/useContext.js +53 -0
  23. package/dist/cjs/core/utils/with.js +84 -0
  24. package/dist/cjs/generate/generateTaroProjectJson.d.ts +24 -0
  25. package/dist/cjs/generate/generateTaroProjectJson.js +101 -0
  26. package/dist/cjs/generate/generateTaroTempalteJson.d.ts +15 -0
  27. package/dist/cjs/generate/generateTaroTempalteJson.js +103 -0
  28. package/dist/cjs/generate/utils/appConfig.d.ts +21 -0
  29. package/dist/cjs/generate/utils/appConfig.js +47 -0
  30. package/dist/cjs/generate/utils/commonDir.d.ts +21 -0
  31. package/dist/cjs/generate/utils/commonDir.js +50 -0
  32. package/dist/cjs/generate/utils/fileNode.d.ts +17 -0
  33. package/dist/cjs/generate/utils/fileNode.js +57 -0
  34. package/dist/cjs/generate/utils/index.d.ts +7 -0
  35. package/dist/cjs/generate/utils/index.js +29 -0
  36. package/dist/cjs/generate/utils/tabBarImages.d.ts +14 -0
  37. package/dist/cjs/generate/utils/tabBarImages.js +36 -0
  38. package/dist/cjs/handleCom.d.ts +31 -0
  39. package/dist/cjs/handleCom.js +260 -0
  40. package/dist/cjs/handleDom.d.ts +19 -0
  41. package/dist/cjs/handleDom.js +86 -0
  42. package/dist/cjs/handleExtension.d.ts +10 -0
  43. package/dist/cjs/handleExtension.js +300 -0
  44. package/dist/cjs/handleGlobal.d.ts +21 -0
  45. package/dist/cjs/handleGlobal.js +155 -0
  46. package/dist/cjs/handleModule.d.ts +15 -0
  47. package/dist/cjs/handleModule.js +108 -0
  48. package/dist/cjs/handleSlot.d.ts +27 -0
  49. package/dist/cjs/handleSlot.js +197 -0
  50. package/dist/cjs/index.d.ts +3 -0
  51. package/dist/cjs/index.js +44 -0
  52. package/dist/cjs/taro-template.json +5370 -0
  53. package/dist/cjs/toCodeTaro.d.ts +130 -0
  54. package/dist/cjs/toCodeTaro.js +427 -0
  55. package/dist/cjs/utils/code/component.d.ts +19 -0
  56. package/dist/cjs/utils/code/component.js +85 -0
  57. package/dist/cjs/utils/code/index.d.ts +18 -0
  58. package/dist/cjs/utils/code/index.js +71 -0
  59. package/dist/cjs/utils/code/renderManager.d.ts +22 -0
  60. package/dist/cjs/utils/code/renderManager.js +80 -0
  61. package/dist/cjs/utils/code/scene.d.ts +19 -0
  62. package/dist/cjs/utils/code/scene.js +82 -0
  63. package/dist/cjs/utils/convertNamespace.d.ts +11 -0
  64. package/dist/cjs/utils/convertNamespace.js +43 -0
  65. package/dist/cjs/utils/genJSModules.d.ts +12 -0
  66. package/dist/cjs/utils/genJSModules.js +116 -0
  67. package/dist/cjs/utils/getComponentClassName.d.ts +16 -0
  68. package/dist/cjs/utils/getComponentClassName.js +47 -0
  69. package/dist/cjs/utils/handlePageConfig.d.ts +24 -0
  70. package/dist/cjs/utils/handlePageConfig.js +73 -0
  71. package/dist/cjs/utils/handleProcess.d.ts +9 -0
  72. package/dist/cjs/utils/handleProcess.js +370 -0
  73. package/dist/cjs/utils/index.d.ts +62 -0
  74. package/dist/cjs/utils/index.js +321 -0
  75. package/dist/cjs/utils/pageConfig/converter.d.ts +17 -0
  76. package/dist/cjs/utils/pageConfig/converter.js +83 -0
  77. package/dist/cjs/utils/pageConfig/index.d.ts +10 -0
  78. package/dist/cjs/utils/pageConfig/index.js +33 -0
  79. package/dist/cjs/utils/pageConfig/pageConfig.d.ts +10 -0
  80. package/dist/cjs/utils/pageConfig/pageConfig.js +87 -0
  81. package/dist/cjs/utils/pageConfig/saveBase64Image.d.ts +14 -0
  82. package/dist/cjs/utils/pageConfig/saveBase64Image.js +81 -0
  83. package/dist/cjs/utils/pageConfig/tabBarConfig.d.ts +13 -0
  84. package/dist/cjs/utils/pageConfig/tabBarConfig.js +74 -0
  85. package/dist/cjs/utils/pageConfig/types.d.ts +68 -0
  86. package/dist/cjs/utils/pageConfig/types.js +17 -0
  87. package/dist/cjs/utils/pageConfig/validator.d.ts +13 -0
  88. package/dist/cjs/utils/pageConfig/validator.js +67 -0
  89. package/dist/cjs/utils/pxtransform.d.ts +28 -0
  90. package/dist/cjs/utils/pxtransform.js +102 -0
  91. package/dist/esm/abstractEventTypeDef.d.ts +11 -0
  92. package/dist/esm/abstractEventTypeDef.js +63 -0
  93. package/dist/esm/core/comlib/Index.js +3 -0
  94. package/dist/esm/core/comlib/_ScanQrcode.js +27 -0
  95. package/dist/esm/core/comlib/_SetStorage.js +52 -0
  96. package/dist/esm/core/comlib/_ShowToast.js +68 -0
  97. package/dist/esm/core/mybricks/MyBricksDescriptor.js +232 -0
  98. package/dist/esm/core/mybricks/Subject.js +143 -0
  99. package/dist/esm/core/mybricks/constant.js +18 -0
  100. package/dist/esm/core/mybricks/context.js +5 -0
  101. package/dist/esm/core/mybricks/createEnv.js +9 -0
  102. package/dist/esm/core/mybricks/createJSHandle.js +138 -0
  103. package/dist/esm/core/mybricks/createModuleEventsHandle.js +26 -0
  104. package/dist/esm/core/mybricks/createReactiveInputHandler.js +40 -0
  105. package/dist/esm/core/mybricks/event.js +44 -0
  106. package/dist/esm/core/mybricks/index.js +952 -0
  107. package/dist/esm/core/mybricks/log.js +12 -0
  108. package/dist/esm/core/mybricks/utils.js +41 -0
  109. package/dist/esm/core/mybricks/variables.js +190 -0
  110. package/dist/esm/core/utils/ComContext.js +10 -0
  111. package/dist/esm/core/utils/index.js +57 -0
  112. package/dist/esm/core/utils/useContext.js +24 -0
  113. package/dist/esm/core/utils/with.js +67 -0
  114. package/dist/esm/generate/generateTaroProjectJson.d.ts +24 -0
  115. package/dist/esm/generate/generateTaroProjectJson.js +102 -0
  116. package/dist/esm/generate/generateTaroTempalteJson.d.ts +15 -0
  117. package/dist/esm/generate/generateTaroTempalteJson.js +94 -0
  118. package/dist/esm/generate/utils/appConfig.d.ts +21 -0
  119. package/dist/esm/generate/utils/appConfig.js +30 -0
  120. package/dist/esm/generate/utils/commonDir.d.ts +21 -0
  121. package/dist/esm/generate/utils/commonDir.js +36 -0
  122. package/dist/esm/generate/utils/fileNode.d.ts +17 -0
  123. package/dist/esm/generate/utils/fileNode.js +49 -0
  124. package/dist/esm/generate/utils/index.d.ts +7 -0
  125. package/dist/esm/generate/utils/index.js +8 -0
  126. package/dist/esm/generate/utils/tabBarImages.d.ts +14 -0
  127. package/dist/esm/generate/utils/tabBarImages.js +15 -0
  128. package/dist/esm/handleCom.d.ts +31 -0
  129. package/dist/esm/handleCom.js +297 -0
  130. package/dist/esm/handleDom.d.ts +19 -0
  131. package/dist/esm/handleDom.js +63 -0
  132. package/dist/esm/handleExtension.d.ts +10 -0
  133. package/dist/esm/handleExtension.js +243 -0
  134. package/dist/esm/handleGlobal.d.ts +21 -0
  135. package/dist/esm/handleGlobal.js +117 -0
  136. package/dist/esm/handleModule.d.ts +15 -0
  137. package/dist/esm/handleModule.js +78 -0
  138. package/dist/esm/handleSlot.d.ts +27 -0
  139. package/dist/esm/handleSlot.js +205 -0
  140. package/dist/esm/index.d.ts +3 -0
  141. package/dist/esm/index.js +3 -0
  142. package/dist/esm/taro-template.json +5370 -0
  143. package/dist/esm/toCodeTaro.d.ts +130 -0
  144. package/dist/esm/toCodeTaro.js +452 -0
  145. package/dist/esm/utils/code/component.d.ts +19 -0
  146. package/dist/esm/utils/code/component.js +54 -0
  147. package/dist/esm/utils/code/index.d.ts +18 -0
  148. package/dist/esm/utils/code/index.js +51 -0
  149. package/dist/esm/utils/code/renderManager.d.ts +22 -0
  150. package/dist/esm/utils/code/renderManager.js +62 -0
  151. package/dist/esm/utils/code/scene.d.ts +19 -0
  152. package/dist/esm/utils/code/scene.js +47 -0
  153. package/dist/esm/utils/convertNamespace.d.ts +11 -0
  154. package/dist/esm/utils/convertNamespace.js +27 -0
  155. package/dist/esm/utils/genJSModules.d.ts +12 -0
  156. package/dist/esm/utils/genJSModules.js +44 -0
  157. package/dist/esm/utils/getComponentClassName.d.ts +16 -0
  158. package/dist/esm/utils/getComponentClassName.js +37 -0
  159. package/dist/esm/utils/handlePageConfig.d.ts +24 -0
  160. package/dist/esm/utils/handlePageConfig.js +68 -0
  161. package/dist/esm/utils/handleProcess.d.ts +9 -0
  162. package/dist/esm/utils/handleProcess.js +379 -0
  163. package/dist/esm/utils/index.d.ts +62 -0
  164. package/dist/esm/utils/index.js +345 -0
  165. package/dist/esm/utils/pageConfig/converter.d.ts +17 -0
  166. package/dist/esm/utils/pageConfig/converter.js +105 -0
  167. package/dist/esm/utils/pageConfig/index.d.ts +10 -0
  168. package/dist/esm/utils/pageConfig/index.js +11 -0
  169. package/dist/esm/utils/pageConfig/pageConfig.d.ts +10 -0
  170. package/dist/esm/utils/pageConfig/pageConfig.js +60 -0
  171. package/dist/esm/utils/pageConfig/saveBase64Image.d.ts +14 -0
  172. package/dist/esm/utils/pageConfig/saveBase64Image.js +105 -0
  173. package/dist/esm/utils/pageConfig/tabBarConfig.d.ts +13 -0
  174. package/dist/esm/utils/pageConfig/tabBarConfig.js +82 -0
  175. package/dist/esm/utils/pageConfig/types.d.ts +68 -0
  176. package/dist/esm/utils/pageConfig/types.js +1 -0
  177. package/dist/esm/utils/pageConfig/validator.d.ts +13 -0
  178. package/dist/esm/utils/pageConfig/validator.js +64 -0
  179. package/dist/esm/utils/pxtransform.d.ts +28 -0
  180. package/dist/esm/utils/pxtransform.js +121 -0
  181. package/package.json +74 -0
@@ -0,0 +1,130 @@
1
+ import toCode from "@mybricks/to-code-react/dist/esm/toCode";
2
+ import type { ToJSON } from "@mybricks/to-code-react/dist/esm/toCode/types";
3
+ import { ImportManager } from "./utils";
4
+ export interface ToTaroCodeConfig {
5
+ getComponentMeta: (com: Extract<UI["children"][0], {
6
+ type: "com";
7
+ }>["meta"], config?: any) => {
8
+ importInfo: {
9
+ /** 导入名「a as b」*/
10
+ name: string;
11
+ from: string;
12
+ type: "default" | "named";
13
+ };
14
+ /** 组件名 */
15
+ name: string;
16
+ /**
17
+ * 调用名
18
+ * 例如js、ai-js这类特殊组件,调用方式由外部实现
19
+ */
20
+ callName?: string;
21
+ };
22
+ getComponentPackageName: (props?: any) => string;
23
+ getUtilsPackageName: () => string;
24
+ getPageId?: (id: string) => string;
25
+ getBus?: (namespace: string) => {
26
+ title: string;
27
+ name: string;
28
+ };
29
+ getApi?: (namespace: string) => {
30
+ title: string;
31
+ };
32
+ getFileName?: (id: string) => string | undefined;
33
+ getModuleApi: (type: "event") => {
34
+ dependencyImport: {
35
+ packageName: string;
36
+ dependencyNames: string[];
37
+ importType: "default" | "named";
38
+ };
39
+ componentName: string;
40
+ };
41
+ /**
42
+ * 写入更多详细信息
43
+ * 当运行时打印IO日志时,必须开启
44
+ */
45
+ verbose?: boolean;
46
+ getComponentName?: any;
47
+ getComponentController?: any;
48
+ getProviderName?: any;
49
+ getEventNodeName?: any;
50
+ /** 代码风格 */
51
+ codeStyle?: {
52
+ indent: number;
53
+ };
54
+ }
55
+ /** 返回结果 */
56
+ export type Result = Array<{
57
+ content: string;
58
+ cssContent?: string;
59
+ pageConfigContent?: string;
60
+ importManager: ImportManager;
61
+ type: "normal" | "popup" | "module" | "global" | "extension-config" | "extension-api" | "extension-bus" | "abstractEventTypeDef" | "fx" | "api" | "extension-event" | "jsModules" | "commonIndex" | "tabBarConfig";
62
+ meta?: ReturnType<typeof toCode>["scenes"][0]["scene"];
63
+ name: string;
64
+ tabBarConfig?: string;
65
+ }>;
66
+ declare const toCodeTaro: (tojson: ToJSON, config: ToTaroCodeConfig) => Result;
67
+ type ToCodeResult = ReturnType<typeof toCode>;
68
+ export type UI = ToCodeResult["scenes"][0]["ui"];
69
+ interface Provider {
70
+ name: string;
71
+ class: string;
72
+ controllers: Set<string>;
73
+ /** 跨作用域调用当前输入项(当前仅作用于插槽) */
74
+ useParams: boolean;
75
+ /** 调用事件(当前仅区块的输出项) */
76
+ useEvents: boolean;
77
+ coms: Set<string>;
78
+ /** 使用区块的输入项 */
79
+ useController: boolean;
80
+ /** 使用区块的配置项 */
81
+ useData: boolean;
82
+ }
83
+ export interface BaseConfig extends ToTaroCodeConfig {
84
+ /** 获取当前场景信息 */
85
+ getCurrentScene: () => ReturnType<typeof toCode>["scenes"][0]["scene"];
86
+ /** 添加最终的文件列表 */
87
+ add: (value: {
88
+ content: string;
89
+ cssContent?: string;
90
+ importManager: ImportManager;
91
+ name: string;
92
+ }) => void;
93
+ /** 获取事件 */
94
+ getEventByDiagramId: (diagramId: string) => ReturnType<typeof toCode>["scenes"][0]["event"][0];
95
+ /** 获取事件 - 变量 */
96
+ getVarEvents: (params?: {
97
+ comId?: string;
98
+ slotId?: string;
99
+ }) => ReturnType<typeof toCode>["scenes"][0]["event"];
100
+ /** 获取事件 - fx */
101
+ getFxEvents: (params?: {
102
+ comId?: string;
103
+ slotId?: string;
104
+ }) => ReturnType<typeof toCode>["scenes"][0]["event"];
105
+ /** 获取事件 - 生命周期 */
106
+ getEffectEvent: (params?: {
107
+ comId: string;
108
+ slotId: string;
109
+ }) => ReturnType<typeof toCode>["scenes"][0]["event"][0];
110
+ getCurrentProvider: () => Provider;
111
+ getRootProvider: () => Provider;
112
+ getProviderMap: () => Record<string, ReturnType<BaseConfig["getCurrentProvider"]>>;
113
+ getExtensionEventById: (id: string) => ReturnType<typeof toCode>["scenes"][0]["event"][0];
114
+ getSceneById: (id: string) => ReturnType<typeof toCode>["scenes"][0]["scene"];
115
+ /** 层级,用于格式化代码 */
116
+ depth: number;
117
+ getTypeDef: () => {
118
+ vars: Record<string, any>;
119
+ inputs: Record<string, any>;
120
+ outputs: Record<string, any>;
121
+ };
122
+ getFxsMap: () => Record<string, Provider>;
123
+ setAbstractEventTypeDefMap: (params: {
124
+ comId: string;
125
+ eventId: string;
126
+ typeDef: any;
127
+ schema: any;
128
+ }) => void;
129
+ }
130
+ export default toCodeTaro;
@@ -0,0 +1,452 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
+ import toCode from "@mybricks/to-code-react/dist/esm/toCode";
5
+ import handleSlot from "./handleSlot";
6
+ import { ImportManager, firstCharToLowerCase, firstCharToUpperCase } from "./utils";
7
+ import handleGlobal from "./handleGlobal";
8
+ import handleExtension from "./handleExtension";
9
+ import abstractEventTypeDef from "./abstractEventTypeDef";
10
+ import { genJSModules } from "./utils/genJSModules";
11
+ import { HandlePageConfig } from "./utils/handlePageConfig";
12
+
13
+ /** 返回结果 */
14
+
15
+ var toCodeTaro = function toCodeTaro(tojson, config) {
16
+ console.log('tojson', tojson);
17
+ return getCode({
18
+ tojson: tojson,
19
+ toCodejson: toCode(tojson)
20
+ }, config);
21
+ };
22
+ var getCode = function getCode(params, config) {
23
+ transformConfig(config);
24
+ var result = [];
25
+ var tojson = params.tojson,
26
+ toCodejson = params.toCodejson;
27
+ var scenes = toCodejson.scenes,
28
+ extensionEvents = toCodejson.extensionEvents,
29
+ globalFxs = toCodejson.globalFxs,
30
+ globalVars = toCodejson.globalVars,
31
+ modules = toCodejson.modules;
32
+
33
+ // 收集所有 JS 计算组件
34
+ var jsModulesMap = new Map();
35
+ var eventsMap = tojson.frames.reduce(function (pre, cur) {
36
+ if (cur.type === "extension-event") {
37
+ pre[cur.id] = cur;
38
+ }
39
+ return pre;
40
+ }, {});
41
+ var sceneMap = tojson.scenes.reduce(function (pre, cur) {
42
+ pre[cur.id] = cur;
43
+ return pre;
44
+ }, {});
45
+ var getSceneById = function getSceneById(id) {
46
+ return sceneMap[id];
47
+ };
48
+ var getExtensionEventById = function getExtensionEventById(id) {
49
+ return eventsMap[id];
50
+ };
51
+ result.push.apply(result, _toConsumableArray(handleExtension({
52
+ extensionEvents: extensionEvents,
53
+ tojson: tojson
54
+ }, _objectSpread(_objectSpread({}, config), {}, {
55
+ // @ts-ignore
56
+ getExtensionEventById: getExtensionEventById,
57
+ getSceneById: getSceneById
58
+ }))));
59
+ var globalVarTypeDef = {};
60
+ Object.entries(tojson.global.comsReg).forEach(function (_ref) {
61
+ var _ref2 = _slicedToArray(_ref, 2),
62
+ com = _ref2[1];
63
+ if (com.def.namespace !== "mybricks.core-comlib.var") {
64
+ // 非变量,不需要初始化
65
+ return;
66
+ }
67
+ globalVarTypeDef[com.title] = com;
68
+ });
69
+
70
+ /** 向下记录组件可调用的fx,id唯一,所以直接key-value即可 */
71
+ var defaultFxsMap = {};
72
+ (tojson.global.fxFrames || []).filter(function (fxFrame) {
73
+ return fxFrame.type === "fx";
74
+ }).forEach(function (fxFrame) {
75
+ defaultFxsMap[fxFrame.id] = {
76
+ name: "global",
77
+ class: "global",
78
+ controllers: new Set(),
79
+ useParams: false,
80
+ useEvents: false,
81
+ coms: new Set(),
82
+ useController: false,
83
+ useData: false
84
+ };
85
+ });
86
+ result.push(handleGlobal({
87
+ tojson: tojson,
88
+ globalFxs: globalFxs,
89
+ globalVars: globalVars
90
+ }, _objectSpread(_objectSpread({}, config), {}, {
91
+ // @ts-ignore
92
+ getExtensionEventById: getExtensionEventById,
93
+ getSceneById: getSceneById
94
+ })));
95
+ var abstractEventTypeDefMap = {};
96
+
97
+ // 创建页面配置处理器
98
+ var pageConfigHandler = new HandlePageConfig();
99
+ scenes.forEach(function (_ref3) {
100
+ var _config$getFileName;
101
+ var scene = _ref3.scene,
102
+ ui = _ref3.ui,
103
+ event = _ref3.event;
104
+ Object.entries(scene.coms || {}).forEach(function (_ref4) {
105
+ var _ref5 = _slicedToArray(_ref4, 2),
106
+ comId = _ref5[0],
107
+ comInfo = _ref5[1];
108
+ var def = comInfo.def,
109
+ model = comInfo.model;
110
+
111
+ // 收集js计算
112
+ var isJsCalculationComponent = (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.taro._muilt-inputJs" || (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.core-comlib.js-ai";
113
+ if (isJsCalculationComponent) {
114
+ var _model$data, _model$data2, _model$data3;
115
+ // 优先使用原始代码(code),而不是转译后的代码(transformCode),避免包含 Babel 辅助函数
116
+ var transformCode = (model === null || model === void 0 || (_model$data = model.data) === null || _model$data === void 0 || (_model$data = _model$data.fns) === null || _model$data === void 0 ? void 0 : _model$data.code) || (model === null || model === void 0 || (_model$data2 = model.data) === null || _model$data2 === void 0 || (_model$data2 = _model$data2.fns) === null || _model$data2 === void 0 ? void 0 : _model$data2.transformCode) || (model === null || model === void 0 || (_model$data3 = model.data) === null || _model$data3 === void 0 ? void 0 : _model$data3.fns);
117
+ if (transformCode && !jsModulesMap.has(comId)) {
118
+ jsModulesMap.set(comId, {
119
+ id: comId,
120
+ title: comInfo.title || "JS计算",
121
+ transformCode: typeof transformCode === 'string' ? transformCode : '',
122
+ inputs: (model === null || model === void 0 ? void 0 : model.inputs) || [],
123
+ outputs: (model === null || model === void 0 ? void 0 : model.outputs) || [],
124
+ data: (model === null || model === void 0 ? void 0 : model.data) || {}
125
+ });
126
+ }
127
+ }
128
+ });
129
+ var providerMap = {};
130
+ var fileName = (_config$getFileName = config.getFileName) === null || _config$getFileName === void 0 ? void 0 : _config$getFileName.call(config, ui.meta.slotId);
131
+ var providerName = fileName ? "".concat(fileName, "Provider") : "slot_Index";
132
+ var currentProvider = {
133
+ name: firstCharToLowerCase(providerName),
134
+ class: firstCharToUpperCase(providerName),
135
+ controllers: new Set(),
136
+ useParams: false,
137
+ useEvents: false,
138
+ coms: new Set(),
139
+ useController: false,
140
+ useData: false
141
+ };
142
+ providerMap[currentProvider.name] = currentProvider;
143
+
144
+ /** 类型定义 */
145
+ var typeDef = {
146
+ // 变量
147
+ vars: Object.assign({}, globalVarTypeDef),
148
+ // 输入
149
+ inputs: {},
150
+ // 输出
151
+ outputs: {}
152
+ };
153
+ var fxsMap = Object.assign({}, defaultFxsMap);
154
+
155
+ // 处理页面配置
156
+ var pageConfigContent = pageConfigHandler.handle(scene);
157
+ handleSlot(ui, _objectSpread(_objectSpread({}, config), {}, {
158
+ getCurrentScene: function getCurrentScene() {
159
+ return scene;
160
+ },
161
+ add: function add(value) {
162
+ result.push(_objectSpread(_objectSpread({}, value), {}, {
163
+ type: scene.type ? scene.type : "normal",
164
+ meta: scene,
165
+ pageConfigContent: pageConfigContent // 添加页面配置内容
166
+ }));
167
+ },
168
+ addJSModule: function addJSModule(module) {
169
+ if (!jsModulesMap.has(module.id)) {
170
+ jsModulesMap.set(module.id, module);
171
+ }
172
+ },
173
+ getEventByDiagramId: function getEventByDiagramId(diagramId) {
174
+ return event.find(function (event) {
175
+ return event.diagramId === diagramId;
176
+ });
177
+ },
178
+ getVarEvents: function getVarEvents(params) {
179
+ if (!params) {
180
+ return event.filter(function (event) {
181
+ return event.type === "var" && !event.meta.parentComId || event.type === "listener" && !event.meta.proxy.parentComId;
182
+ });
183
+ }
184
+ return event.filter(function (event) {
185
+ return event.type === "var" && params.comId === event.meta.parentComId && params.slotId === event.meta.frameId || event.type === "listener" && params.comId === event.meta.proxy.parentComId && params.slotId === event.meta.proxy.frameId;
186
+ });
187
+ },
188
+ getFxEvents: function getFxEvents(params) {
189
+ if (!params) {
190
+ return event.filter(function (event) {
191
+ return event.type === "fx" && !event.parentComId;
192
+ });
193
+ }
194
+ return event.filter(function (event) {
195
+ return event.type === "fx" && params.comId === event.parentComId && params.slotId === event.parentSlotId;
196
+ });
197
+ },
198
+ checkIsRoot: function checkIsRoot() {
199
+ return true;
200
+ },
201
+ getEffectEvent: function getEffectEvent(params) {
202
+ // 默认只有一个生命周期事件
203
+ if (!params) {
204
+ // 主场景
205
+ return event.find(function (event) {
206
+ return !event.slotId; // 没有slotId,认为是主场景
207
+ });
208
+ } else {
209
+ // 作用域插槽
210
+ var comId = params.comId,
211
+ slotId = params.slotId;
212
+ return event.find(function (event) {
213
+ return event.slotId === slotId && event.comId === comId;
214
+ });
215
+ }
216
+ },
217
+ getCurrentProvider: function getCurrentProvider() {
218
+ return currentProvider;
219
+ },
220
+ getRootProvider: function getRootProvider() {
221
+ return currentProvider;
222
+ },
223
+ getProviderMap: function getProviderMap() {
224
+ return providerMap;
225
+ },
226
+ getExtensionEventById: getExtensionEventById,
227
+ getSceneById: getSceneById,
228
+ depth: 0,
229
+ getTypeDef: function getTypeDef() {
230
+ return typeDef;
231
+ },
232
+ getFxsMap: function getFxsMap() {
233
+ return fxsMap;
234
+ },
235
+ setAbstractEventTypeDefMap: function setAbstractEventTypeDefMap(params) {
236
+ var comId = params.comId,
237
+ eventId = params.eventId,
238
+ typeDef = params.typeDef,
239
+ schema = params.schema;
240
+ if (!abstractEventTypeDefMap[comId]) {
241
+ abstractEventTypeDefMap[comId] = {
242
+ typeDef: typeDef,
243
+ eventIdMap: {}
244
+ };
245
+ }
246
+ abstractEventTypeDefMap[comId].eventIdMap[eventId] = schema;
247
+ }
248
+ }));
249
+ });
250
+ modules.forEach(function (_ref6) {
251
+ var _config$getFileName2;
252
+ var scene = _ref6.scene,
253
+ ui = _ref6.ui,
254
+ event = _ref6.event;
255
+ // 遍历 scene.coms 收集所有 JS 计算组件(它们不在 slot.comAry 中)
256
+ Object.entries(scene.coms || {}).forEach(function (_ref7) {
257
+ var _ref8 = _slicedToArray(_ref7, 2),
258
+ comId = _ref8[0],
259
+ comInfo = _ref8[1];
260
+ var def = comInfo.def,
261
+ model = comInfo.model;
262
+ var isJsCalculationComponent = (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.taro._muilt-inputJs" || (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.core-comlib.js-ai";
263
+ if (isJsCalculationComponent) {
264
+ var _model$data4, _model$data5, _model$data6;
265
+ // 优先使用原始代码(code),而不是转译后的代码(transformCode),避免包含 Babel 辅助函数
266
+ var transformCode = (model === null || model === void 0 || (_model$data4 = model.data) === null || _model$data4 === void 0 || (_model$data4 = _model$data4.fns) === null || _model$data4 === void 0 ? void 0 : _model$data4.code) || (model === null || model === void 0 || (_model$data5 = model.data) === null || _model$data5 === void 0 || (_model$data5 = _model$data5.fns) === null || _model$data5 === void 0 ? void 0 : _model$data5.transformCode) || (model === null || model === void 0 || (_model$data6 = model.data) === null || _model$data6 === void 0 ? void 0 : _model$data6.fns);
267
+ if (transformCode && !jsModulesMap.has(comId)) {
268
+ jsModulesMap.set(comId, {
269
+ id: comId,
270
+ title: comInfo.title || "JS计算",
271
+ transformCode: typeof transformCode === 'string' ? transformCode : '',
272
+ inputs: (model === null || model === void 0 ? void 0 : model.inputs) || [],
273
+ outputs: (model === null || model === void 0 ? void 0 : model.outputs) || [],
274
+ data: (model === null || model === void 0 ? void 0 : model.data) || {}
275
+ });
276
+ }
277
+ }
278
+ });
279
+ var providerMap = {};
280
+ var fileName = (_config$getFileName2 = config.getFileName) === null || _config$getFileName2 === void 0 ? void 0 : _config$getFileName2.call(config, ui.meta.slotId);
281
+ var providerName = fileName ? "".concat(fileName, "Provider") : "slot_Index";
282
+ var currentProvider = {
283
+ name: firstCharToLowerCase(providerName),
284
+ class: firstCharToUpperCase(providerName),
285
+ controllers: new Set(),
286
+ useParams: false,
287
+ useEvents: false,
288
+ coms: new Set(),
289
+ useController: false,
290
+ useData: false
291
+ };
292
+ providerMap[currentProvider.name] = currentProvider;
293
+
294
+ /** 类型定义 */
295
+ var typeDef = {
296
+ // 变量
297
+ vars: Object.assign({}, globalVarTypeDef),
298
+ // 输入
299
+ inputs: {},
300
+ // 输出
301
+ outputs: {}
302
+ };
303
+ var fxsMap = Object.assign({}, defaultFxsMap);
304
+ handleSlot(ui, _objectSpread(_objectSpread({}, config), {}, {
305
+ getCurrentScene: function getCurrentScene() {
306
+ return scene;
307
+ },
308
+ add: function add(value) {
309
+ result.push(_objectSpread(_objectSpread({}, value), {}, {
310
+ type: scene.type,
311
+ meta: scene
312
+ }));
313
+ },
314
+ addJSModule: function addJSModule(module) {
315
+ if (!jsModulesMap.has(module.id)) {
316
+ jsModulesMap.set(module.id, module);
317
+ }
318
+ },
319
+ getEventByDiagramId: function getEventByDiagramId(diagramId) {
320
+ return event.find(function (event) {
321
+ return event.diagramId === diagramId;
322
+ });
323
+ },
324
+ getVarEvents: function getVarEvents(params) {
325
+ if (!params) {
326
+ return event.filter(function (event) {
327
+ return event.type === "var" && !event.meta.parentComId || event.type === "listener" && !event.meta.proxy.parentComId;
328
+ });
329
+ }
330
+ return event.filter(function (event) {
331
+ return event.type === "var" && params.comId === event.meta.parentComId && params.slotId === event.meta.frameId || event.type === "listener" && params.comId === event.meta.proxy.parentComId && params.slotId === event.meta.proxy.frameId;
332
+ });
333
+ },
334
+ getFxEvents: function getFxEvents(params) {
335
+ if (!params) {
336
+ return event.filter(function (event) {
337
+ return event.type === "fx" && !event.parentComId;
338
+ });
339
+ }
340
+ return event.filter(function (event) {
341
+ return event.type === "fx" && params.comId === event.parentComId && params.slotId === event.parentSlotId;
342
+ });
343
+ },
344
+ checkIsRoot: function checkIsRoot() {
345
+ return true;
346
+ },
347
+ getEffectEvent: function getEffectEvent(params) {
348
+ // 默认只有一个生命周期事件
349
+ if (!params) {
350
+ // 主场景
351
+ return event.find(function (event) {
352
+ return !event.slotId; // 没有slotId,认为是主场景
353
+ });
354
+ } else {
355
+ // 作用域插槽
356
+ var comId = params.comId,
357
+ slotId = params.slotId;
358
+ return event.find(function (event) {
359
+ return event.slotId === slotId && event.comId === comId;
360
+ });
361
+ }
362
+ },
363
+ getCurrentProvider: function getCurrentProvider() {
364
+ return currentProvider;
365
+ },
366
+ getRootProvider: function getRootProvider() {
367
+ return currentProvider;
368
+ },
369
+ getProviderMap: function getProviderMap() {
370
+ return providerMap;
371
+ },
372
+ getExtensionEventById: getExtensionEventById,
373
+ getSceneById: getSceneById,
374
+ depth: 0,
375
+ getTypeDef: function getTypeDef() {
376
+ return typeDef;
377
+ },
378
+ getFxsMap: function getFxsMap() {
379
+ return fxsMap;
380
+ },
381
+ setAbstractEventTypeDefMap: function setAbstractEventTypeDefMap(params) {
382
+ var comId = params.comId,
383
+ eventId = params.eventId,
384
+ typeDef = params.typeDef,
385
+ schema = params.schema;
386
+ if (!abstractEventTypeDefMap[comId]) {
387
+ abstractEventTypeDefMap[comId] = {
388
+ typeDef: typeDef,
389
+ eventIdMap: {}
390
+ };
391
+ }
392
+ abstractEventTypeDefMap[comId].eventIdMap[eventId] = schema;
393
+ },
394
+ getComponentController: function getComponentController(_ref9) {
395
+ var com = _ref9.com;
396
+ return com.id;
397
+ }
398
+ }));
399
+ });
400
+ result.push({
401
+ type: "abstractEventTypeDef",
402
+ content: abstractEventTypeDef(abstractEventTypeDefMap, config),
403
+ importManager: new ImportManager(config),
404
+ name: "abstractEventTypeDef"
405
+ });
406
+
407
+ // 生成 JSModules.ts 文件
408
+ result.push({
409
+ type: "jsModules",
410
+ content: genJSModules(Array.from(jsModulesMap.values())),
411
+ importManager: new ImportManager(config),
412
+ name: "JSModules"
413
+ });
414
+
415
+ // 生成 common/index.ts 文件(初始化并导出 jsModules)
416
+ if (jsModulesMap.size > 0) {
417
+ var commonIndexContent = "import jsModulesGenerator from \"./jsModules\";\nimport { createJSHandle } from \"../core/mybricks/index\";\n\nconst jsModules: Record<string, (props: any, appContext: any) => any> = jsModulesGenerator({ createJSHandle });\n\nexport { jsModules };\n";
418
+ result.push({
419
+ type: "commonIndex",
420
+ content: commonIndexContent,
421
+ importManager: new ImportManager(config),
422
+ name: "commonIndex"
423
+ });
424
+ }
425
+
426
+ // 添加 TabBar 配置项(如果存在)
427
+ var globalTabBarConfig = pageConfigHandler.getTabBarConfig();
428
+ if (globalTabBarConfig) {
429
+ result.push({
430
+ type: "tabBarConfig",
431
+ content: globalTabBarConfig,
432
+ importManager: new ImportManager(config),
433
+ name: "tabBarConfig",
434
+ tabBarConfig: globalTabBarConfig
435
+ });
436
+ }
437
+
438
+ // 将 TabBar 图片文件信息附加到结果中(通过扩展字段)
439
+ // 由于 TypeScript 类型限制,我们使用 any 来扩展
440
+ result.__tabBarImageFiles = pageConfigHandler.getTabBarImageFiles();
441
+ return result;
442
+ };
443
+
444
+ /** 初始化配置 */
445
+ var transformConfig = function transformConfig(config) {
446
+ if (!config.codeStyle) {
447
+ config.codeStyle = {
448
+ indent: 2
449
+ };
450
+ }
451
+ };
452
+ export default toCodeTaro;
@@ -0,0 +1,19 @@
1
+ /** 生成组件 Inputs 映射代码 */
2
+ export declare const genComponentInputsCode: (indent: string, providerName: string, comId: string) => string;
3
+ /** 生成组件 Outputs 映射代码 */
4
+ export declare const genComponentOutputsCode: (indent: string, comId: string, comEventCode: string) => string;
5
+ /** 包装单个事件处理函数,注入 getConnections */
6
+ export declare const wrapEventProcess: (indent: string, eventId: string, defaultValue: string, process: string) => string;
7
+ /** 生成插槽渲染函数引用(使用 renderManager) */
8
+ export declare const genSlotRenderRef: ({ slotId, renderId, indent, isLast }: {
9
+ slotId: string;
10
+ renderId: string;
11
+ indent: string;
12
+ isLast: boolean;
13
+ }) => string;
14
+ /** 格式化插槽内容为 render 函数体代码 */
15
+ export declare const formatSlotContent: ({ uiContent, baseIndentSize, renderBodyIndent }: {
16
+ uiContent: string;
17
+ baseIndentSize: number;
18
+ renderBodyIndent: string;
19
+ }) => string;
@@ -0,0 +1,54 @@
1
+ import { indentation } from "../index";
2
+ /** 生成组件 Inputs 映射代码 */
3
+ export var genComponentInputsCode = function genComponentInputsCode(indent, providerName, comId) {
4
+ return "".concat(indent, "inputs['").concat(comId, "'] = useBindInputs(controllers.current.").concat(providerName, ", '").concat(comId, "');\n");
5
+ };
6
+
7
+ /** 生成组件 Outputs 映射代码 */
8
+ export var genComponentOutputsCode = function genComponentOutputsCode(indent, comId, comEventCode) {
9
+ if (!comEventCode) return "";
10
+ return "".concat(indent, "outputs['").concat(comId, "'] = {\n") + "".concat(comEventCode) + "".concat(indent, "};\n");
11
+ };
12
+
13
+ /** 包装单个事件处理函数,注入 getConnections */
14
+ export var wrapEventProcess = function wrapEventProcess(indent, eventId, defaultValue, process) {
15
+ return "".concat(indent).concat(eventId, ": Object.assign((").concat(defaultValue, ": any) => {\n") + "".concat(process, "\n") + "".concat(indent, "}, { getConnections: () => [1] }),\n");
16
+ };
17
+
18
+ /** 生成插槽渲染函数引用(使用 renderManager) */
19
+ export var genSlotRenderRef = function genSlotRenderRef(_ref) {
20
+ var slotId = _ref.slotId,
21
+ renderId = _ref.renderId,
22
+ indent = _ref.indent,
23
+ isLast = _ref.isLast;
24
+ return "".concat(indent).concat(slotId, ": {\n").concat(indent, " render: ").concat(renderId, "_Render,\n").concat(indent, "}").concat(isLast ? '' : ',', "\n");
25
+ };
26
+
27
+ /** 格式化插槽内容为 render 函数体代码 */
28
+ export var formatSlotContent = function formatSlotContent(_ref2) {
29
+ var uiContent = _ref2.uiContent,
30
+ baseIndentSize = _ref2.baseIndentSize,
31
+ renderBodyIndent = _ref2.renderBodyIndent;
32
+ var lines = uiContent.split('\n');
33
+ var formattedLines = [];
34
+ lines.forEach(function (line) {
35
+ var trimmedLine = line.trim();
36
+ if (!trimmedLine) {
37
+ return; // 跳过空行
38
+ }
39
+
40
+ // 计算原有缩进(相对于 depth=1 的缩进)
41
+ var originalIndentMatch = line.match(/^(\s*)/);
42
+ var originalIndent = originalIndentMatch ? originalIndentMatch[1].length : 0;
43
+
44
+ // 计算相对缩进层级(相对于 depth=1,即 baseIndentSize)
45
+ var relativeIndentLevel = Math.floor(originalIndent / baseIndentSize);
46
+
47
+ // 新的缩进 = render 函数体内部基础缩进 + 相对缩进
48
+ // renderBodyIndent 已经是函数体内部的缩进(通常是 4 个空格)
49
+ // 然后再加上相对缩进层级 * baseIndentSize
50
+ var newIndent = renderBodyIndent + indentation(baseIndentSize * relativeIndentLevel);
51
+ formattedLines.push(newIndent + trimmedLine);
52
+ });
53
+ return formattedLines.join('\n');
54
+ };
@@ -0,0 +1,18 @@
1
+ /** Taro/React UI 组件代码生成 */
2
+ export declare const getUiComponentCode: (params: {
3
+ componentName: string;
4
+ meta: any;
5
+ props: any;
6
+ resultStyle: Record<string, Record<string, string | number>>;
7
+ componentInputs?: string[];
8
+ componentOutputs?: string[];
9
+ comEventCode?: string;
10
+ slotsCode?: string;
11
+ eventHandlers?: Record<string, string>;
12
+ }, config: {
13
+ codeStyle: {
14
+ indent: number;
15
+ };
16
+ depth: number;
17
+ verbose?: boolean;
18
+ }) => string;