@mybricks/plugin-ai 0.0.2 → 0.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 (249) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/dist/agents/app.js +335 -0
  4. package/dist/agents/app.js.map +1 -0
  5. package/dist/agents/common.js +483 -0
  6. package/dist/agents/common.js.map +1 -0
  7. package/dist/agents/custom.js +16 -0
  8. package/dist/agents/custom.js.map +1 -0
  9. package/dist/agents/index.js +38 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/knowledges/knowledge-base.js +579 -0
  12. package/dist/agents/knowledges/knowledge-base.js.map +1 -0
  13. package/dist/agents/knowledges/knowledge-node.js +228 -0
  14. package/dist/agents/knowledges/knowledge-node.js.map +1 -0
  15. package/dist/agents/knowledges/types.js +105 -0
  16. package/dist/agents/knowledges/types.js.map +1 -0
  17. package/dist/agents/utils/config.js +229 -0
  18. package/dist/agents/utils/config.js.map +1 -0
  19. package/dist/agents/workspace/coding-manager.js +20 -0
  20. package/dist/agents/workspace/coding-manager.js.map +1 -0
  21. package/dist/agents/workspace/components-manager.js +113 -0
  22. package/dist/agents/workspace/components-manager.js.map +1 -0
  23. package/dist/agents/workspace/outline-focus.js +167 -0
  24. package/dist/agents/workspace/outline-focus.js.map +1 -0
  25. package/dist/agents/workspace/outline-info.js +430 -0
  26. package/dist/agents/workspace/outline-info.js.map +1 -0
  27. package/dist/agents/workspace/page-tree-generator.js +70 -0
  28. package/dist/agents/workspace/page-tree-generator.js.map +1 -0
  29. package/dist/agents/workspace/workspace.js +251 -0
  30. package/dist/agents/workspace/workspace.js.map +1 -0
  31. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
  32. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
  33. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
  34. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
  35. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
  36. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
  37. package/dist/agents/workspace-by-knowledges/test.js +242 -0
  38. package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
  39. package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
  40. package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
  41. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
  42. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
  43. package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
  44. package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
  45. package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
  46. package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
  47. package/dist/api/cloud-components.js +85 -0
  48. package/dist/api/cloud-components.js.map +1 -0
  49. package/dist/api-record-replay/manager.js +168 -0
  50. package/dist/api-record-replay/manager.js.map +1 -0
  51. package/{src/api-record-replay/recorder.ts → dist/api-record-replay/recorder.js} +22 -32
  52. package/dist/api-record-replay/recorder.js.map +1 -0
  53. package/dist/api-record-replay/replayer.js +136 -0
  54. package/dist/api-record-replay/replayer.js.map +1 -0
  55. package/dist/components/attachments/index.js +124 -0
  56. package/dist/components/attachments/index.js.map +1 -0
  57. package/dist/components/attachments/index.less.js +8 -0
  58. package/dist/components/attachments/index.less.js.map +1 -0
  59. package/dist/components/icons/index.js +112 -0
  60. package/dist/components/icons/index.js.map +1 -0
  61. package/dist/components/icons/index.less.js +8 -0
  62. package/dist/components/icons/index.less.js.map +1 -0
  63. package/dist/components/mention/index.js +19 -0
  64. package/dist/components/mention/index.js.map +1 -0
  65. package/dist/components/mention/index.less.js +8 -0
  66. package/dist/components/mention/index.less.js.map +1 -0
  67. package/dist/components/messages/index.js +429 -0
  68. package/dist/components/messages/index.js.map +1 -0
  69. package/dist/components/messages/index.less.js +8 -0
  70. package/dist/components/messages/index.less.js.map +1 -0
  71. package/dist/components/sender/index.js +244 -0
  72. package/dist/components/sender/index.js.map +1 -0
  73. package/dist/components/sender/index.less.js +8 -0
  74. package/dist/components/sender/index.less.js.map +1 -0
  75. package/dist/context/RequestStatusTracker.js +44 -0
  76. package/dist/context/RequestStatusTracker.js.map +1 -0
  77. package/dist/context/index.js +45 -0
  78. package/dist/context/index.js.map +1 -0
  79. package/dist/data.js +4 -0
  80. package/dist/data.js.map +1 -0
  81. package/dist/index.js +306 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
  84. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  85. package/dist/plugin-ai/package.json.js +8 -0
  86. package/dist/plugin-ai/package.json.js.map +1 -0
  87. package/dist/plugin-ai/test/index.js +206 -0
  88. package/dist/plugin-ai/test/index.js.map +1 -0
  89. package/dist/preset/createTemplates.js +29 -0
  90. package/dist/preset/createTemplates.js.map +1 -0
  91. package/dist/preset/index.js +13 -0
  92. package/dist/preset/index.js.map +1 -0
  93. package/dist/preset/prompts.js +34 -0
  94. package/dist/preset/prompts.js.map +1 -0
  95. package/{src/preset/user.ts → dist/preset/user.js} +4 -3
  96. package/dist/preset/user.js.map +1 -0
  97. package/dist/requestAsStream.js +269 -0
  98. package/dist/requestAsStream.js.map +1 -0
  99. package/dist/rxai/node_modules/idb/build/index.js +277 -0
  100. package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
  101. package/dist/rxai/src/agent/base.js +16 -0
  102. package/dist/rxai/src/agent/base.js.map +1 -0
  103. package/dist/rxai/src/agent/planning.js +1076 -0
  104. package/dist/rxai/src/agent/planning.js.map +1 -0
  105. package/dist/rxai/src/agent/rxai.js +254 -0
  106. package/dist/rxai/src/agent/rxai.js.map +1 -0
  107. package/dist/rxai/src/error/base.js +39 -0
  108. package/dist/rxai/src/error/base.js.map +1 -0
  109. package/dist/rxai/src/prompt/base.js +11 -0
  110. package/dist/rxai/src/prompt/base.js.map +1 -0
  111. package/dist/rxai/src/prompt/planning.js +23 -0
  112. package/dist/rxai/src/prompt/planning.js.map +1 -0
  113. package/dist/rxai/src/prompt/tool.js +14 -0
  114. package/dist/rxai/src/prompt/tool.js.map +1 -0
  115. package/dist/rxai/src/request/request.js +123 -0
  116. package/dist/rxai/src/request/request.js.map +1 -0
  117. package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
  118. package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
  119. package/dist/rxai/src/tool/util.js +424 -0
  120. package/dist/rxai/src/tool/util.js.map +1 -0
  121. package/dist/rxai/src/utils/events.js +43 -0
  122. package/dist/rxai/src/utils/events.js.map +1 -0
  123. package/dist/rxai/src/utils/idb.js +240 -0
  124. package/dist/rxai/src/utils/idb.js.map +1 -0
  125. package/dist/rxai/src/utils/retry.js +32 -0
  126. package/dist/rxai/src/utils/retry.js.map +1 -0
  127. package/dist/rxai/src/utils/uuid.js +7 -0
  128. package/dist/rxai/src/utils/uuid.js.map +1 -0
  129. package/dist/startView/components/header/header.js +12 -0
  130. package/dist/startView/components/header/header.js.map +1 -0
  131. package/dist/startView/components/header/header.less.js +8 -0
  132. package/dist/startView/components/header/header.less.js.map +1 -0
  133. package/dist/startView/index.js +62 -0
  134. package/dist/startView/index.js.map +1 -0
  135. package/dist/startView/index.less.js +8 -0
  136. package/dist/startView/index.less.js.map +1 -0
  137. package/dist/tools/analyze-and-expand-prd.js +116 -0
  138. package/dist/tools/analyze-and-expand-prd.js.map +1 -0
  139. package/dist/tools/analyze-requirement-and-components.js +208 -0
  140. package/dist/tools/analyze-requirement-and-components.js.map +1 -0
  141. package/dist/tools/answer.js +33 -0
  142. package/dist/tools/answer.js.map +1 -0
  143. package/dist/tools/build-process.js +550 -0
  144. package/dist/tools/build-process.js.map +1 -0
  145. package/dist/tools/coding-subagent-as-tool.js +101 -0
  146. package/dist/tools/coding-subagent-as-tool.js.map +1 -0
  147. package/dist/tools/generate-ui-content.js +528 -0
  148. package/dist/tools/generate-ui-content.js.map +1 -0
  149. package/dist/tools/index.js +31 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/open-dsl.js +49 -0
  152. package/dist/tools/open-dsl.js.map +1 -0
  153. package/dist/tools/refactor-ui-content.js +292 -0
  154. package/dist/tools/refactor-ui-content.js.map +1 -0
  155. package/dist/tools/utils.js +832 -0
  156. package/dist/tools/utils.js.map +1 -0
  157. package/dist/types/index.js +8 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/view/components/header/header.js +59 -0
  160. package/dist/view/components/header/header.js.map +1 -0
  161. package/dist/view/components/header/header.less.js +8 -0
  162. package/dist/view/components/header/header.less.js.map +1 -0
  163. package/dist/view/index.js +184 -0
  164. package/dist/view/index.js.map +1 -0
  165. package/dist/view/index.less.js +8 -0
  166. package/dist/view/index.less.js.map +1 -0
  167. package/package.json +28 -6
  168. package/src/agents/app.ts +0 -301
  169. package/src/agents/common.ts +0 -471
  170. package/src/agents/custom.ts +0 -14
  171. package/src/agents/index.ts +0 -37
  172. package/src/agents/knowledges/README.md +0 -614
  173. package/src/agents/knowledges/SUMMARY.md +0 -527
  174. package/src/agents/knowledges/index.ts +0 -8
  175. package/src/agents/knowledges/knowledge-base.ts +0 -565
  176. package/src/agents/knowledges/knowledge-node.ts +0 -266
  177. package/src/agents/knowledges/types.ts +0 -208
  178. package/src/agents/utils/config.ts +0 -427
  179. package/src/agents/workspace/coding-manager.ts +0 -31
  180. package/src/agents/workspace/components-manager.ts +0 -124
  181. package/src/agents/workspace/outline-focus.ts +0 -188
  182. package/src/agents/workspace/outline-info.ts +0 -520
  183. package/src/agents/workspace/page-tree-generator.ts +0 -83
  184. package/src/agents/workspace/workspace.ts +0 -319
  185. package/src/agents/workspace-by-knowledges/MIGRATION.md +0 -568
  186. package/src/agents/workspace-by-knowledges/README.md +0 -521
  187. package/src/agents/workspace-by-knowledges/index.ts +0 -11
  188. package/src/agents/workspace-by-knowledges/providers/component-docs-provider.ts +0 -92
  189. package/src/agents/workspace-by-knowledges/providers/focus-info-provider.ts +0 -131
  190. package/src/agents/workspace-by-knowledges/providers/index.ts +0 -8
  191. package/src/agents/workspace-by-knowledges/providers/project-info-provider.ts +0 -151
  192. package/src/agents/workspace-by-knowledges/test.ts +0 -240
  193. package/src/agents/workspace-by-knowledges/types.ts +0 -56
  194. package/src/agents/workspace-by-knowledges/utils/components-manager.ts +0 -145
  195. package/src/agents/workspace-by-knowledges/utils/index.ts +0 -8
  196. package/src/agents/workspace-by-knowledges/utils/outline-focus.ts +0 -178
  197. package/src/agents/workspace-by-knowledges/utils/outline-info.ts +0 -521
  198. package/src/agents/workspace-by-knowledges/workspace.ts +0 -166
  199. package/src/api/cloud-components.ts +0 -129
  200. package/src/api-record-replay/README.md +0 -187
  201. package/src/api-record-replay/index.ts +0 -11
  202. package/src/api-record-replay/manager.ts +0 -168
  203. package/src/api-record-replay/replayer.ts +0 -148
  204. package/src/components/attachments/index.less +0 -117
  205. package/src/components/attachments/index.tsx +0 -136
  206. package/src/components/icons/index.less +0 -8
  207. package/src/components/icons/index.tsx +0 -44
  208. package/src/components/index.less +0 -34
  209. package/src/components/mention/index.less +0 -23
  210. package/src/components/mention/index.tsx +0 -19
  211. package/src/components/messages/index.less +0 -1013
  212. package/src/components/messages/index.tsx +0 -519
  213. package/src/components/sender/index.less +0 -203
  214. package/src/components/sender/index.tsx +0 -298
  215. package/src/components/types.ts +0 -31
  216. package/src/constants/index.ts +0 -8
  217. package/src/context/RequestStatusTracker.ts +0 -50
  218. package/src/context/index.ts +0 -83
  219. package/src/data.ts +0 -5
  220. package/src/global.d.ts +0 -100
  221. package/src/index.tsx +0 -264
  222. package/src/mock.ts +0 -1267
  223. package/src/preset/agents.ts +0 -380
  224. package/src/preset/createTemplates.ts +0 -25
  225. package/src/preset/index.ts +0 -12
  226. package/src/preset/prompts.ts +0 -235
  227. package/src/preset/requestAsStream.ts +0 -246
  228. package/src/startView/components/header/header.less +0 -17
  229. package/src/startView/components/header/header.tsx +0 -15
  230. package/src/startView/components/index.ts +0 -1
  231. package/src/startView/index.less +0 -34
  232. package/src/startView/index.tsx +0 -61
  233. package/src/tools/analyze-and-expand-prd.ts +0 -272
  234. package/src/tools/analyze-requirement-and-components.ts +0 -589
  235. package/src/tools/answer.ts +0 -59
  236. package/src/tools/build-process.ts +0 -1174
  237. package/src/tools/coding-subagent-as-tool.ts +0 -119
  238. package/src/tools/generate-ui-content.ts +0 -1083
  239. package/src/tools/index.ts +0 -28
  240. package/src/tools/open-dsl.ts +0 -69
  241. package/src/tools/refactor-ui-content.ts +0 -801
  242. package/src/tools/type.d.ts +0 -12
  243. package/src/tools/utils.ts +0 -914
  244. package/src/types/index.ts +0 -4
  245. package/src/view/components/header/header.less +0 -51
  246. package/src/view/components/header/header.tsx +0 -60
  247. package/src/view/components/index.ts +0 -1
  248. package/src/view/index.less +0 -5
  249. package/src/view/index.tsx +0 -168
@@ -0,0 +1,528 @@
1
+ import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
2
+ import '../rxai/node_modules/idb/build/index.js';
3
+ import 'node-forge';
4
+ import { fileFormat } from '../rxai/src/prompt/base.js';
5
+ import { createActionsParser, PromiseStack, getFiles, getComponentOperationSummary, uuid, stripFileBlocks, ComIdTransform, createVarActionsParser } from './utils.js';
6
+ import { context } from '../context/index.js';
7
+ import { ComponentsManager } from '../agents/workspace/components-manager.js';
8
+
9
+ var NAME = 'clear-and-generate-canvas';
10
+ generateUiContent.toolName = NAME;
11
+ class UITree {
12
+ constructor() {
13
+ _defineProperty(this, "nodeMap", new Map());
14
+ _defineProperty(this, "comIdToNamespace", new Map());
15
+ _defineProperty(this, "comIdTransform", new ComIdTransform([]));
16
+ _defineProperty(this, "varIdTransform", new ComIdTransform([]));
17
+ }
18
+ getComId(comId) {
19
+ return this.comIdTransform.getComId(comId);
20
+ }
21
+ addNode(node) {
22
+ var {
23
+ id,
24
+ parent
25
+ } = node;
26
+ var namespace = this.comIdToNamespace.get(parent.id);
27
+ var scope = false;
28
+ if (namespace) {
29
+ var _component$all;
30
+ var component = ComponentsManager.getAiComponent(namespace);
31
+ if ((component === null || component === void 0 || (_component$all = component.all) === null || _component$all === void 0 || (_component$all = _component$all.slots) === null || _component$all === void 0 || (_component$all = _component$all.find(slot => slot.id === parent.slotId)) === null || _component$all === void 0 ? void 0 : _component$all.type) === "scope") {
32
+ scope = true;
33
+ }
34
+ }
35
+ this.nodeMap.set(id, {
36
+ id,
37
+ parent: _objectSpread2(_objectSpread2({}, parent), {}, {
38
+ scope
39
+ })
40
+ });
41
+ }
42
+ getScope(nodeId) {
43
+ var node = this.nodeMap.get(nodeId);
44
+ while (node) {
45
+ if (node.parent.id === "_root_") {
46
+ return node.parent;
47
+ }
48
+ if (node.parent.scope) {
49
+ return node.parent;
50
+ }
51
+ node = this.nodeMap.get(node.parent.id);
52
+ }
53
+ }
54
+ setNamespace(comId, namespace) {
55
+ this.comIdToNamespace.set(comId, namespace);
56
+ }
57
+ }
58
+ function generateUiContent(config) {
59
+ var streamActionsParser = createActionsParser({
60
+ enabledActionTags: context.enabledActionTags
61
+ });
62
+ var excuteActionsParser = createActionsParser({
63
+ enabledActionTags: context.enabledActionTags
64
+ });
65
+ var streamVarActionsParser = createVarActionsParser();
66
+ var pageId = config === null || config === void 0 ? void 0 : config.getTargetId();
67
+ var rootId = config === null || config === void 0 ? void 0 : config.getRootIdByPageId(pageId);
68
+ var fileNameToContent = {};
69
+ var diagrams = {};
70
+ var promiseStack = new PromiseStack();
71
+ var uiTree = new UITree();
72
+ return {
73
+ name: NAME,
74
+ displayName: "生成搭建内容",
75
+ description: "\u6839\u636E\u9700\u6C42/\u9644\u4EF6\u56FE\u7247\uFF0C\u4E00\u6B21\u6027\u642D\u5EFA\u5E76\u751F\u6210\u7B26\u5408\u9700\u6C42\u7684 MyBricks UI\u5185\u5BB9\u3002\n\u53C2\u6570\uFF1A\u65E0\n\u5DE5\u5177\u5206\u7C7B\uFF1A\u64CD\u4F5C\u6267\u884C\u7C7B\uFF1B\n\u4F5C\u7528\uFF1A\u6E05\u7A7A\u4E4B\u524D\u7684\u753B\u5E03\u5185\u5BB9\uFF0C\u5728\u5F53\u524D\u753B\u5E03\u4E2D\u751F\u6210\u4E00\u4E2A\u5B8C\u6574\u7684UI\u5185\u5BB9\uFF1B\n\u8981\u6C42\uFF1A\u9700\u8981\u805A\u7126\u5230\u4E00\u4E2A\u5177\u4F53\u7684\u753B\u5E03\u4E0A\uFF1B\n\u524D\u7F6E\u4F9D\u8D56\uFF1A\u5FC5\u987B\u786E\u4FDD\u524D\u4E00\u4E2A\u5DE5\u5177\u6267\u884C\u8FC7\u300C\u9700\u6C42\u6574\u7406\u548C\u7EC4\u4EF6\u9009\u578B\u300D\uFF0C\u7528\u4E8E\u83B7\u53D6\u7EC4\u4EF6\u6587\u6863\uFF0C\u5426\u5219\u65E0\u6CD5\u751F\u6210\uFF1B\n",
76
+ aiRole: "expert",
77
+ getPrompts(params) {
78
+ return "<\u5DE5\u5177\u603B\u89C8>\n \u4F60\u662F\u4E00\u4E2A\u751F\u6210 MyBricks UI\u533A\u57DF\u7684\u5DE5\u5177\uFF0C\u4F60\u4F5C\u4E3AMyBricks\u7684\u8D44\u6DF1\u642D\u5EFA\u52A9\u624B\u53CA\u5BA2\u670D\u4E13\u5BB6\uFF0C\u7ECF\u9A8C\u4E30\u5BCC\u3001\u5B9E\u4E8B\u6C42\u662F\u3001\u903B\u8F91\u4E25\u8C28\u3002\n <\u4EFB\u52A1\u76EE\u6807>\n \u4F60\u7684\u4EFB\u52A1\u662F\u901A\u8FC7\u4E24\u6BB5 actions \u5E8F\u5217\u5B8C\u6210\u7528\u6237\u7684\u76EE\u6807\u3002\n 1. \u642D\u5EFAUI\u7684 actions \u5E8F\u5217\u3002\n 2. \u642D\u5EFA\u521D\u59CB\u5316\u6570\u636E\u7684 actions \u5E8F\u5217\u3002\n </\u4EFB\u52A1\u76EE\u6807>\n</\u5DE5\u5177\u603B\u89C8>\n\n<\u7279\u522B\u6CE8\u610F>\n - \u5982\u679C\u9644\u4EF6\u4E2D\u6709\u56FE\u7247\uFF0C\u9700\u8981\u5728\u642D\u5EFA\u8FC7\u7A0B\u4E2D\u4F5C\u4E3A\u91CD\u8981\u7684\u53C2\u8003\uFF0C\u8981\u6CE8\u610F\u5206\u8FA8\u8BBE\u8BA1\u7A3F\uFF08\u6216\u8005\u622A\u56FE\uFF09\u6216\u8005\u7528\u6237\u7ED8\u5236\u7684\u7EBF\u6846\u56FE\uFF0C\u5BF9\u4E8E\u524D\u8005\u3001\u8981\u6C42\u6700\u5927\u7A0B\u5EA6\u8FD8\u539F\u56FE\u7247\u4E2D\u7684\u5404\u9879\u529F\u80FD\u8981\u7D20\u4E0E\u89C6\u89C9\u8BBE\u8BA1\u8981\u7D20\uFF0C\u603B\u4F53\u8981\u6C42\u8003\u8651\u5230\u529F\u80FD\u4E00\u81F4\u5B8C\u6574\u4E0E\u5408\u7406\u6027\u3001\u6CE8\u610F\u5916\u89C2\u89C6\u89C9\u7F8E\u89C2\u5927\u65B9\u3001\u5BCC\u6709\u73B0\u4EE3\u611F.\n</\u7279\u522B\u6CE8\u610F>\n\n<\u5F53\u524D\u753B\u5E03\u6839\u7EC4\u4EF6\u4FE1\u606F>\n".concat(config.getRootComponentDoc(), "\n\nIMPORTANT: \u751F\u6210UI\u7684\u6839\u7EC4\u4EF6ID\u5FC5\u987B\u4F7F\u7528\u6B64\u6587\u6863\u4FE1\u606F\u3002\n</\u5F53\u524D\u753B\u5E03\u6839\u7EC4\u4EF6\u4FE1\u606F>\n\n<\u5982\u4F55\u642D\u5EFAUI\u4EE5\u53CA\u4FEE\u6539>\n \u901A\u8FC7\u4E00\u7CFB\u5217\u7684action\u6765\u5206\u6B65\u9AA4\u5B9E\u73B0\u7528\u6237\u9700\u6C42\u3002\n \n ").concat(fileFormat({
79
+ content: "[comId, target, type, params]",
80
+ fileName: '操作步骤.json'
81
+ }), "\n\n <\u5173\u4E8Eactions>\n actions.json\u6587\u4EF6\u7531\u591A\u4E2Aaction\u6784\u6210,\u6BCF\u4E2A action \u5728\u7ED3\u6784\u4E0A\u90FD\u4E25\u683C\u9075\u5FAA\u4EE5\u4E0B\u683C\u5F0F\uFF1A[comId, target, type, params];\n - comId \u4EE3\u8868\u8981\u64CD\u4F5C\u7684\u76EE\u6807\u7EC4\u4EF6\u7684id;\n - target \u6307\u7684\u662F\u7EC4\u4EF6\u7684\u6574\u4F53\u6216\u67D0\u4E2A\u90E8\u5206\uFF0C\u4EE5\u9009\u62E9\u5668\u7684\u5F62\u5F0F\u8868\u793A\uFF0C\u6CE8\u610F\u5F53type=addChild\u65F6\uFF0Ctarget\u4E3A\u63D2\u69FDid;\n - type action\u7684\u7C7B\u578B\uFF0C\u5305\u62EC\u4E86 setLayout\u3001doConfig\u3001addChild\u3001delete \u51E0\u7C7B\u52A8\u4F5C;\n - params \u4E3A\u4E0D\u540Ctype\u7C7B\u578B\u5BF9\u5E94\u7684\u53C2\u6570;\n \n \u7EFC\u5408\u800C\u8A00\uFF0C\u6BCF\u4E2Aaction\u7684\u8BED\u4E49\u662F\uFF1A\u5BF9\u67D0\u4E2A\u7EC4\u4EF6(comId)\u7684\u6574\u4F53\u6216\u67D0\u4E2A\u90E8\u5206(target)\uFF0C\u6267\u884C\u67D0\u4E2A\u52A8\u4F5C(type)\uFF0C\u5E76\u4F20\u5165\u53C2\u6570(params)\u3002\n \n \u6CE8\u610F\uFF1A\n - \u5728\u8FD4\u56DE\u591A\u4E2A\u6B65\u9AA4\u65F6\uFF0C\u52A1\u5FC5\u6CE8\u610F\u5176\u903B\u8F91\u987A\u5E8F\uFF0C\u4F8B\u5982\u6709\u4E9Baction\u9700\u8981\u5148\u5B8C\u6210\uFF0C\u540E\u7EED\u7684action\uFF08\u53EF\u80FD\u53D7\u63A7\u4E8EifVisible,\u53EA\u6709ifVislble\u8FD4\u56DEtrue\u624D\u80FD\u4F7F\u7528\uFF09\u624D\u80FD\u8FDB\u884C\uFF1B\n - \u6709\u4E9B\u4FEE\u6539\u9700\u8981\u5148\u5B8C\u6210\u6574\u4F53\u3001\u518D\u8FDB\u884C\u5C40\u90E8\u7684\u4FEE\u6539\uFF1B\n \n \u5404action\u8BE6\u7EC6\u8BF4\u660E\u5982\u4E0B\uFF1A\n \n <setLayout>\n - \u8BBE\u7F6E\u7EC4\u4EF6\u7684\u5E03\u5C40\u548C\u5C3A\u5BF8\u4FE1\u606F\uFF0Cparams\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n \n ```typescript\n /**\n * \u5BBD\u9AD8\u5C3A\u5BF8\n * number - \u5177\u4F53\u7684px\u503C\n * fit-content - \u9002\u5E94\u5185\u5BB9\n * 100% - \u586B\u5145\uFF0C\u4EC5\u5141\u8BB8100%\uFF0C\u4E0D\u5141\u8BB8\u5176\u4ED6\u767E\u5206\u6BD4\u5BBD\u5EA6\n * auto - \u81EA\u52A8\u586B\u5145\uFF0C\u7B49\u540C\u4E8Eflex=1\n * \u53EA\u80FD\u662F\u4E09\u8005\u5176\u4E00\uFF0C\u660E\u786E\u4E0D\u5141\u8BB8\u4F7F\u7528\u5176\u4ED6\u5C5E\u6027\uFF0C\u6BD4\u5982calc\u7B49\u65B9\u6CD5\n */\n type Size = number | \"fit-content\" | \"100%\" | \"auto\"\n \n /** flex\u4E2D\u5B50\u7EC4\u4EF6\u5B9A\u4F4D\uFF0C\u53EF\u914D\u7F6E\u5982\u4E0Blayout */\n type setLayout_flex_params = {\n width?: Size;\n height?: Size;\n /** \u4E0A\u5916\u8FB9\u8DDD */\n marginTop?: number;\n /** \u53F3\u5916\u8FB9\u8DDD */\n marginRight?: number;\n /** \u4E0B\u5916\u8FB9\u8DDD */\n marginBottom?: number;\n /** \u5DE6\u5916\u8FB9\u8DDD */\n marginLeft?: number;\n }\n ```\n \n \u6CE8\u610F\uFF1A\n - 1. \u53EA\u6709\u5728flex\u5E03\u5C40\u4E2D\u7684\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u5728layout\u4E2D\u4F7F\u7528margin\u76F8\u5173\u914D\u7F6E\uFF1B\n\n ```typescript\n /** \u5BF9\u4E8Eflex\u5E03\u5C40\u7684\u63D2\u69FD\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6DFB\u52A0absolute\u5B9A\u4F4D\u7684\u7EC4\u4EF6 */\n type setLayout_absolute_params = {\n position: 'absolute';\n width?: Size;\n height?: Size;\n /** \u8DDD\u79BB\u5DE6\u4FA7 */\n left?: number;\n /** \u8DDD\u79BB\u53F3\u4FA7 */\n right?: number;\n /** \u8DDD\u79BB\u4E0A\u65B9 */\n top?: number;\n /** \u8DDD\u79BB\u4E0B\u65B9 */\n bottom?: number;\n }\n ```\n \n ```typescript\n /** \u5982\u679C\u7EC4\u4EF6\u672C\u8EAB\u662Ffixed\u7C7B\u578B\u5B9A\u4F4D\uFF0C\u53EF\u914D\u7F6E\u5982\u4E0Blayout */\n type setLayout_fixed_params = {\n position: 'fixed';\n width?: Size;\n height?: Size;\n /** \u8DDD\u79BB\u5DE6\u4FA7 */\n left?: number;\n /** \u8DDD\u79BB\u53F3\u4FA7 */\n right?: number;\n /** \u8DDD\u79BB\u4E0A\u65B9 */\n top?: number;\n /** \u8DDD\u79BB\u4E0B\u65B9 */\n bottom?: number;\n }\n ```\n \n \u4F8B\u5982\uFF0C\u5F53\u7528\u6237\u8981\u6C42\u5C06\u5F53\u524D\u7EC4\u4EF6\u7684\u5BBD\u5EA6\u8BBE\u7F6E\u4E3A200px\uFF0C\u53EF\u4EE5\u8FD4\u56DE\u4EE5\u4E0B\u5185\u5BB9\uFF1A\n ").concat(fileFormat({
82
+ content: "[\"u_ou1rs\",\":root\",\"setLayout\",{\"width\":200}]",
83
+ fileName: '样式配置步骤.json'
84
+ }), "\n \n \u6CE8\u610F\uFF1A\u5F53\u9700\u8981\u4FEE\u6539\u5E03\u5C40\u548C\u5C3A\u5BF8\u4FE1\u606F\u65F6\uFF0C\u4EC5\u8FD4\u56DE\u7528\u6237\u8981\u6C42\u7684\u5185\u5BB9\u5373\u53EF\uFF0C\u65E0\u9700\u8FD4\u56DE\u6240\u6709\u7684\u5E03\u5C40\u548C\u5C3A\u5BF8\u4FE1\u606F\u5C5E\u6027\u3002\n </setLayout>\n \n <doConfig>\n - \u914D\u7F6E\u7EC4\u4EF6\uFF0C\u4F7F\u7528<\u7EC4\u4EF6\u53EF\u914D\u7F6E\u7684\u5185\u5BB9/>\u7684\u914D\u7F6E\u9879\uFF0C\u5BF9\u7EC4\u4EF6\u7684\u5C5E\u6027\u6216\u6837\u5F0F\u8FDB\u884C\u914D\u7F6E\uFF1B\n - \u5982\u679C\u914D\u7F6E\u9879\u7684type\u5728 <\u5E38\u89C1editType\u7684\u4F7F\u7528 /> \u4E2D\u6709\u8BF4\u660E\uFF0C\u52A1\u5FC5\u9075\u5B88\u5176\u4E2D\u7684\u8BF4\u660E\u53CA\u6CE8\u610F\u4E8B\u9879\uFF1B\n \n - params\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n \n ```typescript\n //\u914D\u7F6E\u6837\u5F0F\n type configStyle_params = {\n path:string,//\u5728<\u5F53\u524D\u7EC4\u4EF6\u53EF\u914D\u7F6E\u7684\u5185\u5BB9/>\u4E2D\u5BF9\u5E94\u7684\u914D\u7F6E\u9879path\n style: {\n [key: string]: propertyValue; //\u5143\u7D20\u7684\u5185\u8054\u6837\u5F0F\u5BF9\u8C61\uFF0C\u4EC5\u80FD\u914D\u7F6Estyle\u7F16\u8F91\u5668description\u4E2D\u58F0\u660E\u7684\u5C5E\u6027\uFF0C\u4E0D\u8981\u8D85\u51FA\u8303\u56F4\u3002\n }\n }\n \n //\u914D\u7F6E\u5C5E\u6027\n type configProperty_params = {\n path:string,//\u5728<\u5F53\u524D\u7EC4\u4EF6\u53EF\u914D\u7F6E\u7684\u5185\u5BB9/>\u4E2D\u5BF9\u5E94\u7684\u914D\u7F6E\u9879path\n value: any//\u9700\u8981\u914D\u7F6E\u7684value\n }\n ```\n \n \u4F8B\u5982\uFF1A\n - \u5C5E\u6027\u7684\u914D\u7F6E\uFF1A\n ").concat(fileFormat({
85
+ content: "[\"u_ou1rs\",\":root\",\"doConfig\",{\"path\":\"\u5E38\u89C4/\u6807\u9898\",\"value\":\"\u6807\u9898\u5185\u5BB9\"}]",
86
+ fileName: '样式配置步骤.json'
87
+ }), "\n \n - \u6837\u5F0F\u7684\u914D\u7F6E\uFF1A\n ").concat(fileFormat({
88
+ content: "[\"u_ou1rs\",\":root\",\"doConfig\",{\"path\":\"\u5E38\u89C4/banner\u6837\u5F0F\",\"style\":{\"backgroundColor\":\"red\"}}]",
89
+ fileName: '样式配置步骤.json'
90
+ }), "\n \n \u6CE8\u610F\uFF1A\n - \u5F53\u9700\u8981\u4FEE\u6539\u7EC4\u4EF6\u7684\u6837\u5F0F\u65F6\uFF0C\u53EA\u5141\u8BB8\u4FEE\u6539style\u7F16\u8F91\u5668description\u4E2D\u58F0\u660E\u7684\u5C5E\u6027\uFF1B\n - \u5F53\u9700\u8981\u4FEE\u6539\u7EC4\u4EF6\u7684\u6837\u5F0F\u65F6\uFF0C\u80CC\u666F\u7EDF\u4E00\u4F7F\u7528background,\u800C\u975EbackgroundColor\u7B49\u5C5E\u6027\uFF1B\n </doConfig>\n \n <addChild>\n - addChild\u4EE3\u8868\u5411\u76EE\u6807\u7EC4\u4EF6\u7684\u63D2\u69FD\u4E2D\u6DFB\u52A0UI\u7EC4\u4EF6\uFF0C\u9700\u8981\u6EE1\u8DB3\u4E24\u4E2A\u6761\u4EF6:\n 1. \u76EE\u6807\u7EC4\u4EF6\u4E2D\u76EE\u524D\u6709\u5B9A\u4E49\u63D2\u69FD\uFF0C\u4E14\u5DF2\u77E5\u63D2\u69FD\u7684id\u662F\u4EC0\u4E48\uFF1B\n 2. \u88AB\u6DFB\u52A0\u7684\u7EC4\u4EF6\u53EA\u80FD\u4F7F\u7528 <\u5141\u8BB8\u6DFB\u52A0\u7684\u7EC4\u4EF6/> \u4E2D\u58F0\u660E\u7684*UI\u7EC4\u4EF6*\uFF1B\n - params\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n \n ```typescript\n type add_params = {\n title:string //\u88AB\u6DFB\u52A0\u7EC4\u4EF6\u7684\u6807\u9898\n ns:string //\u5728 <\u5141\u8BB8\u6DFB\u52A0\u7684\u7EC4\u4EF6 /> \u4E2D\u58F0\u660E\u7684UI\u7EC4\u4EF6namespace\n comId:string // \u65B0\u6DFB\u52A0\u7684\u7EC4\u4EF65\u4F4Duuid\uFF0C\u7981\u6B62\u91CD\u590D\uFF0C\u5728\u6240\u6709UI\u7EC4\u4EF6\u4E2D\u552F\u4E00\n layout?: setLayout_flex_params \uFF5C setLayout_fixed_params \uFF5C setLayout_absolute_params //\u53EF\u9009\uFF0C\u6DFB\u52A0\u7EC4\u4EF6\u65F6\u53EF\u4EE5\u6307\u5B9A\u4F4D\u7F6E\u548C\u5C3A\u5BF8\u4FE1\u606F\n configs?: Array<configStyle_params | configProperty_params> // \u6DFB\u52A0\u7EC4\u4EF6\u53EF\u4EE5\u914D\u7F6E\u7684\u4FE1\u606F\n // \u6E32\u67D3\u4F18\u5316\n ignore?: boolean //\u53EF\u9009\uFF0C\u662F\u5426\u6DFB\u52A0ignore\u6807\u8BB0\n enhance?: boolean //\u53EF\u9009\uFF0C\u662F\u5426\u6DFB\u52A0enhance\u6807\u8BB0\n }\n ```\n \n \u4F8B\u5982\uFF1A\n ").concat(fileFormat({
91
+ content: "[\"u_ou1rs\",\"content\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u7684\u6587\u672C\u7EC4\u4EF6\",\"ns\":\"namespace\u5360\u4F4D\",\"comId\":\"u_iysd7\"}]",
92
+ fileName: '添加文本组件步骤.json'
93
+ }), "\n\n ").concat(fileFormat({
94
+ content: "[\"u_ou1rs\",\"content\",\"addChild\",{\"title\":\"\u80CC\u666F\u56FE\",\"ns\":\"namespace\u5360\u4F4D\",\"comId\":\"u_ko4sn\",\"layout\":{\"width\":\"100%\",\"height\":200,\"marginTop\":8,\"marginLeft\":12,\"marginRight\":12},\"configs\":[{\"path\":\"\u5E38\u89C4/\u56FE\u7247\u5730\u5740\",\"value\":\"https://ai.mybricks.world/image-search?term=\u98CE\u666F\"},{\"path\":\"\u6837\u5F0F/\u56FE\u7247\",\"style\":{\"borderRadius\":\"8px\"}}]}]",
95
+ fileName: '添加带配置属性的步骤.json'
96
+ }), "\n \n ").concat(fileFormat({
97
+ content: "[\"u_ou1rs\",\"content\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u7684\u5E03\u5C40\u7EC4\u4EF6\",\"ns\":\"namespace\u5360\u4F4D\",\"comId\":\"u_nb5yg\",\"ignore\": true}]",
98
+ fileName: '添加带ignore标记的步骤.json'
99
+ }), "\n \n \u6CE8\u610F:\n - \u65B0\u6DFB\u52A0\u7684\u7EC4\u4EF6ID\u5FC5\u987B\u4F7F\u75285\u4F4D\u552F\u4E00\u7684\u5B57\u6BCD\u6570\u5B57\u7EC4\u5408\uFF0C\u7981\u6B62\u91CD\u590D\uFF0C\u5728\u6240\u6709UI\u7EC4\u4EF6\u4E2D\u552F\u4E00\uFF1B\n </addChild>\n\n <delete>\n - \u5220\u9664\u7EC4\u4EF6\n\n \u4F8B\u5982\uFF0C\u5F53\u7528\u6237\u8981\u6C42\u5220\u9664\u7EC4\u4EF6u_o21rs\uFF0C\u53EF\u4EE5\u8FD4\u56DE\u4EE5\u4E0B\u5185\u5BB9\uFF1A\n ").concat(fileFormat({
100
+ content: "[\"u_o21rs\",\":root\",\"delete\"]",
101
+ fileName: '删除组件整体.json'
102
+ }), "\n \u6CE8\u610F\uFF1A\u5220\u9664\u65F6\uFF0C\u5FC5\u987B\u5220\u9664\u7EC4\u4EF6\u7684\u6574\u4F53\uFF0C\u4E0D\u80FD\u5220\u9664\u7EC4\u4EF6\u7684\u67D0\u4E2A\u90E8\u5206\uFF0C\u6240\u4EE5\u4F7F\u7528:root\u9009\u62E9\u5668\u3002\n </delete>\n \n \u6CE8\u610F\uFF1Aactions\u6587\u4EF6\u6BCF\u4E00\u884C\u9075\u5FAA JSON \u8BED\u6CD5\uFF0C\u7981\u6B62\u975E\u6CD5\u4EE3\u7801\uFF0C\u7981\u6B62\u51FA\u73B0\u5185\u5BB9\u7701\u7565\u63D0\u793A\u3001\u5355\u884C\u6CE8\u91CA\u3001\u7701\u7565\u5B57\u7B26\u3002\n - actions\u8FD4\u56DE\u7684\u5185\u5BB9\u683C\u5F0F\u9700\u8981\u4E00\u884C\u4E00\u4E2Aaction\uFF0C\u6BCF\u4E00\u4E2Aaction\u9700\u8981\u538B\u7F29\uFF0C\u4E0D\u8981\u5305\u542B\u7F29\u8FDB\u7B49\u591A\u4F59\u7684\u7A7A\u767D\u5B57\u7B26\uFF1B\n - \u7981\u6B62\u5305\u542B\u4EFB\u4F55\u6CE8\u91CA\uFF08\u5305\u62EC\u5355\u884C//\u548C\u591A\u884C/* */\uFF09\n - \u7981\u6B62\u51FA\u73B0\u7701\u7565\u53F7(...)\u6216\u4EFB\u4F55\u5360\u4F4D\u7B26\n - \u786E\u4FDD\u6240\u6709\u4EE3\u7801\u90FD\u662F\u5B8C\u6574\u53EF\u6267\u884C\u7684\uFF0C\u4E0D\u5305\u542B\u793A\u4F8B\u7247\u6BB5\n - \u7981\u6B62\u4F7F\u7528{}\u3001{{}}\u8FD9\u7C7B\u53D8\u91CF\u7ED1\u5B9A\u8BED\u6CD5\uFF0C\u5E76\u4E0D\u652F\u6301\u6B64\u8BED\u6CD5\n - \u7981\u6B62\u4F7F\u7528\u975E\u6CD5\u5B57\u7B26\u6216\u7279\u6B8A\u7B26\u53F7\n - \u6240\u6709\u5185\u5BB9\u5747\u4E3A\u9759\u6001\u6570\u636E\uFF0C\u7981\u6B62\u89E3\u6784\uFF0C\u7981\u6B62\u4F7F\u7528\u53D8\u91CF\n \n \u6CE8\u610F\uFF1A\n - \u8FD4\u56DEactions\u6587\u4EF6\u5185\u5BB9\u65F6\uFF0C\u52A1\u5FC5\u6CE8\u610F\u64CD\u4F5C\u6B65\u9AA4\u7684\u5148\u540E\u987A\u5E8F\uFF1B\n - \u6709\u4E9B\u64CD\u4F5C\u9700\u8981\u5728\u524D\u9762\u64CD\u4F5C\u5B8C\u6210\u540E\u624D\u80FD\u8FDB\u884C\uFF1B\n - \u6709\u4E9B\u64CD\u4F5C\u9700\u8981\u5728\u5176\u4ED6\u64CD\u4F5C\u5F00\u542F\uFF08\u5E03\u5C14\u7C7B\u578B\u7684\u914D\u7F6E\u9879\uFF09\u540E\u624D\u80FD\u8FDB\u884C\uFF1B\n - \u7981\u6B62\u91CD\u590D\u4F7F\u7528\u76F8\u540C\u7684action\uFF1B\n </\u5173\u4E8Eactions>\n\n <UI\u642D\u5EFA\u539F\u5219>\n \u754C\u9762\u53EA\u6709\u4E24\u7C7B\u57FA\u672C\u8981\u7D20:\u7EC4\u4EF6\u3001\u4EE5\u53CA\u7EC4\u4EF6\u7684\u63D2\u69FD\uFF0C\u7EC4\u4EF6\u7684\u63D2\u69FD\u53EF\u4EE5\u5D4C\u5957\u5176\u4ED6\u7EC4\u4EF6\u3002\n\n \u642D\u5EFA\u53EA\u80FD\u4F7F\u7528\u300CUI\u7EC4\u4EF6\u300D\uFF0C\u4E0D\u53EF\u4F7F\u7528\u300C\u903B\u8F91\u8BA1\u7B97\u7EC4\u4EF6\u300D\u3002\n \n <\u7EC4\u4EF6\u7684\u5B9A\u4F4D\u539F\u5219>\n \u7EC4\u4EF6\u7684\u5B9A\u4F4D\u6709\u4E09\u79CD\u65B9\u5F0F\uFF1Aflex\u5B9A\u4F4D\u3001fixed\u3001absolute\u5B9A\u4F4D\u3002\n\n **flex\u5B9A\u4F4D**\n - \u7EC4\u4EF6\u4F1A\u76F8\u5BF9\u4E8E\u6240\u5728\u7684\u63D2\u69FD\u8FDB\u884C\u5B9A\u4F4D\uFF1B\n - \u901A\u8FC7\u5C3A\u5BF8\uFF08width\u3001height\uFF09 + \u5916\u95F4\u8DDD\uFF08margin\uFF09\u6765\u8FDB\u884C\u5B9A\u4F4D\uFF1B\n - flex\u5E03\u5C40\u4E0B\u7684\u7EC4\u4EF6\u4E0D\u5141\u8BB8\u4F7F\u7528left\u3001top\u3001right\u3001bottom\u7B49\u5B9A\u4F4D\u5C5E\u6027\uFF1B\n \n **fixed\u5B9A\u4F4D**\n - \u7EC4\u4EF6\u4F1A\u76F8\u5BF9\u4E8E\u5F53\u524D\u7EC4\u4EF6\u7684\u63D2\u69FD\u8FDB\u884C\u5B9A\u4F4D\uFF0C\u4E14\u8131\u79BB\u6587\u6863\u6D41\uFF1B\n - \u901A\u8FC7\u5C3A\u5BF8\uFF08width\u3001height\uFF09 + \u4F4D\u7F6E\uFF08left\u3001top\u3001right\u3001bottom\uFF09\u6765\u8FDB\u884C\u5B9A\u4F4D\uFF1B\n - fixed\u5B9A\u4F4D\u7684\u7EC4\u4EF6\u4E0D\u5141\u8BB8\u4F7F\u7528margin\uFF1B\n \n \u4F7F\u7528fixed\u5B9A\u4F4D\u7684\u4F8B\u5B50:\n ").concat(fileFormat({
103
+ content: "[\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u56FA\u5B9A\u5B9A\u4F4D\u7EC4\u4EF6\",\"comId\":\"u_fu3nr\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"position\":\"fixed\",\"width\":\"100%\",\"height\":84,\"bottom\":0,\"left\":0},\"configs\":[]}]",
104
+ fileName: '添加一个fixed定位组件.json'
105
+ }), "\n\n \u5728\u63D2\u69FD\u7684\u4E0D\u540C\u5E03\u5C40\u4E0B\uFF0C\u7EC4\u4EF6\u7684\u5B9A\u4F4D\u7531\u6240\u5728\u63D2\u69FD\u7684\u5E03\u5C40\u65B9\u5F0F\u51B3\u5B9A\uFF1A\n - \u5728\u5F53\u524D\u7EC4\u4EF6\u7684\u63D2\u69FD\u4E2D\uFF0C\u53EF\u4EE5\u6DFB\u52A0fixed\u5B9A\u4F4D\u7684\u7EC4\u4EF6\uFF0C\u7981\u6B62\u5728\u5176\u4ED6\u63D2\u69FD\u4E2D\u6DFB\u52A0fixed\u5B9A\u4F4D\u7684\u7EC4\u4EF6\uFF1B\n - \u5982\u679C\u63D2\u69FD\u662Fflex\u5E03\u5C40\uFF0C\u5219\u5B50\u7EC4\u4EF6\u4E3B\u8981\u4F7F\u7528flex\u5B9A\u4F4D\uFF0C\u7279\u6B8A\u60C5\u51B5\u4E0B\u4F7F\u7528absolute\u5B9A\u4F4D\uFF1B\n </\u7EC4\u4EF6\u7684\u5B9A\u4F4D\u539F\u5219>\n \n <\u5E03\u5C40\u539F\u5219>\n \u63D2\u69FD\u7684\u5E03\u5C40(display=flex)\u6307\u7684\u662F\u5BF9\u4E8E\u5185\u90E8\u7EC4\u4EF6\uFF08\u4EC5\u5BF9\u5176\u76F4\u63A5\u5B50\u7EC4\u4EF6\uFF0C\u5BF9\u4E8E\u5B50\u7EC4\u4EF6\u63D2\u69FD\u4E2D\u7684\u5B50\u7EC4\u4EF6\u65E0\u5F71\u54CD)\u7684\u5E03\u5C40\u7EA6\u675F:\n \n **flex\u5E03\u5C40**\n \uFF08\u57FA\u672C\u7B49\u540C\u4E8ECSS3\u89C4\u8303\u4E2D\u7684flex\u5E03\u5C40\uFF09\u63D2\u69FD\u4E2D\u7684\u6240\u6709\u5B50\u7EC4\u4EF6\u901A\u8FC7\u5BBD\u9AD8\u548Cmargin\u8FDB\u884C\u5E03\u5C40\u3002\n\n <\u8F85\u52A9\u6807\u8BB0\u8BF4\u660E>\n \u5728 addChild \u64CD\u4F5C\u4E2D\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5BF9\u5E03\u5C40\u7C7B\u7EC4\u4EF6\u6DFB\u52A0\u8F85\u52A9\u6807\u8BB0\u6765\u6307\u5BFC\u6700\u7EC8\u7684\u6E32\u67D3\u548C\u5E03\u5C40\u884C\u4E3A\u3002\u8FD9\u4E9B\u6807\u8BB0\u662F\u53EF\u9009\u7684\uFF0C\u4F46\u5408\u7406\u4F7F\u7528\u53EF\u4EE5\u6781\u5927\u63D0\u5347UI\u7684\u6027\u80FD\u548C\u7F8E\u89C2\u5EA6\u3002\u76EE\u524D\u652F\u6301\u4EE5\u4E0B\u6807\u8BB0\uFF1A\n 1. ignore\uFF08\u7ED3\u6784\u4F18\u5316\u6807\u8BB0\uFF09\n \u4F5C\u7528\uFF1A\u5F53\u4E00\u4E2A\u5BB9\u5668\uFF08\u901A\u5E38\u662F\u5E03\u5C40\u7EC4\u4EF6\uFF09\u53EA\u7528\u4E8E\u6392\u5217\u5176\u5185\u90E8\u5143\u7D20\uFF08\u5982\u5206\u680F\u3001\u5BF9\u9F50\uFF09\uFF0C\u800C\u672C\u8EAB\u4E0D\u9700\u8981\u4EFB\u4F55\u53EF\u89C1\u6837\u5F0F\uFF08\u65E0\u80CC\u666F\u3001\u65E0\u8FB9\u6846\u3001\u65E0\u5706\u89D2\uFF09\u4E14\u4E0D\u54CD\u5E94\u4EA4\u4E92\uFF08\u5982\u70B9\u51FB\uFF09\u65F6\uFF0C\u53EF\u4EE5\u6DFB\u52A0 ignore=true \u6807\u8BB0\u3002\u7CFB\u7EDF\u5728\u6700\u7EC8\u6E32\u67D3\u65F6\uFF0C\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u5E03\u5C40\u5BB9\u5668\u4F18\u5316\u6389\uFF0C\u51CF\u5C11\u4E0D\u5FC5\u8981\u7684\u5D4C\u5957\u5C42\u7EA7\u3002\n \u51B3\u7B56\u6D41\u7A0B\uFF1A\uFF08\u4ECE\u4E0A\u5F80\u4E0B\u6267\u884C\uFF09\n - \u68C0\u67E5\u7236\u7EA7\uFF1A\u7236\u7EC4\u4EF6\u662F\u6839\u7EC4\u4EF6 _root_ \u5417\uFF1F\u662F\uFF0C\u5219 ignore=false\uFF1B\n - \u68C0\u67E5\u7236\u7EA7\uFF1A\u7236\u7EA7\u662F\u5426\u4E3A\u5E03\u5C40\u5BB9\u5668\uFF1F\u4E0D\u662F\uFF0C\u5219 ignore=false\uFF1B\n - \u68C0\u67E5\u5F53\u524D\u7EC4\u4EF6\u5C5E\u6027\uFF1A\u7EC4\u4EF6\u672C\u8EAB\u662F\u5426\u914D\u7F6E\u4E86\u6837\u5F0F\uFF08\u80CC\u666F\u8272\u3001\u8FB9\u6846\u3001\u5706\u89D2\u3001\u5185\u95F4\u8DDD\u7B49\uFF09\uFF1F\u662F\uFF0C\u5219 ignore=false\uFF1B\n - \u731C\u6D4B\u5F53\u524D\u7EC4\u4EF6\u610F\u56FE\uFF1A\u7EC4\u4EF6\u662F\u5426\u53EF\u80FD\u4F5C\u4E3A\u6574\u4F53\u88AB\u70B9\u51FB\uFF08\u5982\u4E00\u4E2A\u5361\u7247\uFF09\uFF1F\u662F\uFF0C\u5219 ignore=false\uFF1B\n - \u68C0\u67E5\u5F53\u524D\u7EC4\u4EF6\u63D2\u69FD\uFF1A\u7EC4\u4EF6\u662F\u5426\u5B58\u5728\u975Eflex\u5E03\u5C40\u7684\u63D2\u69FD\uFF1F\u662F\uFF0C\u5219 ignore=false\uFF1B\n - \u5426\u5219\uFF08\u5373\uFF1A\u5B83\u53EA\u662F\u4E00\u4E2A\u7EAF\u7CB9\u7684\u900F\u660E\u5BB9\u5668\uFF0C\u4EC5\u7528\u4E8E flex \u5E03\u5C40\uFF0C\u4E14\u7236\u7EA7\u4E5F\u662F\u5E03\u5C40\u5BB9\u5668\uFF09\uFF0Cignore=true\u3002\n\n 2. enhance\uFF08\u5E03\u5C40\u4F18\u5316\u6807\u8BB0\uFF09\n \u4F5C\u7528\uFF1A\u5F53\u4E00\u4E2Aflex\u5BB9\u5668\uFF08\u901A\u5E38\u662F\u5E03\u5C40\u7EC4\u4EF6\uFF09\u9700\u8981\u8FDB\u884C\u5E03\u5C40\u4F18\u5316\u65F6\uFF0C\u5373\u4ECEflex\u5E03\u5C40\u4F18\u5316\u6210\u81EA\u7531\u5E03\u5C40\uFF0C\u53EF\u4EE5\u6DFB\u52A0 enhance=true \u6807\u8BB0\u3002\n \u51B3\u7B56\u6D41\u7A0B\uFF1A\uFF08\u4ECE\u4E0A\u5F80\u4E0B\u6267\u884C\uFF09\n - \u68C0\u67E5\u5F53\u524D\u7EC4\u4EF6\u5C5E\u6027\uFF1A\u7EC4\u4EF6\u662F\u5426\u914D\u7F6E\u4E86 ignore=true\uFF1F\u662F\uFF0C\u5219 enhance=false\uFF1B\n - \u68C0\u67E5\u5F53\u524D\u7EC4\u4EF6\u63D2\u69FD\uFF1A\u7EC4\u4EF6\u662F\u5426\u4E0D\u5B58\u5728flex\u5E03\u5C40\u7684\u63D2\u69FD\uFF1F\u662F\uFF0C\u5219 enhance=false\uFF1B\n - \u6700\u540E\u68C0\u67E5\u662F\u5426\u5C5E\u4E8E\u56FE\u6587\u4FE1\u606F\u6392\u5217\u5C55\u793A\u5BB9\u5668\uFF0C\u4E14\u914D\u7F6E\u4E86flex\u5E03\u5C40\uFF1F\u662F\uFF0C\u5219 enhance=true\u3002\n\n \u4F8B\u5B50\uFF1A\u7B2C\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\u4EC5\u627F\u62C5\u5E03\u5C40\u529F\u80FD\uFF0C\u53EF\u4EE5\u6DFB\u52A0ignore\u6807\u8BB0\uFF1B\u7B2C\u4E8C\u4E2A\u5E03\u5C40\u7EC4\u4EF6\u627F\u62C5\u6837\u5F0F\u529F\u80FD\uFF0C\u4E0D\u80FD\u6DFB\u52A0ignore\u6807\u8BB0\uFF0C\u7B2C\u4E8C\u4E2A\u7EC4\u4EF6\u91CC\u6DFB\u52A0\u4E86\u4E00\u4E2A\u5C45\u4E2D\u7684\u6587\u672C\uFF0C\u5224\u65AD\u4E3A\u4FE1\u606F\u5361\u7247\uFF0C\u6DFB\u52A0enhance\u6807\u8BB0\u3002\n ").concat(fileFormat({
106
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u7B2C\u4E00\u4E2A\u5E03\u5C40\",\"comId\":\"u_dk98v\",\"ignore\":true,\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":120},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}}]}]\n [\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u7B2C\u4E8C\u4E2A\u5E03\u5C40\",\"comId\":\"u_sdj3k\",\"enhance\":true,\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":120},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}},{\"path\":\"\u6837\u5F0F/\u6837\u5F0F\",\"style\":{\"background\":\"#FFFFFF\"}}]}]\n [\"u_sdj3k\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6587\u672C\",\"comId\":\"u_tn5ix\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"fit-content\",\"height\":\"fit-content\"},\"configs\":[{\"path\":\"\u5E38\u89C4/\u6587\u672C\u5185\u5BB9\",\"value\":\"\u5C45\u4E2D\u6587\u672C\"}]}]\n ",
107
+ fileName: '标记使用.json'
108
+ }), "\n </\u8F85\u52A9\u6807\u8BB0\u8BF4\u660E>\n \n <\u5E03\u5C40\u4F7F\u7528\u793A\u4F8B>\n **flex\u5E03\u5C40**\n \u5B50\u7EC4\u4EF6\u901A\u8FC7\u5D4C\u5957\u6765\u642D\u5EFA\uFF0C\u65E0\u9700\u8003\u8651\u5B50\u7EC4\u4EF6\u7684\u5BBD\u5EA6\u548C\u9AD8\u5EA6\u3002\n\n \u4E0B\u9762\u7684\u4F8B\u5B50\u4F7F\u7528flex\u5B9E\u73B0\u5DE6\u4FA7\u56FA\u5B9A\u5BBD\u5EA6\uFF0C\u53F3\u4FA7\u81EA\u9002\u5E94\u5BBD\u5EA6\u5E03\u5C40\uFF0C\u53F3\u4FA7\u5BBD\u5EA6\u914D\u7F6Ewidth=auto:\n ").concat(fileFormat({
109
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex0\",\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":60},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}}]}]\n [\"u_flex0\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u5DE6\u4FA7\u56FA\u5B9A\u5BBD\u5EA6\u7EC4\u4EF6\",\"comId\":\"u_lf4x1\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":60,\"height\":40,\"marginRight\":8},\"configs\":[]}]\n [\"u_flex0\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u53F3\u4FA7\u81EA\u9002\u5E94\u7EC4\u4EF6\",\"comId\":\"u_rfo1x\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"auto\",\"height\":40},\"configs\":[]}]\n ",
110
+ fileName: '左侧固定宽度+右侧自适应宽度.json'
111
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u4E5F\u5FC5\u987B\u58F0\u660E\uFF0C\u5173\u6CE8justifyContent\u6548\u679C\uFF0C\u9ED8\u8BA4\u4E3Aflex-start\uFF1B\n - \u5DE6\u4FA7\u7EC4\u4EF6\u4F7F\u7528\u56FA\u5B9A\u5BBD\u5EA6\uFF0C\u53F3\u4FA7\u7EC4\u4EF6\u4F7F\u7528width=auto(\u6548\u679C\u7B49\u540C\u4E8Eflex=1)\u5B9E\u73B0\u81EA\u9002\u5E94\u5BBD\u5EA6\uFF1B\n - \u901A\u8FC7marginRight\u914D\u7F6E\u5DE6\u4FA7\u7EC4\u4EF6\u4E0E\u53F3\u4FA7\u7EC4\u4EF6\u7684\u95F4\u8DDD\uFF1B\n \n \n \u4E0B\u9762\u7684\u4F8B\u5B50\u4F7F\u7528flex\u8FDB\u884C\u5D4C\u5957\uFF0C\u6765\u5B9E\u73B0\u5DE6\u4FA7\u56FE\u6807+\u6587\u672C\uFF0C\u53F3\u4FA7\u7BAD\u5934\u7684\u5E03\u5C40:\n ").concat(fileFormat({
112
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex1\",\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":60},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\"}}]}]\n [\"u_flex1\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u5DE6\u4FA7\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_pl92s\",\"ignore\": true,\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"fit-content\",\"height\":\"fit-content\"},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\", \"justifyContent\": \"flex-start\"}}]}]\n [\"u_pl92s\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u56FE\u6807\u7EC4\u4EF6\",\"comId\":\"u_i98js\",\"ns\":\"\u56FE\u6807\u7EC4\u4EF6\",\"layout\":{\"width\":24,\"height\":24,\"marginRight\":8},\"configs\":[]}]\n [\"u_pl92s\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6587\u672C\u7EC4\u4EF6\",\"comId\":\"u_tsdo2\",\"ns\":\"\u6587\u672C\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":\"fit-content\"},\"configs\":[]}]\n [\"u_flex1\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u7BAD\u5934\u56FE\u6807\u7EC4\u4EF6\",\"comId\":\"u_ar762\",\"ns\":\"\u56FE\u6807\u7EC4\u4EF6\",\"layout\":{\"width\":24,\"height\":24},\"configs\":[]}]\n ",
113
+ fileName: 'flex嵌套实现左右布局.json'
114
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u4E5F\u5FC5\u987B\u58F0\u660E\uFF1B\n - \u4F7F\u7528\u5D4C\u5957\u5E03\u5C40\u6765\u5B8C\u6210\u5DE6\u4FA7\u591A\u5143\u7D20 + \u53F3\u4FA7\u5355\u5143\u7D20\u7684\u5E03\u5C40\uFF0C\u9ED8\u8BA4justifyContent=flex-start\uFF0C\u6240\u4EE5\u5DE6\u4FA7\u5E03\u5C40\u65E0\u9700\u8BBE\u7F6E\uFF1B\n - \u5DE6\u4FA7\u7684\u56FE\u6807+\u6587\u672C\u4F7F\u7528\u5D4C\u5957\u5E03\u5C40\u5B9E\u73B0\uFF0C\u4E14\u6DFB\u52A0ignore\u6807\u8BB0\uFF0C\u8868\u793A\u4EC5\u627F\u62C5\u5E03\u5C40\u529F\u80FD\uFF1B\n\n \u4E0B\u9762\u7684\u4F8B\u5B50\u4F7F\u7528flex\u5B9E\u73B0\u5782\u76F4\u5C45\u4E2D\u5E03\u5C40:\n ").concat(fileFormat({
115
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex2\",\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":120},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\"}}]}]\n [\"u_flex2\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u5B50\u7EC4\u4EF6\",\"comId\":\"u_child\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":80,\"height\":80},\"configs\":[]}]\n ",
116
+ fileName: '垂直居中布局.json'
117
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u58F0\u660E\u6210column\uFF1B\n - \u901A\u8FC7alignItems\u6765\u5B9E\u73B0\u5B50\u7EC4\u4EF6\u7684\u5782\u76F4\u5C45\u4E2D\uFF1B \n \n \u4E0B\u9762\u7684\u4F8B\u5B50\u4F7F\u7528flex\u8FDB\u884C\u6A2A\u5411\u5DE6\u53F3\u5747\u5206\u5E03\u5C40\uFF0C\u5B9E\u73B0\u5404\u5360\u4E00\u534A\u7684\u6548\u679C:\n ").concat(fileFormat({
118
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex3\",\"ignore\": true,\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":120},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\"}}]}]\n [\"u_flex3\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"A\u7EC4\u4EF6\",\"comId\":\"u_a321s\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"auto\",\"height\":40,\"marginRight\":8},\"configs\":[]}]\n [\"u_flex3\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"B\u7EC4\u4EF6\",\"comId\":\"u_b321s\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"auto\",\"height\":40},\"configs\":[]}]\n ",
119
+ fileName: '左右各占一半布局.json'
120
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u4E3A\u4E86\u5B9E\u73B0\u5404\u5360\u4E00\u534A\uFF0C\u914D\u7F6EA\u7EC4\u4EF6\u548CB\u7EC4\u4EF6\u7684\u5BBD\u5EA6\u90FD\u4E3A\u81EA\u9002\u5E94auto\uFF08\u6548\u679C\u7B49\u540C\u4E8Eflex=1\uFF09\uFF0C\u5B9E\u73B0\u5404\u5360\u4E00\u534A\u7684\u6548\u679C\uFF1B\n - \u6CE8\u610F\uFF1A\u4E0D\u5141\u8BB8\u914D\u7F6E\u767E\u5206\u6BD4\u5BBD\u5EA6\uFF1B\n - \u5224\u65AD\u4EC5\u5E03\u5C40\uFF0C\u6DFB\u52A0ignore\u6807\u8BB0\uFF0C\u4F18\u5316\u642D\u5EFA\u5185\u5BB9\u3002\n - \u901A\u8FC7marginRight\u914D\u7F6E\u5DE6\u4FA7\u7EC4\u4EF6\u4E0E\u53F3\u4FA7\u7EC4\u4EF6\u7684\u95F4\u8DDD\uFF1B\n\n \u4E0B\u9762\u7684\u4F8B\u5B50\u4F7F\u7528flex\u8FDB\u884C\u6A2A\u5411\u5747\u5206\u6216\u7B49\u5206\u5E03\u5C40\uFF0C\u5B9E\u73B0\u4E00\u884CN\u5217\u7684\u6548\u679C:\n ").concat(fileFormat({
121
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex4\",\"ignore\": true,\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":120},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\"}}]}]\n [\"u_flex4\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"A\u7EC4\u4EF6\",\"comId\":\"u_aksi\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":40,\"height\":40},\"configs\":[]}]\n [\"u_flex4\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"B\u7EC4\u4EF6\",\"comId\":\"u_b293e\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":40,\"height\":40},\"configs\":[]}]\n [\"u_flex4\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"C\u7EC4\u4EF6\",\"comId\":\"u_csim2\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":40,\"height\":40},\"configs\":[]}]\n ",
122
+ fileName: '一行N列布局.json'
123
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u4E5F\u5FC5\u987B\u58F0\u660E\uFF1B\n - \u9488\u5BF9\u5185\u5BB9\u5143\u7D20\u7684\u5C3A\u5BF8\uFF0C\u914D\u7F6E\u5408\u7406\u7684\u9AD8\u5EA6\uFF0C\u9632\u6B62\u5185\u5BB9\u6EA2\u51FA\uFF1B\n - \u4E3A\u4E86\u5B9E\u73B0\u5747\u5206\uFF0C\u4FDD\u8BC1\u5361\u7247\u4E4B\u95F4\u5B58\u5728\u95F4\u8DDD\uFF0C\u914D\u7F6E\u5361\u7247\u5BBD\u5EA6\u548C\u9AD8\u5EA6\u90FD\u4E3A\u56FA\u5B9A\u503C\n - \u6CE8\u610F\uFF1A\u4E0D\u5141\u8BB8\u914D\u7F6E\u767E\u5206\u6BD4\u5BBD\u5EA6\uFF1B\n - \u5224\u65AD\u4EC5\u5E03\u5C40\uFF0C\u6DFB\u52A0ignore\u6807\u8BB0\uFF0C\u4F18\u5316\u642D\u5EFA\u5185\u5BB9\u3002\n \n \u4E0B\u9762\u7684\u4F8B\u5B50\u5C55\u793Aflex\u5E03\u5C40\u4E2D\u8D1Fmargin\u7684\u5999\u7528\uFF0C\u901A\u8FC7\u8D1Fmargin\u5B9E\u73B0\u80CC\u666F\u5C42+\u5185\u5BB9\u5C42\u91CD\u53E0\u7684\u6548\u679C\uFF1A\n ").concat(fileFormat({
124
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex6\",\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":\"fit-content\"},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\"}}]}]\n [\"u_flex6\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u80CC\u666F\u5C42\",\"comId\":\"u_asds6\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":60},\"configs\":[]}]\n [\"u_flex6\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u5185\u5BB9\u5C42\",\"comId\":\"u_csdt6\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":100, \"marginTop\": -30},\"configs\":[]}]\n ",
125
+ fileName: '负margin实现背景层+内容层重叠.json'
126
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u4E5F\u5FC5\u987B\u58F0\u660E\uFF1B\n - \u901A\u8FC7\u8D1Fmargin\u5B9E\u73B0\u80CC\u666F\u5C42+\u5185\u5BB9\u5C42\u91CD\u53E0\u7684\u6548\u679C\uFF1B\n\n \u7279\u6B8A\u5730\uFF0C\u5728flex\u5E03\u5C40\u4E2D\u7684\u5143\u7D20\u8FD8\u53EF\u4EE5\u914D\u7F6Eposition=absolute\uFF0C\u7528\u4E8E\u5B9E\u73B0\u7EDD\u5BF9\u5B9A\u4F4D\u6548\u679C:\n ").concat(fileFormat({
127
+ content: "[\"\u76EE\u6807\u7EC4\u4EF6id\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u6DFB\u52A0\u4E00\u4E2A\u5E03\u5C40\u7EC4\u4EF6\",\"comId\":\"u_flex5\",\"ns\":\"\u5E03\u5C40\u7EC4\u4EF6\",\"layout\":{\"width\":\"100%\",\"height\":200},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}}]}]\n [\"u_flex5\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u7EDD\u5BF9\u5B9A\u4F4D\u7EC4\u4EF6\",\"comId\":\"u_abs12\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"position\":\"absolute\",\"width\":100,\"height\":40,\"top\":20,\"left\":20},\"configs\":[]}]\n [\"u_flex5\",\"\u63D2\u69FDid\u5360\u4F4D\",\"addChild\",{\"title\":\"\u666E\u901A\u7EC4\u4EF6\",\"comId\":\"u_nor12\",\"ns\":\"\u7EC4\u4EF6\",\"layout\":{\"width\":80,\"height\":80},\"configs\":[]}]\n ",
128
+ fileName: '绝对定位效果.json'
129
+ }), "\n \u5728\u4E0A\u4F8B\u4E2D:\n - \u58F0\u660E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u6CE8\u610F\u5E03\u5C40\u7F16\u8F91\u5668\u5FC5\u987B\u58F0\u660E\uFF0C\u5176\u4E2DflexDirection\u4E5F\u5FC5\u987B\u58F0\u660E\uFF1B\n - \u901A\u8FC7layout\u4E2D\u7684\u5C5E\u6027\uFF0C\u8BBE\u7F6E\u6210\u7EDD\u5BF9\u5B9A\u4F4D\u6548\u679C\uFF0C\u5728\u4E00\u4E9B\u7279\u6B8A\u7684\u89D2\u6807\u7B49\u573A\u666F\u4E0B\u5F88\u6709\u6548\u679C\uFF1B\n \n </\u5E03\u5C40\u4F7F\u7528\u793A\u4F8B>\n\n <\u5E03\u5C40\u6CE8\u610F\u4E8B\u9879>\n - \u5E03\u5C40\u76F8\u5173\u7EC4\u4EF6\u5728\u6DFB\u52A0\u65F6\u5FC5\u987B\u914D\u7F6E\u5E03\u5C40\u7F16\u8F91\u5668\u7684\u503C\uFF0C\u5C24\u5176\u9700\u8981\u914D\u7F6EflexDirection\u548CjustifyContent\uFF1B\n - \u5BF9\u4E8EflexDirection\uFF0C\u5FC5\u987B\u914D\u7F6E\uFF0C\u4EC5\u5141\u8BB8\u914D\u7F6Erow\u6216column\uFF1B\n - \u4F18\u5148\u8003\u8651fit-content\uFF0C\u5982\u679C\u8981\u4F7F\u7528\u56FA\u5B9A\u5BBD\u9AD8\uFF0C\u5FC5\u987B\u8003\u8651\u5230\u56FA\u5B9A\u5BBD\u9AD8\u4F1A\u4E0D\u4F1A\u6EA2\u51FA\u5BFC\u51FA\u5E03\u5C40\u9519\u4E71\u7684\u95EE\u9898\uFF1B\n <\u5E03\u5C40\u6CE8\u610F\u4E8B\u9879>\n \n </\u5E03\u5C40\u539F\u5219>\n \n <\u6700\u4F73\u5B9E\u8DF5>\n 1.\u6C38\u8FDC\u4FDD\u8BC1UI\u7684\u7F8E\u89C2\u4EE5\u53CA\u548C\u8C10\u7EDF\u4E00\uFF0C\u5728\u57FA\u7840\u7EC4\u4EF6\u7684\u4F7F\u7528\u4E0A\u9075\u5FAA\u7F8E\u89C2\u7EDF\u4E00\u539F\u5219\uFF1B\n 2.\u5728\u642D\u5EFA\u5F00\u59CB\u524D\uFF0C\u6211\u4EEC\u5EFA\u8BAE\u5BF9\u6BCF\u4E2A\u7EC4\u4EF6\u8FDB\u884C\u5168\u9762\u8BC4\u4F30\uFF0C\u7279\u522B\u662F\u601D\u8003\u662F\u5426\u9700\u8981 <\u8F85\u52A9\u6807\u8BB0 />\uFF0C\u8FD9\u80FD\u6781\u5927\u63D0\u5347\u540E\u7EED\u7EF4\u62A4\u6027\uFF1B\n\n <\u5173\u4E8E\u7F8E\u89C2>\n \u7EC4\u4EF6\u4F7F\u7528\uFF1A\n - \u5BF9\u4E8E\u6587\u672C\uFF1A\u6CE8\u610F\u4FDD\u6301\u89C6\u89C9\u7684\u7EDF\u4E00\u6027\uFF0C\u9009\u7528\u5408\u9002\u7684\u6587\u672C\u5927\u5C0F\u7C97\u7EC6\uFF0C\u540C\u65F6\u5C3D\u91CF\u914D\u7F6E\u6587\u672C\u7701\u7565\uFF0C\u9632\u6B62\u6587\u672C\u6362\u884C\u5BFC\u81F4\u6548\u679C\u4E0D\u4F73\u3002\n - \u5BF9\u4E8E\u56FE\u6807\uFF1A\u4E3A\u4E86\u4FDD\u8BC1\u89C6\u89C9\u7684\u7EDF\u4E00\u4E0E\u4E13\u4E1A\u6027\uFF0C\u6211\u4EEC\u7684\u5171\u8BC6\u662F\u7EDF\u4E00\u4F7F\u7528\u56FE\u6807\u7EC4\u4EF6\u3002\u8BF7\u907F\u514D\u4F7F\u7528 Emoji \u6216\u7279\u6B8A\u5B57\u7B26\uFF0C\u5B83\u4EEC\u53EF\u80FD\u5BFC\u81F4\u5728\u4E0D\u540C\u8BBE\u5907\u4E0A\u7684\u663E\u793A\u5DEE\u5F02\u3002\n - \u5BF9\u4E8E\u56FE\u7247\uFF1A\u56FE\u7247\u662F\u4F20\u9012\u4FE1\u606F\u4E0E\u6C1B\u56F4\u7684\u5173\u952E\u3002\u6211\u4EEC\u5EFA\u8BAE\u6839\u636E\u5176\u7528\u9014\u9009\u62E9\u5408\u9002\u7684\u6765\u6E90\uFF1A\n - https://placehold.co/600x400/orange/ffffff?text=hello\uFF0C\u53EF\u4EE5\u914D\u7F6E\u4E00\u4E2A\u6A59\u8272\u80CC\u666F\u5E26\u767D\u8272hello\u6587\u5B57\u7684\u8272\u5757\u5360\u4F4D\u56FE\u7247\uFF1B\n - https://ai.mybricks.world/image-search?term=\u641C\u7D22\u8BCD&w=\u5BBD&h=\u9AD8\uFF0C\u53EF\u4EE5\u914D\u7F6E\u4E00\u4E2A\u9AD8\u8D28\u91CF\u7684\u6444\u5F71\u56FE\u7247\uFF1B\n \u5BF9\u4E8E\u6D77\u62A5/\u5199\u5B9E\u56FE\u7247\uFF1A\u6211\u4EEC\u5EFA\u8BAE\u4F7F\u7528\u9AD8\u8D28\u91CF\u7684\u6444\u5F71\u56FE\u7247\uFF1B\n \u5BF9\u4E8E\u54C1\u724C/Logo\uFF1A\u6211\u4EEC\u5EFA\u8BAE\u4F7F\u7528\u8272\u5757\u5360\u4F4D\u56FE\u7247\uFF1B\n \u5BF9\u4E8E\u63D2\u753B/\u88C5\u9970\u6027\u56FE\u5F62\uFF1A\u6211\u4EEC\u4F18\u5148\u63A8\u8350\u4F7F\u7528\u56FE\u6807\u6765\u70B9\u7F00\uFF1B\u5982\u679C\u786E\u5B9E\u9700\u8981\u56FE\u7247\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u8272\u5757\u5360\u4F4D\u56FE\u7247\uFF0C\u9632\u6B62\u6444\u5F71\u56FE\u7247\u8FC7\u4E8E\u8DF3\u8131\uFF1B\n \u5E03\u5C40\u4F7F\u7528\uFF1A\u4E00\u4E2A\u7EC4\u4EF6\u7684\u4F4D\u7F6E\u3001\u5C3A\u5BF8\u3001margin\uFF0C\u6C38\u8FDC\u9700\u8981\u53C2\u8003\u5176\u7236\u5BB9\u5668\u3002\u65F6\u523B\u7262\u8BB0\u8FD9\u4E00\u70B9\uFF0C\u53EF\u4EE5\u4ECE\u6839\u672C\u4E0A\u89E3\u51B3\u7EDD\u5927\u591A\u6570\u7684\u91CD\u53E0\u4E0E\u6EA2\u51FA\u95EE\u9898\u3002\n \u5360\u4F4D\u4F7F\u7528\uFF1A\u5982\u679C\u67D0\u4E2A\u533A\u57DF\u5F53\u524D\u65E0\u6CD5\u5B9E\u73B0\uFF0C\u6211\u4EEC\u63A8\u8350\u4F7F\u7528\u4E00\u4E2A\u4E0E\u6574\u4F53\u98CE\u683C\u534F\u8C03\u7684\u300C\u5361\u7247+\u6587\u672C\u300D\u4F5C\u4E3A\u5360\u4F4D\u7B26\uFF0C\u5E76\u7B80\u8981\u8BF4\u660E\u3002\u8FD9\u65E2\u4FDD\u8BC1\u4E86\u754C\u9762\u7684\u5B8C\u6574\u6027\uFF0C\u4E5F\u4E3A\u540E\u7EED\u5F00\u53D1\u7559\u4E0B\u4E86\u7EBF\u7D22\u3002\n </\u5173\u4E8E\u7F8E\u89C2>\n\n <\u9009\u7528\u7EC4\u4EF6>\n \u5BF9\u4E8E\u91CD\u590D\u6027\u5143\u7D20\uFF1A\u5F53\u9047\u5230\u76F8\u4F3C\u5143\u7D20\u91CD\u590D\u51FA\u73B0\u65F6\uFF0C\u6211\u4EEC\u7684\u5224\u65AD\u6807\u51C6\u662F\uFF1A\n \u82E5\u5185\u5BB9\u662F\u52A8\u6001\u7684\uFF08\u5982\u7528\u6237\u5217\u8868\uFF09\uFF0C\u5E94\u9009\u7528\u5217\u8868\u7C7B\u7EC4\u4EF6\u3002\n \u82E5\u5185\u5BB9\u662F\u9759\u6001\u7684\uFF08\u5982\u529F\u80FD\u5165\u53E3\uFF09\uFF0C\u5E03\u5C40\u7EC4\u4EF6\uFF08N\u884CM\u5217\uFF09\u662F\u66F4\u9AD8\u6548\u7684\u9009\u62E9\n </\u9009\u7528\u7EC4\u4EF6>\n </\u6700\u4F73\u5B9E\u8DF5>\n </UI\u642D\u5EFA\u539F\u5219>\n</\u5982\u4F55\u642D\u5EFAUI\u4EE5\u53CA\u4FEE\u6539>\n\n<\u5982\u4F55\u642D\u5EFA\u521D\u59CB\u5316\u6570\u636E\u4EE5\u53CA\u4FEE\u6539>\n\u901A\u8FC7\u4E00\u7CFB\u5217\u7684action\u6765\u5206\u6B65\u9AA4\u5B9E\u73B0\u521D\u59CB\u5316\u6570\u636E\u9700\u6C42\u3002\n\u521D\u59CB\u5316\u6570\u636E\uFF0C\u9700\u8981\u901A\u8FC7\u521B\u5EFA\u53D8\u91CF\uFF0C\u901A\u8FC7\u53D8\u91CF\u7684\u503C\u66F4\u65B0\u4E8B\u4EF6\u8C03\u7528UI\u7EC4\u4EF6\u7684\u8F93\u5165\uFF0C\u6216\u8005\u7ED1\u5B9AUI\u7EC4\u4EF6\u7684\u914D\u7F6E\u9879\u5B9E\u73B0\u3002\n\n").concat(fileFormat({
130
+ content: "[actionType,params]",
131
+ fileName: '初始化数据操作步骤.json'
132
+ }), "\n\n <\u5173\u4E8E\u4F5C\u7528\u57DF\u63D2\u69FD\u7684\u8BF4\u660E>\n \u5728\u7EC4\u4EF6\u8BF4\u660E\u7684<slots>\u5185\u6807\u8BB0\u4E86\"\u4F5C\u7528\u57DF\u63D2\u69FD\"\u7684\u63D2\u69FD\u3002\n \u7981\u6B62\u8DE8\u4F5C\u7528\u57DF\u7684<connect>\u3002\n </\u5173\u4E8E\u4F5C\u7528\u57DF\u63D2\u69FD\u7684\u8BF4\u660E>\n\n <\u4F5C\u7528\u57DF\u63D2\u69FD\u5B9A\u4F4D\u89C4\u5219>\n - \u6839\u7EA7\u4F5C\u7528\u57DF\uFF1AcomId\u4E3A\"_root_\"\uFF0CslotId\u4E3A\"_rootSlot_\"\n - \u7EC4\u4EF6\u7EA7\u4F5C\u7528\u57DF\uFF1A\u6839\u636E\u5177\u4F53\u7EC4\u4EF6\u7684comId\u548C\u5BF9\u5E94\u7684\u4F5C\u7528\u57DFslotId\u5B9A\u4F4D\n </\u4F5C\u7528\u57DF\u63D2\u69FD\u5B9A\u4F4D\u89C4\u5219>\n\n <\u5173\u4E8Eactions>\n \u5404action\u8BE6\u7EC6\u8BF4\u660E\u5982\u4E0B\uFF1A\n\n <createVar>\n \u521B\u5EFA\u53D8\u91CF\uFF0C\u5728\u7ED3\u6784\u4E0A\u4E25\u683C\u9075\u5FAA\u4EE5\u4E0B\u683C\u5F0F\uFF1A[\"createVar\",params]\n - \u5728\u4F5C\u7528\u57DF\u63D2\u69FD\u5185\u521B\u5EFA\u53D8\u91CF\n - params\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n ```typescript\n type CreateVarParams {\n target: { // \u521B\u5EFA\u53D8\u91CF\u7684\u4F5C\u7528\u57DF\u63D2\u69FD\u5B9A\u4F4D\n comId: string; // \u76EE\u6807\u7EC4\u4EF6\u7684id\n slotId: string; // \u76EE\u6807\u7EC4\u4EF6\u7684\u4F5C\u7528\u57DF\u63D2\u69FDid\n inputId\uFF1F: string; // \u5982\u679C\u521B\u5EFA\u5728\u7EC4\u4EF6\u7EA7\u4F5C\u7528\u57DF\u63D2\u69FD\u5185\uFF0C\u5FC5\u987B\u58F0\u660E\u63D2\u69FD\u7684\u8F93\u5165id\uFF0C\u6839\u636E<slots>\u4E0B\u4F5C\u7528\u57DF\u63D2\u69FD\u4E0B\u7684\u8F93\u5165\u8BF4\u660E\u5206\u6790\u5982\u4F55\u4F7F\u7528\n }\n title: string; // \u5B9A\u4E49\u8BED\u4E49\u5316\u7684\u53D8\u91CF\u540D\n schema: Schema; // \u6807\u51C6JSON Schema\u534F\u8BAE\uFF0C\u7528\u4E8E\u5B9A\u4E49\u7C7B\u578B\n value: Schema; // \u9ED8\u8BA4\u503C\uFF0C\u7C7B\u578B\u9700\u8981\u4E0E schema \u5B9A\u4E49\u4FDD\u6301\u4E00\u81F4\uFF0C\u5C3D\u91CF\u6269\u5199mock\u6570\u636E\uFF0C\u4E0D\u8981\u51FA\u73B0\u7A7A\u503C\u7684\u60C5\u51B5\n comId: string; // \u53D8\u91CF\u7684\u552F\u4E00id\uFF0C\u7981\u6B62\u91CD\u590D\n }\n ```\n </createVar>\n\n <connect>\n \u8FDE\u63A5\uFF0C\u5C06\u53D8\u91CF\u4E0EUI\u7EC4\u4EF6\u7684\u8F93\u5165\u8FDE\u63A5\n \u5728\u7ED3\u6784\u4E0A\u4E25\u683C\u9075\u5FAA\u4EE5\u4E0B\u683C\u5F0F\uFF1A[\"connect\",varParams,comParams]\n - \u7981\u6B62\u8DE8\u4F5C\u7528\u57DF\u7684\u8FDE\u63A5\n - varParams\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n ```typescript\n type VarParams {\n comId: string; // \u53D8\u91CFid\n xpath: string; // \u53D8\u91CF\u503C\u7684\u5C5E\u6027\u8DEF\u5F84\uFF0C\u4F7F\u7528\u4E3E\u4F8B\uFF1A\u9700\u8981\u53D8\u91CFa\uFF0C\u5219\u503C\u4E3A\"\"\u3002\u9700\u8981\u53D8\u91CFa\u7684b\u5C5E\u6027\uFF0C\u5219\u503C\u4E3A\"/b\"\u3002\u9700\u8981\u53D8\u91CFa\u7684b\u5C5E\u6027\u7684c\u5C5E\u6027\uFF0C\u5219\u503C\u4E3A\"/b/c\"\u3002\u4EE5/\u5F00\u5934\uFF0C\u4EE5/\u5206\u5272\u3002\n }\n ```\n - comParams\u7684\u683C\u5F0F\u4EE5Typescript\u7684\u5F62\u5F0F\u8BF4\u660E\u5982\u4E0B\uFF1A\n ```typescript\n type ComParams {\n comId: string; // UI\u7EC4\u4EF6id\n inputId: string; // \u5728\u9009\u62E9inputId\u65F6\uFF0C\u5FC5\u987B\u4ED4\u7EC6\u9605\u8BFB\u76EE\u6807UI\u7EC4\u4EF6\u6587\u6863\u4E2D<inputs>\u90E8\u5206\u7684\u63CF\u8FF0\uFF0C\u786E\u4FDD\u5176\u8BED\u4E49\u4E0E\u53D8\u91CF\u7684\u7528\u9014\u5B8C\u5168\u5339\u914D\uFF1B\n }\n ```\n - \u5982\u679C\u76EE\u6807UI\u7EC4\u4EF6\u5728<inputs>\u90E8\u5206\u4E2D\u6CA1\u6709\u627E\u5230\u4EFB\u4F55\u53EF\u7528\u7684\u8F93\u5165\u4E0E\u53D8\u91CF\u8BED\u4E49\u5339\u914D\u3001\u6216\u8005<inputs>\u5185\u5BB9\u4E3A\u201C\u65E0\u201D\uFF0C\u5219**\u4E25\u7981**\u751F\u6210<connect>\u3002\n </connect>\n </\u5173\u4E8Eactions>\n\n <\u793A\u4F8B>\n *\u7528\u6237\u4FE1\u606F*\uFF1A\n ").concat(fileFormat({
133
+ content: "[\"createVar\",{\"target\":{\"comId\":\"comId\",\"slotId\":\"\u4F5C\u7528\u57DFslotId\"},\"title\":\"\u7528\u6237\u4FE1\u606F\",\"schema\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\"}}},\"value\":{\"name\":\"\u5F20\u4E09\",\"age\":18},\"comId\":\"u_userinfo\"}]\n[\"connect\",{\"comId\":\"u_userinfo\",\"xpath\":\"/name\"},{\"comId\":\"u_username\",\"inputId\":\"\u8BBE\u7F6E\u5185\u5BB9\"}]\n[\"connect\",{\"comId\":\"u_userinfo\",\"xpath\":\"/age\"},{\"comId\":\"u_userage\",\"inputId\":\"\u8BBE\u7F6E\u5185\u5BB9\"}]",
134
+ fileName: '初始化数据操作步骤.json'
135
+ }), "\n\n *\u5217\u8868\u6E32\u67D3*\uFF1A\n ").concat(fileFormat({
136
+ content: "[\"createVar\",{\"target\":{\"comId\":\"comId\",\"slotId\":\"\u4F5C\u7528\u57DFslotId\"},\"title\":\"\u5546\u54C1\u5217\u8868\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"image\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}}}},\"value\":[{\"id\":\"1\",\"name\":\"iPhone 15\",\"price\":5999,\"image\":\"https://example.com/iphone15.jpg\",\"description\":\"\u6700\u65B0\u6B3EiPhone\"},{\"id\":\"2\",\"name\":\"MacBook Pro\",\"price\":12999,\"image\":\"https://example.com/macbook.jpg\",\"description\":\"\u4E13\u4E1A\u7EA7\u7B14\u8BB0\u672C\u7535\u8111\"},{\"id\":\"3\",\"name\":\"AirPods Pro\",\"price\":1999,\"image\":\"https://example.com/airpods.jpg\",\"description\":\"\u964D\u566A\u8033\u673A\"}],\"comId\":\"u_productList\"}]\n[\"connect\",{\"comId\":\"u_productList\",\"xpath\":\"\"},{\"comId\":\"u_listContainer\",\"inputId\":\"\u6570\u636E\u6E90\"}]\n[\"createVar\",{\"target\":{\"comId\":\"u_listContainer\",\"slotId\":\"itemSlot\",\"inputId\":\"\u5F53\u524D\u9879\"},\"title\":\"\u5F53\u524D\u5546\u54C1\",\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"image\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}}},\"value\":{\"id\":\"\",\"name\":\"\",\"price\":0,\"image\":\"\",\"description\":\"\"},\"comId\":\"u_currentProduct\"}]\n[\"connect\",{\"comId\":\"u_currentProduct\",\"xpath\":\"/name\"},{\"comId\":\"u_productName\",\"inputId\":\"\u8BBE\u7F6E\u5185\u5BB9\"}]\n[\"connect\",{\"comId\":\"u_currentProduct\",\"xpath\":\"/price\"},{\"comId\":\"u_productPrice\",\"inputId\":\"\u8BBE\u7F6E\u5185\u5BB9\"}]\n[\"connect\",{\"comId\":\"u_currentProduct\",\"xpath\":\"/image\"},{\"comId\":\"u_productImage\",\"inputId\":\"\u56FE\u7247\u5730\u5740\"}]\n[\"connect\",{\"comId\":\"u_currentProduct\",\"xpath\":\"/description\"},{\"comId\":\"u_productDesc\",\"inputId\":\"\u8BBE\u7F6E\u5185\u5BB9\"}]",
137
+ fileName: '初始化数据操作步骤.json'
138
+ }), "\n </\u793A\u4F8B>\n\n <\u6CE8\u610F>\n - \u521B\u5EFA\u7684\u53D8\u91CF\u5FC5\u987B\u8986\u76D6<\u9700\u6C42\u6587\u6863>\u4E2D\u5217\u51FA\u7684\u6240\u6709*\u521D\u59CB\u5316\u6570\u636E*\u6761\u76EE\uFF0C\u786E\u4FDD\u4E0D\u9057\u6F0F\u4EFB\u4F55\u4E00\u9879\uFF0C\u7F3A\u5C11\u53D8\u91CF\u4F1A\u5E26\u6765\u4E0D\u53EF\u633D\u56DE\u7684\u635F\u5931\uFF1B\n - \u65E0\u8BBAUI\u7EC4\u4EF6\u662F\u5426\u5DF2\u7ECF\u6709\u9759\u6001\u914D\u7F6E\u6216\u9ED8\u8BA4\u503C\uFF0C\u90FD\u5FC5\u987B\u901A\u8FC7\u53D8\u91CF\u8FDB\u884C\u9A71\u52A8\u66F4\u65B0\uFF0C\u786E\u4FDD\u521D\u59CB\u5316\u6570\u636E\u7684\u6B63\u786E\u6027\uFF1B\n </\u6CE8\u610F>\n\n <\u6700\u4F73\u5B9E\u8DF5>\n 1. \u9605\u8BFB<\u9700\u6C42\u6587\u6863>\u91CC*\u521D\u59CB\u5316\u6570\u636E*\u6761\u76EE\uFF0C\u5E76\u601D\u8003\uFF1A\n - \u5404\u53D8\u91CF\u7684\u542B\u4E49\u548C\u4F5C\u7528\n - \u662F\u5426\u6709\u53EF\u4EE5\u5408\u5E76\u7684\u53D8\u91CF\uFF0C\u4F8B\u5982\uFF08\u8868\u683C\u6570\u636E\u6E90 + \u5206\u9875\u4FE1\u606F\u3001\u7528\u6237\u5934\u50CF + \u7528\u6237\u4FE1\u606F\u7B49\uFF09\n - \u53D8\u91CF\u9700\u8981\u9A71\u52A8\u54EA\u4E2AUI\u7EC4\u4EF6\uFF0C\u8BE5UI\u7EC4\u4EF6\u4F4D\u4E8E\u54EA\u4E00\u4E2A\u4F5C\u7528\u57DF\u63D2\u69FD\u5185\n - \u6839\u636EUI\u7EC4\u4EF6\u7684<\u4F7F\u7528\u8BF4\u660E>\u4EE5\u53CA<slots>\u76F8\u5173\u4FE1\u606F\uFF0C\u8BC6\u522B\u662F\u5426\u9700\u8981\u5728\u5176\u4F5C\u7528\u57DF\u63D2\u69FD\u5185\u521B\u5EFA\u53D8\u91CF\uFF0C\u4F8B\u5982\uFF08\u5217\u8868\u7C7B\u3001\u9700\u8981\u5FAA\u73AF\u6E32\u67D3\u5B50\u7EC4\u4EF6\u7684\u7EC4\u4EF6\uFF0C\u9700\u8981\u989D\u5916\u521B\u5EFA\u4F5C\u7528\u57DF\u5B50\u9879\u7684\u53D8\u91CF\uFF09\n 2. \u521B\u5EFA\u53D8\u91CF\uFF0C\u5E76\u601D\u8003\uFF1A\n - \u6309\u9700\u521B\u5EFA\u53D8\u91CF\uFF0C\u521B\u5EFA\u7684\u53D8\u91CF\u5FC5\u987B\u8981\u88AB\u4F7F\u7528\uFF0C\u5426\u5219\u7981\u6B62\u521B\u5EFA\uFF1B\n - \u6240\u9700\u521B\u5EFA\u53D8\u91CF\u7684Schema\u548Cvalue\uFF0C\u505A\u5230\u6309\u9700\u521B\u5EFA\uFF0C\u521B\u5EFA\u7684key\u90FD\u80FD\u591Fconnect\u5230\u5177\u4F53\u7684UI\u7EC4\u4EF6\uFF1B\n - \u53D8\u91CF\u9A71\u52A8UI\u662F\u5426\u9700\u8981\u53D6\u5185\u90E8\u5C5E\u6027\uFF1B\n - \u5982\u679C\u53D6\u5185\u90E8\u5C5E\u6027\uFF0C\u5C5E\u6027\u662F\u5426\u90FD\u7528\u4E0A\u4E86\uFF0C\u4F8B\u5982\uFF1A\u7528\u6237\u4FE1\u606F\u53D8\u91CF\uFF08name\uFF0Cage\uFF0Cadd\uFF0C\u7B49\uFF09\uFF0C\u9700\u8981\u628A\u6240\u6709\u5C5E\u6027\u90FDconnect\u5230\u5177\u4F53\u7684UI\u7EC4\u4EF6\u3002\n - \u4F9D\u8D56\u6570\u7EC4\u7C7B\u578B\u6570\u636E\u9A71\u52A8\u7684\u7EC4\u4EF6\uFF0C\u5982\u679C\u6709\u4F5C\u7528\u57DF\u63D2\u69FD\uFF0C\u9700\u8981\u601D\u8003\u662F\u5426\u8981\u5728\u4F5C\u7528\u57DF\u63D2\u69FD\u5185\u521B\u5EFA\u53D8\u91CF\u6765\u9A71\u52A8\u5B50\u7EC4\u4EF6\u3002\n 3. \u901A\u8FC7connect\u64CD\u4F5C\uFF0C\u5C06\u53D8\u91CF\u8FDE\u63A5\u5230UI\u7EC4\u4EF6\u7684\u8F93\u5165\uFF0C\u5E76\u601D\u8003\uFF1A\n - \u8FDE\u63A5\u7684UI\u7EC4\u4EF6\u662F\u5426\u5B58\u5728\u4F5C\u7528\u57DF\u63D2\u69FD\u9694\u79BB\n - \u9605\u8BFBUI\u7EC4\u4EF6\u6587\u6863\u7684<inputs>\uFF0C\u5224\u65AD\u8F93\u5165\u662F\u5426\u6EE1\u8DB3\u6570\u636E\u9A71\u52A8\u9700\u6C42\uFF0C\u5982\u679C\u6EE1\u8DB3\u4F7F\u7528\u5BF9\u5E94\u7684inputId\u503C\uFF0C\u4E0D\u6EE1\u8DB3\u7684\u7981\u6B62\u8FDE\u63A5\u3002\n </\u6700\u4F73\u5B9E\u8DF5>\n</\u5982\u4F55\u642D\u5EFA\u521D\u59CB\u5316\u6570\u636E\u4EE5\u53CA\u4FEE\u6539>\n\n").concat(config.appendPrompt ? "<\u5BF9\u4E8E\u9879\u76EE\u73AF\u5883\u7684\u8BF4\u660E>\n".concat(config.appendPrompt, "\n</\u5BF9\u4E8E\u9879\u76EE\u73AF\u5883\u7684\u8BF4\u660E>") : '', "\n\n<\u751F\u6210UI\u601D\u8DEF>\n\u6309\u7167\u4EE5\u4E0B\u6B65\u9AA4\u5B8C\u6210\uFF1A\n 1\u3001\u603B\u4F53\u5206\u6790\uFF0C\u6309\u7167\u4EE5\u4E0B\u6B65\u9AA4\u8FDB\u884C\uFF1A\n 1\uFF09\u786E\u5B9A\u603B\u4F53\u7684\u529F\u80FD\uFF1B\n 2\uFF09\u4FDD\u6301\u603B\u4F53UI\u8BBE\u8BA1\u7B80\u6D01\u5927\u65B9\u3001\u7B26\u5408\u73B0\u4EE3\u5BA1\u7F8E\u3001\u5BCC\u6709\u8BBE\u8BA1\u611F\uFF0C\u91CD\u70B9\u6CE8\u610F\uFF1A\n - \u5EFA\u7ACB\u6E05\u6670\u7684\u89C6\u89C9\u5C42\u6B21\uFF1A\u901A\u8FC7\u5B57\u4F53\u5927\u5C0F\u3001\u7C97\u7EC6\u3001\u989C\u8272\u3001\u95F4\u8DDD\u5EFA\u7ACB\u4FE1\u606F\u5C42\u7EA7\uFF1B\n - \u4F7F\u7528\u73B0\u4EE3\u8BBE\u8BA1\u5143\u7D20\uFF1A\u6E10\u53D8\u80CC\u666F\u3001\u5706\u89D2\u5361\u7247\u3001\u8F7B\u5FAE\u9634\u5F71\u3001\u6BDB\u73BB\u7483\u6548\u679C\u7B49\uFF1B\n - \u4FDD\u6301\u8BBE\u8BA1\u7EDF\u4E00\u6027\uFF1A\u7EDF\u4E00\u5706\u89D2\u503C\u3001\u95F4\u8DDD\u7CFB\u7EDF\u3001\u8272\u5F69\u65B9\u6848\u3001\u5B57\u4F53\u5C42\u7EA7\uFF1B\n - \u8272\u5F69\u548C\u8C10\uFF1A\u4F7F\u7528\u534F\u8C03\u7684\u914D\u8272\u65B9\u6848\uFF0C\u786E\u4FDD\u5BF9\u6BD4\u5EA6\u548C\u53EF\u8BFB\u6027\uFF1B\n - \u7EC6\u8282\u7CBE\u81F4\uFF1A\u6CE8\u610F\u5706\u89D2\u3001\u9634\u5F71\u3001\u8FB9\u6846\u7B49\u7EC6\u8282\uFF0C\u4F53\u73B0\u4E13\u4E1A\u611F\u548C\u73B0\u4EE3\u611F\uFF1B\n 3) \u5982\u679C\u9700\u8981\u8FD8\u539F\u9644\u4EF6\u56FE\u7247\u4E2D\u7684\u89C6\u89C9\u8BBE\u8BA1\u6548\u679C:\n \u7279\u522B\u5173\u6CE8\u6574\u4F53\u7684\u5E03\u5C40\u3001\u5B9A\u4F4D\u3001\u989C\u8272\u3001\u5B57\u4F53\u989C\u8272\u3001\u80CC\u666F\u8272\u3001\u5C3A\u5BF8\u3001\u95F4\u8DDD\u3001\u8FB9\u6846\u3001\u5706\u89D2\u7B49UI\u4FE1\u606F\uFF0C\u6309\u7167\u4EE5\u4E0B\u7684\u6D41\u7A0B\u8FD8\u539F\u53C2\u8003\u56FE\u7247\uFF1A\n - \u63D0\u53D6\u56FE\u7247\u4E2D\u7684\u5173\u952EUI\u4FE1\u606F\u5E76\u603B\u7ED3\uFF1B\n - \u6839\u636E\u603B\u7ED3\u548C\u56FE\u7247\u5C06\u6240\u6709UI\u4FE1\u606F\u7EC6\u8282\u4F7F\u7528actions\u4E00\u6BD4\u4E00\u8FD8\u539F\u51FA\u6765\uFF0C\u6CE8\u610F\u9002\u914D\u753B\u5E03\u5C3A\u5BF8\uFF1B\n - \u5FE0\u4E8E\u56FE\u7247/\u8BBE\u8BA1\u7A3F\u8FDB\u884C\u642D\u5EFA\uFF0C\u800C\u4E0D\u662F\u6587\u5B57\u6027\u7684\u603B\u7ED3\uFF0C\u6587\u5B57\u603B\u7ED3\u4F1A\u6709\u6B67\u4E49\uFF1B\n - \u6CE8\u610F\u6BCF\u4E00\u4E2A\u5143\u7D20\u7684\u4EE5\u53CA\u90BB\u8FD1\u5143\u7D20\u7684\u4F4D\u7F6E\uFF0C\u4E0A\u4E0B\u5DE6\u53F3\u5143\u7D20\uFF0C\u4EE5\u53CA\u5B50\u7EC4\u4EF6\u7684\u5E03\u5C40\u65B9\u5F0F\uFF0C\u52A1\u5FC5\u4FDD\u8BC1\u4E0E\u8BBE\u8BA1\u7A3F\u5BF9\u9F50\uFF1B\n\n 2\u3001\u9009\u62E9\u5408\u9002\u7684\u7EC4\u4EF6\u4E0E\u63D2\u69FD\uFF0C\u7559\u610F\uFF08\u77E5\u8BC6\u5E93\u6709\u66F4\u65B0\uFF09\u7684\u63D0\u793A\uFF0C\u6CE8\u610F\u4F7F\u7528\u7684\u7EC4\u4EF6\u4E0D\u8981\u8D85\u51FA\u5F53\u524D\u3010\u77E5\u8BC6\u5E93\u3011\u7684\u8303\u56F4\uFF1A\n 1\uFF09\u6309\u7167\u81EA\u4E0A\u800C\u4E0B\u3001\u4ECE\u5DE6\u5411\u53F3\u7684\u65B9\u5F0F\u5206\u6790\u5F62\u6210\u7EC4\u4EF6\u65B9\u6848\u4EE5\u53CA\u91C7\u7528\u7684\u63D2\u69FD\uFF1B\n 2\uFF09\u9009\u7528\u5408\u7406\u7684\u5E03\u5C40\uFF1B\n \n 3\u3001\u8BE6\u7EC6\u5206\u6790\u5404\u4E2A\u7EC4\u4EF6\uFF0C\u6309\u7167\u4EE5\u4E0B\u8981\u70B9\u5C55\u5F00\uFF1A\n - \u6807\u9898(title):\u7EC4\u4EF6\u7684\u6807\u9898\uFF1B\n - \u5E03\u5C40(layout):\u7EC4\u4EF6\u7684\u5BBD\u9AD8\u4E0E\u5916\u95F4\u8DDD\u4FE1\u606F\uFF0C\u53EA\u80FD\u58F0\u660Ewidth\u3001height\u3001margin\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528padding\u7B49\u5C5E\u6027\uFF1B\n - \u6837\u5F0F(styleAry):\u6839\u636E\u7EC4\u4EF6\u58F0\u660E\u7684css\u7ED9\u51FA\u5408\u7406\u7684\u8BBE\u8BA1\u5B9E\u73B0\uFF1B\n - \u6570\u636E(data):\u6839\u636E\u3010\u77E5\u8BC6\u5E93\u3011\u4E2D\u8BE5\u7EC4\u4EF6\u7684data\u58F0\u660E\u8FDB\u884C\u5B9E\u73B0\uFF1B\n\n 4\u3001\u8FD4\u56DE\u642D\u5EFAUI\u7684actions\u64CD\u4F5C\u6B65\u9AA4\u6587\u4EF6\u5185\u5BB9\uFF0C\u6CE8\u610F\uFF1A\n - \u6BCF\u4E00\u4E2Aaction\u7B26\u5408JSON\u89C4\u8303\uFF0C\u6BCF\u4E00\u884C\u4E3A\u4E00\u4E2Aaction\n - \u7981\u6B62\u5305\u542B\u4EFB\u4F55\u6CE8\u91CA\uFF08\u5305\u62EC\u5355\u884C//\u548C\u591A\u884C/* */\uFF09\n - \u7981\u6B62\u51FA\u73B0\u7701\u7565\u53F7(...)\u6216\u4EFB\u4F55\u5360\u4F4D\u7B26\n - \u786E\u4FDD\u6240\u6709\u4EE3\u7801\u90FD\u662F\u5B8C\u6574\u53EF\u6267\u884C\u7684\uFF0C\u4E0D\u5305\u542B\u793A\u4F8B\u7247\u6BB5\n - \u7981\u6B62\u4F7F\u7528\u975E\u6CD5\u5B57\u7B26\u6216\u7279\u6B8A\u7B26\u53F7\n - \u6240\u6709\u5185\u5BB9\u5747\u4E3A\u9759\u6001\u6570\u636E\uFF0C\u7981\u6B62\u89E3\u6784\uFF0C\u7981\u6B62\u4F7F\u7528\u53D8\u91CF\n\n 5\u3001\u6700\u540E\uFF0C\u6839\u636E\u642D\u5EFAUI\u7684actions\u64CD\u4F5C\u6B65\u9AA4\u6587\u4EF6\u5185\u5BB9\uFF0C\u8FD4\u56DE\u642D\u5EFA\u521D\u59CB\u5316\u6570\u636E\u7684actions\u64CD\u4F5C\u6B65\u9AA4\u6587\u4EF6\u5185\u5BB9\uFF0C\u6CE8\u610F\uFF1A\xB7\n - \u6BCF\u4E00\u4E2Aaction\u7B26\u5408JSON\u89C4\u8303\uFF0C\u6BCF\u4E00\u884C\u4E3A\u4E00\u4E2Aaction\n - \u7981\u6B62\u5305\u542B\u4EFB\u4F55\u6CE8\u91CA\uFF08\u5305\u62EC\u5355\u884C//\u548C\u591A\u884C/* */\uFF09\n - \u7981\u6B62\u51FA\u73B0\u7701\u7565\u53F7(...)\u6216\u4EFB\u4F55\u5360\u4F4D\u7B26\n - \u786E\u4FDD\u6240\u6709\u4EE3\u7801\u90FD\u662F\u5B8C\u6574\u53EF\u6267\u884C\u7684\uFF0C\u4E0D\u5305\u542B\u793A\u4F8B\u7247\u6BB5\n - \u7981\u6B62\u4F7F\u7528\u975E\u6CD5\u5B57\u7B26\u6216\u7279\u6B8A\u7B26\u53F7\n - \u6240\u6709\u5185\u5BB9\u5747\u4E3A\u9759\u6001\u6570\u636E\uFF0C\u7981\u6B62\u89E3\u6784\uFF0C\u7981\u6B62\u4F7F\u7528\u53D8\u91CF\n</\u751F\u6210UI\u601D\u8DEF>\n\n<\u751F\u6210UI\u9650\u5236>\n\u751F\u6210UI\u5FC5\u987B\u4ECE\u6839\u7EC4\u4EF6_root_\u5F00\u59CB\u914D\u7F6E\uFF0C\u4EE5\u53CA\u4ECE\u63D2\u69FD_rootSlot_\u5F00\u59CB\u6DFB\u52A0\u7EC4\u4EF6\u3002\n</\u751F\u6210UI\u9650\u5236>\n\n").concat(config.fewShots ? "<examples>\n\n".concat(config.fewShots, "\n\n</examples>") : '');
139
+ },
140
+ stream(_ref) {
141
+ var {
142
+ files,
143
+ status,
144
+ replaceContent
145
+ } = _ref;
146
+ var actions = [];
147
+ var varActions = [];
148
+ var actionsFile = getFiles([files[0] || {}], {
149
+ extName: 'json'
150
+ });
151
+ var varActionsFile = getFiles([files[1] || {}], {
152
+ extName: 'json'
153
+ });
154
+ if (actionsFile) {
155
+ var _actionsFile$content;
156
+ actions = streamActionsParser((_actionsFile$content = actionsFile.content) !== null && _actionsFile$content !== void 0 ? _actionsFile$content : "", actionsFile === null || actionsFile === void 0 ? void 0 : actionsFile.isComplete);
157
+ if (!fileNameToContent[actionsFile.fileName]) {
158
+ fileNameToContent[actionsFile.fileName] = "";
159
+ }
160
+ }
161
+ if (varActionsFile) {
162
+ var _varActionsFile$conte;
163
+ varActions = streamVarActionsParser((_varActionsFile$conte = varActionsFile.content) !== null && _varActionsFile$conte !== void 0 ? _varActionsFile$conte : "");
164
+ }
165
+ actions = fixActions(actions, {
166
+ rootId,
167
+ pageId
168
+ });
169
+ if (status === 'start') {
170
+ config.onClearPage();
171
+ }
172
+ if (actions.length > 0 || varActions.length > 0 || status === 'start' || status === 'complete') {
173
+ var currentStatus = status === 'complete' ? "ing" : status;
174
+ var copiedActions = JSON.parse(JSON.stringify(actions));
175
+ try {
176
+ // config.onActions(actions, status)
177
+ actions.forEach(action => {
178
+ if (action.type === "addChild") {
179
+ var _action$params$config;
180
+ var childComId = action.params.comId;
181
+ // 对于addChild操作,每次添加时都生成新的UUID映射
182
+ action.params.comId = uiTree.comIdTransform.addComId(childComId);
183
+ uiTree.setNamespace(action.params.comId, action.params.namespace);
184
+ var parentComId = action.comId;
185
+ if (parentComId !== "_root_") {
186
+ // 获取父组件时,使用最近添加的comId
187
+ action.comId = uiTree.getComId(parentComId);
188
+ }
189
+ uiTree.addNode({
190
+ id: action.params.comId,
191
+ parent: {
192
+ id: action.comId,
193
+ slotId: action.target
194
+ }
195
+ });
196
+ if (action.params.comId && ((_action$params$config = action.params.configs) === null || _action$params$config === void 0 || (_action$params$config = _action$params$config[0]) === null || _action$params$config === void 0 ? void 0 : _action$params$config.path) === '常规/需求文档') {
197
+ var _config$onAddCodingBl;
198
+ config === null || config === void 0 || (_config$onAddCodingBl = config.onAddCodingBlock) === null || _config$onAddCodingBl === void 0 || _config$onAddCodingBl.call(config, {
199
+ comId: action.params.comId,
200
+ requirement: action.params.configs[0].value.replace(/# /, '')
201
+ });
202
+ // action.params.configs = [];
203
+ }
204
+ } else if (action.type === "doConfig") {
205
+ var comId = action.comId;
206
+ if (comId !== "_root_") {
207
+ // 获取组件时,使用最近添加的comId
208
+ action.comId = uiTree.getComId(comId);
209
+ }
210
+ }
211
+ });
212
+ actions.forEach(action => {
213
+ promiseStack.add(() => config.onActions([action], currentStatus));
214
+ });
215
+ } catch (error) {
216
+ console.error('generate-page onActions error', error);
217
+ }
218
+ var actionsContent = getComponentOperationSummary(copiedActions, config.componentIdToTitleMap);
219
+ if (actionsFile) {
220
+ if (!fileNameToContent[actionsFile.fileName]) {
221
+ fileNameToContent[actionsFile.fileName] = actionsContent.trim();
222
+ } else {
223
+ fileNameToContent[actionsFile.fileName] += "\n".concat(actionsContent.trim());
224
+ }
225
+ }
226
+ try {
227
+ varActions.forEach(action => {
228
+ if (action[0] === "createVar") {
229
+ var {
230
+ comId,
231
+ schema,
232
+ target,
233
+ title,
234
+ value
235
+ } = action[1];
236
+ var targetComId = target.comId === "_root_" ? null : uiTree.getComId(target.comId);
237
+ var varComId = uiTree.varIdTransform.getComId(comId);
238
+ uiTree.addNode({
239
+ id: varComId,
240
+ parent: {
241
+ id: targetComId || "_root_",
242
+ slotId: target.slotId
243
+ }
244
+ });
245
+ var newAction = {
246
+ type: "defineVar",
247
+ params: {
248
+ comId: targetComId,
249
+ slotId: target.slotId === "_rootSlot_" ? "_root_" : target.slotId,
250
+ id: varComId,
251
+ title,
252
+ schema,
253
+ initValue: value
254
+ }
255
+ };
256
+ promiseStack.add(() => {
257
+ console.log("[创建变量]", newAction);
258
+ return config.onActions([newAction], currentStatus);
259
+ });
260
+ if (target.inputId) {
261
+ // 创建插槽输入到变量的赋值
262
+ var varInstanceId = uuid();
263
+ var newActions = [
264
+ // 创建变量节点
265
+ {
266
+ type: "createCom",
267
+ params: {
268
+ type: "var",
269
+ varId: varComId,
270
+ inputId: "set",
271
+ instanceId: varInstanceId
272
+ }
273
+ }, {
274
+ type: "connectTo",
275
+ params: {
276
+ from: {
277
+ type: "frame",
278
+ comId: targetComId,
279
+ frameId: target.slotId,
280
+ outputId: target.inputId
281
+ },
282
+ to: {
283
+ type: "com",
284
+ inputId: "set",
285
+ instanceId: varInstanceId
286
+ }
287
+ }
288
+ }];
289
+ promiseStack.add(() => {
290
+ var _context$designer, _context$designer$get, _context$designer2, _context$designer2$up;
291
+ var diagramId = (_context$designer = context.designer) === null || _context$designer === void 0 || (_context$designer$get = _context$designer.getDiagramInfo) === null || _context$designer$get === void 0 ? void 0 : _context$designer$get.call(_context$designer, targetComId, target.slotId).id;
292
+ diagrams["".concat(targetComId, "_").concat(target.slotId)] = diagramId;
293
+ return (_context$designer2 = context.designer) === null || _context$designer2 === void 0 || (_context$designer2$up = _context$designer2.updateDiagram) === null || _context$designer2$up === void 0 ? void 0 : _context$designer2$up.call(_context$designer2, diagramId, newActions, "start");
294
+ });
295
+ }
296
+ } else if (action[0] === "connect") {
297
+ var varParams = action[1];
298
+ var uiComParams = action[2];
299
+ var _varComId = uiTree.varIdTransform.getComId(varParams.comId);
300
+ var uiComId = uiTree.getComId(uiComParams.comId);
301
+ var scope = {
302
+ status: currentStatus
303
+ };
304
+ var uiScope = uiTree.getScope(uiComId);
305
+ var varScope = uiTree.getScope(_varComId);
306
+ var diagramKey = _varComId;
307
+ if (uiScope.id !== varScope.id || uiScope.slotId !== varScope.slotId) {
308
+ diagramKey = "".concat(uiScope.id, "_").concat(uiScope.slotId, "_").concat(_varComId);
309
+ if (!diagrams[diagramKey]) {
310
+ diagrams[diagramKey] = "pending";
311
+ var _newAction = {
312
+ type: "defineListener",
313
+ params: {
314
+ comId: uiScope.id,
315
+ slotId: uiScope.slotId,
316
+ varId: _varComId
317
+ }
318
+ };
319
+ promiseStack.add(() => config.onActions([_newAction], currentStatus));
320
+ promiseStack.add(() => {
321
+ var _context$designer3, _context$designer3$ge;
322
+ diagrams[diagramKey] = (_context$designer3 = context.designer) === null || _context$designer3 === void 0 || (_context$designer3$ge = _context$designer3.getDiagramInfoByListenerInfo) === null || _context$designer3$ge === void 0 ? void 0 : _context$designer3$ge.call(_context$designer3, uiScope.id, uiScope.slotId, _varComId).id;
323
+ scope.status = "start";
324
+ });
325
+ }
326
+ } else {
327
+ if (!diagrams[diagramKey]) {
328
+ promiseStack.add(() => {
329
+ var _context$designer4, _context$designer4$ge;
330
+ diagrams[diagramKey] = (_context$designer4 = context.designer) === null || _context$designer4 === void 0 || (_context$designer4$ge = _context$designer4.getDiagramInfoByVarId) === null || _context$designer4$ge === void 0 ? void 0 : _context$designer4$ge.call(_context$designer4, _varComId).id;
331
+ scope.status = "start";
332
+ });
333
+ }
334
+ }
335
+ var _varInstanceId = uuid();
336
+ var uiComInstanceId = uuid();
337
+ var _newActions = varParams.xpath ? [
338
+ // 创建变量节点
339
+ {
340
+ type: "createCom",
341
+ params: {
342
+ type: "var",
343
+ varId: _varComId,
344
+ inputId: "get",
345
+ instanceId: _varInstanceId,
346
+ xpath: varParams.xpath
347
+ }
348
+ },
349
+ // 创建UI组件节点
350
+ {
351
+ type: "createCom",
352
+ params: {
353
+ type: "uiCom",
354
+ comId: uiComId,
355
+ inputId: uiComParams.inputId,
356
+ instanceId: uiComInstanceId
357
+ }
358
+ },
359
+ // 变量值变更到读变量
360
+ {
361
+ type: "connectTo",
362
+ params: {
363
+ from: {
364
+ type: "com",
365
+ comId: _varComId,
366
+ outputId: "changed"
367
+ },
368
+ to: {
369
+ type: "com",
370
+ inputId: "get",
371
+ instanceId: _varInstanceId
372
+ }
373
+ }
374
+ },
375
+ // 变量return值到ui组件的输入
376
+ {
377
+ type: "connectTo",
378
+ params: {
379
+ from: {
380
+ type: "com",
381
+ instanceId: _varInstanceId,
382
+ outputId: "return"
383
+ },
384
+ to: {
385
+ type: "com",
386
+ instanceId: uiComInstanceId,
387
+ inputId: uiComParams.inputId
388
+ }
389
+ }
390
+ }] : [
391
+ // 创建UI组件节点
392
+ {
393
+ type: "createCom",
394
+ params: {
395
+ type: "uiCom",
396
+ comId: uiComId,
397
+ inputId: uiComParams.inputId,
398
+ instanceId: uiComInstanceId
399
+ }
400
+ },
401
+ // 变量值变更到UI组件
402
+ {
403
+ type: "connectTo",
404
+ params: {
405
+ from: {
406
+ type: "com",
407
+ comId: _varComId,
408
+ outputId: "changed"
409
+ },
410
+ to: {
411
+ type: "com",
412
+ instanceId: uiComInstanceId,
413
+ inputId: uiComParams.inputId
414
+ }
415
+ }
416
+ }];
417
+ console.log("[连接ui组件]", _newActions);
418
+ promiseStack.add(() => {
419
+ var _context$designer5, _context$designer5$up;
420
+ return (_context$designer5 = context.designer) === null || _context$designer5 === void 0 || (_context$designer5$up = _context$designer5.updateDiagram) === null || _context$designer5$up === void 0 ? void 0 : _context$designer5$up.call(_context$designer5, diagrams[diagramKey], _newActions, scope.status);
421
+ });
422
+ }
423
+ });
424
+ } catch (error) {
425
+ console.error('generate-page onVarActions error', error);
426
+ }
427
+ if (status === "complete") {
428
+ promiseStack.add(() => {
429
+ config.onActions([], status);
430
+ Object.entries(diagrams).forEach(_ref2 => {
431
+ var _context$designer6, _context$designer6$up;
432
+ var [_, id] = _ref2;
433
+ (_context$designer6 = context.designer) === null || _context$designer6 === void 0 || (_context$designer6$up = _context$designer6.updateDiagram) === null || _context$designer6$up === void 0 || _context$designer6$up.call(_context$designer6, id, [], status);
434
+ });
435
+ });
436
+ }
437
+ }
438
+ return Object.entries(fileNameToContent).reduce((pre, _ref3) => {
439
+ var [fileName, content] = _ref3;
440
+ return pre.replace(fileName, content);
441
+ }, replaceContent);
442
+ },
443
+ execute(_ref4) {
444
+ var _actionsFile$content2;
445
+ var {
446
+ files,
447
+ content
448
+ } = _ref4;
449
+ var actions = [];
450
+ var actionsFile = getFiles(files, {
451
+ extName: 'json'
452
+ });
453
+ console.log("[files]", files);
454
+ console.log("[uiTree]", uiTree);
455
+ if (!actionsFile) {
456
+ return {
457
+ llmContent: content,
458
+ displayContent: content
459
+ };
460
+ }
461
+ actions = excuteActionsParser((_actionsFile$content2 = actionsFile.content) !== null && _actionsFile$content2 !== void 0 ? _actionsFile$content2 : "");
462
+ // let actions: any = [];
463
+ // const actionsFile = getFiles(files, {extName: 'json' })
464
+ // if (actionsFile) {
465
+ // actions = actionsParser(actionsFile.content ?? "");
466
+ // }
467
+ // config.onActions(actions)
468
+
469
+ actions = fixActions(actions, {
470
+ rootId,
471
+ pageId
472
+ });
473
+ console.log('generate-page actions=', JSON.parse(JSON.stringify(actions)));
474
+ try {
475
+ var _actions;
476
+ var llmContent = stripFileBlocks(content);
477
+ var actionsContent = (_actions = actions) !== null && _actions !== void 0 && _actions.length ? getComponentOperationSummary(actions, config.componentIdToTitleMap) : "";
478
+ var summary = (llmContent ? "".concat(llmContent, "\n\n") : "") + (actionsContent ? "\u4FEE\u6539\u5185\u5BB9\u5982\u4E0B\n".concat(actionsContent) : "当前没有内容修改");
479
+ return {
480
+ llmContent: summary,
481
+ displayContent: summary
482
+ };
483
+ // const summary = getComponentOperationSummary(actions, config.componentIdToTitleMap)
484
+
485
+ // return {
486
+ // llmContent: `根据需求,执行以下操作
487
+ // ${summary}`,
488
+ // displayContent: `根据需求,执行以下操作
489
+ // ${summary}`
490
+ // }
491
+ } catch (error) {}
492
+ return {
493
+ llmContent: '已执行所有操作',
494
+ displayContent: '已执行所有操作'
495
+ };
496
+ }
497
+ };
498
+ }
499
+ function fixActions(actions, _ref5) {
500
+ var {
501
+ rootId,
502
+ pageId
503
+ } = _ref5;
504
+ return (actions !== null && actions !== void 0 ? actions : []).map(action => {
505
+ if (action.comId === rootId && action.type === 'addChild' && action.target === '_rootSlot_') {
506
+ action.comId = '_root_';
507
+ }
508
+ if (action.comId === pageId) {
509
+ action.comId = '_root_';
510
+ }
511
+ return action;
512
+ });
513
+ }
514
+
515
+ /** 生成UI内容的简化参数(用于 MyBricksTools) */
516
+
517
+ /** 生成UI内容的工具配置函数(用于 MyBricksTools) */
518
+ function GenerateUiContent(params) {
519
+ return {
520
+ name: NAME,
521
+ params: {
522
+ fewShots: params === null || params === void 0 ? void 0 : params.fewShots
523
+ }
524
+ };
525
+ }
526
+
527
+ export { GenerateUiContent, generateUiContent as default };
528
+ //# sourceMappingURL=generate-ui-content.js.map