@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,51 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ import { indentation } from "../index";
4
+
5
+ /** Taro/React UI 组件代码生成 */
6
+ export var getUiComponentCode = function getUiComponentCode(params, config) {
7
+ var componentName = params.componentName,
8
+ meta = params.meta,
9
+ props = params.props,
10
+ resultStyle = params.resultStyle,
11
+ componentInputs = params.componentInputs,
12
+ componentOutputs = params.componentOutputs,
13
+ comEventCode = params.comEventCode,
14
+ slotsCode = params.slotsCode,
15
+ _params$eventHandlers = params.eventHandlers,
16
+ eventHandlers = _params$eventHandlers === void 0 ? {} : _params$eventHandlers;
17
+ var indent = indentation(config.codeStyle.indent * config.depth);
18
+ var indent2 = indentation(config.codeStyle.indent * (config.depth + 1));
19
+
20
+ // 使用 WithCom 包裹组件
21
+ var ui = "".concat(indent, "<WithCom");
22
+ ui += "\n".concat(indent2, "component={").concat(componentName, "}");
23
+ ui += "\n".concat(indent2, "id='").concat(meta.id, "'");
24
+ ui += "\n".concat(indent2, "className='").concat(meta.id, "'");
25
+
26
+ // 添加 style(从 resultStyle.root 中提取)
27
+ if (resultStyle.root && Object.keys(resultStyle.root).length > 0) {
28
+ var styleCode = JSON.stringify(resultStyle.root);
29
+ ui += "\n".concat(indent2, "style={").concat(styleCode, "}");
30
+ }
31
+
32
+ // 添加 data(直接传递 props.data,WithCom 内部会使用 useModel)
33
+ var initialData = JSON.stringify(props.data || {});
34
+ ui += "\n".concat(indent2, "data={").concat(initialData, "}");
35
+
36
+ // 添加事件处理函数(onClick, onScroll 等)
37
+ Object.entries(eventHandlers).forEach(function (_ref) {
38
+ var _ref2 = _slicedToArray(_ref, 2),
39
+ eventName = _ref2[0],
40
+ handlerCode = _ref2[1];
41
+ // eventName 已经是 onXxx 格式(onClick, onScroll 等),直接使用
42
+ ui += "\n".concat(indent2).concat(eventName, "={").concat(handlerCode, "}");
43
+ });
44
+
45
+ // 添加插槽
46
+ if (slotsCode) {
47
+ ui += "\n".concat(indent2, "slots={{\n").concat(slotsCode).concat(indent2, "}}");
48
+ }
49
+ ui += "\n".concat(indent, "/>");
50
+ return ui;
51
+ };
@@ -0,0 +1,22 @@
1
+ /** Render 函数管理器 */
2
+ export declare class RenderManager {
3
+ private _renders;
4
+ /**
5
+ * 注册一个 render 函数
6
+ * @param renderId 唯一标识符,格式:组件ID_插槽ID
7
+ * @param renderCode render 函数的代码内容(不包含函数声明)
8
+ */
9
+ register(renderId: string, renderCode: string): void;
10
+ /**
11
+ * 生成所有 render 函数的定义代码
12
+ * @param indent 基础缩进
13
+ */
14
+ toCode(indent: string): string;
15
+ /**
16
+ * 生成 render 对象的引用代码
17
+ * @param slotId 插槽ID
18
+ * @param renderId render 函数ID
19
+ * @param indent 缩进
20
+ */
21
+ genRenderRef(slotId: string, renderId: string, indent: string): string;
22
+ }
@@ -0,0 +1,62 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ import { indentation } from "../index";
5
+
6
+ /** Render 函数管理器 */
7
+ export var RenderManager = /*#__PURE__*/function () {
8
+ function RenderManager() {
9
+ _classCallCheck(this, RenderManager);
10
+ _defineProperty(this, "_renders", new Map());
11
+ }
12
+ _createClass(RenderManager, [{
13
+ key: "register",
14
+ value:
15
+ /**
16
+ * 注册一个 render 函数
17
+ * @param renderId 唯一标识符,格式:组件ID_插槽ID
18
+ * @param renderCode render 函数的代码内容(不包含函数声明)
19
+ */
20
+ function register(renderId, renderCode) {
21
+ this._renders.set(renderId, renderCode);
22
+ }
23
+
24
+ /**
25
+ * 生成所有 render 函数的定义代码
26
+ * @param indent 基础缩进
27
+ */
28
+ }, {
29
+ key: "toCode",
30
+ value: function toCode(indent) {
31
+ if (this._renders.size === 0) {
32
+ return "";
33
+ }
34
+ var code = "";
35
+ var indentSize = 2; // 函数体内部缩进大小(通常是 2 个空格)
36
+ var indent2 = indentation(indentSize); // 函数体内部缩进
37
+
38
+ this._renders.forEach(function (renderCode, renderId) {
39
+ code += "".concat(indent, "const ").concat(renderId, "_Render = (params?: { style?: any }) => {\n");
40
+ code += "".concat(indent).concat(indent2, "return (\n");
41
+ // renderCode 已经包含了正确的缩进,直接拼接
42
+ code += renderCode;
43
+ code += "\n".concat(indent).concat(indent2, ");\n");
44
+ code += "".concat(indent, "};\n\n");
45
+ });
46
+ return code;
47
+ }
48
+
49
+ /**
50
+ * 生成 render 对象的引用代码
51
+ * @param slotId 插槽ID
52
+ * @param renderId render 函数ID
53
+ * @param indent 缩进
54
+ */
55
+ }, {
56
+ key: "genRenderRef",
57
+ value: function genRenderRef(slotId, renderId, indent) {
58
+ return "".concat(indent).concat(slotId, ": {\n").concat(indent, " render: ").concat(renderId, "_Render,\n").concat(indent, "},\n");
59
+ }
60
+ }]);
61
+ return RenderManager;
62
+ }();
@@ -0,0 +1,19 @@
1
+ /** 生成响应式 data 管理器 */
2
+ export declare const genReactiveDataManager: (indent: string, utilsPackageName: string) => string;
3
+ /** 生成根组件定义代码 (useAppContext) */
4
+ export declare const genRootDefineCode: (indent: string, utilsPackageName: string, hasJsModules?: boolean) => string;
5
+ /** 生成普通插槽定义代码 */
6
+ export declare const genSlotDefineCode: (indent: string) => string;
7
+ /** 生成控制器初始化代码 */
8
+ export declare const genControllerInitCode: (indent: string, providerName: string) => string;
9
+ /** 生成完整的函数组件模板 */
10
+ export declare const genComponentTemplate: ({ componentName, combinedJsCode, uiResult, outputsConfig, scopeName, utilsPackageName, }: {
11
+ componentName: string;
12
+ combinedJsCode: string;
13
+ uiResult: string;
14
+ outputsConfig?: Record<string, Record<string, any>>;
15
+ scopeName?: string;
16
+ utilsPackageName?: string;
17
+ }) => string;
18
+ /** 生成 useEffect 包装代码 */
19
+ export declare const wrapInEffect: (indent: string, effectCode: string) => string;
@@ -0,0 +1,47 @@
1
+ /** 生成响应式 data 管理器 */
2
+ export var genReactiveDataManager = function genReactiveDataManager(indent, utilsPackageName) {
3
+ return "";
4
+ };
5
+
6
+ /** 生成根组件定义代码 (useAppContext) */
7
+ export var genRootDefineCode = function genRootDefineCode(indent, utilsPackageName) {
8
+ var hasJsModules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
9
+ // 使用 useAppContext 获取 comRefs 和 appContext,不再需要 controllers, inputs, outputs
10
+ var code = "".concat(indent, "const {comRefs, appContext} = useAppContext();\n");
11
+ // 如果有 JS 计算组件,需要初始化 comModules
12
+ if (hasJsModules) {
13
+ code += "".concat(indent, "const comModules = jsModules({ createJSHandle });\n");
14
+ }
15
+ return code;
16
+ };
17
+
18
+ /** 生成普通插槽定义代码 */
19
+ export var genSlotDefineCode = function genSlotDefineCode(indent) {
20
+ // 插槽内部也使用 useAppContext,获取 comRefs 和 appContext
21
+ return "".concat(indent, "const {comRefs, appContext} = useAppContext();\n");
22
+ };
23
+
24
+ /** 生成控制器初始化代码 */
25
+ export var genControllerInitCode = function genControllerInitCode(indent, providerName) {
26
+ return "".concat(indent, "if (!controllers.current.").concat(providerName, ") controllers.current.").concat(providerName, " = {};\n");
27
+ };
28
+
29
+ /** 生成完整的函数组件模板 */
30
+ export var genComponentTemplate = function genComponentTemplate(_ref) {
31
+ var componentName = _ref.componentName,
32
+ combinedJsCode = _ref.combinedJsCode,
33
+ uiResult = _ref.uiResult,
34
+ outputsConfig = _ref.outputsConfig,
35
+ scopeName = _ref.scopeName,
36
+ utilsPackageName = _ref.utilsPackageName;
37
+ // 使用 WithWrapper 作为高阶组件包裹根组件
38
+ // 格式:export default WithWrapper(ComponentName)
39
+ return "function ".concat(componentName, "() {\n") + "".concat(combinedJsCode, "\n") + " return (\n" + "".concat(uiResult.split('\n').map(function (line) {
40
+ return " ".concat(line);
41
+ }).join('\n'), "\n") + " );\n" + "}\n\n" + "export default WithWrapper(".concat(componentName, ")");
42
+ };
43
+
44
+ /** 生成 useEffect 包装代码 */
45
+ export var wrapInEffect = function wrapInEffect(indent, effectCode) {
46
+ return "\n".concat(indent, "useEffect(() => {\n").concat(indent, " /** \u573A\u666F/\u7EC4\u4EF6\u521D\u59CB\u5316\u903B\u8F91 */").concat(effectCode, "\n").concat(indent, "}, []);\n");
47
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 将 namespace 转换为组件名
3
+ * 例如:mybricks.taro._showToast -> mybricks_taro_showToast
4
+ * 例如:mybricks.taro._scan-qrcode -> mybricks_taro_scanQrcode
5
+ */
6
+ export declare function convertNamespaceToComponentName(namespace: string): string;
7
+ /**
8
+ * 将 namespace 转换为组件导入名(用于 JS 类型组件)
9
+ * 例如:mybricks.taro._showToast -> mybricks_taro_showToast
10
+ */
11
+ export declare function convertNamespaceToImportName(namespace: string): string;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 将 namespace 转换为组件名
3
+ * 例如:mybricks.taro._showToast -> mybricks_taro_showToast
4
+ * 例如:mybricks.taro._scan-qrcode -> mybricks_taro_scanQrcode
5
+ */
6
+ export function convertNamespaceToComponentName(namespace) {
7
+ return namespace.split('.').map(function (part, index) {
8
+ // 第一部分(mybricks)保持小写
9
+ if (index === 0) {
10
+ return part.toLowerCase();
11
+ }
12
+ // 其他部分:去掉下划线前缀,将连字符后的字母转为大写(驼峰命名)
13
+ var result = part.replace(/^_/, '');
14
+ result = result.replace(/-([a-z])/g, function (_, letter) {
15
+ return letter.toUpperCase();
16
+ });
17
+ return result;
18
+ }).join('_');
19
+ }
20
+
21
+ /**
22
+ * 将 namespace 转换为组件导入名(用于 JS 类型组件)
23
+ * 例如:mybricks.taro._showToast -> mybricks_taro_showToast
24
+ */
25
+ export function convertNamespaceToImportName(namespace) {
26
+ return convertNamespaceToComponentName(namespace);
27
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 生成 JSModules.ts 文件内容
3
+ * 参考鸿蒙的实现方式
4
+ */
5
+ export declare const genJSModules: (jsModules: Array<{
6
+ id: string;
7
+ title: string;
8
+ transformCode: string;
9
+ inputs: string[];
10
+ outputs: string[];
11
+ data: any;
12
+ }>) => string;
@@ -0,0 +1,44 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ /**
4
+ * 生成 JSModules.ts 文件内容
5
+ * 参考鸿蒙的实现方式
6
+ */
7
+ export var genJSModules = function genJSModules(jsModules) {
8
+ if (jsModules.length === 0) {
9
+ return "export default function({ createJSHandle }) {\n const comModules = {};\n return comModules;\n}";
10
+ }
11
+
12
+ // 工具函数:将对象转换为数组
13
+ var convertObject2ArrayCode = "\nfunction convertObject2Array(input) {\n let result = [];\n Object.keys(input)\n .sort((a, b) => {\n let _a = extractNumbers(a) || 0;\n let _b = extractNumbers(b) || 0;\n return +_a - +_b;\n })\n .forEach((key) => {\n result.push(input[key]);\n });\n return result;\n}\nfunction extractNumbers(str) {\n let number = \"\";\n for (let i = 0; i < str.length; i++) {\n if (!isNaN(parseInt(str[i]))) {\n number += str[i];\n }\n }\n return number;\n}\nfunction _execJs(script) {\n return function ({ env, data, inputs, outputs, logger, onError }) {\n const { fns, runImmediate } = data || {};\n const runJSParams = {\n logger,\n outputs: convertObject2Array(outputs),\n };\n try {\n if (runImmediate) {\n script(runJSParams);\n }\n inputs[\"input\"]((val) => {\n try {\n script({\n ...runJSParams,\n inputs: convertObject2Array(val),\n });\n } catch (ex) {\n console.error(\"js\u8BA1\u7B97\u7EC4\u4EF6\u8FD0\u884C\u9519\u8BEF.\", ex);\n }\n });\n } catch (ex) {\n console.error(\"js\u8BA1\u7B97\u7EC4\u4EF6\u8FD0\u884C\u9519\u8BEF.\", ex);\n }\n };\n}\n";
14
+ var code = "export default function({ createJSHandle }) {\n const comModules = {};\n ".concat(convertObject2ArrayCode, "\n");
15
+
16
+ // 为每个 JS 计算组件生成代码
17
+ jsModules.forEach(function (module) {
18
+ var id = module.id,
19
+ title = module.title,
20
+ transformCode = module.transformCode,
21
+ inputs = module.inputs,
22
+ outputs = module.outputs;
23
+
24
+ // 如果 transformCode 已经是解码后的代码,直接使用;否则解码
25
+ var decodedCode = transformCode;
26
+ try {
27
+ // 尝试解码,如果失败说明已经是原始代码
28
+ decodedCode = decodeURIComponent(transformCode);
29
+ } catch (e) {
30
+ // 如果解码失败,说明已经是原始代码,直接使用
31
+ decodedCode = transformCode;
32
+ }
33
+
34
+ // 生成 JS 函数
35
+ code += "\n // ".concat(title, "\n");
36
+ code += " const js_".concat(id, " = ").concat(decodedCode, ";\n");
37
+ code += " const _execJs_".concat(id, " = _execJs(js_").concat(id, ");\n");
38
+ code += " comModules[\"".concat(id, "\"] = (props, appContext) => {\n");
39
+ code += " return createJSHandle(_execJs_".concat(id, ", { props, appContext });\n");
40
+ code += " };\n";
41
+ });
42
+ code += "\n return comModules;\n}";
43
+ return code;
44
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 从组件的 namespace 转换为 className
3
+ * 例如:mybricks.taro.systemPage -> mybricks_taro_systemPage
4
+ * 例如:mybricks.taro.image -> mybricks_taro_image
5
+ * @param namespace 组件的 namespace
6
+ * @returns className(用下划线替换点)
7
+ */
8
+ export declare function getComponentClassName(namespace: string): string;
9
+ /**
10
+ * 从场景中获取根组件的 className
11
+ * 获取场景中第一个组件的命名空间并转换为 className(仅用于根组件)
12
+ * @param scene 场景对象
13
+ * @param isRoot 是否为根组件
14
+ * @returns className 字符串,如果不是根组件或未找到则返回空字符串
15
+ */
16
+ export declare function getRootComponentClassName(scene: any, isRoot?: boolean): string;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 从组件的 namespace 转换为 className
3
+ * 例如:mybricks.taro.systemPage -> mybricks_taro_systemPage
4
+ * 例如:mybricks.taro.image -> mybricks_taro_image
5
+ * @param namespace 组件的 namespace
6
+ * @returns className(用下划线替换点)
7
+ */
8
+ export function getComponentClassName(namespace) {
9
+ if (!namespace) {
10
+ return '';
11
+ }
12
+ // 将点替换为下划线
13
+ return namespace.replace(/\./g, '_');
14
+ }
15
+
16
+ /**
17
+ * 从场景中获取根组件的 className
18
+ * 获取场景中第一个组件的命名空间并转换为 className(仅用于根组件)
19
+ * @param scene 场景对象
20
+ * @param isRoot 是否为根组件
21
+ * @returns className 字符串,如果不是根组件或未找到则返回空字符串
22
+ */
23
+ export function getRootComponentClassName(scene) {
24
+ var _firstCom$def;
25
+ var isRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
26
+ // 只在根组件时获取 className
27
+ if (!isRoot || !scene || !scene.coms) {
28
+ return '';
29
+ }
30
+
31
+ // 获取场景中第一个组件的 namespace
32
+ var firstCom = Object.values(scene.coms)[0];
33
+ if (firstCom !== null && firstCom !== void 0 && (_firstCom$def = firstCom.def) !== null && _firstCom$def !== void 0 && _firstCom$def.namespace) {
34
+ return getComponentClassName(firstCom.def.namespace);
35
+ }
36
+ return '';
37
+ }
@@ -0,0 +1,24 @@
1
+ import toCode from "@mybricks/to-code-react/dist/esm/toCode";
2
+ import { type ImageFileInfo } from "./pageConfig";
3
+ /**
4
+ * 处理页面配置的类
5
+ * 负责提取 systemPage 组件数据,生成页面配置和 TabBar 配置
6
+ */
7
+ export declare class HandlePageConfig {
8
+ private globalTabBarConfig;
9
+ private tabBarImageFiles;
10
+ /**
11
+ * 处理页面配置(提取 systemPage 组件数据)
12
+ * @param scene 场景数据
13
+ * @returns 页面配置内容
14
+ */
15
+ handle(scene: ReturnType<typeof toCode>["scenes"][0]["scene"]): string | undefined;
16
+ /**
17
+ * 获取全局 TabBar 配置
18
+ */
19
+ getTabBarConfig(): string | null;
20
+ /**
21
+ * 获取 TabBar 图片文件数组
22
+ */
23
+ getTabBarImageFiles(): ImageFileInfo[];
24
+ }
@@ -0,0 +1,68 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ import { generatePageConfigContent, generateTabBarConfigContent } from "./pageConfig";
5
+
6
+ /**
7
+ * 处理页面配置的类
8
+ * 负责提取 systemPage 组件数据,生成页面配置和 TabBar 配置
9
+ */
10
+ export var HandlePageConfig = /*#__PURE__*/function () {
11
+ function HandlePageConfig() {
12
+ _classCallCheck(this, HandlePageConfig);
13
+ _defineProperty(this, "globalTabBarConfig", null);
14
+ _defineProperty(this, "tabBarImageFiles", []);
15
+ }
16
+ _createClass(HandlePageConfig, [{
17
+ key: "handle",
18
+ value:
19
+ /**
20
+ * 处理页面配置(提取 systemPage 组件数据)
21
+ * @param scene 场景数据
22
+ * @returns 页面配置内容
23
+ */
24
+ function handle(scene) {
25
+ var _systemPageCom$model;
26
+ // 提取 systemPage 组件数据,生成 pageConfigContent
27
+ var pageConfigContent;
28
+ var systemPageCom = Object.values(scene.coms || {}).find(function (com) {
29
+ var _com$def;
30
+ return ((_com$def = com.def) === null || _com$def === void 0 ? void 0 : _com$def.namespace) === 'mybricks.taro.systemPage';
31
+ });
32
+ if (systemPageCom !== null && systemPageCom !== void 0 && (_systemPageCom$model = systemPageCom.model) !== null && _systemPageCom$model !== void 0 && _systemPageCom$model.data) {
33
+ var systemPageData = systemPageCom.model.data;
34
+ // 生成页面配置
35
+ pageConfigContent = generatePageConfigContent(systemPageData);
36
+
37
+ // 提取 TabBar 配置(只提取一次,从第一个找到的 systemPage 组件)
38
+ if (!this.globalTabBarConfig && systemPageData.tabBar && Array.isArray(systemPageData.tabBar)) {
39
+ // 使用 tabBar[x].scene.id 作为路径的 id
40
+ var pageIdToPath = function pageIdToPath(pageId) {
41
+ return "pages/".concat(pageId, "/index");
42
+ };
43
+ this.globalTabBarConfig = generateTabBarConfigContent(systemPageData.tabBar, pageIdToPath, this.tabBarImageFiles);
44
+ }
45
+ }
46
+ return pageConfigContent;
47
+ }
48
+
49
+ /**
50
+ * 获取全局 TabBar 配置
51
+ */
52
+ }, {
53
+ key: "getTabBarConfig",
54
+ value: function getTabBarConfig() {
55
+ return this.globalTabBarConfig;
56
+ }
57
+
58
+ /**
59
+ * 获取 TabBar 图片文件数组
60
+ */
61
+ }, {
62
+ key: "getTabBarImageFiles",
63
+ value: function getTabBarImageFiles() {
64
+ return this.tabBarImageFiles;
65
+ }
66
+ }]);
67
+ return HandlePageConfig;
68
+ }();
@@ -0,0 +1,9 @@
1
+ import { ImportManager } from "./index";
2
+ import type { BaseConfig } from "../toCodeTaro";
3
+ export interface HandleProcessConfig extends BaseConfig {
4
+ addParentDependencyImport: (typeof ImportManager)["prototype"]["addImport"];
5
+ getParams: () => Record<string, string>;
6
+ addConsumer: (provider: ReturnType<BaseConfig["getCurrentProvider"]>) => void;
7
+ target?: string;
8
+ }
9
+ export declare const handleProcess: (event: Exclude<ReturnType<BaseConfig["getEventByDiagramId"]>, undefined>, config: HandleProcessConfig) => string;