@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,167 @@
1
+ import { objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { OutlineInfoManager } from './outline-info.js';
3
+ import { ComponentsManager } from './components-manager.js';
4
+
5
+ class PageHierarchyGenerator {
6
+ static generate(outlineInfo, currentFocus) {
7
+ var processedData = currentFocus.type === 'uiCom' ? this.filterToFocusedComponent(outlineInfo, currentFocus.comId) : outlineInfo;
8
+ return this.generateTreeDescription(processedData, {
9
+ pageId: currentFocus.pageId,
10
+ comId: currentFocus.comId
11
+ });
12
+ }
13
+ static containsComponent(data, targetId) {
14
+ if (!data) return false;
15
+ if (data.id === targetId) return true;
16
+ if (data.slots && Array.isArray(data.slots)) {
17
+ return data.slots.some(slot => {
18
+ if (slot.components && Array.isArray(slot.components)) {
19
+ return slot.components.some(component => this.containsComponent(component, targetId));
20
+ }
21
+ return false;
22
+ });
23
+ }
24
+ return false;
25
+ }
26
+ static hasChildren(data) {
27
+ if (!(data !== null && data !== void 0 && data.slots) || !Array.isArray(data.slots)) {
28
+ return false;
29
+ }
30
+ return data.slots.some(slot => {
31
+ return slot.components && Array.isArray(slot.components) && slot.components.length > 0;
32
+ });
33
+ }
34
+ static filterToFocusedComponent(data, targetId) {
35
+ if (!data) return null;
36
+ if (data.id === targetId) {
37
+ return data;
38
+ }
39
+ if (data.slots && Array.isArray(data.slots)) {
40
+ var filteredSlots = data.slots.map(slot => {
41
+ if (slot.components && Array.isArray(slot.components)) {
42
+ var filteredComponents = slot.components.map(component => {
43
+ if (this.containsComponent(component, targetId)) {
44
+ return this.filterToFocusedComponent(component, targetId);
45
+ } else {
46
+ var hasChildComponents = this.hasChildren(component);
47
+ return _objectSpread2(_objectSpread2({}, component), {}, {
48
+ slots: undefined,
49
+ _hasCollapsedChildren: hasChildComponents
50
+ });
51
+ }
52
+ }).filter(Boolean);
53
+ return filteredComponents.length > 0 ? _objectSpread2(_objectSpread2({}, slot), {}, {
54
+ components: filteredComponents
55
+ }) : null;
56
+ }
57
+ return null;
58
+ }).filter(Boolean);
59
+ if (filteredSlots.length > 0) {
60
+ return _objectSpread2(_objectSpread2({}, data), {}, {
61
+ slots: filteredSlots
62
+ });
63
+ }
64
+ }
65
+ return null;
66
+ }
67
+ static generateTreeDescription(data, focusInfo) {
68
+ var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
69
+ var indent = ' '.repeat(level);
70
+ var result = '';
71
+ if (!data) {
72
+ return '无内容,代表内容为空';
73
+ }
74
+ if (Array.isArray(data)) {
75
+ if (data.length === 0) {
76
+ return '无内容,代表内容为空';
77
+ }
78
+ data.forEach(item => {
79
+ result += this.generateTreeDescription(item, focusInfo, level);
80
+ });
81
+ return result;
82
+ }
83
+ if (data.asRoot) {
84
+ var _data$slots;
85
+ if (Array.isArray((_data$slots = data.slots) === null || _data$slots === void 0 || (_data$slots = _data$slots[0]) === null || _data$slots === void 0 ? void 0 : _data$slots.components)) {
86
+ var _data$slots2;
87
+ (_data$slots2 = data.slots) === null || _data$slots2 === void 0 || (_data$slots2 = _data$slots2[0]) === null || _data$slots2 === void 0 || _data$slots2.components.forEach(component => {
88
+ result += this.generateTreeDescription(component, focusInfo, level);
89
+ });
90
+ return result;
91
+ }
92
+ }
93
+ if (data.title) {
94
+ var _data$def;
95
+ var namespace = (_data$def = data.def) === null || _data$def === void 0 ? void 0 : _data$def.namespace;
96
+ var isFocused = data.id === focusInfo.comId || data.id === focusInfo.pageId;
97
+ var focusMarker = isFocused ? ' 【当前聚焦】' : '';
98
+ var collapsedMarker = data._hasCollapsedChildren ? ' 【子组件已折叠】' : '';
99
+ result += "".concat(indent, "- ").concat(data.title, "[id=").concat(data.id, "]").concat(namespace ? "(".concat(ComponentsManager.getAbbreviation(namespace), ")") : '').concat(focusMarker).concat(collapsedMarker, "\n");
100
+ }
101
+ if (data.slots && Array.isArray(data.slots)) {
102
+ data.slots.forEach(slot => {
103
+ if (slot.components && Array.isArray(slot.components)) {
104
+ slot.components.forEach(component => {
105
+ result += this.generateTreeDescription(component, focusInfo, level + 1);
106
+ });
107
+ }
108
+ });
109
+ }
110
+ return result;
111
+ }
112
+ }
113
+ class FocusDescriptionGenerator {
114
+ static generate(currentFocus) {
115
+ var {
116
+ pageId,
117
+ comId,
118
+ title,
119
+ type
120
+ } = currentFocus !== null && currentFocus !== void 0 ? currentFocus : {};
121
+ if (!currentFocus || !currentFocus.pageId && !currentFocus.comId) {
122
+ return '当前没有聚焦到任何页面或组件。';
123
+ }
124
+ var focusDesc = '';
125
+ switch (type) {
126
+ case 'uiCom':
127
+ focusDesc = "\u7EC4\u4EF6(title=".concat(title, ",\u7EC4\u4EF6id=").concat(comId, ")");
128
+ break;
129
+ case 'page':
130
+ case 'section':
131
+ focusDesc = "\u9875\u9762(title=".concat(title, ",\u9875\u9762id=").concat(pageId, ")");
132
+ break;
133
+ default:
134
+ focusDesc = "\u672A\u77E5\u7C7B\u578B(title=".concat(title, ")");
135
+ }
136
+ return "\u5F53\u524D\u5DF2\u805A\u7126\u5230".concat(focusDesc, "\u4E2D\uFF0C\u540E\u7EED\u7528\u6237\u7684\u63D0\u95EE\uFF0C\u5173\u4E8E\"\u8FD9\u4E2A\"\u3001\"\u6B64\"\u3001\"\u6574\u4F53\"\uFF0C\u751A\u81F3\u4E0D\u63D0\u4E3B\u8BED\uFF0C\u90FD\u662F\u6307\u4EE3\u6B64\u5143\u7D20\u53CA\u5176\u5B50\u7EC4\u4EF6\u5185\u5BB9\u3002");
137
+ }
138
+ }
139
+ class FocusOutlineInfoManager extends OutlineInfoManager {
140
+ constructor(_ref) {
141
+ var {
142
+ api,
143
+ focusInfo
144
+ } = _ref;
145
+ super({
146
+ api
147
+ });
148
+ this.focusInfo = _objectSpread2({}, focusInfo);
149
+ this.focusPageOutlineInfo = focusInfo !== null && focusInfo !== void 0 && focusInfo.pageId ? this.getPageOutline(focusInfo.pageId) : null;
150
+ }
151
+ getFocusPageOutline() {
152
+ return this.focusPageOutlineInfo;
153
+ }
154
+ generateFocusHierarchy() {
155
+ var _this$focusInfo;
156
+ if (!this.focusPageOutlineInfo || !((_this$focusInfo = this.focusInfo) !== null && _this$focusInfo !== void 0 && _this$focusInfo.pageId)) {
157
+ return '无内容,代表内容为空';
158
+ }
159
+ return PageHierarchyGenerator.generate(this.focusPageOutlineInfo, this.focusInfo);
160
+ }
161
+ generateFocusDescription() {
162
+ return FocusDescriptionGenerator.generate(this.focusInfo);
163
+ }
164
+ }
165
+
166
+ export { FocusOutlineInfoManager };
167
+ //# sourceMappingURL=outline-focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-focus.js","sources":["../../../../src/agents/workspace-by-knowledges/utils/outline-focus.ts"],"sourcesContent":["import { OutlineInfoManager, type OutlineNode, type SlotInfo } from './outline-info';\nimport { ComponentsManager } from './components-manager';\nimport { FocusInfo } from '../types';\n\nclass PageHierarchyGenerator {\n static generate(outlineInfo: OutlineNode, currentFocus: FocusInfo): string {\n const processedData = currentFocus.type === 'uiCom'\n ? this.filterToFocusedComponent(outlineInfo, currentFocus.comId!)\n : outlineInfo;\n\n return this.generateTreeDescription(processedData as OutlineNode, {\n pageId: currentFocus.pageId,\n comId: currentFocus.comId,\n });\n }\n\n private static containsComponent(data: OutlineNode, targetId: string): boolean {\n if (!data) return false;\n if (data.id === targetId) return true;\n\n if (data.slots && Array.isArray(data.slots)) {\n return data.slots.some(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n return slot.components.some(component => this.containsComponent(component, targetId));\n }\n return false;\n });\n }\n return false;\n }\n\n private static hasChildren(data: OutlineNode): boolean {\n if (!data?.slots || !Array.isArray(data.slots)) {\n return false;\n }\n return data.slots.some(slot => {\n return slot.components && Array.isArray(slot.components) && slot.components.length > 0;\n });\n }\n\n private static filterToFocusedComponent(data: OutlineNode, targetId: string): OutlineNode | null {\n if (!data) return null;\n\n if (data.id === targetId) {\n return data;\n }\n\n if (data.slots && Array.isArray(data.slots)) {\n const filteredSlots = data.slots.map(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n const filteredComponents = slot.components.map(component => {\n if (this.containsComponent(component, targetId)) {\n return this.filterToFocusedComponent(component, targetId);\n } else {\n const hasChildComponents = this.hasChildren(component);\n return {\n ...component,\n slots: undefined,\n _hasCollapsedChildren: hasChildComponents\n };\n }\n }).filter(Boolean) as OutlineNode[];\n\n return filteredComponents.length > 0 ? { ...slot, components: filteredComponents } : null;\n }\n return null;\n }).filter(Boolean) as SlotInfo[];\n\n if (filteredSlots.length > 0) {\n return { ...data, slots: filteredSlots };\n }\n }\n return null;\n }\n\n private static generateTreeDescription(data: OutlineNode | OutlineNode[], focusInfo: FocusInfo, level = 0): string {\n const indent = ' '.repeat(level);\n let result = '';\n\n if (!data) {\n return '无内容,代表内容为空';\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n return '无内容,代表内容为空';\n }\n data.forEach(item => {\n result += this.generateTreeDescription(item, focusInfo, level);\n });\n return result;\n }\n\n if (data.asRoot) {\n if (Array.isArray(data.slots?.[0]?.components)) {\n data.slots?.[0]?.components.forEach(component => {\n result += this.generateTreeDescription(component, focusInfo, level);\n });\n return result;\n }\n }\n\n if (data.title) {\n const namespace = data.def?.namespace;\n const isFocused = data.id === focusInfo.comId ||\n data.id === focusInfo.pageId;\n const focusMarker = isFocused ? ' 【当前聚焦】' : '';\n const collapsedMarker = data._hasCollapsedChildren ? ' 【子组件已折叠】' : '';\n\n result += `${indent}- ${data.title}[id=${data.id}]${namespace ? `(${ComponentsManager.getAbbreviation(namespace)})` : ''}${focusMarker}${collapsedMarker}\\n`;\n }\n\n if (data.slots && Array.isArray(data.slots)) {\n data.slots.forEach(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n slot.components.forEach(component => {\n result += this.generateTreeDescription(component, focusInfo, level + 1);\n });\n }\n });\n }\n\n return result;\n }\n}\n\nclass FocusDescriptionGenerator {\n static generate(currentFocus: FocusInfo): string {\n const { pageId, comId, title, type } = currentFocus ?? {};\n\n if (!currentFocus || (!currentFocus.pageId && !currentFocus.comId)) {\n return '当前没有聚焦到任何页面或组件。';\n }\n\n let focusDesc = '';\n\n switch (type) {\n case 'uiCom':\n focusDesc = `组件(title=${title},组件id=${comId})`;\n break;\n case 'page':\n case 'section':\n focusDesc = `页面(title=${title},页面id=${pageId})`;\n break;\n default:\n focusDesc = `未知类型(title=${title})`;\n }\n\n return `当前已聚焦到${focusDesc}中,后续用户的提问,关于\"这个\"、\"此\"、\"整体\",甚至不提主语,都是指代此元素及其子组件内容。`;\n }\n}\n\nexport class FocusOutlineInfoManager extends OutlineInfoManager {\n private focusInfo: FocusInfo;\n private focusPageOutlineInfo: OutlineNode | null;\n\n constructor({ api, focusInfo }: { api: any, focusInfo: FocusInfo }) {\n super({ api });\n this.focusInfo = { ...focusInfo };\n this.focusPageOutlineInfo = focusInfo?.pageId ? this.getPageOutline(focusInfo.pageId) : null;\n }\n\n getFocusPageOutline(): OutlineNode | null {\n return this.focusPageOutlineInfo;\n }\n\n generateFocusHierarchy(): string {\n if (!this.focusPageOutlineInfo || !this.focusInfo?.pageId) {\n return '无内容,代表内容为空';\n }\n return PageHierarchyGenerator.generate(this.focusPageOutlineInfo, this.focusInfo);\n }\n\n generateFocusDescription(): string {\n return FocusDescriptionGenerator.generate(this.focusInfo);\n }\n}\n\n"],"names":["PageHierarchyGenerator","generate","outlineInfo","currentFocus","processedData","type","filterToFocusedComponent","comId","generateTreeDescription","pageId","containsComponent","data","targetId","id","slots","Array","isArray","some","slot","components","component","hasChildren","length","filteredSlots","map","filteredComponents","hasChildComponents","_objectSpread","undefined","_hasCollapsedChildren","filter","Boolean","focusInfo","level","arguments","indent","repeat","result","forEach","item","asRoot","_data$slots","_data$slots2","title","_data$def","namespace","def","isFocused","focusMarker","collapsedMarker","concat","ComponentsManager","getAbbreviation","FocusDescriptionGenerator","focusDesc","FocusOutlineInfoManager","OutlineInfoManager","constructor","_ref","api","focusPageOutlineInfo","getPageOutline","getFocusPageOutline","generateFocusHierarchy","_this$focusInfo","generateFocusDescription"],"mappings":";;;;AAIA,MAAMA,sBAAsB,CAAC;AAC3B,EAAA,OAAOC,QAAQA,CAACC,WAAwB,EAAEC,YAAuB,EAAU;AACzE,IAAA,IAAMC,aAAa,GAAGD,YAAY,CAACE,IAAI,KAAK,OAAO,GAC/C,IAAI,CAACC,wBAAwB,CAACJ,WAAW,EAAEC,YAAY,CAACI,KAAM,CAAC,GAC/DL,WAAW;AAEf,IAAA,OAAO,IAAI,CAACM,uBAAuB,CAACJ,aAAa,EAAiB;MAChEK,MAAM,EAAEN,YAAY,CAACM,MAAM;MAC3BF,KAAK,EAAEJ,YAAY,CAACI;AACtB,KAAC,CAAC;AACJ,EAAA;AAEA,EAAA,OAAeG,iBAAiBA,CAACC,IAAiB,EAAEC,QAAgB,EAAW;AAC7E,IAAA,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;AACvB,IAAA,IAAIA,IAAI,CAACE,EAAE,KAAKD,QAAQ,EAAE,OAAO,IAAI;AAErC,IAAA,IAAID,IAAI,CAACG,KAAK,IAAIC,KAAK,CAACC,OAAO,CAACL,IAAI,CAACG,KAAK,CAAC,EAAE;AAC3C,MAAA,OAAOH,IAAI,CAACG,KAAK,CAACG,IAAI,CAACC,IAAI,IAAI;AAC7B,QAAA,IAAIA,IAAI,CAACC,UAAU,IAAIJ,KAAK,CAACC,OAAO,CAACE,IAAI,CAACC,UAAU,CAAC,EAAE;AACrD,UAAA,OAAOD,IAAI,CAACC,UAAU,CAACF,IAAI,CAACG,SAAS,IAAI,IAAI,CAACV,iBAAiB,CAACU,SAAS,EAAER,QAAQ,CAAC,CAAC;AACvF,QAAA;AACA,QAAA,OAAO,KAAK;AACd,MAAA,CAAC,CAAC;AACJ,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,OAAeS,WAAWA,CAACV,IAAiB,EAAW;AACrD,IAAA,IAAI,EAACA,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,MAAA,IAAJA,IAAI,CAAEG,KAAK,CAAA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACL,IAAI,CAACG,KAAK,CAAC,EAAE;AAC9C,MAAA,OAAO,KAAK;AACd,IAAA;AACA,IAAA,OAAOH,IAAI,CAACG,KAAK,CAACG,IAAI,CAACC,IAAI,IAAI;AAC7B,MAAA,OAAOA,IAAI,CAACC,UAAU,IAAIJ,KAAK,CAACC,OAAO,CAACE,IAAI,CAACC,UAAU,CAAC,IAAID,IAAI,CAACC,UAAU,CAACG,MAAM,GAAG,CAAC;AACxF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEA,EAAA,OAAehB,wBAAwBA,CAACK,IAAiB,EAAEC,QAAgB,EAAsB;AAC/F,IAAA,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;AAEtB,IAAA,IAAIA,IAAI,CAACE,EAAE,KAAKD,QAAQ,EAAE;AACxB,MAAA,OAAOD,IAAI;AACb,IAAA;AAEA,IAAA,IAAIA,IAAI,CAACG,KAAK,IAAIC,KAAK,CAACC,OAAO,CAACL,IAAI,CAACG,KAAK,CAAC,EAAE;MAC3C,IAAMS,aAAa,GAAGZ,IAAI,CAACG,KAAK,CAACU,GAAG,CAACN,IAAI,IAAI;AAC3C,QAAA,IAAIA,IAAI,CAACC,UAAU,IAAIJ,KAAK,CAACC,OAAO,CAACE,IAAI,CAACC,UAAU,CAAC,EAAE;UACrD,IAAMM,kBAAkB,GAAGP,IAAI,CAACC,UAAU,CAACK,GAAG,CAACJ,SAAS,IAAI;YAC1D,IAAI,IAAI,CAACV,iBAAiB,CAACU,SAAS,EAAER,QAAQ,CAAC,EAAE;AAC/C,cAAA,OAAO,IAAI,CAACN,wBAAwB,CAACc,SAAS,EAAER,QAAQ,CAAC;AAC3D,YAAA,CAAC,MAAM;AACL,cAAA,IAAMc,kBAAkB,GAAG,IAAI,CAACL,WAAW,CAACD,SAAS,CAAC;AACtD,cAAA,OAAAO,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,SAAS,CAAA,EAAA,EAAA,EAAA;AACZN,gBAAAA,KAAK,EAAEc,SAAS;AAChBC,gBAAAA,qBAAqB,EAAEH;AAAkB,eAAA,CAAA;AAE7C,YAAA;AACF,UAAA,CAAC,CAAC,CAACI,MAAM,CAACC,OAAO,CAAkB;UAEnC,OAAON,kBAAkB,CAACH,MAAM,GAAG,CAAC,GAAAK,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAQT,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEC,YAAAA,UAAU,EAAEM;AAAkB,WAAA,CAAA,GAAK,IAAI;AAC3F,QAAA;AACA,QAAA,OAAO,IAAI;AACb,MAAA,CAAC,CAAC,CAACK,MAAM,CAACC,OAAO,CAAe;AAEhC,MAAA,IAAIR,aAAa,CAACD,MAAM,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAAK,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYhB,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEG,UAAAA,KAAK,EAAES;AAAa,SAAA,CAAA;AACxC,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,OAAef,uBAAuBA,CAACG,IAAiC,EAAEqB,SAAoB,EAAqB;AAAA,IAAA,IAAnBC,KAAK,GAAAC,SAAA,CAAAZ,MAAA,GAAA,CAAA,IAAAY,SAAA,CAAA,CAAA,CAAA,KAAAN,SAAA,GAAAM,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;AACvG,IAAA,IAAMC,MAAM,GAAG,IAAI,CAACC,MAAM,CAACH,KAAK,CAAC;IACjC,IAAII,MAAM,GAAG,EAAE;IAEf,IAAI,CAAC1B,IAAI,EAAE;AACT,MAAA,OAAO,YAAY;AACrB,IAAA;AAEA,IAAA,IAAII,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,EAAE;AACvB,MAAA,IAAIA,IAAI,CAACW,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,YAAY;AACrB,MAAA;AACAX,MAAAA,IAAI,CAAC2B,OAAO,CAACC,IAAI,IAAI;QACnBF,MAAM,IAAI,IAAI,CAAC7B,uBAAuB,CAAC+B,IAAI,EAAEP,SAAS,EAAEC,KAAK,CAAC;AAChE,MAAA,CAAC,CAAC;AACF,MAAA,OAAOI,MAAM;AACf,IAAA;IAEA,IAAI1B,IAAI,CAAC6B,MAAM,EAAE;AAAA,MAAA,IAAAC,WAAA;MACf,IAAI1B,KAAK,CAACC,OAAO,CAAA,CAAAyB,WAAA,GAAC9B,IAAI,CAACG,KAAK,MAAA,IAAA,IAAA2B,WAAA,KAAA,MAAA,IAAA,CAAAA,WAAA,GAAVA,WAAA,CAAa,CAAC,CAAC,MAAA,IAAA,IAAAA,WAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,WAAA,CAAiBtB,UAAU,CAAC,EAAE;AAAA,QAAA,IAAAuB,YAAA;QAC9C,CAAAA,YAAA,GAAA/B,IAAI,CAACG,KAAK,cAAA4B,YAAA,KAAA,MAAA,IAAA,CAAAA,YAAA,GAAVA,YAAA,CAAa,CAAC,CAAC,MAAA,IAAA,IAAAA,YAAA,KAAA,MAAA,IAAfA,YAAA,CAAiBvB,UAAU,CAACmB,OAAO,CAAClB,SAAS,IAAI;UAC/CiB,MAAM,IAAI,IAAI,CAAC7B,uBAAuB,CAACY,SAAS,EAAEY,SAAS,EAAEC,KAAK,CAAC;AACrE,QAAA,CAAC,CAAC;AACF,QAAA,OAAOI,MAAM;AACf,MAAA;AACF,IAAA;IAEA,IAAI1B,IAAI,CAACgC,KAAK,EAAE;AAAA,MAAA,IAAAC,SAAA;AACd,MAAA,IAAMC,SAAS,GAAA,CAAAD,SAAA,GAAGjC,IAAI,CAACmC,GAAG,MAAA,IAAA,IAAAF,SAAA,KAAA,MAAA,GAAA,MAAA,GAARA,SAAA,CAAUC,SAAS;AACrC,MAAA,IAAME,SAAS,GAAGpC,IAAI,CAACE,EAAE,KAAKmB,SAAS,CAACzB,KAAK,IAC3CI,IAAI,CAACE,EAAE,KAAKmB,SAAS,CAACvB,MAAM;AAC9B,MAAA,IAAMuC,WAAW,GAAGD,SAAS,GAAG,SAAS,GAAG,EAAE;MAC9C,IAAME,eAAe,GAAGtC,IAAI,CAACkB,qBAAqB,GAAG,WAAW,GAAG,EAAE;AAErEQ,MAAAA,MAAM,OAAAa,MAAA,CAAOf,MAAM,EAAA,IAAA,CAAA,CAAAe,MAAA,CAAKvC,IAAI,CAACgC,KAAK,UAAAO,MAAA,CAAOvC,IAAI,CAACE,EAAE,OAAAqC,MAAA,CAAIL,SAAS,GAAA,GAAA,CAAAK,MAAA,CAAOC,iBAAiB,CAACC,eAAe,CAACP,SAAS,CAAC,EAAA,GAAA,CAAA,GAAM,EAAE,CAAA,CAAAK,MAAA,CAAGF,WAAW,EAAAE,MAAA,CAAGD,eAAe,EAAA,IAAA,CAAI;AAC9J,IAAA;AAEA,IAAA,IAAItC,IAAI,CAACG,KAAK,IAAIC,KAAK,CAACC,OAAO,CAACL,IAAI,CAACG,KAAK,CAAC,EAAE;AAC3CH,MAAAA,IAAI,CAACG,KAAK,CAACwB,OAAO,CAACpB,IAAI,IAAI;AACzB,QAAA,IAAIA,IAAI,CAACC,UAAU,IAAIJ,KAAK,CAACC,OAAO,CAACE,IAAI,CAACC,UAAU,CAAC,EAAE;AACrDD,UAAAA,IAAI,CAACC,UAAU,CAACmB,OAAO,CAAClB,SAAS,IAAI;AACnCiB,YAAAA,MAAM,IAAI,IAAI,CAAC7B,uBAAuB,CAACY,SAAS,EAAEY,SAAS,EAAEC,KAAK,GAAG,CAAC,CAAC;AACzE,UAAA,CAAC,CAAC;AACJ,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,OAAOI,MAAM;AACf,EAAA;AACF;AAEA,MAAMgB,yBAAyB,CAAC;EAC9B,OAAOpD,QAAQA,CAACE,YAAuB,EAAU;IAC/C,IAAM;MAAEM,MAAM;MAAEF,KAAK;MAAEoC,KAAK;AAAEtC,MAAAA;KAAM,GAAGF,YAAY,KAAA,IAAA,IAAZA,YAAY,cAAZA,YAAY,GAAI,EAAE;AAEzD,IAAA,IAAI,CAACA,YAAY,IAAK,CAACA,YAAY,CAACM,MAAM,IAAI,CAACN,YAAY,CAACI,KAAM,EAAE;AAClE,MAAA,OAAO,iBAAiB;AAC1B,IAAA;IAEA,IAAI+C,SAAS,GAAG,EAAE;AAElB,IAAA,QAAQjD,IAAI;AACV,MAAA,KAAK,OAAO;QACViD,SAAS,GAAA,qBAAA,CAAAJ,MAAA,CAAeP,KAAK,sBAAAO,MAAA,CAAS3C,KAAK,EAAA,GAAA,CAAG;AAC9C,QAAA;AACF,MAAA,KAAK,MAAM;AACX,MAAA,KAAK,SAAS;QACZ+C,SAAS,GAAA,qBAAA,CAAAJ,MAAA,CAAeP,KAAK,sBAAAO,MAAA,CAASzC,MAAM,EAAA,GAAA,CAAG;AAC/C,QAAA;AACF,MAAA;AACE6C,QAAAA,SAAS,GAAA,iCAAA,CAAAJ,MAAA,CAAiBP,KAAK,EAAA,GAAA,CAAG;AACtC;IAEA,OAAA,sCAAA,CAAAO,MAAA,CAAgBI,SAAS,EAAA,0QAAA,CAAA;AAC3B,EAAA;AACF;AAEO,MAAMC,uBAAuB,SAASC,kBAAkB,CAAC;EAI9DC,WAAWA,CAAAC,IAAA,EAAyD;IAAA,IAAxD;MAAEC,GAAG;AAAE3B,MAAAA;AAA8C,KAAC,GAAA0B,IAAA;AAChE,IAAA,KAAK,CAAC;AAAEC,MAAAA;AAAI,KAAC,CAAC;AACd,IAAA,IAAI,CAAC3B,SAAS,GAAAL,cAAA,CAAA,EAAA,EAAQK,SAAS,CAAE;IACjC,IAAI,CAAC4B,oBAAoB,GAAG5B,SAAS,aAATA,SAAS,KAAA,MAAA,IAATA,SAAS,CAAEvB,MAAM,GAAG,IAAI,CAACoD,cAAc,CAAC7B,SAAS,CAACvB,MAAM,CAAC,GAAG,IAAI;AAC9F,EAAA;AAEAqD,EAAAA,mBAAmBA,GAAuB;IACxC,OAAO,IAAI,CAACF,oBAAoB;AAClC,EAAA;AAEAG,EAAAA,sBAAsBA,GAAW;AAAA,IAAA,IAAAC,eAAA;AAC/B,IAAA,IAAI,CAAC,IAAI,CAACJ,oBAAoB,IAAI,GAAAI,eAAA,GAAC,IAAI,CAAChC,SAAS,MAAA,IAAA,IAAAgC,eAAA,eAAdA,eAAA,CAAgBvD,MAAM,CAAA,EAAE;AACzD,MAAA,OAAO,YAAY;AACrB,IAAA;IACA,OAAOT,sBAAsB,CAACC,QAAQ,CAAC,IAAI,CAAC2D,oBAAoB,EAAE,IAAI,CAAC5B,SAAS,CAAC;AACnF,EAAA;AAEAiC,EAAAA,wBAAwBA,GAAW;AACjC,IAAA,OAAOZ,yBAAyB,CAACpD,QAAQ,CAAC,IAAI,CAAC+B,SAAS,CAAC;AAC3D,EAAA;AACF;;;;"}
@@ -0,0 +1,430 @@
1
+ import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { ComponentsManager } from './components-manager.js';
3
+
4
+ // 设计器给出的 OutlineNode
5
+
6
+ var ROOT_NAMESPACE = 'root';
7
+ var ROOT_ID = '_root_';
8
+ var ROOT_SLOT_ID = '_rootSlot_';
9
+ class OutlineInfoManager {
10
+ constructor(_ref) {
11
+ var {
12
+ api
13
+ } = _ref;
14
+ _defineProperty(this, "getOriginOutlineRootCom", originOutline => {
15
+ var _originOutline$compon, _originOutline$compon2;
16
+ return originOutline !== null && originOutline !== void 0 && (_originOutline$compon = originOutline.components) !== null && _originOutline$compon !== void 0 && (_originOutline$compon = _originOutline$compon[0]) !== null && _originOutline$compon !== void 0 && _originOutline$compon.asRoot ? originOutline === null || originOutline === void 0 || (_originOutline$compon2 = originOutline.components) === null || _originOutline$compon2 === void 0 ? void 0 : _originOutline$compon2[0] : null;
17
+ });
18
+ this.api = api;
19
+ }
20
+ getOutlineInfo(id, type) {
21
+ if (type === "logicCom") {
22
+ var _this$api;
23
+ return (_this$api = this.api) === null || _this$api === void 0 || (_this$api = _this$api.logicCom) === null || _this$api === void 0 || (_this$api = _this$api.api) === null || _this$api === void 0 ? void 0 : _this$api.getOutlineInfo(id);
24
+ } else if (type === "uiCom") {
25
+ var _this$api2;
26
+ return (_this$api2 = this.api) === null || _this$api2 === void 0 || (_this$api2 = _this$api2.uiCom) === null || _this$api2 === void 0 || (_this$api2 = _this$api2.api) === null || _this$api2 === void 0 ? void 0 : _this$api2.getOutlineInfo(id);
27
+ } else {
28
+ var _this$api3;
29
+ return (_this$api3 = this.api) === null || _this$api3 === void 0 || (_this$api3 = _this$api3.page) === null || _this$api3 === void 0 || (_this$api3 = _this$api3.api) === null || _this$api3 === void 0 ? void 0 : _this$api3.getOutlineInfo(id);
30
+ }
31
+ }
32
+ getPageOutline(pageId) {
33
+ return this.normalizePageOutline(this.getOutlineInfo(pageId, 'page'), pageId);
34
+ }
35
+ getUiComOutline(componentId) {
36
+ return this.getOutlineInfo(componentId, 'uiCom');
37
+ }
38
+ getLogicComOutline(componentId) {
39
+ return this.getOutlineInfo(componentId, 'logicCom');
40
+ }
41
+ getPageMetaInfo(pageId) {
42
+ var _this$getOriginOutlin;
43
+ var originOutlineJson = this.getOutlineInfo(pageId, 'page');
44
+ var rootId = this.getOriginOutlineRootCom(originOutlineJson) ? (_this$getOriginOutlin = this.getOriginOutlineRootCom(originOutlineJson)) === null || _this$getOriginOutlin === void 0 ? void 0 : _this$getOriginOutlin.id : undefined;
45
+ return {
46
+ pageId,
47
+ rootId
48
+ };
49
+ }
50
+ normalizePageOutline(outline, pageId) {
51
+ if ((outline === null || outline === void 0 ? void 0 : outline.id) === pageId) {
52
+ var _outline$layout, _outline$layout2, _rootNode$style;
53
+ var rootNode = outline;
54
+ var rootSlots = [{
55
+ id: ROOT_SLOT_ID,
56
+ components: outline === null || outline === void 0 ? void 0 : outline.components,
57
+ layout: outline === null || outline === void 0 ? void 0 : outline.layout
58
+ }];
59
+ var whInfo = {
60
+ width: outline === null || outline === void 0 || (_outline$layout = outline.layout) === null || _outline$layout === void 0 ? void 0 : _outline$layout.width,
61
+ height: outline === null || outline === void 0 || (_outline$layout2 = outline.layout) === null || _outline$layout2 === void 0 ? void 0 : _outline$layout2.height
62
+ };
63
+
64
+ // 说明有asRoot组件,把asRoot的信息往上提取一层
65
+ var rootCom = this.getOriginOutlineRootCom(outline);
66
+ if (!!rootCom) {
67
+ rootNode = rootCom;
68
+ rootSlots = rootNode.slots;
69
+ }
70
+ var normalized = _objectSpread2(_objectSpread2({}, rootNode), {}, {
71
+ style: _objectSpread2(_objectSpread2({}, (_rootNode$style = rootNode.style) !== null && _rootNode$style !== void 0 ? _rootNode$style : {}), whInfo),
72
+ slots: rootSlots,
73
+ def: {
74
+ version: '1.0.0',
75
+ namespace: ROOT_NAMESPACE
76
+ },
77
+ asRoot: true
78
+ });
79
+ return {
80
+ id: pageId,
81
+ title: outline.title,
82
+ // 注意用的是页面的title
83
+ slots: [{
84
+ id: ROOT_ID,
85
+ components: [normalized]
86
+ }]
87
+ };
88
+ }
89
+ return {
90
+ id: pageId,
91
+ title: outline.title,
92
+ slots: [{
93
+ id: ROOT_ID,
94
+ components: [outline]
95
+ }]
96
+ };
97
+ }
98
+ getComponentIdToTitleMap(pageId) {
99
+ var _outline$title;
100
+ var outline = this.getPageOutline(pageId);
101
+ var componentMap = new Map();
102
+ componentMap.set(ROOT_ID, (_outline$title = outline.title) !== null && _outline$title !== void 0 ? _outline$title : '页面根节点');
103
+ function traverse(data) {
104
+ if (!data) return;
105
+ if (Array.isArray(data)) {
106
+ data.forEach(item => traverse(item));
107
+ return;
108
+ }
109
+ if (data.id && data.title) {
110
+ componentMap.set(data.id, data.title);
111
+ }
112
+ if (data.slots && Array.isArray(data.slots)) {
113
+ data.slots.forEach(slot => {
114
+ if (slot.components && Array.isArray(slot.components)) {
115
+ slot.components.forEach(component => traverse(component));
116
+ }
117
+ });
118
+ }
119
+ }
120
+ traverse(outline);
121
+ return componentMap;
122
+ }
123
+ generateJSXByPageId(pageId) {
124
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
125
+ var outline = this.getPageOutline(pageId);
126
+ return this.generateJSXByOutline(outline, targetComponentIds);
127
+ }
128
+ generateJSXByOutline(outlineInfo) {
129
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
130
+ return OutlineJSXGenerator.generate(outlineInfo, targetComponentIds);
131
+ }
132
+ findParentNodeByComId(pageOutlineInfo, comId) {
133
+ function helper(node) {
134
+ if (!node || !node.slots) return null;
135
+ for (var slot of node.slots || []) {
136
+ if (slot.components && Array.isArray(slot.components)) {
137
+ for (var component of slot.components) {
138
+ if (component.id === comId) {
139
+ return node;
140
+ }
141
+ // 向下递归
142
+ var found = helper(component);
143
+ if (found) return found;
144
+ }
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ return helper(pageOutlineInfo);
150
+ }
151
+ }
152
+ class OutlineJSXGenerator {
153
+ /**
154
+ * 遮蔽base64和svg代码,避免DSL过大
155
+ */
156
+ static maskLargeContent(obj) {
157
+ if (obj === null || obj === undefined) {
158
+ return obj;
159
+ }
160
+
161
+ // 如果是字符串,检查是否为base64或svg
162
+ if (typeof obj === 'string') {
163
+ // 检测base64图片(data:image开头或长base64字符串)
164
+ if (obj.startsWith('data:image/') || /^[A-Za-z0-9+/=]{100,}$/.test(obj)) {
165
+ var prefix = obj.substring(0, 22);
166
+ return "[BASE64_MASKED:".concat(prefix, "...length:").concat(obj.length, "]");
167
+ }
168
+ // 检测SVG代码
169
+ if (obj.includes('<svg') || obj.includes('<?xml') && obj.includes('svg')) {
170
+ var length = obj.length;
171
+ if (length > 200) {
172
+ return "[SVG_MASKED:length:".concat(length, "]");
173
+ }
174
+ }
175
+ return obj;
176
+ }
177
+
178
+ // 如果是数组,递归处理每个元素
179
+ if (Array.isArray(obj)) {
180
+ return obj.map(item => this.maskLargeContent(item));
181
+ }
182
+
183
+ // 如果是对象,递归处理每个属性
184
+ if (typeof obj === 'object') {
185
+ var result = {};
186
+ for (var key in obj) {
187
+ if (obj.hasOwnProperty(key)) {
188
+ result[key] = this.maskLargeContent(obj[key]);
189
+ }
190
+ }
191
+ return result;
192
+ }
193
+ return obj;
194
+ }
195
+ static generate(outlineInfo) {
196
+ var _ancestorNodes$;
197
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
198
+ this.namespacesSet.clear();
199
+ if (targetComponentIds.length === 0) {
200
+ var _jsx = this.processData(outlineInfo);
201
+ return {
202
+ id: outlineInfo.id,
203
+ jsx: _jsx,
204
+ namespaces: Array.from(this.namespacesSet)
205
+ };
206
+ }
207
+ if (targetComponentIds.length === 1) {
208
+ var targetNode = this.findNodeById(outlineInfo, targetComponentIds[0]);
209
+ if (targetNode) {
210
+ var _jsx2 = this.processData(targetNode);
211
+ return {
212
+ id: targetNode.id,
213
+ jsx: _jsx2,
214
+ namespaces: Array.from(this.namespacesSet)
215
+ };
216
+ }
217
+ }
218
+ var ancestorNodes = this.findMinimalCommonAncestors(outlineInfo, targetComponentIds);
219
+ var jsx = ancestorNodes.map(node => this.processData(node)).join('\n');
220
+ return {
221
+ id: (_ancestorNodes$ = ancestorNodes[0]) === null || _ancestorNodes$ === void 0 ? void 0 : _ancestorNodes$.id,
222
+ jsx,
223
+ namespaces: Array.from(this.namespacesSet)
224
+ };
225
+ }
226
+ static findMinimalCommonAncestors(root, targetIds) {
227
+ if (targetIds.length === 0) return [root];
228
+ if (targetIds.length === 1) {
229
+ var targetNode = this.findNodeById(root, targetIds[0]);
230
+ return targetNode ? [targetNode] : [];
231
+ }
232
+ var paths = [];
233
+ for (var targetId of targetIds) {
234
+ var path = this.findPathToNode(root, targetId);
235
+ if (path) {
236
+ paths.push(path);
237
+ }
238
+ }
239
+ if (paths.length === 0) {
240
+ return [];
241
+ }
242
+ if (paths.length === 1) {
243
+ return [paths[0][paths[0].length - 1]];
244
+ }
245
+ var commonAncestor = null;
246
+ var minLength = Math.min(...paths.map(path => path.length));
247
+ var _loop = function _loop(i) {
248
+ var currentNodes = paths.map(path => path[i]);
249
+ var firstNode = currentNodes[0];
250
+ if (currentNodes.every(node => node.id === firstNode.id)) {
251
+ commonAncestor = firstNode;
252
+ } else {
253
+ return 1; // break
254
+ }
255
+ };
256
+ for (var i = 0; i < minLength; i++) {
257
+ if (_loop(i)) break;
258
+ }
259
+ if (commonAncestor) {
260
+ return [commonAncestor];
261
+ }
262
+ return [root];
263
+ }
264
+ static findPathToNode(root, targetId) {
265
+ if (root.id === targetId) {
266
+ return [root];
267
+ }
268
+ if (root.slots && Array.isArray(root.slots)) {
269
+ for (var slot of root.slots) {
270
+ if (slot.components && Array.isArray(slot.components)) {
271
+ for (var component of slot.components) {
272
+ var path = this.findPathToNode(component, targetId);
273
+ if (path) {
274
+ return [root, ...path];
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ return null;
281
+ }
282
+ static findNodeById(root, targetId) {
283
+ if (root.id === targetId) {
284
+ return root;
285
+ }
286
+ if (root.slots && Array.isArray(root.slots)) {
287
+ for (var slot of root.slots) {
288
+ if (slot.components && Array.isArray(slot.components)) {
289
+ for (var component of slot.components) {
290
+ var found = this.findNodeById(component, targetId);
291
+ if (found) return found;
292
+ }
293
+ }
294
+ }
295
+ }
296
+ return null;
297
+ }
298
+ static extractLayout(style) {
299
+ if (!style) return {};
300
+ var layout = {};
301
+ ['width', 'height', 'margin', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'].forEach(prop => {
302
+ if (style[prop] !== undefined) {
303
+ layout[prop] = style[prop];
304
+ }
305
+ });
306
+ if (style.layout !== undefined) {
307
+ if (style.layout === 'flex-column' || style.layout === 'flex') {
308
+ layout.display = 'flex';
309
+ layout.flexDirection = 'column';
310
+ }
311
+ if (style.layout === 'flex-row') {
312
+ layout.display = 'flex';
313
+ layout.flexDirection = 'row';
314
+ }
315
+ if (style.alignItems) layout.alignItems = style.alignItems;
316
+ if (style.justifyContent) layout.justifyContent = style.justifyContent;
317
+ if (style.layout === 'absolute') {
318
+ layout.position = 'relative';
319
+ }
320
+ }
321
+ if (style.position === 'absolute') {
322
+ ['left', 'right', 'top', 'bottom', 'widthFact', 'heightFact', 'position'].forEach(prop => {
323
+ if (style[prop] !== undefined) {
324
+ layout[prop] = style[prop];
325
+ }
326
+ });
327
+ }
328
+ return layout;
329
+ }
330
+ static extractStyleArray(style) {
331
+ if (!(style !== null && style !== void 0 && style.css) || !Array.isArray(style.css)) return [];
332
+ return style.css.map(cssItem => {
333
+ var selector = cssItem.selector || '';
334
+ var cssProps = cssItem.css || {};
335
+ var cssString = Object.entries(cssProps).map(_ref2 => {
336
+ var [key, value] = _ref2;
337
+ return "".concat(key, ": '").concat(value, "'");
338
+ }).join(', ');
339
+ return "".concat(selector, " : { ").concat(cssString, " }");
340
+ });
341
+ }
342
+ static processData(node) {
343
+ var _node$def;
344
+ if (!node) return '';
345
+ if (Array.isArray(node)) {
346
+ return node.map(item => this.processData(item)).filter(Boolean).join('\n');
347
+ }
348
+ if (node.id && (_node$def = node.def) !== null && _node$def !== void 0 && _node$def.namespace) {
349
+ return this.generateComponentJSX(node);
350
+ }
351
+ if (node.slots && Array.isArray(node.slots)) {
352
+ return node.slots.map(slot => {
353
+ if (slot.components && Array.isArray(slot.components)) {
354
+ return this.processData(slot.components);
355
+ }
356
+ return '';
357
+ }).filter(Boolean).join('');
358
+ }
359
+ return '';
360
+ }
361
+ static generateComponentJSX(node) {
362
+ var _node$def2;
363
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
364
+ if (!(node !== null && node !== void 0 && node.id)) return '';
365
+ var namespace = (_node$def2 = node.def) === null || _node$def2 === void 0 ? void 0 : _node$def2.namespace;
366
+ if (namespace !== ROOT_NAMESPACE) {
367
+ this.namespacesSet.add(namespace);
368
+ }
369
+ var layout = this.extractLayout(node.style);
370
+ var styleArray = this.extractStyleArray(node.style);
371
+ var jsx;
372
+ var namespaceTag = ComponentsManager.getAbbreviation(namespace);
373
+
374
+ // 遮蔽data中的base64和svg内容
375
+ var maskedData = node.data ? this.maskLargeContent(node.data) : null;
376
+ if (node.asRoot) {
377
+ jsx = "<".concat(ROOT_NAMESPACE, " id=\"").concat(ROOT_ID, "\"") + (maskedData ? " data={".concat(JSON.stringify(maskedData), "}") : '');
378
+ } else {
379
+ jsx = "<".concat(namespaceTag, " id=\"").concat(node.id, "\" title=\"").concat(node.title, "\"") + (maskedData ? " data={".concat(JSON.stringify(maskedData), "}") : '');
380
+ }
381
+ if (Object.keys(layout).length > 0) {
382
+ jsx += " layout={".concat(JSON.stringify(layout), "}");
383
+ }
384
+ if (styleArray.length > 0) {
385
+ // 遮蔽styleArray中的base64和svg内容
386
+ var maskedStyleArray = styleArray.map(style => this.maskLargeContent(style));
387
+ jsx += " styleAry={[".concat(maskedStyleArray.map(style => "\"".concat(style, "\"")).join(', '), "]}");
388
+ }
389
+ jsx += ' >';
390
+ var slotsJSX = this.generateSlotsJSX(node.slots || [], indent + ' ');
391
+ if (slotsJSX) {
392
+ jsx += slotsJSX;
393
+ jsx += "\n".concat(indent, "</").concat(namespaceTag, ">");
394
+ } else {
395
+ jsx += ' />';
396
+ }
397
+ return jsx;
398
+ }
399
+ static generateSlotsJSX(slots) {
400
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
401
+ if (!slots || slots.length === 0) return '';
402
+ var slotsJSX = '';
403
+ slots.forEach(slot => {
404
+ if (slot.id) {
405
+ slotsJSX += "\n".concat(indent, "<slots.").concat(slot.id);
406
+ if (slot.title) {
407
+ slotsJSX += " title=\"".concat(slot.title, "\"");
408
+ }
409
+ if (slot.layout) {
410
+ slotsJSX += " layout={".concat(JSON.stringify(this.extractLayout(slot.layout)), "}");
411
+ }
412
+ slotsJSX += '>';
413
+ if (slot.components && Array.isArray(slot.components)) {
414
+ slot.components.forEach(component => {
415
+ var childJSX = this.generateComponentJSX(component, indent + ' ');
416
+ if (childJSX) {
417
+ slotsJSX += "\n".concat(indent, " ").concat(childJSX);
418
+ }
419
+ });
420
+ }
421
+ slotsJSX += "\n".concat(indent, "</slots.").concat(slot.id, ">");
422
+ }
423
+ });
424
+ return slotsJSX;
425
+ }
426
+ }
427
+ _defineProperty(OutlineJSXGenerator, "namespacesSet", new Set());
428
+
429
+ export { OutlineInfoManager };
430
+ //# sourceMappingURL=outline-info.js.map