@next-bricks/visual-builder 1.39.15 → 1.39.17

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 (125) hide show
  1. package/dist/bricks.json +10 -10
  2. package/dist/chunks/{5522.678c03f6.js → 4577.f016e9de.js} +3 -3
  3. package/dist/chunks/4577.f016e9de.js.map +1 -0
  4. package/dist/chunks/6411.40f47da3.js +3 -0
  5. package/dist/chunks/6411.40f47da3.js.map +1 -0
  6. package/dist/chunks/7085.3c330b29.js +3 -0
  7. package/dist/chunks/7085.3c330b29.js.map +1 -0
  8. package/dist/chunks/9653.ac443b19.js +2 -0
  9. package/dist/chunks/9653.ac443b19.js.map +1 -0
  10. package/dist/chunks/chat-conversation.0ffc333f.js +3 -0
  11. package/dist/chunks/chat-conversation.0ffc333f.js.map +1 -0
  12. package/dist/chunks/chat-preview.36976c55.js.map +1 -1
  13. package/dist/chunks/contract-select.252b9e45.js +3 -0
  14. package/dist/chunks/contract-select.252b9e45.js.map +1 -0
  15. package/dist/chunks/generate-snippets-context-menu.56acf448.js.map +1 -1
  16. package/dist/chunks/main.1cb52df3.js +2 -0
  17. package/dist/chunks/{main.1c5337dd.js.map → main.1cb52df3.js.map} +1 -1
  18. package/dist/chunks/page-arch-node.379284ad.js +3 -0
  19. package/dist/chunks/page-arch-node.379284ad.js.map +1 -0
  20. package/dist/chunks/pre-generated-config-preview.cfbc2a1e.js.map +1 -1
  21. package/dist/chunks/pre-generated-config.a027788b.js.map +1 -1
  22. package/dist/chunks/pre-generated-container.dcfa8cc9.js.map +1 -1
  23. package/dist/chunks/pre-generated-preview.8e699675.js.map +1 -1
  24. package/dist/chunks/pre-generated-table-view.8a9d5527.js.map +1 -1
  25. package/dist/chunks/property-editor.dea9895b.js +2 -0
  26. package/dist/chunks/property-editor.dea9895b.js.map +1 -0
  27. package/dist/chunks/raw-data-preview.0bf12da3.js.map +1 -1
  28. package/dist/chunks/raw-metric-preview.c503481e.js.map +1 -1
  29. package/dist/chunks/workbench-action-list.c67329ed.js.map +1 -1
  30. package/dist/chunks/workbench-action.5b993227.js.map +1 -1
  31. package/dist/chunks/workbench-pane.5c4866a6.js +3 -0
  32. package/dist/chunks/workbench-pane.5c4866a6.js.map +1 -0
  33. package/dist/chunks/workbench-sidebar.01731e99.js.map +1 -1
  34. package/dist/chunks/{workbench-tree.e71a583f.js → workbench-tree.7097bd88.js} +3 -3
  35. package/dist/chunks/workbench-tree.7097bd88.js.map +1 -0
  36. package/dist/examples.json +47 -5
  37. package/dist/index.93f39de8.js +2 -0
  38. package/dist/{index.90916d4c.js.map → index.93f39de8.js.map} +1 -1
  39. package/dist/manifest.json +217 -63
  40. package/dist/types.json +36 -36
  41. package/dist-types/chat-conversation/index.d.ts +7 -1
  42. package/dist-types/chat-preview/index.d.ts +20 -1
  43. package/dist-types/contract-select/index.d.ts +16 -1
  44. package/dist-types/generate-snippets-context-menu/index.d.ts +17 -1
  45. package/dist-types/page-arch-node/index.d.ts +25 -1
  46. package/dist-types/pre-generated-config/index.d.ts +16 -1
  47. package/dist-types/pre-generated-config-preview/index.d.ts +13 -1
  48. package/dist-types/pre-generated-container/index.d.ts +3 -1
  49. package/dist-types/pre-generated-preview/index.d.ts +6 -1
  50. package/dist-types/pre-generated-table-view/index.d.ts +1 -1
  51. package/dist-types/property-editor/index.d.ts +10 -4
  52. package/dist-types/raw-data-preview/index.d.ts +9 -1
  53. package/dist-types/raw-metric-preview/index.d.ts +8 -1
  54. package/dist-types/workbench-action/index.d.ts +7 -0
  55. package/dist-types/workbench-action-list/index.d.ts +3 -0
  56. package/dist-types/workbench-pane/index.d.ts +4 -0
  57. package/dist-types/workbench-sidebar/index.d.ts +2 -0
  58. package/dist-types/workbench-tree/index.d.ts +19 -6
  59. package/docs/chat-conversation.md +51 -31
  60. package/docs/chat-conversation.react.md +115 -0
  61. package/docs/chat-preview.md +83 -0
  62. package/docs/chat-preview.react.md +105 -0
  63. package/docs/contract-select.md +97 -0
  64. package/docs/contract-select.react.md +95 -0
  65. package/docs/generate-snippets-context-menu.md +141 -0
  66. package/docs/generate-snippets-context-menu.react.md +134 -0
  67. package/docs/page-arch-node.md +87 -1
  68. package/docs/page-arch-node.react.md +97 -0
  69. package/docs/pre-generated-config-preview.md +74 -0
  70. package/docs/pre-generated-config-preview.react.md +82 -0
  71. package/docs/pre-generated-config.md +96 -0
  72. package/docs/pre-generated-config.react.md +78 -0
  73. package/docs/pre-generated-container.md +56 -0
  74. package/docs/pre-generated-container.react.md +62 -0
  75. package/docs/pre-generated-preview.md +83 -0
  76. package/docs/pre-generated-preview.react.md +92 -0
  77. package/docs/pre-generated-table-view.md +46 -0
  78. package/docs/pre-generated-table-view.react.md +36 -0
  79. package/docs/property-editor.md +44 -1
  80. package/docs/property-editor.react.md +97 -0
  81. package/docs/raw-data-preview.md +75 -1643
  82. package/docs/raw-data-preview.react.md +154 -0
  83. package/docs/raw-metric-preview.md +93 -0
  84. package/docs/raw-metric-preview.react.md +94 -0
  85. package/docs/workbench-action-list.md +80 -0
  86. package/docs/workbench-action-list.react.md +85 -0
  87. package/docs/workbench-action.md +80 -0
  88. package/docs/workbench-action.react.md +76 -0
  89. package/docs/workbench-history-action.md +42 -1
  90. package/docs/workbench-history-action.react.md +54 -0
  91. package/docs/workbench-pane.md +105 -0
  92. package/docs/workbench-pane.react.md +90 -0
  93. package/docs/workbench-sidebar.md +88 -0
  94. package/docs/workbench-sidebar.react.md +66 -0
  95. package/docs/workbench-tree.md +217 -0
  96. package/docs/workbench-tree.react.md +180 -0
  97. package/package.json +2 -2
  98. package/dist/chunks/36.b158228e.js +0 -3
  99. package/dist/chunks/36.b158228e.js.map +0 -1
  100. package/dist/chunks/5522.678c03f6.js.map +0 -1
  101. package/dist/chunks/7085.c58ac475.js +0 -3
  102. package/dist/chunks/7085.c58ac475.js.map +0 -1
  103. package/dist/chunks/9653.e857fdaf.js +0 -2
  104. package/dist/chunks/9653.e857fdaf.js.map +0 -1
  105. package/dist/chunks/chat-conversation.d873f6d5.js +0 -3
  106. package/dist/chunks/chat-conversation.d873f6d5.js.map +0 -1
  107. package/dist/chunks/contract-select.ff891ded.js +0 -3
  108. package/dist/chunks/contract-select.ff891ded.js.map +0 -1
  109. package/dist/chunks/main.1c5337dd.js +0 -2
  110. package/dist/chunks/page-arch-node.974674c0.js +0 -3
  111. package/dist/chunks/page-arch-node.974674c0.js.map +0 -1
  112. package/dist/chunks/property-editor.6de6adf4.js +0 -2
  113. package/dist/chunks/property-editor.6de6adf4.js.map +0 -1
  114. package/dist/chunks/workbench-pane.7e85de42.js +0 -3
  115. package/dist/chunks/workbench-pane.7e85de42.js.map +0 -1
  116. package/dist/chunks/workbench-tree.e71a583f.js.map +0 -1
  117. package/dist/index.90916d4c.js +0 -2
  118. /package/dist/chunks/{5522.678c03f6.js.LICENSE.txt → 4577.f016e9de.js.LICENSE.txt} +0 -0
  119. /package/dist/chunks/{36.b158228e.js.LICENSE.txt → 6411.40f47da3.js.LICENSE.txt} +0 -0
  120. /package/dist/chunks/{7085.c58ac475.js.LICENSE.txt → 7085.3c330b29.js.LICENSE.txt} +0 -0
  121. /package/dist/chunks/{chat-conversation.d873f6d5.js.LICENSE.txt → chat-conversation.0ffc333f.js.LICENSE.txt} +0 -0
  122. /package/dist/chunks/{contract-select.ff891ded.js.LICENSE.txt → contract-select.252b9e45.js.LICENSE.txt} +0 -0
  123. /package/dist/chunks/{page-arch-node.974674c0.js.LICENSE.txt → page-arch-node.379284ad.js.LICENSE.txt} +0 -0
  124. /package/dist/chunks/{workbench-pane.7e85de42.js.LICENSE.txt → workbench-pane.5c4866a6.js.LICENSE.txt} +0 -0
  125. /package/dist/chunks/{workbench-tree.e71a583f.js.LICENSE.txt → workbench-tree.7097bd88.js.LICENSE.txt} +0 -0
@@ -1,9 +1,34 @@
1
- 用于 Visual Builder 的智能聊天对话列表
1
+ ---
2
+ tagName: visual-builder.chat-conversation
3
+ displayName: WrappedVisualBuilderChatConversation
4
+ description: 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # visual-builder.chat-conversation
10
+
11
+ > 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | ------------- | ----------- | ---- | ------ | ------------------------------------------------------------------------------- |
17
+ | messages | `Message[]` | 否 | - | 对话消息列表,包含用户和 AI 助手的消息,支持流式(partial)和失败(failed)状态 |
18
+ | errorBoundary | `boolean` | 否 | - | 是否为解析出的砖块启用错误边界,防止单个砖块异常导致整个预览崩溃 |
19
+
20
+ ## Events
21
+
22
+ | 事件 | detail | 说明 |
23
+ | ----------------- | ------------------------------------ | ---------------------------------------- |
24
+ | storyboard.update | `BrickConf[]` — 解析出的砖块配置列表 | 从 AI 回复中解析出新的 Storyboard 时触发 |
2
25
 
3
26
  ## Examples
4
27
 
5
28
  ### Basic
6
29
 
30
+ 展示包含用户消息和 AI 回复的完整对话列表,AI 回复中嵌入了 Storyboard 代码块。
31
+
7
32
  ````yaml preview
8
33
  brick: visual-builder.chat-conversation
9
34
  properties:
@@ -16,9 +41,9 @@ properties:
16
41
  好的,我们来逐步确认页面的各个区块需求。
17
42
 
18
43
  1. **页头区**:您需要在这个区域放置什么内容?比如标题、横幅图片或者搜索框等。
19
- 2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有“管理”、“刷新”、“新建”、“删除”、“执行”、“导入”和“导出”,这些都足够了吗?
44
+ 2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有"管理"、"刷新"、"新建"、"删除"、"执行"、"导入"和"导出",这些都足够了吗?
20
45
  3. **标签导航区**:是否需要多个标签页?如果有,需要显示哪些内容或数据?
21
- 4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?“最近访问”和“基础筛选”需要哪些具体筛选条件?
46
+ 4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?"最近访问"和"基础筛选"需要哪些具体筛选条件?
22
47
  5. **列表区**:列表中应显示主机的哪些属性?例如,是否显示`主机名`、`IP`、`供应商`等信息?是否需要编辑和删除功能?列表是否可排序?用户是否可以多选列表项?分页功能需要吗?
23
48
 
24
49
  请根据您的需求回答这些问题,或者告诉我哪些区块的默认设置即可。
@@ -40,43 +65,19 @@ properties:
40
65
  ```
41
66
 
42
67
  ```easy_cmd_vb_block_page
43
- [{"uuid": "96e55a2a556049eba1e5c1a8cd1e6ef3", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "包含新建和删除按钮", "user_desc": "", "storyboard": null, "type": "block", "name": "全局操作区", "children": ["d7ef5946776445ba96ebf2beb2f680a5", "da3e65baf08d4fc28b938d1efd768265"], "parent": "", "properties": null, "hasContainer": false}, {"uuid": "d7ef5946776445ba96ebf2beb2f680a5", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "生成一个新建按钮,textContent为新建,type为primary(主要按钮),大小为medium,形状为默认方形,非禁用状态,无危险状态,无图标,无tooltip", "user_desc": "", "storyboard": null, "type": "item", "name": "新建", "children": [], "parent": "96e55a2a556049eba1e5c1a8cd1e6ef3", "properties": null, "hasContainer": false}, {"uuid": "da3e65baf08d4fc28b938d1efd768265", "seq": 1, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "生成一个删除按钮,textContent为删除,type为danger(危险按钮),大小为medium,形状为默认方形,非禁用状态,有危险状态,无图标,无tooltip", "user_desc": "", "storyboard": null, "type": "item", "name": "删除", "children": [], "parent": "96e55a2a556049eba1e5c1a8cd1e6ef3", "properties": null, "hasContainer": false}, {"uuid": "92c07992c61d4f43b41e6a56e500622a", "seq": 1, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "提供按IP搜索的功能", "user_desc": "", "storyboard": null, "type": "block", "name": "数据控制区", "children": ["e2f986f8379f4fd4bd3627855051c50e"], "parent": "", "properties": null, "hasContainer": true}, {"uuid": "e2f986f8379f4fd4bd3627855051c50e", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "eo-search", "brick_desc": "提供按IP地址搜索的功能,允许用户输入IP地址进行精确匹配或模糊搜索", "user_desc": "", "storyboard": null, "type": "item", "name": "IP搜索", "children": [], "parent": "92c07992c61d4f43b41e6a56e500622a", "properties": null, "hasContainer": false}, {"uuid": "a66ff62152ea4b808f2e5d957c24b2ef", "seq": 2, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "展示每条主机的供应商、主机名、MAC地址和操作系统", "user_desc": "", "storyboard": null, "type": "block", "name": "列表区", "children": ["8ed6175b7bc94b40b28f1f7687cb1a3a", "a52c680f3e364eff84fc169b8d8c191e", "c04fef1e64ca4200a5843b579f71fbcf", "0b485a8a1b924d54adb8914763096723"], "parent": "", "properties": null, "hasContainer": true}, {"uuid": "8ed6175b7bc94b40b28f1f7687cb1a3a", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "使用文本构件,显示供应商信息。", "user_desc": "", "storyboard": null, "type": "item", "name": "供应商", "children": [], "parent": "a66ff62152ea4b808f2e5d957c24b2ef", "properties": null, "hasContainer": false}, {"uuid": "a52c680f3e364eff84fc169b8d8c191e", "seq": 1, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "使用链接构件,显示主机名,跳转到主机详情页面。", "user_desc": "", "storyboard": null, "type": "item", "name": "主机名", "children": [], "parent": "a66ff62152ea4b808f2e5d957c24b2ef", "properties": null, "hasContainer": false}, {"uuid": "c04fef1e64ca4200a5843b579f71fbcf", "seq": 2, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "使用文本构件,显示MAC地址信息。", "user_desc": "", "storyboard": null, "type": "item", "name": "物理地址", "children": [], "parent": "a66ff62152ea4b808f2e5d957c24b2ef", "properties": null, "hasContainer": false}, {"uuid": "0b485a8a1b924d54adb8914763096723", "seq": 3, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "使用文本构件,显示操作系统类型信息。", "user_desc": "", "storyboard": null, "type": "item", "name": "操作系统类型", "children": [], "parent": "a66ff62152ea4b808f2e5d957c24b2ef", "properties": null, "hasContainer": false}]
44
- ```
45
-
46
- ```easy_cmd_vb_block_storyboard
47
- {"uuid": "d7ef5946776445ba96ebf2beb2f680a5", "storyboard": {"brick": "eo-button", "events": {"click": []}, "properties": {"textContent": "新建", "type": "primary", "size": "medium", "shape": "default", "buttonStyle": {"padding": "0 8px"}, "dataset": {"testid": "create-eo-button"}}}}
48
- ```
49
-
50
- ```easy_cmd_vb_block_storyboard
51
- {"uuid": "da3e65baf08d4fc28b938d1efd768265", "storyboard": {"brick": "eo-button", "events": {"click": []}, "properties": {"textContent": "删除", "type": "danger", "size": "medium", "buttonStyle": {"padding": "0px 8px"}, "danger": true, "dataset": {"testid": "delete-button"}, "properties": {"danger": true, "type": "danger"}}}}
52
- ```
53
-
54
- ```easy_cmd_vb_block_storyboard
55
- {"uuid": "92c07992c61d4f43b41e6a56e500622a", "storyboard": {"brick": "eo-form", "properties": {"layout": "inline"}}}
56
- ```
57
-
58
- ```easy_cmd_vb_block_storyboard
59
- {"uuid": "e2f986f8379f4fd4bd3627855051c50e", "storyboard": {"brick": "eo-search", "events": {"search": []}, "properties": {"placeholder": "按IP地址搜索", "dataset": {"testid": "search"}}}}
68
+ [{"uuid": "96e55a2a556049eba1e5c1a8cd1e6ef3", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "包含新建和删除按钮", "user_desc": "", "storyboard": null, "type": "block", "name": "全局操作区", "children": ["d7ef5946776445ba96ebf2beb2f680a5", "da3e65baf08d4fc28b938d1efd768265"], "parent": "", "properties": null, "hasContainer": false}, {"uuid": "d7ef5946776445ba96ebf2beb2f680a5", "seq": 0, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "生成一个新建按钮,textContent为新建,type为primary(主要按钮),大小为medium,形状为默认方形,非禁用状态,无危险状态,无图标,无tooltip", "user_desc": "", "storyboard": null, "type": "item", "name": "新建", "children": [], "parent": "96e55a2a556049eba1e5c1a8cd1e6ef3", "properties": null, "hasContainer": false}, {"uuid": "da3e65baf08d4fc28b938d1efd768265", "seq": 1, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "生成一个删除按钮,textContent为删除,type为danger(危险按钮),大小为medium,形状为默认方形,非禁用状态,有危险状态,无图标,无tooltip", "user_desc": "", "storyboard": null, "type": "item", "name": "删除", "children": [], "parent": "96e55a2a556049eba1e5c1a8cd1e6ef3", "properties": null, "hasContainer": false}, {"uuid": "a66ff62152ea4b808f2e5d957c24b2ef", "seq": 2, "conversationId": "db2e41dc-932c-4f76-aad4-19da09bea036", "brick": "", "brick_desc": "展示每条主机的IP、主机名、运营状态和创建时间", "user_desc": "", "storyboard": null, "type": "block", "name": "列表区", "children": [], "parent": "", "properties": null, "hasContainer": true}]
60
69
  ```
61
70
 
62
71
  ```easy_cmd_vb_block_storyboard
63
- {"uuid": "a66ff62152ea4b808f2e5d957c24b2ef", "storyboard": {"brick": "eo-next-table", "properties": {"columns": [{"title": "供应商", "dataIndex": "provider", "useChildren": "[provider]"}, {"title": "主机名", "dataIndex": "hostname", "useChildren": "[hostname]"}, {"title": "MAC地址", "dataIndex": "_mac", "useChildren": "[_mac]"}, {"title": "操作系统", "dataIndex": "osSystem", "useChildren": "[osSystem]"}], "dataSource": "<% CTX.hostList %>"}, "context": [{"name": "hostList", "value": {"list": [{"provider": "供应商A", "hostname": "主机1", "_mac": "00:11:22:33:44:55", "osSystem": "Windows 10"}, {"provider": "供应商B", "hostname": "主机2", "_mac": "AA:BB:CC:DD:EE:FF", "osSystem": "Ubuntu 20.04"}], "total": 2}}]}}
72
+ {"uuid": "d7ef5946776445ba96ebf2beb2f680a5", "storyboard": {"brick": "eo-button", "events": {"click": []}, "properties": {"textContent": "新建", "type": "primary", "size": "medium"}}}
64
73
  ```
65
74
 
66
75
  ```easy_cmd_vb_block_storyboard
67
- {"uuid": "8ed6175b7bc94b40b28f1f7687cb1a3a", "storyboard": {"brick": "eo-text", "properties": {"textContent": "<% DATA.cellData %>", "dataset": {"testid": "textContent"}}, "slot": "[provider]"}}
76
+ {"uuid": "da3e65baf08d4fc28b938d1efd768265", "storyboard": {"brick": "eo-button", "events": {"click": []}, "properties": {"textContent": "删除", "type": "danger", "size": "medium", "danger": true}}}
68
77
  ```
69
78
 
70
79
  ```easy_cmd_vb_block_storyboard
71
- {"uuid": "a52c680f3e364eff84fc169b8d8c191e", "storyboard": {"brick": "eo-link", "events": {"click": []}, "properties": {"url": "<% DATA.cellData %>", "target": "_blank", "showIcon": true, "textContent": "<% DATA.cellData %>", "dataset": {"testid": "nodeUrl"}}, "slot": "[hostname]"}}
72
- ```
73
-
74
- ```easy_cmd_vb_block_storyboard
75
- {"uuid": "c04fef1e64ca4200a5843b579f71fbcf", "storyboard": {"brick": "eo-text", "properties": {"textContent": "<% DATA.cellData %>", "dataset": {"testid": "textContent"}}, "slot": "[_mac]"}}
76
- ```
77
-
78
- ```easy_cmd_vb_block_storyboard
79
- {"uuid": "0b485a8a1b924d54adb8914763096723", "storyboard": {"brick": "eo-text", "properties": {"textContent": "<% DATA.cellData %>", "dataset": {"testid": "textContent"}}, "slot": "[osSystem]"}}
80
+ {"uuid": "a66ff62152ea4b808f2e5d957c24b2ef", "storyboard": {"brick": "eo-next-table", "properties": {"columns": [{"title": "IP", "dataIndex": "ip"}, {"title": "主机名", "dataIndex": "hostname"}, {"title": "运营状态", "dataIndex": "status"}, {"title": "创建时间", "dataIndex": "createTime"}], "dataSource": {"list": [{"ip": "192.168.1.1", "hostname": "host-001", "status": "运行中", "createTime": "2024-01-01"}]}}}}
80
81
  ```
81
82
  key: 4
82
83
  partial: true
@@ -87,6 +88,8 @@ events:
87
88
 
88
89
  ### Errors
89
90
 
91
+ 展示包含失败消息的对话,failed 状态的消息会以错误样式展示。
92
+
90
93
  ```yaml preview
91
94
  brick: visual-builder.chat-conversation
92
95
  properties:
@@ -103,3 +106,20 @@ properties:
103
106
  key: 3
104
107
  failed: true
105
108
  ```
109
+
110
+ ### With Error Boundary
111
+
112
+ 启用错误边界后,单个砖块渲染失败不会导致整个预览崩溃。
113
+
114
+ ```yaml preview
115
+ brick: visual-builder.chat-conversation
116
+ properties:
117
+ errorBoundary: true
118
+ messages:
119
+ - role: user
120
+ content: 生成一个简单页面
121
+ key: 1
122
+ - role: assistant
123
+ content: 好的,正在生成...
124
+ key: 2
125
+ ```
@@ -0,0 +1,115 @@
1
+ ---
2
+ tagName: visual-builder.chat-conversation
3
+ displayName: WrappedVisualBuilderChatConversation
4
+ description: 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # WrappedVisualBuilderChatConversation
10
+
11
+ > 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedVisualBuilderChatConversation } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | ------------- | ----------- | ---- | ------ | ------------------------------------------------------------------------------- |
23
+ | messages | `Message[]` | 否 | - | 对话消息列表,包含用户和 AI 助手的消息,支持流式(partial)和失败(failed)状态 |
24
+ | errorBoundary | `boolean` | 否 | - | 是否为解析出的砖块启用错误边界,防止单个砖块异常导致整个预览崩溃 |
25
+
26
+ ## Events
27
+
28
+ | 事件 | detail | 说明 |
29
+ | ------------------ | ------------------------------------ | ---------------------------------------- |
30
+ | onStoryboardUpdate | `BrickConf[]` — 解析出的砖块配置列表 | 从 AI 回复中解析出新的 Storyboard 时触发 |
31
+
32
+ ## Examples
33
+
34
+ ### Basic
35
+
36
+ 展示包含用户消息和 AI 回复的完整对话列表,AI 回复中嵌入了 Storyboard 代码块。
37
+
38
+ ```tsx
39
+ <WrappedVisualBuilderChatConversation
40
+ messages={[
41
+ {
42
+ role: "user",
43
+ content: "生成一个主机列表页面",
44
+ key: 1,
45
+ },
46
+ {
47
+ role: "assistant",
48
+ content: "好的,我们来逐步确认页面的各个区块需求。",
49
+ key: 2,
50
+ },
51
+ {
52
+ role: "user",
53
+ content: "列表区展示每条主机的IP、主机名、运营状态、创建时间。",
54
+ key: 3,
55
+ },
56
+ {
57
+ role: "assistant",
58
+ content: "了解了您的需求,正在生成页面...",
59
+ key: 4,
60
+ partial: true,
61
+ },
62
+ ]}
63
+ onStoryboardUpdate={(e) => console.log(e.detail)}
64
+ />
65
+ ```
66
+
67
+ ### Errors
68
+
69
+ 展示包含失败消息的对话,failed 状态的消息会以错误样式展示。
70
+
71
+ ```tsx
72
+ <WrappedVisualBuilderChatConversation
73
+ messages={[
74
+ {
75
+ role: "user",
76
+ content: "Create a page to show server host list.",
77
+ key: 1,
78
+ },
79
+ {
80
+ role: "assistant",
81
+ content: "OK, let's do it",
82
+ key: 2,
83
+ failed: true,
84
+ },
85
+ {
86
+ role: "assistant",
87
+ content: "Internal Server Error",
88
+ key: 3,
89
+ failed: true,
90
+ },
91
+ ]}
92
+ />
93
+ ```
94
+
95
+ ### With Error Boundary
96
+
97
+ 启用错误边界后,单个砖块渲染失败不会导致整个预览崩溃。
98
+
99
+ ```tsx
100
+ <WrappedVisualBuilderChatConversation
101
+ errorBoundary={true}
102
+ messages={[
103
+ {
104
+ role: "user",
105
+ content: "生成一个简单页面",
106
+ key: 1,
107
+ },
108
+ {
109
+ role: "assistant",
110
+ content: "好的,正在生成...",
111
+ key: 2,
112
+ },
113
+ ]}
114
+ />
115
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ tagName: visual-builder.chat-preview
3
+ displayName: WrappedVisualBuilderChatPreview
4
+ description: Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # visual-builder.chat-preview
10
+
11
+ > Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | ---------- | -------------------------- | ---- | ------ | ---------------------------------------------------------------- |
17
+ | storyboard | `BrickConf \| BrickConf[]` | 否 | - | 要预览的砖块配置,支持单个或列表,更新后自动触发 iframe 重新渲染 |
18
+ | theme | `string` | 否 | - | 预览的主题,例如 "dark-v2" |
19
+ | uiVersion | `string` | 否 | - | 预览的 UI 版本,例如 "8.2" |
20
+ | app | `MicroApp` | 否 | - | 预览使用的 MicroApp 配置,影响 app 上下文 |
21
+ | inspecting | `boolean` | 否 | - | 是否开启元素检查模式,开启后鼠标悬停和点击时会显示元素轮廓高亮 |
22
+
23
+ ## Events
24
+
25
+ | 事件 | detail | 说明 |
26
+ | ------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------- |
27
+ | activeTarget.change | `InspectSelector \| undefined` — 当前激活的检查目标选择器,未选中时为 undefined | 用户在检查模式下点击元素时,激活目标变化时触发 |
28
+
29
+ ## Methods
30
+
31
+ | 方法 | 参数 | 返回值 | 说明 |
32
+ | ------ | ------------------------------------ | ------ | ------------------------------------------------ |
33
+ | select | `(payload: InspectSelector) => void` | `void` | 向 iframe 内的预览代理发送选中指令,高亮指定元素 |
34
+
35
+ ## Examples
36
+
37
+ ### Basic
38
+
39
+ 展示 Chat Preview 的基本用法,传入砖块配置后在 iframe 中渲染预览。
40
+
41
+ ```yaml preview
42
+ brick: visual-builder.chat-preview
43
+ properties:
44
+ storyboard:
45
+ - brick: eo-button
46
+ properties:
47
+ textContent: 预览按钮
48
+ type: primary
49
+ ```
50
+
51
+ ### With Theme
52
+
53
+ 指定预览主题和 UI 版本,使预览效果与目标环境匹配。
54
+
55
+ ```yaml preview
56
+ brick: visual-builder.chat-preview
57
+ properties:
58
+ theme: dark-v2
59
+ uiVersion: "8.2"
60
+ storyboard:
61
+ - brick: eo-button
62
+ properties:
63
+ textContent: 暗色主题预览
64
+ type: primary
65
+ ```
66
+
67
+ ### Inspect Mode
68
+
69
+ 开启检查模式,鼠标悬停时显示元素轮廓,点击时触发激活目标变化事件。
70
+
71
+ ```yaml preview
72
+ brick: visual-builder.chat-preview
73
+ properties:
74
+ inspecting: true
75
+ storyboard:
76
+ - brick: eo-button
77
+ properties:
78
+ textContent: 点击以检查
79
+ type: primary
80
+ events:
81
+ activeTarget.change:
82
+ action: console.log
83
+ ```
@@ -0,0 +1,105 @@
1
+ ---
2
+ tagName: visual-builder.chat-preview
3
+ displayName: WrappedVisualBuilderChatPreview
4
+ description: Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # WrappedVisualBuilderChatPreview
10
+
11
+ > Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedVisualBuilderChatPreview } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | ---------- | -------------------------- | ---- | ------ | ---------------------------------------------------------------- |
23
+ | storyboard | `BrickConf \| BrickConf[]` | 否 | - | 要预览的砖块配置,支持单个或列表,更新后自动触发 iframe 重新渲染 |
24
+ | theme | `string` | 否 | - | 预览的主题,例如 "dark-v2" |
25
+ | uiVersion | `string` | 否 | - | 预览的 UI 版本,例如 "8.2" |
26
+ | app | `MicroApp` | 否 | - | 预览使用的 MicroApp 配置,影响 app 上下文 |
27
+ | inspecting | `boolean` | 否 | - | 是否开启元素检查模式,开启后鼠标悬停和点击时会显示元素轮廓高亮 |
28
+
29
+ ## Events
30
+
31
+ | 事件 | detail | 说明 |
32
+ | -------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------- |
33
+ | onActiveTargetChange | `InspectSelector \| undefined` — 当前激活的检查目标选择器,未选中时为 undefined | 用户在检查模式下点击元素时,激活目标变化时触发 |
34
+
35
+ ## Methods
36
+
37
+ | 方法 | 参数 | 返回值 | 说明 |
38
+ | ------ | ------------------------------------ | ------ | ------------------------------------------------ |
39
+ | select | `(payload: InspectSelector) => void` | `void` | 向 iframe 内的预览代理发送选中指令,高亮指定元素 |
40
+
41
+ ## Examples
42
+
43
+ ### Basic
44
+
45
+ 展示 Chat Preview 的基本用法,传入砖块配置后在 iframe 中渲染预览。
46
+
47
+ ```tsx
48
+ <WrappedVisualBuilderChatPreview
49
+ storyboard={[
50
+ {
51
+ brick: "eo-button",
52
+ properties: {
53
+ textContent: "预览按钮",
54
+ type: "primary",
55
+ },
56
+ },
57
+ ]}
58
+ />
59
+ ```
60
+
61
+ ### With Theme
62
+
63
+ 指定预览主题和 UI 版本,使预览效果与目标环境匹配。
64
+
65
+ ```tsx
66
+ <WrappedVisualBuilderChatPreview
67
+ theme="dark-v2"
68
+ uiVersion="8.2"
69
+ storyboard={[
70
+ {
71
+ brick: "eo-button",
72
+ properties: {
73
+ textContent: "暗色主题预览",
74
+ type: "primary",
75
+ },
76
+ },
77
+ ]}
78
+ />
79
+ ```
80
+
81
+ ### Inspect Mode
82
+
83
+ 开启检查模式,鼠标悬停时显示元素轮廓,点击时触发激活目标变化事件。
84
+
85
+ ```tsx
86
+ const ref = useRef<any>();
87
+
88
+ <WrappedVisualBuilderChatPreview
89
+ ref={ref}
90
+ inspecting={true}
91
+ storyboard={[
92
+ {
93
+ brick: "eo-button",
94
+ properties: {
95
+ textContent: "点击以检查",
96
+ type: "primary",
97
+ },
98
+ },
99
+ ]}
100
+ onActiveTargetChange={(e) => console.log(e.detail)}
101
+ />
102
+ <button onClick={() => ref.current?.select({ iid: "item:xxx" })}>
103
+ Select Element
104
+ </button>
105
+ ```
@@ -0,0 +1,97 @@
1
+ ---
2
+ tagName: visual-builder.contract-select
3
+ displayName: WrappedVisualBuilderContractSelect
4
+ description: 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # visual-builder.contract-select
10
+
11
+ > 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | -------- | ---------------------------------------------------------- | ---- | ------ | --------------------------------------------------------- |
17
+ | name | `string` | 否 | - | 表单字段名 |
18
+ | required | `boolean` | 否 | - | 是否为必填项 |
19
+ | label | `string` | 否 | - | 表单项标签 |
20
+ | value | `any` | 否 | - | 当前选中的契约值,格式为 `contractName@namespace:version` |
21
+ | suffix | `{ useBrick: UseSingleBrickConf \| UseSingleBrickConf[] }` | 否 | - | 输入框后缀内容,使用 useBrick 自定义渲染 |
22
+
23
+ ## Events
24
+
25
+ | 事件 | detail | 说明 |
26
+ | ------ | ---------------------------------------------------------------------- | -------------------- |
27
+ | change | `string` — 选中的契约值字符串,格式为 `contractName@namespace:version` | 契约选择值变化时触发 |
28
+
29
+ ## Examples
30
+
31
+ ### Basic
32
+
33
+ 展示契约选择构件的基本用法,搜索并选择契约名称和版本。
34
+
35
+ ```yaml preview
36
+ brick: visual-builder.contract-select
37
+ properties:
38
+ label: 契约
39
+ name: contract
40
+ events:
41
+ change:
42
+ action: console.log
43
+ ```
44
+
45
+ ### Required Field
46
+
47
+ 在表单中设置必填校验。
48
+
49
+ ```yaml preview
50
+ brick: eo-form
51
+ events:
52
+ validate.success:
53
+ action: console.log
54
+ children:
55
+ - brick: visual-builder.contract-select
56
+ properties:
57
+ label: 契约
58
+ name: contract
59
+ required: true
60
+ - brick: eo-submit-buttons
61
+ properties:
62
+ submitText: 提交
63
+ ```
64
+
65
+ ### With Value
66
+
67
+ 设置初始契约值。
68
+
69
+ ```yaml preview
70
+ brick: visual-builder.contract-select
71
+ properties:
72
+ label: 契约
73
+ name: contract
74
+ value: "easyops.api.cmdb.instance@instance.GetDetail:1.0.0"
75
+ events:
76
+ change:
77
+ action: console.log
78
+ ```
79
+
80
+ ### With Suffix
81
+
82
+ 在选择器后添加自定义后缀内容。
83
+
84
+ ```yaml preview
85
+ brick: visual-builder.contract-select
86
+ properties:
87
+ label: 契约
88
+ name: contract
89
+ suffix:
90
+ useBrick:
91
+ brick: eo-button
92
+ properties:
93
+ icon:
94
+ lib: antd
95
+ icon: question-circle
96
+ type: text
97
+ ```
@@ -0,0 +1,95 @@
1
+ ---
2
+ tagName: visual-builder.contract-select
3
+ displayName: WrappedVisualBuilderContractSelect
4
+ description: 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用
5
+ category: ""
6
+ source: "@next-bricks/visual-builder"
7
+ ---
8
+
9
+ # WrappedVisualBuilderContractSelect
10
+
11
+ > 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedVisualBuilderContractSelect } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | -------- | ---------------------------------------------------------- | ---- | ------ | --------------------------------------------------------- |
23
+ | name | `string` | 否 | - | 表单字段名 |
24
+ | required | `boolean` | 否 | - | 是否为必填项 |
25
+ | label | `string` | 否 | - | 表单项标签 |
26
+ | value | `any` | 否 | - | 当前选中的契约值,格式为 `contractName@namespace:version` |
27
+ | suffix | `{ useBrick: UseSingleBrickConf \| UseSingleBrickConf[] }` | 否 | - | 输入框后缀内容,使用 useBrick 自定义渲染 |
28
+
29
+ ## Events
30
+
31
+ | 事件 | detail | 说明 |
32
+ | -------- | ---------------------------------------------------------------------- | -------------------- |
33
+ | onChange | `string` — 选中的契约值字符串,格式为 `contractName@namespace:version` | 契约选择值变化时触发 |
34
+
35
+ ## Examples
36
+
37
+ ### Basic
38
+
39
+ 展示契约选择构件的基本用法,搜索并选择契约名称和版本。
40
+
41
+ ```tsx
42
+ <WrappedVisualBuilderContractSelect
43
+ label="契约"
44
+ name="contract"
45
+ onChange={(e) => console.log(e.detail)}
46
+ />
47
+ ```
48
+
49
+ ### Required Field
50
+
51
+ 在表单中设置必填校验。
52
+
53
+ ```tsx
54
+ <WrappedEoForm onValidateSuccess={(e) => console.log(e.detail)}>
55
+ <WrappedVisualBuilderContractSelect
56
+ label="契约"
57
+ name="contract"
58
+ required={true}
59
+ />
60
+ <WrappedEoSubmitButtons submitText="提交" />
61
+ </WrappedEoForm>
62
+ ```
63
+
64
+ ### With Value
65
+
66
+ 设置初始契约值。
67
+
68
+ ```tsx
69
+ <WrappedVisualBuilderContractSelect
70
+ label="契约"
71
+ name="contract"
72
+ value="easyops.api.cmdb.instance@instance.GetDetail:1.0.0"
73
+ onChange={(e) => console.log(e.detail)}
74
+ />
75
+ ```
76
+
77
+ ### With Suffix
78
+
79
+ 在选择器后添加自定义后缀内容。
80
+
81
+ ```tsx
82
+ <WrappedVisualBuilderContractSelect
83
+ label="契约"
84
+ name="contract"
85
+ suffix={{
86
+ useBrick: {
87
+ brick: "eo-button",
88
+ properties: {
89
+ icon: { lib: "antd", icon: "question-circle" },
90
+ type: "text",
91
+ },
92
+ },
93
+ }}
94
+ />
95
+ ```