@mybricks/to-code-taro 1.0.2 → 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 (197) 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/processors/processComEvents.d.ts +9 -0
  23. package/dist/cjs/processors/processComEvents.js +122 -0
  24. package/dist/cjs/processors/processModule.d.ts +31 -0
  25. package/dist/cjs/processors/processModule.js +125 -0
  26. package/dist/cjs/processors/processScene.d.ts +32 -0
  27. package/dist/cjs/processors/processScene.js +124 -0
  28. package/dist/cjs/processors/processSceneLogic.d.ts +4 -0
  29. package/dist/cjs/processors/processSceneLogic.js +166 -0
  30. package/dist/cjs/taro-template.json +15 -7
  31. package/dist/cjs/toCodeTaro.d.ts +26 -5
  32. package/dist/cjs/toCodeTaro.js +59 -343
  33. package/dist/cjs/utils/builder/buildResult.d.ts +21 -0
  34. package/dist/cjs/utils/builder/buildResult.js +91 -0
  35. package/dist/cjs/utils/common/ImportManager.d.ts +19 -0
  36. package/dist/cjs/utils/common/ImportManager.js +105 -0
  37. package/dist/cjs/utils/common/helper.d.ts +2 -0
  38. package/dist/cjs/utils/common/helper.js +31 -0
  39. package/dist/cjs/utils/common/object.d.ts +5 -0
  40. package/dist/cjs/utils/common/object.js +58 -0
  41. package/dist/cjs/utils/common/string.d.ts +8 -0
  42. package/dist/cjs/utils/common/string.js +46 -0
  43. package/dist/cjs/utils/{pageConfig → config/content}/converter.js +1 -1
  44. package/dist/cjs/utils/{pageConfig → config/content}/index.js +9 -9
  45. package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.js +12 -22
  46. package/dist/{esm/utils/pageConfig → cjs/utils/config/content}/saveBase64Image.d.ts +1 -1
  47. package/dist/cjs/utils/{pageConfig → config/content}/saveBase64Image.js +8 -17
  48. package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.js +9 -32
  49. package/dist/cjs/utils/config/content/types.js +17 -0
  50. package/dist/cjs/utils/{pageConfig → config/content}/validator.js +1 -1
  51. package/dist/{esm/utils → cjs/utils/config}/handlePageConfig.d.ts +1 -1
  52. package/dist/cjs/utils/{handlePageConfig.js → config/handlePageConfig.js} +4 -4
  53. package/dist/cjs/utils/context/buildContext.d.ts +24 -0
  54. package/dist/cjs/utils/context/buildContext.js +65 -0
  55. package/dist/cjs/utils/context/buildFrameMap.d.ts +16 -0
  56. package/dist/cjs/utils/context/buildFrameMap.js +106 -0
  57. package/dist/cjs/utils/context/buildGlobalData.d.ts +13 -0
  58. package/dist/cjs/utils/context/buildGlobalData.js +58 -0
  59. package/dist/cjs/utils/context/collectJSModules.d.ts +37 -0
  60. package/dist/cjs/utils/context/collectJSModules.js +91 -0
  61. package/dist/cjs/utils/context/createEventQueries.d.ts +45 -0
  62. package/dist/cjs/utils/context/createEventQueries.js +99 -0
  63. package/dist/cjs/utils/context/createProvider.d.ts +21 -0
  64. package/dist/cjs/utils/context/createProvider.js +49 -0
  65. package/dist/cjs/utils/index.d.ts +10 -62
  66. package/dist/cjs/utils/index.js +21 -282
  67. package/dist/cjs/utils/{convertNamespace.js → logic/convertNamespace.js} +1 -1
  68. package/dist/cjs/utils/{genJSModules.js → logic/genJSModules.js} +1 -1
  69. package/dist/{esm/utils → cjs/utils/logic}/handleProcess.d.ts +2 -2
  70. package/dist/cjs/utils/{handleProcess.js → logic/handleProcess.js} +14 -11
  71. package/dist/cjs/utils/logic/processChildren.d.ts +12 -0
  72. package/dist/cjs/utils/logic/processChildren.js +82 -0
  73. package/dist/cjs/utils/style/color.d.ts +4 -0
  74. package/dist/cjs/utils/style/color.js +45 -0
  75. package/dist/cjs/utils/style/converter.d.ts +7 -0
  76. package/dist/cjs/utils/style/converter.js +181 -0
  77. package/dist/cjs/utils/{getComponentClassName.js → style/getComponentClassName.js} +1 -1
  78. package/dist/cjs/utils/{pxtransform.js → style/pxtransform.js} +1 -1
  79. package/dist/cjs/utils/style/types.d.ts +23 -0
  80. package/dist/cjs/utils/{pageConfig → style}/types.js +1 -1
  81. package/dist/cjs/utils/{code → templates}/component.js +1 -1
  82. package/dist/cjs/utils/{code → templates}/index.js +4 -4
  83. package/dist/cjs/utils/{code → templates}/renderManager.js +1 -1
  84. package/dist/cjs/utils/{code → templates}/scene.js +1 -1
  85. package/dist/esm/core/mybricks/index.js +1 -1
  86. package/dist/esm/core/utils/ComContext.js +1 -0
  87. package/dist/esm/core/utils/hooks.js +118 -0
  88. package/dist/esm/core/utils/index.js +6 -57
  89. package/dist/esm/core/utils/page.js +50 -0
  90. package/dist/esm/core/utils/useContext.js +2 -1
  91. package/dist/esm/generate/generateTaroProjectJson.d.ts +3 -14
  92. package/dist/esm/generate/generateTaroProjectJson.js +27 -23
  93. package/dist/esm/generate/utils/tabBarImages.d.ts +1 -1
  94. package/dist/esm/handleCom.d.ts +1 -1
  95. package/dist/esm/handleCom.js +159 -244
  96. package/dist/esm/handleDom.js +9 -48
  97. package/dist/esm/handleExtension.d.ts +2 -2
  98. package/dist/esm/handleExtension.js +5 -5
  99. package/dist/esm/handleGlobal.d.ts +2 -12
  100. package/dist/esm/handleGlobal.js +17 -3
  101. package/dist/esm/handleModule.js +3 -3
  102. package/dist/esm/handleSlot.d.ts +2 -9
  103. package/dist/esm/handleSlot.js +97 -174
  104. package/dist/esm/processors/processComEvents.d.ts +9 -0
  105. package/dist/esm/processors/processComEvents.js +110 -0
  106. package/dist/esm/processors/processModule.d.ts +31 -0
  107. package/dist/esm/processors/processModule.js +126 -0
  108. package/dist/esm/processors/processScene.d.ts +32 -0
  109. package/dist/esm/processors/processScene.js +126 -0
  110. package/dist/esm/processors/processSceneLogic.d.ts +4 -0
  111. package/dist/esm/processors/processSceneLogic.js +160 -0
  112. package/dist/esm/taro-template.json +15 -7
  113. package/dist/esm/toCodeTaro.d.ts +26 -5
  114. package/dist/esm/toCodeTaro.js +96 -396
  115. package/dist/esm/utils/builder/buildResult.d.ts +21 -0
  116. package/dist/esm/utils/builder/buildResult.js +61 -0
  117. package/dist/esm/utils/common/ImportManager.d.ts +19 -0
  118. package/dist/esm/utils/common/ImportManager.js +103 -0
  119. package/dist/esm/utils/common/helper.d.ts +2 -0
  120. package/dist/esm/utils/common/helper.js +4 -0
  121. package/dist/esm/utils/common/object.d.ts +5 -0
  122. package/dist/esm/utils/common/object.js +32 -0
  123. package/dist/esm/utils/common/string.d.ts +8 -0
  124. package/dist/esm/utils/common/string.js +21 -0
  125. package/dist/esm/utils/config/content/pageConfig.js +40 -0
  126. package/dist/{cjs/utils/pageConfig → esm/utils/config/content}/saveBase64Image.d.ts +1 -1
  127. package/dist/esm/utils/{pageConfig → config/content}/saveBase64Image.js +11 -30
  128. package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.js +12 -34
  129. package/dist/{cjs/utils → esm/utils/config}/handlePageConfig.d.ts +1 -1
  130. package/dist/esm/utils/{handlePageConfig.js → config/handlePageConfig.js} +1 -1
  131. package/dist/esm/utils/context/buildContext.d.ts +24 -0
  132. package/dist/esm/utils/context/buildContext.js +53 -0
  133. package/dist/esm/utils/context/buildFrameMap.d.ts +16 -0
  134. package/dist/esm/utils/context/buildFrameMap.js +131 -0
  135. package/dist/esm/utils/context/buildGlobalData.d.ts +13 -0
  136. package/dist/esm/utils/context/buildGlobalData.js +44 -0
  137. package/dist/esm/utils/context/collectJSModules.d.ts +37 -0
  138. package/dist/esm/utils/context/collectJSModules.js +87 -0
  139. package/dist/esm/utils/context/createEventQueries.d.ts +45 -0
  140. package/dist/esm/utils/context/createEventQueries.js +98 -0
  141. package/dist/esm/utils/context/createProvider.d.ts +21 -0
  142. package/dist/esm/utils/context/createProvider.js +33 -0
  143. package/dist/esm/utils/index.d.ts +10 -62
  144. package/dist/esm/utils/index.js +12 -345
  145. package/dist/{cjs/utils → esm/utils/logic}/handleProcess.d.ts +2 -2
  146. package/dist/esm/utils/{handleProcess.js → logic/handleProcess.js} +11 -5
  147. package/dist/esm/utils/logic/processChildren.d.ts +12 -0
  148. package/dist/esm/utils/logic/processChildren.js +48 -0
  149. package/dist/esm/utils/style/color.d.ts +4 -0
  150. package/dist/esm/utils/style/color.js +17 -0
  151. package/dist/esm/utils/style/converter.d.ts +7 -0
  152. package/dist/esm/utils/style/converter.js +176 -0
  153. package/dist/esm/utils/style/types.d.ts +23 -0
  154. package/dist/esm/utils/style/types.js +1 -0
  155. package/package.json +1 -1
  156. package/dist/esm/utils/pageConfig/pageConfig.js +0 -60
  157. /package/dist/cjs/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  158. /package/dist/cjs/utils/{pageConfig → config/content}/index.d.ts +0 -0
  159. /package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  160. /package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  161. /package/dist/cjs/utils/{pageConfig → config/content}/types.d.ts +0 -0
  162. /package/dist/cjs/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  163. /package/dist/cjs/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  164. /package/dist/cjs/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  165. /package/dist/cjs/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  166. /package/dist/cjs/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  167. /package/dist/cjs/utils/{code → templates}/component.d.ts +0 -0
  168. /package/dist/cjs/utils/{code → templates}/index.d.ts +0 -0
  169. /package/dist/cjs/utils/{code → templates}/renderManager.d.ts +0 -0
  170. /package/dist/cjs/utils/{code → templates}/scene.d.ts +0 -0
  171. /package/dist/esm/core/comlib/{Index.js → index.js} +0 -0
  172. /package/dist/esm/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  173. /package/dist/esm/utils/{pageConfig → config/content}/converter.js +0 -0
  174. /package/dist/esm/utils/{pageConfig → config/content}/index.d.ts +0 -0
  175. /package/dist/esm/utils/{pageConfig → config/content}/index.js +0 -0
  176. /package/dist/esm/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  177. /package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  178. /package/dist/esm/utils/{pageConfig → config/content}/types.d.ts +0 -0
  179. /package/dist/esm/utils/{pageConfig → config/content}/types.js +0 -0
  180. /package/dist/esm/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  181. /package/dist/esm/utils/{pageConfig → config/content}/validator.js +0 -0
  182. /package/dist/esm/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  183. /package/dist/esm/utils/{convertNamespace.js → logic/convertNamespace.js} +0 -0
  184. /package/dist/esm/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  185. /package/dist/esm/utils/{genJSModules.js → logic/genJSModules.js} +0 -0
  186. /package/dist/esm/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  187. /package/dist/esm/utils/{getComponentClassName.js → style/getComponentClassName.js} +0 -0
  188. /package/dist/esm/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  189. /package/dist/esm/utils/{pxtransform.js → style/pxtransform.js} +0 -0
  190. /package/dist/esm/utils/{code → templates}/component.d.ts +0 -0
  191. /package/dist/esm/utils/{code → templates}/component.js +0 -0
  192. /package/dist/esm/utils/{code → templates}/index.d.ts +0 -0
  193. /package/dist/esm/utils/{code → templates}/index.js +0 -0
  194. /package/dist/esm/utils/{code → templates}/renderManager.d.ts +0 -0
  195. /package/dist/esm/utils/{code → templates}/renderManager.js +0 -0
  196. /package/dist/esm/utils/{code → templates}/scene.d.ts +0 -0
  197. /package/dist/esm/utils/{code → templates}/scene.js +0 -0
@@ -0,0 +1,103 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
+ import { indentation } from "./helper";
6
+ /** 导入依赖收集、解析 */
7
+ export var ImportManager = /*#__PURE__*/function () {
8
+ function ImportManager(_config) {
9
+ _classCallCheck(this, ImportManager);
10
+ _defineProperty(this, "_imports", {});
11
+ this._config = _config;
12
+ }
13
+
14
+ /** 添加依赖 */
15
+ _createClass(ImportManager, [{
16
+ key: "addImport",
17
+ value: function addImport(_ref) {
18
+ var packageName = _ref.packageName,
19
+ dependencyNames = _ref.dependencyNames,
20
+ importType = _ref.importType;
21
+ if (!packageName) {
22
+ return;
23
+ }
24
+ var _imports = this._imports;
25
+ if (!_imports[packageName]) {
26
+ _imports[packageName] = {};
27
+ }
28
+
29
+ // 对于 module 类型且 dependencyNames 为空的情况,使用特殊标记
30
+ if (importType === "module" && dependencyNames.length === 0) {
31
+ _imports[packageName]["__module__"] = {
32
+ importType: "module"
33
+ };
34
+ } else {
35
+ dependencyNames.forEach(function (dependencyName) {
36
+ _imports[packageName][dependencyName] = {
37
+ importType: importType
38
+ };
39
+ });
40
+ }
41
+ }
42
+
43
+ /** 依赖解析为code */
44
+ }, {
45
+ key: "toCode",
46
+ value: function toCode() {
47
+ var indent = indentation(this._config.codeStyle.indent);
48
+ return Object.entries(this._imports).reduce(function (pre, _ref2) {
49
+ var _dependencies$__modul;
50
+ var _ref3 = _slicedToArray(_ref2, 2),
51
+ packageName = _ref3[0],
52
+ dependencies = _ref3[1];
53
+ var defaultDependency = "";
54
+ var namedDependencies = "";
55
+ var dependencyEntries = Object.entries(dependencies);
56
+
57
+ // 检查是否有 module 类型的导入(如 import './index.less')
58
+ var hasModuleType = ((_dependencies$__modul = dependencies["__module__"]) === null || _dependencies$__modul === void 0 ? void 0 : _dependencies$__modul.importType) === "module" || dependencyEntries.some(function (_ref4) {
59
+ var _ref5 = _slicedToArray(_ref4, 2),
60
+ importType = _ref5[1].importType;
61
+ return importType === "module";
62
+ });
63
+ if (hasModuleType) {
64
+ return pre + "import '".concat(packageName, "';\n");
65
+ }
66
+
67
+ /** 超过三项换行 */
68
+ var validEntries = dependencyEntries.filter(function (_ref6) {
69
+ var _ref7 = _slicedToArray(_ref6, 1),
70
+ key = _ref7[0];
71
+ return key !== "__module__";
72
+ });
73
+ var wrap = validEntries.length > 3;
74
+ validEntries.forEach(function (_ref8, index) {
75
+ var _ref9 = _slicedToArray(_ref8, 2),
76
+ dependencyName = _ref9[0],
77
+ importType = _ref9[1].importType;
78
+ if (importType === "default") {
79
+ defaultDependency = dependencyName;
80
+ } else if (importType === "named") {
81
+ if (wrap) {
82
+ namedDependencies += "".concat(indent).concat(dependencyName, ",\n");
83
+ } else {
84
+ namedDependencies += "".concat(index ? ", " : "").concat(dependencyName);
85
+ }
86
+ }
87
+ });
88
+ if (namedDependencies) {
89
+ if (wrap) {
90
+ namedDependencies = "{\n".concat(namedDependencies, "}");
91
+ } else {
92
+ namedDependencies = "{ ".concat(namedDependencies, " }");
93
+ }
94
+ if (defaultDependency) {
95
+ defaultDependency += ", ";
96
+ }
97
+ }
98
+ return pre + "import ".concat(defaultDependency).concat(namedDependencies, " from '").concat(packageName, "';\n");
99
+ }, "");
100
+ }
101
+ }]);
102
+ return ImportManager;
103
+ }();
@@ -0,0 +1,2 @@
1
+ /** 缩进 */
2
+ export declare const indentation: (level: number) => string;
@@ -0,0 +1,4 @@
1
+ /** 缩进 */
2
+ export var indentation = function indentation(level) {
3
+ return " ".repeat(level);
4
+ };
@@ -0,0 +1,5 @@
1
+ /** 生成对象代码 */
2
+ export declare const genObjectCode: (object: any, config: {
3
+ initialIndent: number;
4
+ indentSize: number;
5
+ }) => string;
@@ -0,0 +1,32 @@
1
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
+ import { indentation } from "./helper";
3
+
4
+ /** 生成对象代码 */
5
+ export var genObjectCode = function genObjectCode(object, config) {
6
+ var initialIndent = config.initialIndent,
7
+ indentSize = config.indentSize;
8
+ var keys = Object.keys(object);
9
+ if (keys.length === 0) return "{}";
10
+ var result = "{\n";
11
+ keys.forEach(function (key, idx) {
12
+ var value = object[key];
13
+ var formattedValue;
14
+ if (Array.isArray(value)) {
15
+ formattedValue = JSON.stringify(value);
16
+ } else if (value && _typeof(value) === "object") {
17
+ formattedValue = genObjectCode(value, {
18
+ initialIndent: initialIndent + indentSize,
19
+ indentSize: indentSize
20
+ });
21
+ } else if (typeof value === "string") {
22
+ formattedValue = JSON.stringify(value);
23
+ } else {
24
+ formattedValue = String(value);
25
+ }
26
+ result += indentation(initialIndent + indentSize) + "".concat(JSON.stringify(key), ": ").concat(formattedValue);
27
+ if (idx < keys.length - 1) result += ",";
28
+ result += "\n";
29
+ });
30
+ result += indentation(initialIndent) + "}";
31
+ return result;
32
+ };
@@ -0,0 +1,8 @@
1
+ /** 将第一个字符转大写 */
2
+ export declare const firstCharToUpperCase: (str: string) => string;
3
+ /** 将第一个字符转小写 */
4
+ export declare const firstCharToLowerCase: (str: string) => string;
5
+ /** 驼峰转中划线 */
6
+ export declare const camelToKebab: (str: string) => string;
7
+ /** 中划线转驼峰 */
8
+ export declare const kebabToCamel: (str: string) => string;
@@ -0,0 +1,21 @@
1
+ /** 将第一个字符转大写 */
2
+ export var firstCharToUpperCase = function firstCharToUpperCase(str) {
3
+ return str.charAt(0).toUpperCase() + str.slice(1);
4
+ };
5
+
6
+ /** 将第一个字符转小写 */
7
+ export var firstCharToLowerCase = function firstCharToLowerCase(str) {
8
+ return str.charAt(0).toLowerCase() + str.slice(1);
9
+ };
10
+
11
+ /** 驼峰转中划线 */
12
+ export var camelToKebab = function camelToKebab(str) {
13
+ return str.replace(/([A-Z])/g, "-$1").toLowerCase();
14
+ };
15
+
16
+ /** 中划线转驼峰 */
17
+ export var kebabToCamel = function kebabToCamel(str) {
18
+ return str.replace(/-([a-z])/g, function (_, char) {
19
+ return char.toUpperCase();
20
+ });
21
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 页面配置工具
3
+ * 负责从 systemPage 组件数据生成 definePageConfig 配置字符串
4
+ */
5
+
6
+ import { colorToHex } from "../../index";
7
+ var TARO_NAVIGATION_BAR_PROPERTIES = ['navigationBarBackgroundColor', 'navigationBarTextStyle', 'navigationBarTitleText', 'navigationStyle'];
8
+ var TARO_PAGE_CONFIG_TEMPLATE_PROPERTIES = ['navigationBarBackgroundColor', 'navigationBarTextStyle', 'navigationBarTitleText', 'navigationStyle', 'transparentTitle', 'backgroundColor', 'backgroundTextStyle', 'backgroundColorTop', 'backgroundColorBottom', 'enablePullDownRefresh', 'onReachBottomDistance', 'pageOrientation', 'disableScroll', 'disableSwipeBack', 'enableShareAppMessage', 'enableShareTimeline', 'usingComponents', 'renderer'];
9
+
10
+ /**
11
+ * 从 systemPage 组件数据生成 definePageConfig 配置字符串
12
+ * @param systemPageData systemPage 组件的 model.data
13
+ * @returns definePageConfig 配置字符串
14
+ */
15
+ export function generatePageConfigContent(systemPageData) {
16
+ var pageConfig = {};
17
+ if (systemPageData) {
18
+ // 1. 处理导航栏隐藏逻辑:如果是 none,强制设置 navigationStyle 为 custom 以隐藏默认导航栏
19
+ if (systemPageData.useNavigationStyle === "none") {
20
+ pageConfig.navigationStyle = "custom";
21
+ }
22
+ var propertiesToUse = systemPageData.useNavigationStyle === "default" ? TARO_NAVIGATION_BAR_PROPERTIES : TARO_PAGE_CONFIG_TEMPLATE_PROPERTIES;
23
+
24
+ // 2. 从 systemPageData 中提取配置属性
25
+ propertiesToUse.forEach(function (prop) {
26
+ var value = systemPageData[prop];
27
+ if (value !== undefined && value !== null) {
28
+ // 特殊处理:将 RGBA 颜色转换为 WeChat 要求的 Hex 格式
29
+ if (prop.includes("BackgroundColor") || prop === "backgroundColor" || prop === "backgroundColorTop" || prop === "backgroundColorBottom") {
30
+ value = colorToHex(value);
31
+ }
32
+ pageConfig[prop] = value;
33
+ }
34
+ });
35
+ }
36
+
37
+ // 生成配置字符串
38
+ var configContent = JSON.stringify(pageConfig, null, 2).replace(/^\{/, "").replace(/\}$/, "").trim();
39
+ return "export default definePageConfig({\n ".concat(configContent, "\n})");
40
+ }
@@ -11,4 +11,4 @@ import type { ImageFileInfo } from './types';
11
11
  * @param imageFiles 用于收集需要保存的图片文件的数组(可选)
12
12
  * @returns 处理后的图标路径(用于 app.config.ts),如果不是 base64 则返回原路径
13
13
  */
14
- export declare function processTabBarIcon(iconPath: string | undefined, tabBarIndex: number, type: 'normal' | 'selected', imageFiles?: ImageFileInfo[]): string | undefined;
14
+ export declare function processTabBarIcon(iconPath: string | undefined, tabBarIndex: number, type: "normal" | "selected", imageFiles?: ImageFileInfo[]): string | undefined;
@@ -25,13 +25,9 @@ var MIME_TO_EXT = {
25
25
  * @returns 解析结果或 null
26
26
  */
27
27
  function parseBase64Image(base64Str) {
28
- if (typeof base64Str !== 'string' || !base64Str.startsWith('data:image/')) {
29
- return null;
30
- }
28
+ if (typeof base64Str !== "string") return null;
31
29
  var match = base64Str.match(/^data:image\/([^;]+);base64,(.+)$/);
32
- if (!match) {
33
- return null;
34
- }
30
+ if (!match) return null;
35
31
  return {
36
32
  mimeType: match[1],
37
33
  base64Data: match[2]
@@ -43,9 +39,10 @@ function parseBase64Image(base64Str) {
43
39
  * @param mimeType MIME 类型
44
40
  * @returns 文件扩展名,默认为 'png'
45
41
  */
46
- function getFileExtension(mimeType) {
47
- return MIME_TO_EXT[mimeType.toLowerCase()] || 'png';
48
- }
42
+ var getFileExtension = function getFileExtension(mimeType) {
43
+ var _MIME_TO_EXT$mimeType;
44
+ return (_MIME_TO_EXT$mimeType = MIME_TO_EXT[mimeType.toLowerCase()]) !== null && _MIME_TO_EXT$mimeType !== void 0 ? _MIME_TO_EXT$mimeType : "png";
45
+ };
49
46
 
50
47
  /**
51
48
  * 生成唯一的文件名
@@ -54,9 +51,9 @@ function getFileExtension(mimeType) {
54
51
  * @param extension 文件扩展名
55
52
  * @returns 文件名
56
53
  */
57
- function generateFileName(index, type, extension) {
54
+ var generateFileName = function generateFileName(index, type, extension) {
58
55
  return "tabbar_".concat(index, "_").concat(type, ".").concat(extension);
59
- }
56
+ };
60
57
 
61
58
  /**
62
59
  * 处理 TabBar 图标,如果是 base64 则准备保存为文件
@@ -67,39 +64,23 @@ function generateFileName(index, type, extension) {
67
64
  * @returns 处理后的图标路径(用于 app.config.ts),如果不是 base64 则返回原路径
68
65
  */
69
66
  export function processTabBarIcon(iconPath, tabBarIndex, type, imageFiles) {
70
- if (!iconPath) {
71
- return undefined;
72
- }
73
-
74
- // 解析 base64 图片
67
+ if (!iconPath) return undefined;
75
68
  var parsed = parseBase64Image(iconPath);
76
- if (!parsed) {
77
- // 不是 base64 格式,直接返回原路径
78
- return iconPath;
79
- }
80
-
81
- // 生成文件名和路径
69
+ if (!parsed) return iconPath;
82
70
  var extension = getFileExtension(parsed.mimeType);
83
71
  var fileName = generateFileName(tabBarIndex, type, extension);
84
72
  var fileSystemPath = "src/assets/tabbar/".concat(fileName);
85
73
  var configPath = "assets/tabbar/".concat(fileName);
86
-
87
- // 如果需要收集图片文件
88
74
  if (imageFiles) {
89
75
  try {
90
- // 将 base64 数据转换为 Buffer
91
- var imageBuffer = Buffer.from(parsed.base64Data, 'base64');
92
76
  imageFiles.push({
93
77
  filePath: fileSystemPath,
94
- fileContent: imageBuffer
78
+ fileContent: Buffer.from(parsed.base64Data, "base64")
95
79
  });
96
80
  } catch (error) {
97
81
  console.error("\u5904\u7406 TabBar \u56FE\u6807\u5931\u8D25: ".concat(error));
98
- // 转换失败时返回原路径
99
82
  return iconPath;
100
83
  }
101
84
  }
102
-
103
- // 返回配置路径(用于 app.config.ts)
104
85
  return configPath;
105
86
  }
@@ -43,40 +43,18 @@ export function generateTabBarConfigContent(tabBar) {
43
43
  * @returns 配置字符串
44
44
  */
45
45
  function formatTabBarConfigForAppConfig(config) {
46
- var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
47
- var lines = [];
48
- lines.push("".concat(indent, "tabBar: {"));
46
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : " ";
47
+ // 使用 JSON.stringify 生成结构化的字符串,然后进行微调以符合 TypeScript 习惯(如去掉引号)
48
+ var tabBarJson = JSON.stringify(config, null, 2);
49
49
 
50
- // 添加颜色配置(如果存在)
51
- if (config.color) {
52
- lines.push("".concat(indent, " color: '").concat(config.color, "',"));
53
- }
54
- if (config.selectedColor) {
55
- lines.push("".concat(indent, " selectedColor: '").concat(config.selectedColor, "',"));
56
- }
57
- if (config.backgroundColor) {
58
- lines.push("".concat(indent, " backgroundColor: '").concat(config.backgroundColor, "',"));
59
- }
60
- if (config.borderStyle) {
61
- lines.push("".concat(indent, " borderStyle: '").concat(config.borderStyle, "',"));
62
- }
50
+ // 格式化:将双引号改为单引号,并将 key 的引号去掉(如果符合变量命名规范)
51
+ var formattedJson = tabBarJson.replace(/"([^"]+)":/g, "$1:") // 去掉 key 的引号
52
+ .replace(/"/g, "'"); // 将双引号改为单引号
63
53
 
64
- // 添加 list 配置
65
- lines.push("".concat(indent, " list: ["));
66
- config.list.forEach(function (item, index) {
67
- var isLast = index === config.list.length - 1;
68
- lines.push("".concat(indent, " {"));
69
- lines.push("".concat(indent, " pagePath: '").concat(item.pagePath, "',"));
70
- lines.push("".concat(indent, " text: '").concat(item.text, "',"));
71
- if (item.iconPath) {
72
- lines.push("".concat(indent, " iconPath: '").concat(item.iconPath, "',"));
73
- }
74
- if (item.selectedIconPath) {
75
- lines.push("".concat(indent, " selectedIconPath: '").concat(item.selectedIconPath, "',"));
76
- }
77
- lines.push("".concat(indent, " }").concat(isLast ? '' : ','));
78
- });
79
- lines.push("".concat(indent, " ]"));
80
- lines.push("".concat(indent, "}"));
81
- return lines.join('\n');
54
+ // 添加缩进,并前置 "tabBar: "
55
+ var lines = formattedJson.split("\n");
56
+ return lines.map(function (line, index) {
57
+ if (index === 0) return "".concat(indent, "tabBar: ").concat(line);
58
+ return "".concat(indent).concat(line);
59
+ }).join("\n");
82
60
  }
@@ -1,5 +1,5 @@
1
1
  import toCode from "@mybricks/to-code-react/dist/cjs/toCode";
2
- import { type ImageFileInfo } from "./pageConfig";
2
+ import { type ImageFileInfo } from "./content";
3
3
  /**
4
4
  * 处理页面配置的类
5
5
  * 负责提取 systemPage 组件数据,生成页面配置和 TabBar 配置
@@ -1,7 +1,7 @@
1
1
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
2
  import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
- import { generatePageConfigContent, generateTabBarConfigContent } from "./pageConfig";
4
+ import { generatePageConfigContent, generateTabBarConfigContent } from "./content";
5
5
 
6
6
  /**
7
7
  * 处理页面配置的类
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 构建上下文数据
3
+ * 包括 sceneMap, eventsMap 等查询映射
4
+ */
5
+ /**
6
+ * 构建场景映射表
7
+ */
8
+ export declare const buildSceneMap: (scenes: any[]) => any;
9
+ /**
10
+ * 构建扩展事件映射表
11
+ */
12
+ export declare const buildEventsMap: (frames: any[]) => any;
13
+ /**
14
+ * 创建场景查询函数
15
+ */
16
+ export declare const createGetSceneById: (sceneMap: Record<string, any>) => (id: string) => any;
17
+ /**
18
+ * 创建扩展事件查询函数
19
+ */
20
+ export declare const createGetExtensionEventById: (eventsMap: Record<string, any>) => (id: string) => any;
21
+ /**
22
+ * 创建 frame 查询函数
23
+ */
24
+ export declare const createGetFrameById: (frameMap: Record<string, any>) => (id: string) => any;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 构建上下文数据
3
+ * 包括 sceneMap, eventsMap 等查询映射
4
+ */
5
+
6
+ /**
7
+ * 构建场景映射表
8
+ */
9
+ export var buildSceneMap = function buildSceneMap(scenes) {
10
+ return scenes.reduce(function (pre, cur) {
11
+ pre[cur.id] = cur;
12
+ return pre;
13
+ }, {});
14
+ };
15
+
16
+ /**
17
+ * 构建扩展事件映射表
18
+ */
19
+ export var buildEventsMap = function buildEventsMap(frames) {
20
+ return frames.reduce(function (pre, cur) {
21
+ if (cur.type === "extension-event") {
22
+ pre[cur.id] = cur;
23
+ }
24
+ return pre;
25
+ }, {});
26
+ };
27
+
28
+ /**
29
+ * 创建场景查询函数
30
+ */
31
+ export var createGetSceneById = function createGetSceneById(sceneMap) {
32
+ return function (id) {
33
+ return sceneMap[id];
34
+ };
35
+ };
36
+
37
+ /**
38
+ * 创建扩展事件查询函数
39
+ */
40
+ export var createGetExtensionEventById = function createGetExtensionEventById(eventsMap) {
41
+ return function (id) {
42
+ return eventsMap[id];
43
+ };
44
+ };
45
+
46
+ /**
47
+ * 创建 frame 查询函数
48
+ */
49
+ export var createGetFrameById = function createGetFrameById(frameMap) {
50
+ return function (id) {
51
+ return frameMap[id];
52
+ };
53
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 构建 frames 映射表
3
+ * 参考鸿蒙实现 handleFrame.ts
4
+ * 用于快速查找 frame 和对应的组件信息
5
+ */
6
+ export interface FrameMapItem {
7
+ frame: any;
8
+ meta: any;
9
+ }
10
+ export type FrameMap = Record<string, FrameMapItem>;
11
+ /**
12
+ * 构建完整的 frameMap
13
+ * @param tojson - 完整的 tojson 数据
14
+ * @returns frameMap 对象
15
+ */
16
+ export declare const buildFrameMap: (tojson: any) => FrameMap;
@@ -0,0 +1,131 @@
1
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ /**
4
+ * 构建 frames 映射表
5
+ * 参考鸿蒙实现 handleFrame.ts
6
+ * 用于快速查找 frame 和对应的组件信息
7
+ */
8
+
9
+ /**
10
+ * 递归构建 frameMap
11
+ * @param frames - 要处理的 frames 数组
12
+ * @param frameMap - 目标 frameMap 对象
13
+ * @param tojson - 完整的 tojson 数据,用于查找组件信息
14
+ */
15
+ var buildFrameMapRecursive = function buildFrameMapRecursive(frames, frameMap, tojson, config) {
16
+ frames.forEach(function (frame) {
17
+ var _config$getComInfo;
18
+ frameMap[frame.id] = {
19
+ frame: frame,
20
+ meta: (config === null || config === void 0 || (_config$getComInfo = config.getComInfo) === null || _config$getComInfo === void 0 ? void 0 : _config$getComInfo.call(config, "")) || undefined
21
+ };
22
+
23
+ // 递归处理子 frames(frame.frames)
24
+ if (frame.frames && frame.frames.length > 0) {
25
+ buildFrameMapRecursive(frame.frames, frameMap, tojson, config);
26
+ }
27
+
28
+ // 递归处理组件内的 frames(frame.coms)
29
+ if (frame.coms) {
30
+ Object.entries(frame.coms).forEach(function (_ref) {
31
+ var _ref2 = _slicedToArray(_ref, 2),
32
+ comId = _ref2[0],
33
+ comFrame = _ref2[1];
34
+ if (comFrame.frames && comFrame.frames.length > 0) {
35
+ buildFrameMapRecursive(comFrame.frames, frameMap, tojson, {
36
+ getComInfo: function getComInfo(id) {
37
+ // 查找对应的组件信息
38
+ var _iterator = _createForOfIteratorHelper(tojson.scenes),
39
+ _step;
40
+ try {
41
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
42
+ var _scene$coms;
43
+ var scene = _step.value;
44
+ var comInfo = (_scene$coms = scene.coms) === null || _scene$coms === void 0 ? void 0 : _scene$coms[comId || id];
45
+ if (comInfo) {
46
+ return comInfo;
47
+ }
48
+ }
49
+ } catch (err) {
50
+ _iterator.e(err);
51
+ } finally {
52
+ _iterator.f();
53
+ }
54
+ return undefined;
55
+ }
56
+ });
57
+ }
58
+ });
59
+ }
60
+ });
61
+ };
62
+
63
+ /**
64
+ * 构建完整的 frameMap
65
+ * @param tojson - 完整的 tojson 数据
66
+ * @returns frameMap 对象
67
+ */
68
+ export var buildFrameMap = function buildFrameMap(tojson) {
69
+ var frameMap = {};
70
+
71
+ // 处理所有场景的 frames
72
+ tojson.frames.forEach(function (frame) {
73
+ // 处理场景级别的 frame
74
+ if (frame.id && !frameMap[frame.id]) {
75
+ frameMap[frame.id] = {
76
+ frame: frame,
77
+ meta: undefined
78
+ };
79
+ }
80
+
81
+ // 递归处理 frame 的子 frames
82
+ if (frame.frames && frame.frames.length > 0) {
83
+ buildFrameMapRecursive(frame.frames, frameMap, tojson);
84
+ }
85
+
86
+ // 递归处理 frame 内组件的 frames
87
+ if (frame.coms) {
88
+ Object.entries(frame.coms).forEach(function (_ref3) {
89
+ var _ref4 = _slicedToArray(_ref3, 2),
90
+ comId = _ref4[0],
91
+ comFrame = _ref4[1];
92
+ if (comFrame.frames && comFrame.frames.length > 0) {
93
+ buildFrameMapRecursive(comFrame.frames, frameMap, tojson, {
94
+ getComInfo: function getComInfo(id) {
95
+ var _iterator2 = _createForOfIteratorHelper(tojson.scenes),
96
+ _step2;
97
+ try {
98
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
99
+ var _scene$coms2;
100
+ var scene = _step2.value;
101
+ var comInfo = (_scene$coms2 = scene.coms) === null || _scene$coms2 === void 0 ? void 0 : _scene$coms2[comId || id];
102
+ if (comInfo) {
103
+ return comInfo;
104
+ }
105
+ }
106
+ } catch (err) {
107
+ _iterator2.e(err);
108
+ } finally {
109
+ _iterator2.f();
110
+ }
111
+ return undefined;
112
+ }
113
+ });
114
+ }
115
+ });
116
+ }
117
+ });
118
+
119
+ // 处理全局 FX frames
120
+ if (tojson.global.fxFrames && tojson.global.fxFrames.length > 0) {
121
+ tojson.global.fxFrames.forEach(function (fxFrame) {
122
+ if (!frameMap[fxFrame.id]) {
123
+ frameMap[fxFrame.id] = {
124
+ frame: fxFrame,
125
+ meta: undefined
126
+ };
127
+ }
128
+ });
129
+ }
130
+ return frameMap;
131
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 构建全局数据
3
+ * 包括全局变量类型定义、FX Map 等
4
+ */
5
+ import type { Provider } from "./createProvider";
6
+ /**
7
+ * 构建全局变量类型定义
8
+ */
9
+ export declare const buildGlobalVarTypeDef: (comsReg: Record<string, any>) => Record<string, any>;
10
+ /**
11
+ * 构建默认 FX Map
12
+ */
13
+ export declare const buildDefaultFxsMap: (fxFrames: any[]) => Record<string, Provider>;