@next-bricks/visual-builder 1.39.16 → 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 (114) hide show
  1. package/dist/bricks.json +1 -1
  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/7085.3c330b29.js +3 -0
  5. package/dist/chunks/7085.3c330b29.js.map +1 -0
  6. package/dist/chunks/9653.ac443b19.js +2 -0
  7. package/dist/chunks/9653.ac443b19.js.map +1 -0
  8. package/dist/chunks/chat-conversation.0ffc333f.js.map +1 -1
  9. package/dist/chunks/chat-preview.36976c55.js.map +1 -1
  10. package/dist/chunks/contract-select.252b9e45.js +3 -0
  11. package/dist/chunks/contract-select.252b9e45.js.map +1 -0
  12. package/dist/chunks/generate-snippets-context-menu.56acf448.js.map +1 -1
  13. package/dist/chunks/{main.819ae305.js → main.1cb52df3.js} +2 -2
  14. package/dist/chunks/{main.819ae305.js.map → main.1cb52df3.js.map} +1 -1
  15. package/dist/chunks/page-arch-node.379284ad.js +3 -0
  16. package/dist/chunks/page-arch-node.379284ad.js.map +1 -0
  17. package/dist/chunks/pre-generated-config-preview.cfbc2a1e.js.map +1 -1
  18. package/dist/chunks/pre-generated-config.a027788b.js.map +1 -1
  19. package/dist/chunks/pre-generated-container.dcfa8cc9.js.map +1 -1
  20. package/dist/chunks/pre-generated-preview.8e699675.js.map +1 -1
  21. package/dist/chunks/pre-generated-table-view.8a9d5527.js.map +1 -1
  22. package/dist/chunks/property-editor.dea9895b.js +2 -0
  23. package/dist/chunks/property-editor.dea9895b.js.map +1 -0
  24. package/dist/chunks/raw-data-preview.0bf12da3.js.map +1 -1
  25. package/dist/chunks/raw-metric-preview.c503481e.js.map +1 -1
  26. package/dist/chunks/workbench-action-list.c67329ed.js.map +1 -1
  27. package/dist/chunks/workbench-action.5b993227.js.map +1 -1
  28. package/dist/chunks/workbench-pane.5c4866a6.js +3 -0
  29. package/dist/chunks/workbench-pane.5c4866a6.js.map +1 -0
  30. package/dist/chunks/workbench-sidebar.01731e99.js.map +1 -1
  31. package/dist/chunks/{workbench-tree.e71a583f.js → workbench-tree.7097bd88.js} +3 -3
  32. package/dist/chunks/workbench-tree.7097bd88.js.map +1 -0
  33. package/dist/examples.json +47 -5
  34. package/dist/{index.e12e6fc9.js → index.93f39de8.js} +2 -2
  35. package/dist/{index.e12e6fc9.js.map → index.93f39de8.js.map} +1 -1
  36. package/dist/manifest.json +182 -28
  37. package/dist/types.json +1 -1
  38. package/dist-types/chat-conversation/index.d.ts +7 -1
  39. package/dist-types/chat-preview/index.d.ts +20 -1
  40. package/dist-types/contract-select/index.d.ts +16 -1
  41. package/dist-types/generate-snippets-context-menu/index.d.ts +17 -1
  42. package/dist-types/page-arch-node/index.d.ts +25 -1
  43. package/dist-types/pre-generated-config/index.d.ts +16 -1
  44. package/dist-types/pre-generated-config-preview/index.d.ts +13 -1
  45. package/dist-types/pre-generated-container/index.d.ts +3 -1
  46. package/dist-types/pre-generated-preview/index.d.ts +6 -1
  47. package/dist-types/pre-generated-table-view/index.d.ts +1 -1
  48. package/dist-types/property-editor/index.d.ts +10 -4
  49. package/dist-types/raw-data-preview/index.d.ts +9 -1
  50. package/dist-types/raw-metric-preview/index.d.ts +8 -1
  51. package/dist-types/workbench-action/index.d.ts +7 -0
  52. package/dist-types/workbench-action-list/index.d.ts +3 -0
  53. package/dist-types/workbench-pane/index.d.ts +4 -0
  54. package/dist-types/workbench-sidebar/index.d.ts +2 -0
  55. package/dist-types/workbench-tree/index.d.ts +19 -6
  56. package/docs/chat-conversation.md +51 -31
  57. package/docs/chat-conversation.react.md +115 -0
  58. package/docs/chat-preview.md +83 -0
  59. package/docs/chat-preview.react.md +105 -0
  60. package/docs/contract-select.md +97 -0
  61. package/docs/contract-select.react.md +95 -0
  62. package/docs/generate-snippets-context-menu.md +141 -0
  63. package/docs/generate-snippets-context-menu.react.md +134 -0
  64. package/docs/page-arch-node.md +87 -1
  65. package/docs/page-arch-node.react.md +97 -0
  66. package/docs/pre-generated-config-preview.md +74 -0
  67. package/docs/pre-generated-config-preview.react.md +82 -0
  68. package/docs/pre-generated-config.md +96 -0
  69. package/docs/pre-generated-config.react.md +78 -0
  70. package/docs/pre-generated-container.md +56 -0
  71. package/docs/pre-generated-container.react.md +62 -0
  72. package/docs/pre-generated-preview.md +83 -0
  73. package/docs/pre-generated-preview.react.md +92 -0
  74. package/docs/pre-generated-table-view.md +46 -0
  75. package/docs/pre-generated-table-view.react.md +36 -0
  76. package/docs/property-editor.md +44 -1
  77. package/docs/property-editor.react.md +97 -0
  78. package/docs/raw-data-preview.md +75 -1643
  79. package/docs/raw-data-preview.react.md +154 -0
  80. package/docs/raw-metric-preview.md +93 -0
  81. package/docs/raw-metric-preview.react.md +94 -0
  82. package/docs/workbench-action-list.md +80 -0
  83. package/docs/workbench-action-list.react.md +85 -0
  84. package/docs/workbench-action.md +80 -0
  85. package/docs/workbench-action.react.md +76 -0
  86. package/docs/workbench-history-action.md +42 -1
  87. package/docs/workbench-history-action.react.md +54 -0
  88. package/docs/workbench-pane.md +105 -0
  89. package/docs/workbench-pane.react.md +90 -0
  90. package/docs/workbench-sidebar.md +88 -0
  91. package/docs/workbench-sidebar.react.md +66 -0
  92. package/docs/workbench-tree.md +217 -0
  93. package/docs/workbench-tree.react.md +180 -0
  94. package/package.json +2 -2
  95. package/dist/chunks/5522.678c03f6.js.map +0 -1
  96. package/dist/chunks/7085.c58ac475.js +0 -3
  97. package/dist/chunks/7085.c58ac475.js.map +0 -1
  98. package/dist/chunks/9653.39737577.js +0 -2
  99. package/dist/chunks/9653.39737577.js.map +0 -1
  100. package/dist/chunks/contract-select.ff891ded.js +0 -3
  101. package/dist/chunks/contract-select.ff891ded.js.map +0 -1
  102. package/dist/chunks/page-arch-node.974674c0.js +0 -3
  103. package/dist/chunks/page-arch-node.974674c0.js.map +0 -1
  104. package/dist/chunks/property-editor.6de6adf4.js +0 -2
  105. package/dist/chunks/property-editor.6de6adf4.js.map +0 -1
  106. package/dist/chunks/workbench-pane.7e85de42.js +0 -3
  107. package/dist/chunks/workbench-pane.7e85de42.js.map +0 -1
  108. package/dist/chunks/workbench-tree.e71a583f.js.map +0 -1
  109. /package/dist/chunks/{5522.678c03f6.js.LICENSE.txt → 4577.f016e9de.js.LICENSE.txt} +0 -0
  110. /package/dist/chunks/{7085.c58ac475.js.LICENSE.txt → 7085.3c330b29.js.LICENSE.txt} +0 -0
  111. /package/dist/chunks/{contract-select.ff891ded.js.LICENSE.txt → contract-select.252b9e45.js.LICENSE.txt} +0 -0
  112. /package/dist/chunks/{page-arch-node.974674c0.js.LICENSE.txt → page-arch-node.379284ad.js.LICENSE.txt} +0 -0
  113. /package/dist/chunks/{workbench-pane.7e85de42.js.LICENSE.txt → workbench-pane.5c4866a6.js.LICENSE.txt} +0 -0
  114. /package/dist/chunks/{workbench-tree.e71a583f.js.LICENSE.txt → workbench-tree.7097bd88.js.LICENSE.txt} +0 -0
@@ -1,17 +1,59 @@
1
1
  {
2
+ "visual-builder.workbench-pane": {
3
+ "doc": "---\ntagName: visual-builder.workbench-pane\ndisplayName: WrappedVisualBuilderWorkbenchPane\ndescription: 工作台侧边栏面板,可折叠的内容面板,包含标题栏和可滚动的内容区\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-pane\n\n> 工作台侧边栏面板,可折叠的内容面板,包含标题栏和可滚动的内容区\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ---------- | --------- | ---- | ------ | -------------------- |\n| titleLabel | `string` | 否 | - | 面板标题文本 |\n| active | `boolean` | 否 | - | 是否展开面板 |\n| badge | `number` | 否 | - | 标题栏右侧的数字徽标 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| --------------------- | --------------------------------------------------- | ---------------------------------- |\n| active.change | `boolean` — 当前展开状态,true 为展开,false 为折叠 | 面板展开/折叠状态变化时触发 |\n| active.firstActivated | `void` | 面板首次被展开时触发(仅触发一次) |\n\n## Slots\n\n| 名称 | 说明 |\n| --------- | ------------------------------------ |\n| title | 标题栏自定义内容,显示在标题文本右侧 |\n| actions | 标题栏操作区,显示在 badge 左侧 |\n| (default) | 面板内容区,可滚动 |\n\n## Examples\n\n### Basic\n\n展示一个可折叠的侧边栏面板,包含标题和内容区域。\n\n```yaml preview\nbrick: visual-builder.workbench-pane\nproperties:\n titleLabel: 资源列表\n active: true\nevents:\n active.change:\n - action: console.log\nchildren:\n - brick: div\n properties:\n textContent: 这是面板内容\n style:\n padding: 16px\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-pane title-label=\"资源列表\" active id=\"brick-1\">\n# <div style=\"padding: 16px\">这是面板内容</div>\n# </visual-builder.workbench-pane>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"active.change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### 带徽标和操作区\n\n在标题栏右侧显示数字徽标,并在操作区提供额外按钮。\n\n```yaml preview\nbrick: visual-builder.workbench-pane\nproperties:\n titleLabel: 告警列表\n active: true\n badge: 5\nchildren:\n - brick: eo-button\n slot: actions\n properties:\n icon:\n lib: antd\n icon: plus\n theme: outlined\n type: text\n size: small\n - brick: div\n properties:\n textContent: 5 条告警信息\n style:\n padding: 16px\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-pane title-label=\"告警列表\" active badge=\"5\">\n# <eo-button\n# slot=\"actions\"\n# icon=\"[object Object]\"\n# type=\"text\"\n# size=\"small\"\n# ></eo-button>\n# <div style=\"padding: 16px\">5 条告警信息</div>\n# </visual-builder.workbench-pane>\n# \n```\n\n### 首次激活事件\n\n监听面板首次展开时触发的一次性事件,适用于懒加载场景。\n\n```yaml preview\nbrick: visual-builder.workbench-pane\nproperties:\n titleLabel: 延迟加载内容\n active: false\nevents:\n active.firstActivated:\n - action: console.log\n args:\n - \"面板首次展开,开始加载数据\"\nchildren:\n - brick: div\n properties:\n textContent: 内容将在首次展开后加载\n style:\n padding: 16px\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-pane title-label=\"延迟加载内容\" id=\"brick-1\">\n# <div style=\"padding: 16px\">内容将在首次展开后加载</div>\n# </visual-builder.workbench-pane>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"active.firstActivated\", (e) => {\n# console.log(\"面板首次展开,开始加载数据\");\n# });\n# </script>\n# \n```\n"
4
+ },
5
+ "visual-builder.workbench-sidebar": {
6
+ "doc": "---\ntagName: visual-builder.workbench-sidebar\ndisplayName: WrappedVisualBuilderWorkbenchSidebar\ndescription: 工作台侧边栏容器,包含标题栏和面板容器,自动管理子面板(workbench-pane)的展开/折叠布局\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-sidebar\n\n> 工作台侧边栏容器,包含标题栏和面板容器,自动管理子面板(workbench-pane)的展开/折叠布局\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ---------- | -------- | ---- | ------ | -------------- |\n| titleLabel | `string` | 否 | - | 侧边栏标题文本 |\n\n## Slots\n\n| 名称 | 说明 |\n| ------------ | -------------------------- |\n| titleToolbar | 标题栏右侧工具栏区域 |\n| (default) | 放置 workbench-pane 子面板 |\n\n## Examples\n\n### Basic\n\n展示包含多个可折叠面板的侧边栏容器,子面板会自动响应展开/折叠状态调整布局。\n\n```yaml preview\nbrick: visual-builder.workbench-sidebar\nproperties:\n titleLabel: 工作区\nchildren:\n - brick: visual-builder.workbench-pane\n properties:\n titleLabel: 资源列表\n active: true\n children:\n - brick: div\n properties:\n textContent: 资源内容区域\n style:\n padding: 16px\n - brick: visual-builder.workbench-pane\n properties:\n titleLabel: 属性面板\n active: false\n children:\n - brick: div\n properties:\n textContent: 属性内容区域\n style:\n padding: 16px\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-sidebar title-label=\"工作区\">\n# <visual-builder.workbench-pane title-label=\"资源列表\" active>\n# <div style=\"padding: 16px\">资源内容区域</div>\n# </visual-builder.workbench-pane>\n# <visual-builder.workbench-pane title-label=\"属性面板\">\n# <div style=\"padding: 16px\">属性内容区域</div>\n# </visual-builder.workbench-pane>\n# </visual-builder.workbench-sidebar>\n# \n```\n\n### 带标题栏工具栏\n\n在侧边栏标题栏右侧添加操作按钮。\n\n```yaml preview\nbrick: visual-builder.workbench-sidebar\nproperties:\n titleLabel: 组件树\nchildren:\n - brick: eo-button\n slot: titleToolbar\n properties:\n icon:\n lib: antd\n icon: plus\n theme: outlined\n type: text\n size: small\n tooltip: 新增节点\n - brick: visual-builder.workbench-pane\n properties:\n titleLabel: 页面结构\n active: true\n children:\n - brick: div\n properties:\n textContent: 页面结构树\n style:\n padding: 16px\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-sidebar title-label=\"组件树\">\n# <eo-button\n# slot=\"titleToolbar\"\n# icon=\"[object Object]\"\n# type=\"text\"\n# size=\"small\"\n# tooltip=\"新增节点\"\n# ></eo-button>\n# <visual-builder.workbench-pane title-label=\"页面结构\" active>\n# <div style=\"padding: 16px\">页面结构树</div>\n# </visual-builder.workbench-pane>\n# </visual-builder.workbench-sidebar>\n# \n```\n"
7
+ },
8
+ "visual-builder.workbench-action": {
9
+ "doc": "---\ntagName: visual-builder.workbench-action\ndisplayName: WrappedVisualBuilderWorkbenchAction\ndescription: 工作台侧边栏操作按钮,显示图标链接并在右侧显示 tooltip\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-action\n\n> 工作台侧边栏操作按钮,显示图标链接并在右侧显示 tooltip\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ------- | ------------------ | ---- | ------ | ------------------------ |\n| icon | `GeneralIconProps` | 否 | - | 按钮图标配置 |\n| to | `string` | 否 | - | 路由跳转地址 |\n| active | `boolean` | 否 | - | 是否处于激活状态 |\n| href | `string` | 否 | - | 外部链接地址 |\n| target | `string` | 否 | - | 链接打开方式 |\n| tooltip | `string` | 否 | - | 鼠标悬停时显示的提示文字 |\n\n## Examples\n\n### Basic\n\n显示一个带有图标和 tooltip 的侧边栏操作按钮。\n\n```yaml preview\nbrick: visual-builder.workbench-action\nproperties:\n icon:\n lib: antd\n icon: home\n theme: outlined\n to: /home\n tooltip: 首页\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-action\n# to=\"/home\"\n# tooltip=\"首页\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-action>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.icon = {\n# lib: \"antd\",\n# icon: \"home\",\n# theme: \"outlined\",\n# };\n# </script>\n# \n```\n\n### 激活状态\n\n通过 active 属性控制按钮的高亮激活状态。\n\n```yaml preview\n- brick: visual-builder.workbench-action\n properties:\n icon:\n lib: antd\n icon: setting\n theme: outlined\n to: /settings\n active: true\n tooltip: 设置\n- brick: visual-builder.workbench-action\n properties:\n icon:\n lib: antd\n icon: user\n theme: outlined\n to: /profile\n active: false\n tooltip: 个人中心\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-action\n# to=\"/settings\"\n# active\n# tooltip=\"设置\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-action>\n# <visual-builder.workbench-action\n# to=\"/profile\"\n# tooltip=\"个人中心\"\n# id=\"brick-2\"\n# ></visual-builder.workbench-action>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.icon = {\n# lib: \"antd\",\n# icon: \"setting\",\n# theme: \"outlined\",\n# };\n# \n# const brick_2 = document.getElementById(\"brick-2\");\n# brick_2.icon = {\n# lib: \"antd\",\n# icon: \"user\",\n# theme: \"outlined\",\n# };\n# </script>\n# \n```\n\n### 外部链接\n\n使用 href 和 target 配置跳转到外部地址。\n\n```yaml preview\nbrick: visual-builder.workbench-action\nproperties:\n icon:\n lib: antd\n icon: link\n theme: outlined\n href: https://example.com\n target: _blank\n tooltip: 外部链接\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-action\n# href=\"https://example.com\"\n# target=\"_blank\"\n# tooltip=\"外部链接\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-action>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.icon = {\n# lib: \"antd\",\n# icon: \"link\",\n# theme: \"outlined\",\n# };\n# </script>\n# \n```\n"
10
+ },
11
+ "visual-builder.workbench-action-list": {
12
+ "doc": "---\ntagName: visual-builder.workbench-action-list\ndisplayName: WrappedVisualBuilderWorkbenchActionList\ndescription: 工作台侧边栏操作列表,根据菜单配置渲染一组 workbench-action 按钮,并根据当前路由高亮激活项\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-action-list\n\n> 工作台侧边栏操作列表,根据菜单配置渲染一组 workbench-action 按钮,并根据当前路由高亮激活项\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ----- | ------------- | ---- | ------ | ----------------------------------------- |\n| appId | `string` | 否 | - | 当前应用 ID,用于在切换应用时重置历史记录 |\n| menu | `SidebarMenu` | 是 | - | 侧边栏菜单配置 |\n\n## Examples\n\n### Basic\n\n根据菜单配置渲染侧边栏操作按钮列表,自动根据当前路由高亮对应的按钮。\n\n```yaml preview\nbrick: visual-builder.workbench-action-list\nproperties:\n appId: my-app\n menu:\n menuItems:\n - type: default\n text: 首页\n to: /home\n icon:\n lib: antd\n icon: home\n theme: outlined\n - type: default\n text: 设置\n to: /settings\n icon:\n lib: antd\n icon: setting\n theme: outlined\n - type: default\n text: 用户\n to: /users\n icon:\n lib: antd\n icon: user\n theme: outlined\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-action-list\n# app-id=\"my-app\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-action-list>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.menu = {\n# menuItems: [\n# {\n# type: \"default\",\n# text: \"首页\",\n# to: \"/home\",\n# icon: {\n# lib: \"antd\",\n# icon: \"home\",\n# theme: \"outlined\",\n# },\n# },\n# {\n# type: \"default\",\n# text: \"设置\",\n# to: \"/settings\",\n# icon: {\n# lib: \"antd\",\n# icon: \"setting\",\n# theme: \"outlined\",\n# },\n# },\n# {\n# type: \"default\",\n# text: \"用户\",\n# to: \"/users\",\n# icon: {\n# lib: \"antd\",\n# icon: \"user\",\n# theme: \"outlined\",\n# },\n# },\n# ],\n# };\n# </script>\n# \n```\n\n### 外部链接菜单项\n\n菜单项中使用 href 配置外部链接,点击后不会记录路由历史。\n\n```yaml preview\nbrick: visual-builder.workbench-action-list\nproperties:\n appId: my-app\n menu:\n menuItems:\n - type: default\n text: 内部页面\n to: /internal\n icon:\n lib: antd\n icon: appstore\n theme: outlined\n - type: default\n text: 外部文档\n href: https://example.com/docs\n target: _blank\n icon:\n lib: antd\n icon: book\n theme: outlined\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-action-list\n# app-id=\"my-app\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-action-list>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.menu = {\n# menuItems: [\n# {\n# type: \"default\",\n# text: \"内部页面\",\n# to: \"/internal\",\n# icon: {\n# lib: \"antd\",\n# icon: \"appstore\",\n# theme: \"outlined\",\n# },\n# },\n# {\n# type: \"default\",\n# text: \"外部文档\",\n# href: \"https://example.com/docs\",\n# target: \"_blank\",\n# icon: {\n# lib: \"antd\",\n# icon: \"book\",\n# theme: \"outlined\",\n# },\n# },\n# ],\n# };\n# </script>\n# \n```\n"
13
+ },
14
+ "visual-builder.workbench-tree": {
15
+ "doc": "---\ntagName: visual-builder.workbench-tree\ndisplayName: WrappedVisualBuilderWorkbenchTree\ndescription: 工作台树形组件,支持搜索、拖拽排序、折叠展开和节点操作\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-tree\n\n> 工作台树形组件,支持搜索、拖拽排序、折叠展开和节点操作\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ------------------- | ------------------------------------------------------ | ---- | ------ | ----------------------------------------------- |\n| nodes | `WorkbenchNodeData[]` | 是 | - | 树节点数据列表 |\n| actions | `WorkbenchTreeAction[]` | 是 | - | 节点操作按钮配置列表 |\n| actionsHidden | `boolean` | 是 | - | 是否隐藏节点操作按钮 |\n| placeholder | `string` | 是 | - | 无数据时显示的占位文本 |\n| isTransformName | `boolean` | 是 | - | 是否将节点名称转换为可读格式 |\n| searchPlaceholder | `string` | 是 | - | 搜索框占位文本 |\n| noSearch | `boolean` | 是 | - | 是否隐藏搜索框 |\n| activeKey | `string \\| number` | 是 | - | 当前激活节点的 key |\n| showMatchedNodeOnly | `boolean` | 是 | - | 搜索时是否只显示匹配的节点 |\n| matchNodeDataFields | `string \\| string[]` | 是 | - | 搜索时匹配的节点数据字段,\"\\*\" 表示匹配所有字段 |\n| fixedActionsFor | `Record<string, unknown> \\| Record<string, unknown>[]` | 是 | - | 始终显示操作按钮的节点数据条件 |\n| collapsible | `boolean` | 是 | - | 是否启用节点折叠功能 |\n| collapsedNodes | `string[]` | 是 | - | 当前已折叠节点的 ID 列表 |\n| allowDrag | `boolean` | 是 | - | 是否允许拖拽排序 |\n| allowDragToRoot | `boolean` | 是 | - | 是否允许拖拽到根节点位置 |\n| allowDragToInside | `boolean` | 是 | - | 是否允许拖拽到节点内部成为子节点 |\n| nodeKey | `string` | 是 | - | 节点唯一标识字段名 |\n| skipNotify | `boolean` | 是 | - | 是否跳过节点点击时的通知 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ------------ | -------------------------------------------------------------------------------------- | --------------------------- |\n| action.click | `ActionClickDetail` — { action: 操作标识, data: 节点数据 } | 点击节点操作按钮时触发 |\n| node.click | `unknown` — 节点的 data 数据 | 点击节点时触发 |\n| node.drop | `any` — 拖拽完成后的节点位置信息 | 拖拽节点完成时触发 |\n| context.menu | `unknown` — { active: true, node: 节点的 data 数据, x: 鼠标 X 坐标, y: 鼠标 Y 坐标 } | 右键点击节点时触发 |\n| node.toggle | `{ nodeId: string; collapsed: boolean; }` — { nodeId: 节点 ID, collapsed: 是否已折叠 } | 节点折叠/展开状态变化时触发 |\n\n## Examples\n\n### Basic\n\n展示基本的树形结构,包含节点数据和操作按钮。\n\n```yaml preview\nbrick: visual-builder.workbench-tree\nproperties:\n nodes:\n - key: \"1\"\n name: 页面A\n data:\n id: \"1\"\n type: page\n children:\n - key: \"1-1\"\n name: 子页面A1\n data:\n id: \"1-1\"\n type: page\n - key: \"1-2\"\n name: 子页面A2\n data:\n id: \"1-2\"\n type: page\n - key: \"2\"\n name: 页面B\n data:\n id: \"2\"\n type: page\n actions:\n - action: add\n icon:\n lib: antd\n icon: plus\n theme: outlined\n title: 新增\n - action: delete\n icon:\n lib: antd\n icon: delete\n theme: outlined\n title: 删除\n actionsHidden: false\n placeholder: 暂无页面\n searchPlaceholder: 搜索页面\n noSearch: false\n activeKey: \"1\"\n showMatchedNodeOnly: false\n matchNodeDataFields: []\n fixedActionsFor: []\n collapsible: true\n collapsedNodes: []\n allowDrag: false\n allowDragToRoot: false\n allowDragToInside: false\n nodeKey: \"\"\n skipNotify: false\nevents:\n node.click:\n - action: console.log\n action.click:\n - action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-tree\n# placeholder=\"暂无页面\"\n# search-placeholder=\"搜索页面\"\n# collapsible\n# node-key=\"\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-tree>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.nodes = [\n# {\n# key: \"1\",\n# name: \"页面A\",\n# data: {\n# id: \"1\",\n# type: \"page\",\n# },\n# children: [\n# {\n# key: \"1-1\",\n# name: \"子页面A1\",\n# data: {\n# id: \"1-1\",\n# type: \"page\",\n# },\n# },\n# {\n# key: \"1-2\",\n# name: \"子页面A2\",\n# data: {\n# id: \"1-2\",\n# type: \"page\",\n# },\n# },\n# ],\n# },\n# {\n# key: \"2\",\n# name: \"页面B\",\n# data: {\n# id: \"2\",\n# type: \"page\",\n# },\n# },\n# ];\n# brick_1.actions = [\n# {\n# action: \"add\",\n# icon: {\n# lib: \"antd\",\n# icon: \"plus\",\n# theme: \"outlined\",\n# },\n# title: \"新增\",\n# },\n# {\n# action: \"delete\",\n# icon: {\n# lib: \"antd\",\n# icon: \"delete\",\n# theme: \"outlined\",\n# },\n# title: \"删除\",\n# },\n# ];\n# brick_1.activeKey = \"1\";\n# brick_1.matchNodeDataFields = [];\n# brick_1.fixedActionsFor = [];\n# brick_1.collapsedNodes = [];\n# brick_1.addEventListener(\"node.click\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"action.click\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### 可拖拽排序\n\n启用拖拽功能,支持在节点间拖拽调整顺序和层级。\n\n```yaml preview\nbrick: visual-builder.workbench-tree\nproperties:\n nodes:\n - key: \"1\"\n name: 构件A\n data:\n id: \"1\"\n children: []\n - key: \"2\"\n name: 构件B\n data:\n id: \"2\"\n children:\n - key: \"2-1\"\n name: 子构件B1\n data:\n id: \"2-1\"\n - key: \"2-2\"\n name: 子构件B2\n data:\n id: \"2-2\"\n - key: \"3\"\n name: 构件C\n data:\n id: \"3\"\n children: []\n actions: []\n actionsHidden: true\n placeholder: 暂无构件\n searchPlaceholder: 搜索构件\n noSearch: false\n activeKey: \"\"\n showMatchedNodeOnly: false\n matchNodeDataFields: []\n fixedActionsFor: []\n collapsible: true\n collapsedNodes: []\n allowDrag: true\n allowDragToRoot: true\n allowDragToInside: true\n nodeKey: \"\"\n skipNotify: false\nevents:\n node.drop:\n - action: console.log\n node.toggle:\n - action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-tree\n# actions-hidden\n# placeholder=\"暂无构件\"\n# search-placeholder=\"搜索构件\"\n# collapsible\n# allow-drag\n# allow-drag-to-root\n# allow-drag-to-inside\n# node-key=\"\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-tree>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.nodes = [\n# {\n# key: \"1\",\n# name: \"构件A\",\n# data: {\n# id: \"1\",\n# },\n# children: [],\n# },\n# {\n# key: \"2\",\n# name: \"构件B\",\n# data: {\n# id: \"2\",\n# },\n# children: [\n# {\n# key: \"2-1\",\n# name: \"子构件B1\",\n# data: {\n# id: \"2-1\",\n# },\n# },\n# {\n# key: \"2-2\",\n# name: \"子构件B2\",\n# data: {\n# id: \"2-2\",\n# },\n# },\n# ],\n# },\n# {\n# key: \"3\",\n# name: \"构件C\",\n# data: {\n# id: \"3\",\n# },\n# children: [],\n# },\n# ];\n# brick_1.actions = [];\n# brick_1.activeKey = \"\";\n# brick_1.matchNodeDataFields = [];\n# brick_1.fixedActionsFor = [];\n# brick_1.collapsedNodes = [];\n# brick_1.addEventListener(\"node.drop\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"node.toggle\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### 搜索和右键菜单\n\n启用节点数据字段搜索,并监听右键菜单事件。\n\n```yaml preview\nbrick: visual-builder.workbench-tree\nproperties:\n nodes:\n - key: \"1\"\n name: 登录页\n data:\n id: \"1\"\n path: /login\n - key: \"2\"\n name: 首页\n data:\n id: \"2\"\n path: /home\n - key: \"3\"\n name: 详情页\n data:\n id: \"3\"\n path: /detail\n actions:\n - action: edit\n icon:\n lib: antd\n icon: edit\n theme: outlined\n title: 编辑\n actionsHidden: false\n placeholder: 暂无页面\n searchPlaceholder: 搜索路径或名称\n noSearch: false\n activeKey: \"2\"\n showMatchedNodeOnly: true\n matchNodeDataFields:\n - path\n fixedActionsFor: []\n collapsible: false\n collapsedNodes: []\n allowDrag: false\n allowDragToRoot: false\n allowDragToInside: false\n nodeKey: \"\"\n skipNotify: false\nevents:\n context.menu:\n - action: console.log\n action.click:\n - action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-tree\n# placeholder=\"暂无页面\"\n# search-placeholder=\"搜索路径或名称\"\n# show-matched-node-only\n# node-key=\"\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-tree>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.nodes = [\n# {\n# key: \"1\",\n# name: \"登录页\",\n# data: {\n# id: \"1\",\n# path: \"/login\",\n# },\n# },\n# {\n# key: \"2\",\n# name: \"首页\",\n# data: {\n# id: \"2\",\n# path: \"/home\",\n# },\n# },\n# {\n# key: \"3\",\n# name: \"详情页\",\n# data: {\n# id: \"3\",\n# path: \"/detail\",\n# },\n# },\n# ];\n# brick_1.actions = [\n# {\n# action: \"edit\",\n# icon: {\n# lib: \"antd\",\n# icon: \"edit\",\n# theme: \"outlined\",\n# },\n# title: \"编辑\",\n# },\n# ];\n# brick_1.activeKey = \"2\";\n# brick_1.matchNodeDataFields = [\"path\"];\n# brick_1.fixedActionsFor = [];\n# brick_1.collapsedNodes = [];\n# brick_1.addEventListener(\"context.menu\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"action.click\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n"
16
+ },
2
17
  "visual-builder.workbench-history-action": {
3
- "doc": "项目变更历史\n\n## Examples\n\n### Basic\n\n```yaml preview\nbrick: visual-builder.workbench-history-action\nproperties:\n appId: project-a\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-history-action\n# app-id=\"project-a\"\n# ></visual-builder.workbench-history-action>\n# \n```\n"
18
+ "doc": "---\ntagName: visual-builder.workbench-history-action\ndisplayName: WrappedVisualBuilderWorkbenchHistoryAction\ndescription: 项目变更历史\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.workbench-history-action\n\n> 项目变更历史\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| --------- | -------- | ---- | ------ | ------- |\n| appId | `string` | 是 | - | 应用 ID |\n| projectId | `string` | 是 | - | 项目 ID |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------------ |\n| history.item.click | `HistoryData & { enableRollback: boolean }` — { enableRollback: 是否可回滚, action: 操作类型, user: 操作用户, ts: 时间戳 } | 点击历史项标题触发 |\n| rollback | `HistoryData` — { action: 操作类型, user: 操作用户, ts: 时间戳 } | 点击回滚触发 |\n| rollback.all | `void` | 点击全部回滚触发 |\n\n## Slots\n\n| 名称 | 说明 |\n| --------- | -------------------------------------------------------------------------------- |\n| (default) | 放置 modal 等弹层构件,使其成为 popover 的子内容,防止操作弹层时意外关闭 popover |\n\n## Examples\n\n### Basic\n\n显示项目变更历史弹窗,支持查看历史记录和回滚操作。\n\n```yaml preview\nbrick: visual-builder.workbench-history-action\nproperties:\n appId: project-a\n projectId: proj-001\nevents:\n history.item.click:\n - action: console.log\n rollback:\n - action: console.log\n rollback.all:\n - action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.workbench-history-action\n# app-id=\"project-a\"\n# project-id=\"proj-001\"\n# id=\"brick-1\"\n# ></visual-builder.workbench-history-action>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"history.item.click\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"rollback\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"rollback.all\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n"
4
19
  },
5
20
  "visual-builder.page-arch-node": {
6
- "doc": "构件 `visual-builder.page-arch-node`\n\n## Examples\n\n### Basic\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 名称\n type: page\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"名称\"\n# type=\"page\"\n# ></visual-builder.page-arch-node>\n# \n```\n\n### With SubNodes\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 列表\n type: page\n subNodes:\n - label: 详情\n id: detail\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"列表\"\n# type=\"page\"\n# id=\"brick-1\"\n# ></visual-builder.page-arch-node>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.subNodes = [\n# {\n# label: \"详情\",\n# id: \"detail\",\n# },\n# ];\n# </script>\n# \n```\n"
21
+ "doc": "---\ntagName: visual-builder.page-arch-node\ndisplayName: WrappedVisualBuilderPageArchNode\ndescription: Visual Builder 页面架构图节点,支持页面(page)和看板(board)两种类型,可内联编辑标签、追加子节点、显示外链和子节点\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.page-arch-node\n\n> Visual Builder 页面架构图节点,支持页面(page)和看板(board)两种类型,可内联编辑标签、追加子节点、显示外链和子节点\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ------------------ | ------------------- | ---- | ------ | ---------------------------------------------------------------------------------------- |\n| label | `string` | 否 | - | 节点标签文字,支持内联双击编辑 |\n| type | `\"page\" \\| \"board\"` | 否 | - | 节点类型,\"page\" 渲染为页面缩略图样式(高 130px),\"board\" 渲染为列表图标样式(高 70px) |\n| external | `ExtraNodeData` | 否 | - | 外部链接节点数据,仅 type=\"page\" 时显示,点击触发 external.click 事件 |\n| subNodes | `ExtraNodeData[]` | 否 | - | 子节点列表,仅 type=\"page\" 时显示,每个子节点可双击和右键操作 |\n| active | `boolean` | 否 | - | 是否为当前激活节点,仅控制 CSS 样式(render: false),不触发重新渲染 |\n| notSynced | `boolean` | 否 | - | 是否标记为未同步状态,仅控制 CSS 样式(render: false),不触发重新渲染 |\n| disableChildAppend | `boolean` | 否 | - | 是否禁用追加子节点按钮,仅控制 CSS 样式(render: false),不触发重新渲染 |\n| autoFocusOnce | `string` | 否 | - | 自动聚焦标识符,设置后节点首次挂载时会自动进入标签编辑模式,同一标识符只触发一次 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| -------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------ |\n| label.editing.change | `boolean` — 当前标签是否正在编辑 | 节点标签编辑状态变化时触发 |\n| label.change | `string` — 编辑完成后的新标签文字 | 节点标签编辑完成(失焦)后触发 |\n| node.click | `void` | 点击节点主体区域时触发 |\n| node.dblclick | `void` | 双击节点主体区域时触发 |\n| node.contextmenu | `ContextMenuDetail` — { clientX: 鼠标 X 坐标, clientY: 鼠标 Y 坐标 } | 在节点上触发右键菜单时触发 |\n| child.append | `void` | 点击节点的添加子节点按钮时触发 |\n| external.click | `ExtraNodeData` — { id: 外链节点 ID, label: 外链节点标签 } | 点击节点的外链区域时触发 |\n| subNode.dblclick | `ExtraNodeData` — { id: 子节点 ID, label: 子节点标签 } | 双击子节点时触发 |\n| subNode.contextmenu | `SubNodeContextMenuData` — { node: { id: 子节点 ID, label: 子节点标签 }, clientX: 鼠标 X 坐标, clientY: 鼠标 Y 坐标 } | 在子节点上触发右键菜单时触发 |\n\n## Examples\n\n### Basic\n\n展示页面架构图节点的基本用法,包含节点标签和页面类型。\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 名称\n type: page\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"名称\"\n# type=\"page\"\n# ></visual-builder.page-arch-node>\n# \n```\n\n### Board Type\n\n展示看板类型节点,渲染为带列表图标的简洁样式。\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 看板视图\n type: board\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"看板视图\"\n# type=\"board\"\n# ></visual-builder.page-arch-node>\n# \n```\n\n### With SubNodes\n\n展示包含子节点的页面节点,子节点以骨架屏样式列于节点内部。\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 列表\n type: page\n subNodes:\n - label: 详情\n id: detail\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"列表\"\n# type=\"page\"\n# id=\"brick-1\"\n# ></visual-builder.page-arch-node>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.subNodes = [\n# {\n# label: \"详情\",\n# id: \"detail\",\n# },\n# ];\n# </script>\n# \n```\n\n### With External Link\n\n展示带外链节点的页面节点,外链区域可点击触发跳转事件。\n\n```yaml preview\nbrick: visual-builder.page-arch-node\nproperties:\n label: 主机列表\n type: page\n external:\n id: host-detail\n label: 主机详情\n subNodes:\n - label: IP 列\n id: ip-col\n - label: 主机名列\n id: hostname-col\nevents:\n label.change:\n action: console.log\n node.click:\n action: console.log\n child.append:\n action: console.log\n external.click:\n action: console.log\n subNode.dblclick:\n action: console.log\n subNode.contextmenu:\n action: console.log\n node.contextmenu:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.page-arch-node\n# label=\"主机列表\"\n# type=\"page\"\n# id=\"brick-1\"\n# ></visual-builder.page-arch-node>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.external = {\n# id: \"host-detail\",\n# label: \"主机详情\",\n# };\n# brick_1.subNodes = [\n# {\n# label: \"IP 列\",\n# id: \"ip-col\",\n# },\n# {\n# label: \"主机名列\",\n# id: \"hostname-col\",\n# },\n# ];\n# brick_1.addEventListener(\"label.change\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"node.click\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"child.append\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"external.click\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"subNode.dblclick\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"subNode.contextmenu\", (e) => {\n# console.log(e.detail);\n# });\n# brick_1.addEventListener(\"node.contextmenu\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n"
22
+ },
23
+ "visual-builder.contract-select": {
24
+ "doc": "---\ntagName: visual-builder.contract-select\ndisplayName: WrappedVisualBuilderContractSelect\ndescription: 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.contract-select\n\n> 契约选择构件,提供契约名称和版本的联动选择,格式为 `contractName@namespace:version`,支持在表单中使用\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| -------- | ---------------------------------------------------------- | ---- | ------ | --------------------------------------------------------- |\n| name | `string` | 否 | - | 表单字段名 |\n| required | `boolean` | 否 | - | 是否为必填项 |\n| label | `string` | 否 | - | 表单项标签 |\n| value | `any` | 否 | - | 当前选中的契约值,格式为 `contractName@namespace:version` |\n| suffix | `{ useBrick: UseSingleBrickConf \\| UseSingleBrickConf[] }` | 否 | - | 输入框后缀内容,使用 useBrick 自定义渲染 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ------ | ---------------------------------------------------------------------- | -------------------- |\n| change | `string` — 选中的契约值字符串,格式为 `contractName@namespace:version` | 契约选择值变化时触发 |\n\n## Examples\n\n### Basic\n\n展示契约选择构件的基本用法,搜索并选择契约名称和版本。\n\n```yaml preview\nbrick: visual-builder.contract-select\nproperties:\n label: 契约\n name: contract\nevents:\n change:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.contract-select\n# label=\"契约\"\n# name=\"contract\"\n# id=\"brick-1\"\n# ></visual-builder.contract-select>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### Required Field\n\n在表单中设置必填校验。\n\n```yaml preview\nbrick: eo-form\nevents:\n validate.success:\n action: console.log\nchildren:\n - brick: visual-builder.contract-select\n properties:\n label: 契约\n name: contract\n required: true\n - brick: eo-submit-buttons\n properties:\n submitText: 提交\n# -- YAML DELIMITER (1nbbm8) --\n# <eo-form id=\"brick-1\">\n# <visual-builder.contract-select\n# label=\"契约\"\n# name=\"contract\"\n# required\n# ></visual-builder.contract-select>\n# <eo-submit-buttons submit-text=\"提交\"></eo-submit-buttons>\n# </eo-form>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"validate.success\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### With Value\n\n设置初始契约值。\n\n```yaml preview\nbrick: visual-builder.contract-select\nproperties:\n label: 契约\n name: contract\n value: \"easyops.api.cmdb.instance@instance.GetDetail:1.0.0\"\nevents:\n change:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.contract-select\n# label=\"契约\"\n# name=\"contract\"\n# id=\"brick-1\"\n# ></visual-builder.contract-select>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.value = \"easyops.api.cmdb.instance@instance.GetDetail:1.0.0\";\n# brick_1.addEventListener(\"change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### With Suffix\n\n在选择器后添加自定义后缀内容。\n\n```yaml preview\nbrick: visual-builder.contract-select\nproperties:\n label: 契约\n name: contract\n suffix:\n useBrick:\n brick: eo-button\n properties:\n icon:\n lib: antd\n icon: question-circle\n type: text\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.contract-select\n# label=\"契约\"\n# name=\"contract\"\n# id=\"brick-1\"\n# ></visual-builder.contract-select>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.suffix = {\n# useBrick: {\n# brick: \"eo-button\",\n# properties: {\n# icon: {\n# lib: \"antd\",\n# icon: \"question-circle\",\n# },\n# type: \"text\",\n# },\n# },\n# };\n# </script>\n# \n```\n"
25
+ },
26
+ "visual-builder.generate-snippets-context-menu": {
27
+ "doc": "---\ntagName: visual-builder.generate-snippets-context-menu\ndisplayName: WrappedVisualBuilderGenerateSnippetsContextMenu\ndescription: 用于 Visual Builder 的代码片段右键上下文菜单,支持拖拽片段到画布,菜单位置自动适配视口边界\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.generate-snippets-context-menu\n\n> 用于 Visual Builder 的代码片段右键上下文菜单,支持拖拽片段到画布,菜单位置自动适配视口边界\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| -------- | ----------------- | ---- | ------ | ------------------------------------------------------------- |\n| options | `SnippetOption[]` | 否 | - | 菜单选项列表,每组包含标题和子菜单项 |\n| active | `boolean` | 否 | - | 菜单是否处于激活(显示)状态,通过 open/close 方法控制 |\n| position | `Position` | 否 | - | 菜单显示位置,格式为 `[clientX, clientY]`,超出视口时自动修正 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| --------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------ |\n| item.drag.start | `SnippetItem` — { text: 片段文本, icon: 图标, dragConf: { format: 数据格式, data: 数据内容 } } | 用户开始拖拽菜单项时触发 |\n| item.drag.end | `SnippetItem` — { text: 片段文本, icon: 图标, dragConf: { format: 数据格式, data: 数据内容 } } | 用户结束拖拽菜单项时触发,同时菜单自动关闭 |\n\n## Methods\n\n| 方法 | 参数 | 返回值 | 说明 |\n| ----- | ---------------------------------- | ------ | ------------------------------ |\n| open | `({ position }: OpenInfo) => void` | `void` | 打开上下文菜单并定位到指定位置 |\n| close | `() => void` | `void` | 关闭上下文菜单 |\n\n## Examples\n\n### Basic\n\n展示代码片段上下文菜单的基本用法,右键点击区域后显示菜单,可拖拽菜单项。\n\n```yaml preview\n- brick: div\n properties:\n textContent: 右键点击此区域打开菜单\n style:\n padding: 40px\n border: 1px dashed #ccc\n textAlign: center\n userSelect: none\n events:\n contextmenu:\n target: \"#snippet-menu\"\n method: open\n args:\n - position:\n - \"<% EVENT.clientX %>\"\n - \"<% EVENT.clientY %>\"\n- brick: visual-builder.generate-snippets-context-menu\n properties:\n id: snippet-menu\n options:\n - title: 基础组件\n children:\n - text: 按钮\n icon:\n lib: antd\n icon: border\n dragConf:\n format: text/plain\n data:\n brick: eo-button\n properties:\n textContent: 新按钮\n - text: 输入框\n icon:\n lib: antd\n icon: edit\n dragConf:\n format: text/plain\n data:\n brick: eo-input\n - title: 布局组件\n children:\n - text: 卡片\n icon:\n lib: antd\n icon: credit-card\n tooltip: 拖拽以添加卡片\n dragConf:\n format: text/plain\n data:\n brick: eo-card\n events:\n item.drag.start:\n action: console.log\n item.drag.end:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <div\n# style=\"\n# padding: 40px;\n# border: 1px dashed;\n# text-align: center;\n# user-select: none;\n# \"\n# id=\"brick-1\"\n# >\n# 右键点击此区域打开菜单\n# </div>\n# <visual-builder.generate-snippets-context-menu\n# id=\"snippet-menu\"\n# ></visual-builder.generate-snippets-context-menu>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"contextmenu\", (e) => {\n# const brick = document.querySelector(\"#snippet-menu\");\n# brick.open({ position: [\"<% EVENT.clientX %>\", \"<% EVENT.clientY %>\"] });\n# });\n# \n# const snippet_menu = document.getElementById(\"snippet-menu\");\n# snippet_menu.options = [\n# {\n# title: \"基础组件\",\n# children: [\n# {\n# text: \"按钮\",\n# icon: {\n# lib: \"antd\",\n# icon: \"border\",\n# },\n# dragConf: {\n# format: \"text/plain\",\n# data: {\n# brick: \"eo-button\",\n# properties: {\n# textContent: \"新按钮\",\n# },\n# },\n# },\n# },\n# {\n# text: \"输入框\",\n# icon: {\n# lib: \"antd\",\n# icon: \"edit\",\n# },\n# dragConf: {\n# format: \"text/plain\",\n# data: {\n# brick: \"eo-input\",\n# },\n# },\n# },\n# ],\n# },\n# {\n# title: \"布局组件\",\n# children: [\n# {\n# text: \"卡片\",\n# icon: {\n# lib: \"antd\",\n# icon: \"credit-card\",\n# },\n# tooltip: \"拖拽以添加卡片\",\n# dragConf: {\n# format: \"text/plain\",\n# data: {\n# brick: \"eo-card\",\n# },\n# },\n# },\n# ],\n# },\n# ];\n# snippet_menu.addEventListener(\"item.drag.start\", (e) => {\n# console.log(e.detail);\n# });\n# snippet_menu.addEventListener(\"item.drag.end\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### With Disabled Items\n\n展示带有禁用状态的菜单项,禁用项不可拖拽。\n\n```yaml preview\n- brick: div\n properties:\n textContent: 右键点击此区域打开菜单(部分选项已禁用)\n style:\n padding: 40px\n border: 1px dashed #ccc\n textAlign: center\n userSelect: none\n events:\n contextmenu:\n target: \"#snippet-menu-disabled\"\n method: open\n args:\n - position:\n - \"<% EVENT.clientX %>\"\n - \"<% EVENT.clientY %>\"\n- brick: visual-builder.generate-snippets-context-menu\n properties:\n id: snippet-menu-disabled\n options:\n - title: 组件列表\n children:\n - text: 按钮(可用)\n icon:\n lib: antd\n icon: border\n dragConf:\n format: text/plain\n data:\n brick: eo-button\n - text: 表格(禁用)\n icon:\n lib: antd\n icon: table\n disabled: true\n tooltip: 该组件在当前场景不可用\n# -- YAML DELIMITER (1nbbm8) --\n# <div\n# style=\"\n# padding: 40px;\n# border: 1px dashed;\n# text-align: center;\n# user-select: none;\n# \"\n# id=\"brick-1\"\n# >\n# 右键点击此区域打开菜单(部分选项已禁用)\n# </div>\n# <visual-builder.generate-snippets-context-menu\n# id=\"snippet-menu-disabled\"\n# ></visual-builder.generate-snippets-context-menu>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"contextmenu\", (e) => {\n# const brick = document.querySelector(\"#snippet-menu-disabled\");\n# brick.open({\"position\":[\"<% EVENT.clientX %>\",\"<% EVENT.clientY %>\"]});\n# });\n# \n# const snippet_menu-disabled = document.getElementById(\"snippet-menu-disabled\");\n# snippet_menu-disabled.options = [\n# {\n# \"title\": \"组件列表\",\n# \"children\": [\n# {\n# \"text\": \"按钮(可用)\",\n# \"icon\": {\n# \"lib\": \"antd\",\n# \"icon\": \"border\"\n# },\n# \"dragConf\": {\n# \"format\": \"text/plain\",\n# \"data\": {\n# \"brick\": \"eo-button\"\n# }\n# }\n# },\n# {\n# \"text\": \"表格(禁用)\",\n# \"icon\": {\n# \"lib\": \"antd\",\n# \"icon\": \"table\"\n# },\n# \"disabled\": true,\n# \"tooltip\": \"该组件在当前场景不可用\"\n# }\n# ]\n# }\n# ];\n# </script>\n# \n```\n"
7
28
  },
8
29
  "visual-builder.chat-conversation": {
9
- "doc": "用于 Visual Builder 的智能聊天对话列表\n\n## Examples\n\n### Basic\n\n````yaml preview\nbrick: visual-builder.chat-conversation\nproperties:\n messages:\n - role: user\n content: 生成一个主机列表页面\n key: 1\n - role: assistant\n content: |\n 好的,我们来逐步确认页面的各个区块需求。\n\n 1. **页头区**:您需要在这个区域放置什么内容?比如标题、横幅图片或者搜索框等。\n 2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有“管理”、“刷新”、“新建”、“删除”、“执行”、“导入”和“导出”,这些都足够了吗?\n 3. **标签导航区**:是否需要多个标签页?如果有,需要显示哪些内容或数据?\n 4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?“最近访问”和“基础筛选”需要哪些具体筛选条件?\n 5. **列表区**:列表中应显示主机的哪些属性?例如,是否显示`主机名`、`IP`、`供应商`等信息?是否需要编辑和删除功能?列表是否可排序?用户是否可以多选列表项?分页功能需要吗?\n\n 请根据您的需求回答这些问题,或者告诉我哪些区块的默认设置即可。\n key: 2\n - role: user\n content: |\n 不包含页头区。\n 全局操作区包含新建、删除两个按钮。数据控制区提供搜索功能,用户可以按IP搜索。列表区展示每条主机的IP、主机名、运营状态、创建时间。\n 其他区块不需要。\n key: 3\n - role: assistant\n content: |\n 了解了您的需求,以下是根据您的回答总结的最终需求:\n\n ```json\n {\n \"requirement\": \"生成一个主机列表页面,不包含页头区。全局操作区包含'新建'和'删除'两个按钮。数据控制区提供搜索功能,用户可以按IP进行搜索。列表区展示每条主机的IP、主机名、运营状态和创建时间。其他区块如标签导航区、数据控制区的其他功能(如最近访问、基础筛选)以及列表区的编辑、排序、选择和分页功能都不需要。\"\n }\n ```\n\n ```easy_cmd_vb_block_page\n [{\"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}]\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"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\"}}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"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\"}}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"92c07992c61d4f43b41e6a56e500622a\", \"storyboard\": {\"brick\": \"eo-form\", \"properties\": {\"layout\": \"inline\"}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"e2f986f8379f4fd4bd3627855051c50e\", \"storyboard\": {\"brick\": \"eo-search\", \"events\": {\"search\": []}, \"properties\": {\"placeholder\": \"按IP地址搜索\", \"dataset\": {\"testid\": \"search\"}}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"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}}]}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"8ed6175b7bc94b40b28f1f7687cb1a3a\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[provider]\"}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"a52c680f3e364eff84fc169b8d8c191e\", \"storyboard\": {\"brick\": \"eo-link\", \"events\": {\"click\": []}, \"properties\": {\"url\": \"<% DATA.cellData %>\", \"target\": \"_blank\", \"showIcon\": true, \"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"nodeUrl\"}}, \"slot\": \"[hostname]\"}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"c04fef1e64ca4200a5843b579f71fbcf\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[_mac]\"}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"0b485a8a1b924d54adb8914763096723\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[osSystem]\"}}\n ```\n key: 4\n partial: true\nevents:\n storyboard.update:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-conversation\n# id=\"brick-1\"\n# ></visual-builder.chat-conversation>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.messages = [\n# {\n# role: \"user\",\n# content: \"生成一个主机列表页面\",\n# key: 1,\n# },\n# {\n# role: \"assistant\",\n# content:\n# \"好的,我们来逐步确认页面的各个区块需求。\\n\\n1. **页头区**:您需要在这个区域放置什么内容?比如标题、横幅图片或者搜索框等。\\n2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有“管理”、“刷新”、“新建”、“删除”、“执行”、“导入”和“导出”,这些都足够了吗?\\n3. **标签导航区**:是否需要多个标签页?如果有,需要显示哪些内容或数据?\\n4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?“最近访问”和“基础筛选”需要哪些具体筛选条件?\\n5. **列表区**:列表中应显示主机的哪些属性?例如,是否显示`主机名`、`IP`、`供应商`等信息?是否需要编辑和删除功能?列表是否可排序?用户是否可以多选列表项?分页功能需要吗?\\n\\n请根据您的需求回答这些问题,或者告诉我哪些区块的默认设置即可。\\n\",\n# key: 2,\n# },\n# {\n# role: \"user\",\n# content:\n# \"不包含页头区。\\n全局操作区包含新建、删除两个按钮。数据控制区提供搜索功能,用户可以按IP搜索。列表区展示每条主机的IP、主机名、运营状态、创建时间。\\n其他区块不需要。\\n\",\n# key: 3,\n# },\n# {\n# role: \"assistant\",\n# content:\n# '了解了您的需求,以下是根据您的回答总结的最终需求:\\n\\n```json\\n{\\n \"requirement\": \"生成一个主机列表页面,不包含页头区。全局操作区包含\\'新建\\'和\\'删除\\'两个按钮。数据控制区提供搜索功能,用户可以按IP进行搜索。列表区展示每条主机的IP、主机名、运营状态和创建时间。其他区块如标签导航区、数据控制区的其他功能(如最近访问、基础筛选)以及列表区的编辑、排序、选择和分页功能都不需要。\"\\n}\\n```\\n\\n```easy_cmd_vb_block_page\\n[{\"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}]\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"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\"}}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"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\"}}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"92c07992c61d4f43b41e6a56e500622a\", \"storyboard\": {\"brick\": \"eo-form\", \"properties\": {\"layout\": \"inline\"}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"e2f986f8379f4fd4bd3627855051c50e\", \"storyboard\": {\"brick\": \"eo-search\", \"events\": {\"search\": []}, \"properties\": {\"placeholder\": \"按IP地址搜索\", \"dataset\": {\"testid\": \"search\"}}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"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}}]}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"8ed6175b7bc94b40b28f1f7687cb1a3a\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[provider]\"}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"a52c680f3e364eff84fc169b8d8c191e\", \"storyboard\": {\"brick\": \"eo-link\", \"events\": {\"click\": []}, \"properties\": {\"url\": \"<% DATA.cellData %>\", \"target\": \"_blank\", \"showIcon\": true, \"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"nodeUrl\"}}, \"slot\": \"[hostname]\"}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"c04fef1e64ca4200a5843b579f71fbcf\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[_mac]\"}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"0b485a8a1b924d54adb8914763096723\", \"storyboard\": {\"brick\": \"eo-text\", \"properties\": {\"textContent\": \"<% DATA.cellData %>\", \"dataset\": {\"testid\": \"textContent\"}}, \"slot\": \"[osSystem]\"}}\\n```\\n',\n# key: 4,\n# partial: true,\n# },\n# ];\n# brick_1.addEventListener(\"storyboard.update\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n````\n\n### Errors\n\n```yaml preview\nbrick: visual-builder.chat-conversation\nproperties:\n messages:\n - role: user\n content: Create a page to show server host list.\n key: 1\n - role: assistant\n content: OK, let's do it\n key: 2\n failed: true\n - role: assistant\n content: Internal Server Error\n key: 3\n failed: true\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-conversation\n# id=\"brick-1\"\n# ></visual-builder.chat-conversation>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.messages = [\n# {\n# role: \"user\",\n# content: \"Create a page to show server host list.\",\n# key: 1,\n# },\n# {\n# role: \"assistant\",\n# content: \"OK, let's do it\",\n# key: 2,\n# failed: true,\n# },\n# {\n# role: \"assistant\",\n# content: \"Internal Server Error\",\n# key: 3,\n# failed: true,\n# },\n# ];\n# </script>\n# \n```\n"
30
+ "doc": "---\ntagName: visual-builder.chat-conversation\ndisplayName: WrappedVisualBuilderChatConversation\ndescription: 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.chat-conversation\n\n> 用于 Visual Builder 的智能聊天对话列表,解析 AI 回复中的 Storyboard 代码块并触发更新事件\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ------------- | ----------- | ---- | ------ | ------------------------------------------------------------------------------- |\n| messages | `Message[]` | 否 | - | 对话消息列表,包含用户和 AI 助手的消息,支持流式(partial)和失败(failed)状态 |\n| errorBoundary | `boolean` | 否 | - | 是否为解析出的砖块启用错误边界,防止单个砖块异常导致整个预览崩溃 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ----------------- | ------------------------------------ | ---------------------------------------- |\n| storyboard.update | `BrickConf[]` — 解析出的砖块配置列表 | 从 AI 回复中解析出新的 Storyboard 时触发 |\n\n## Examples\n\n### Basic\n\n展示包含用户消息和 AI 回复的完整对话列表,AI 回复中嵌入了 Storyboard 代码块。\n\n````yaml preview\nbrick: visual-builder.chat-conversation\nproperties:\n messages:\n - role: user\n content: 生成一个主机列表页面\n key: 1\n - role: assistant\n content: |\n 好的,我们来逐步确认页面的各个区块需求。\n\n 1. **页头区**:您需要在这个区域放置什么内容?比如标题、横幅图片或者搜索框等。\n 2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有\"管理\"、\"刷新\"、\"新建\"、\"删除\"、\"执行\"、\"导入\"和\"导出\",这些都足够了吗?\n 3. **标签导航区**:是否需要多个标签页?如果有,需要显示哪些内容或数据?\n 4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?\"最近访问\"和\"基础筛选\"需要哪些具体筛选条件?\n 5. **列表区**:列表中应显示主机的哪些属性?例如,是否显示`主机名`、`IP`、`供应商`等信息?是否需要编辑和删除功能?列表是否可排序?用户是否可以多选列表项?分页功能需要吗?\n\n 请根据您的需求回答这些问题,或者告诉我哪些区块的默认设置即可。\n key: 2\n - role: user\n content: |\n 不包含页头区。\n 全局操作区包含新建、删除两个按钮。数据控制区提供搜索功能,用户可以按IP搜索。列表区展示每条主机的IP、主机名、运营状态、创建时间。\n 其他区块不需要。\n key: 3\n - role: assistant\n content: |\n 了解了您的需求,以下是根据您的回答总结的最终需求:\n\n ```json\n {\n \"requirement\": \"生成一个主机列表页面,不包含页头区。全局操作区包含'新建'和'删除'两个按钮。数据控制区提供搜索功能,用户可以按IP进行搜索。列表区展示每条主机的IP、主机名、运营状态和创建时间。其他区块如标签导航区、数据控制区的其他功能(如最近访问、基础筛选)以及列表区的编辑、排序、选择和分页功能都不需要。\"\n }\n ```\n\n ```easy_cmd_vb_block_page\n [{\"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}]\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"d7ef5946776445ba96ebf2beb2f680a5\", \"storyboard\": {\"brick\": \"eo-button\", \"events\": {\"click\": []}, \"properties\": {\"textContent\": \"新建\", \"type\": \"primary\", \"size\": \"medium\"}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"uuid\": \"da3e65baf08d4fc28b938d1efd768265\", \"storyboard\": {\"brick\": \"eo-button\", \"events\": {\"click\": []}, \"properties\": {\"textContent\": \"删除\", \"type\": \"danger\", \"size\": \"medium\", \"danger\": true}}}\n ```\n\n ```easy_cmd_vb_block_storyboard\n {\"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\"}]}}}}\n ```\n key: 4\n partial: true\nevents:\n storyboard.update:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-conversation\n# id=\"brick-1\"\n# ></visual-builder.chat-conversation>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.messages = [\n# {\n# role: \"user\",\n# content: \"生成一个主机列表页面\",\n# key: 1,\n# },\n# {\n# role: \"assistant\",\n# content:\n# '好的,我们来逐步确认页面的各个区块需求。\\n\\n1. **页头区**:您需要在这个区域放置什么内容?比如标题、横幅图片或者搜索框等。\\n2. **全局操作区**:您希望有哪些全局操作的按钮?如您所示,已有\"管理\"、\"刷新\"、\"新建\"、\"删除\"、\"执行\"、\"导入\"和\"导出\",这些都足够了吗?\\n3. **标签导航区**:是否需要多个标签页?如果有,需要显示哪些内容或数据?\\n4. **数据控制区**:对于搜索,需要哪些字段作为搜索条件?\"最近访问\"和\"基础筛选\"需要哪些具体筛选条件?\\n5. **列表区**:列表中应显示主机的哪些属性?例如,是否显示`主机名`、`IP`、`供应商`等信息?是否需要编辑和删除功能?列表是否可排序?用户是否可以多选列表项?分页功能需要吗?\\n\\n请根据您的需求回答这些问题,或者告诉我哪些区块的默认设置即可。\\n',\n# key: 2,\n# },\n# {\n# role: \"user\",\n# content:\n# \"不包含页头区。\\n全局操作区包含新建、删除两个按钮。数据控制区提供搜索功能,用户可以按IP搜索。列表区展示每条主机的IP、主机名、运营状态、创建时间。\\n其他区块不需要。\\n\",\n# key: 3,\n# },\n# {\n# role: \"assistant\",\n# content:\n# '了解了您的需求,以下是根据您的回答总结的最终需求:\\n\\n```json\\n{\\n \"requirement\": \"生成一个主机列表页面,不包含页头区。全局操作区包含\\'新建\\'和\\'删除\\'两个按钮。数据控制区提供搜索功能,用户可以按IP进行搜索。列表区展示每条主机的IP、主机名、运营状态和创建时间。其他区块如标签导航区、数据控制区的其他功能(如最近访问、基础筛选)以及列表区的编辑、排序、选择和分页功能都不需要。\"\\n}\\n```\\n\\n```easy_cmd_vb_block_page\\n[{\"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}]\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"d7ef5946776445ba96ebf2beb2f680a5\", \"storyboard\": {\"brick\": \"eo-button\", \"events\": {\"click\": []}, \"properties\": {\"textContent\": \"新建\", \"type\": \"primary\", \"size\": \"medium\"}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"uuid\": \"da3e65baf08d4fc28b938d1efd768265\", \"storyboard\": {\"brick\": \"eo-button\", \"events\": {\"click\": []}, \"properties\": {\"textContent\": \"删除\", \"type\": \"danger\", \"size\": \"medium\", \"danger\": true}}}\\n```\\n\\n```easy_cmd_vb_block_storyboard\\n{\"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\"}]}}}}\\n```\\n',\n# key: 4,\n# partial: true,\n# },\n# ];\n# brick_1.addEventListener(\"storyboard.update\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n````\n\n### Errors\n\n展示包含失败消息的对话,failed 状态的消息会以错误样式展示。\n\n```yaml preview\nbrick: visual-builder.chat-conversation\nproperties:\n messages:\n - role: user\n content: Create a page to show server host list.\n key: 1\n - role: assistant\n content: OK, let's do it\n key: 2\n failed: true\n - role: assistant\n content: Internal Server Error\n key: 3\n failed: true\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-conversation\n# id=\"brick-1\"\n# ></visual-builder.chat-conversation>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.messages = [\n# {\n# role: \"user\",\n# content: \"Create a page to show server host list.\",\n# key: 1,\n# },\n# {\n# role: \"assistant\",\n# content: \"OK, let's do it\",\n# key: 2,\n# failed: true,\n# },\n# {\n# role: \"assistant\",\n# content: \"Internal Server Error\",\n# key: 3,\n# failed: true,\n# },\n# ];\n# </script>\n# \n```\n\n### With Error Boundary\n\n启用错误边界后,单个砖块渲染失败不会导致整个预览崩溃。\n\n```yaml preview\nbrick: visual-builder.chat-conversation\nproperties:\n errorBoundary: true\n messages:\n - role: user\n content: 生成一个简单页面\n key: 1\n - role: assistant\n content: 好的,正在生成...\n key: 2\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-conversation\n# error-boundary\n# id=\"brick-1\"\n# ></visual-builder.chat-conversation>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.messages = [\n# {\n# role: \"user\",\n# content: \"生成一个简单页面\",\n# key: 1,\n# },\n# {\n# role: \"assistant\",\n# content: \"好的,正在生成...\",\n# key: 2,\n# },\n# ];\n# </script>\n# \n```\n"
31
+ },
32
+ "visual-builder.chat-preview": {
33
+ "doc": "---\ntagName: visual-builder.chat-preview\ndisplayName: WrappedVisualBuilderChatPreview\ndescription: Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.chat-preview\n\n> Visual Builder 的聊天预览构件,在 iframe 中渲染 Storyboard 并支持元素检查模式\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ---------- | -------------------------- | ---- | ------ | ---------------------------------------------------------------- |\n| storyboard | `BrickConf \\| BrickConf[]` | 否 | - | 要预览的砖块配置,支持单个或列表,更新后自动触发 iframe 重新渲染 |\n| theme | `string` | 否 | - | 预览的主题,例如 \"dark-v2\" |\n| uiVersion | `string` | 否 | - | 预览的 UI 版本,例如 \"8.2\" |\n| app | `MicroApp` | 否 | - | 预览使用的 MicroApp 配置,影响 app 上下文 |\n| inspecting | `boolean` | 否 | - | 是否开启元素检查模式,开启后鼠标悬停和点击时会显示元素轮廓高亮 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------- |\n| activeTarget.change | `InspectSelector \\| undefined` — 当前激活的检查目标选择器,未选中时为 undefined | 用户在检查模式下点击元素时,激活目标变化时触发 |\n\n## Methods\n\n| 方法 | 参数 | 返回值 | 说明 |\n| ------ | ------------------------------------ | ------ | ------------------------------------------------ |\n| select | `(payload: InspectSelector) => void` | `void` | 向 iframe 内的预览代理发送选中指令,高亮指定元素 |\n\n## Examples\n\n### Basic\n\n展示 Chat Preview 的基本用法,传入砖块配置后在 iframe 中渲染预览。\n\n```yaml preview\nbrick: visual-builder.chat-preview\nproperties:\n storyboard:\n - brick: eo-button\n properties:\n textContent: 预览按钮\n type: primary\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-preview id=\"brick-1\"></visual-builder.chat-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.storyboard = [\n# {\n# brick: \"eo-button\",\n# properties: {\n# textContent: \"预览按钮\",\n# type: \"primary\",\n# },\n# },\n# ];\n# </script>\n# \n```\n\n### With Theme\n\n指定预览主题和 UI 版本,使预览效果与目标环境匹配。\n\n```yaml preview\nbrick: visual-builder.chat-preview\nproperties:\n theme: dark-v2\n uiVersion: \"8.2\"\n storyboard:\n - brick: eo-button\n properties:\n textContent: 暗色主题预览\n type: primary\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-preview\n# theme=\"dark-v2\"\n# ui-version=\"8.2\"\n# id=\"brick-1\"\n# ></visual-builder.chat-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.storyboard = [\n# {\n# brick: \"eo-button\",\n# properties: {\n# textContent: \"暗色主题预览\",\n# type: \"primary\",\n# },\n# },\n# ];\n# </script>\n# \n```\n\n### Inspect Mode\n\n开启检查模式,鼠标悬停时显示元素轮廓,点击时触发激活目标变化事件。\n\n```yaml preview\nbrick: visual-builder.chat-preview\nproperties:\n inspecting: true\n storyboard:\n - brick: eo-button\n properties:\n textContent: 点击以检查\n type: primary\nevents:\n activeTarget.change:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.chat-preview\n# inspecting\n# id=\"brick-1\"\n# ></visual-builder.chat-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.storyboard = [\n# {\n# brick: \"eo-button\",\n# properties: {\n# textContent: \"点击以检查\",\n# type: \"primary\",\n# },\n# },\n# ];\n# brick_1.addEventListener(\"activeTarget.change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n"
34
+ },
35
+ "visual-builder.pre-generated-preview": {
36
+ "doc": "---\ntagName: visual-builder.pre-generated-preview\ndisplayName: WrappedVisualBuilderPreGeneratedPreview\ndescription: 预生成编排预览,在 iframe 中渲染属性生成结果的对比表格\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.pre-generated-preview\n\n> 预生成编排预览,在 iframe 中渲染属性生成结果的对比表格\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ----------- | ------------------------------------------------------------------------------------------- | ---- | --------- | -------------------------------- |\n| generations | `AttributeGeneration[]` | 否 | - | 属性生成数据列表 |\n| category | `\"detail-item\" \\| \"form-item\" \\| \"table-column\" \\| \"card-item\" \\| \"metric-item\" \\| \"value\"` | 否 | `\"value\"` | 预览分类,影响数据容器的渲染方式 |\n| theme | `string` | 否 | - | 预览主题 |\n| uiVersion | `string` | 否 | - | UI 版本 |\n| app | `MicroApp` | 否 | - | 微应用信息 |\n\n## Examples\n\n### Basic\n\n展示属性生成编排的对比表格预览,按展示等级分列渲染不同视觉重量的编排。\n\n```yaml preview minHeight=\"400px\"\nbrick: visual-builder.pre-generated-preview\nproperties:\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n category: detail-item\n generations:\n - instanceId: abc001\n objectId: HOST\n propertyId: hostname\n propertyName: 主机名\n displayLevel: 0\n rwType: string\n category: detail-item\n mockData:\n - server-01\n - web-server-02\n storyboard:\n brick: span\n properties:\n textContent: \"<% DATA.hostname %>\"\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-preview\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# category=\"detail-item\"\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# instanceId: \"abc001\",\n# objectId: \"HOST\",\n# propertyId: \"hostname\",\n# propertyName: \"主机名\",\n# displayLevel: 0,\n# rwType: \"string\",\n# category: \"detail-item\",\n# mockData: [\"server-01\", \"web-server-02\"],\n# storyboard: {\n# brick: \"span\",\n# properties: {\n# textContent: \"<% DATA.hostname %>\",\n# },\n# },\n# },\n# ];\n# </script>\n# \n```\n\n### Form Item 预览\n\n以表单项模式预览生成的编排,适用于表单输入场景。\n\n```yaml preview minHeight=\"400px\"\nbrick: visual-builder.pre-generated-preview\nproperties:\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n category: form-item\n generations:\n - instanceId: abc002\n objectId: HOST\n propertyId: status\n propertyName: 状态\n displayLevel: 1\n rwType: enum\n category: form-item\n mockData:\n - running\n - stopped\n storyboard:\n brick: eo-select\n properties:\n name: status\n label: 状态\n options:\n - label: 运行中\n value: running\n - label: 已停止\n value: stopped\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-preview\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# category=\"form-item\"\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# instanceId: \"abc002\",\n# objectId: \"HOST\",\n# propertyId: \"status\",\n# propertyName: \"状态\",\n# displayLevel: 1,\n# rwType: \"enum\",\n# category: \"form-item\",\n# mockData: [\"running\", \"stopped\"],\n# storyboard: {\n# brick: \"eo-select\",\n# properties: {\n# name: \"status\",\n# label: \"状态\",\n# options: [\n# {\n# label: \"运行中\",\n# value: \"running\",\n# },\n# {\n# label: \"已停止\",\n# value: \"stopped\",\n# },\n# ],\n# },\n# },\n# },\n# ];\n# </script>\n# \n```\n"
37
+ },
38
+ "visual-builder.pre-generated-table-view": {
39
+ "doc": "---\ntagName: visual-builder.pre-generated-table-view\ndisplayName: WrappedVisualBuilderPreGeneratedTableView\ndescription: 预生成编排表格视图,使用 CSS Grid 布局渲染子构件\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.pre-generated-table-view\n\n> 预生成编排表格视图,使用 CSS Grid 布局渲染子构件\n\n## Examples\n\n### Basic\n\n使用 CSS Grid 布局将子构件排列成表格,通过 style 属性定义列宽。\n\n```yaml preview\nbrick: visual-builder.pre-generated-table-view\nproperties:\n style:\n gridTemplateColumns: \"120px 1fr 1fr\"\nchildren:\n - brick: div\n properties:\n textContent: 列1标题\n className: head-cell\n - brick: div\n properties:\n textContent: 列2标题\n className: head-cell\n - brick: div\n properties:\n textContent: 列3标题\n className: head-cell\n - brick: div\n properties:\n textContent: 数据A\n - brick: div\n properties:\n textContent: 数据B\n - brick: div\n properties:\n textContent: 数据C\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-table-view\n# style=\"grid-template-columns: 120px 1fr 1fr\"\n# >\n# <div class=\"head-cell\">列1标题</div>\n# <div class=\"head-cell\">列2标题</div>\n# <div class=\"head-cell\">列3标题</div>\n# <div>数据A</div>\n# <div>数据B</div>\n# <div>数据C</div>\n# </visual-builder.pre-generated-table-view>\n# \n```\n"
40
+ },
41
+ "visual-builder.pre-generated-container": {
42
+ "doc": "---\ntagName: visual-builder.pre-generated-container\ndisplayName: WrappedVisualBuilderPreGeneratedContainer\ndescription: 预生成编排容器,使用 useBrick 渲染指定的构件配置,并将 dataSource 作为数据传入\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.pre-generated-container\n\n> 预生成编排容器,使用 useBrick 渲染指定的构件配置,并将 dataSource 作为数据传入\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ---------- | -------------- | ---- | ------ | ---------------- |\n| useBrick | `UseBrickConf` | 否 | - | 要渲染的构件配置 |\n| dataSource | `unknown` | 否 | - | 传入构件的数据 |\n\n## Examples\n\n### Basic\n\n使用 useBrick 配置渲染一个简单的文本构件,并通过 dataSource 注入数据。\n\n```yaml preview\nbrick: visual-builder.pre-generated-container\nproperties:\n useBrick:\n brick: span\n properties:\n textContent: \"<% DATA.label %>\"\n dataSource:\n label: Hello World\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-container\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-container>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.useBrick = {\n# brick: \"span\",\n# properties: {\n# textContent: \"<% DATA.label %>\",\n# },\n# };\n# brick_1.dataSource = {\n# label: \"Hello World\",\n# };\n# </script>\n# \n```\n\n### 渲染列表构件\n\n通过 useBrick 渲染列表构件,将 dataSource 传递给列表。\n\n```yaml preview\nbrick: visual-builder.pre-generated-container\nproperties:\n useBrick:\n brick: eo-descriptions\n properties:\n list:\n - label: 名称\n field: name\n - label: 状态\n field: status\n dataSource: \"<% DATA %>\"\n dataSource:\n name: 示例对象\n status: 运行中\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-container\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-container>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.useBrick = {\n# brick: \"eo-descriptions\",\n# properties: {\n# list: [\n# {\n# label: \"名称\",\n# field: \"name\",\n# },\n# {\n# label: \"状态\",\n# field: \"status\",\n# },\n# ],\n# dataSource: \"<% DATA %>\",\n# },\n# };\n# brick_1.dataSource = {\n# name: \"示例对象\",\n# status: \"运行中\",\n# };\n# </script>\n# \n```\n"
10
43
  },
11
44
  "visual-builder.property-editor": {
12
- "doc": "构件 `visual-builder.property-editor`\n\n## Examples\n\n### Basic\n\n```yaml preview\n- brick: eo-select\n properties:\n label: 选择一个构件\n value: eo-button\n options: <% MISC.local_editors %>\n style:\n display: block\n marginBottom: 2em\n events:\n change:\n target: \"#editor\"\n properties:\n editorName: <% EVENT.detail.value %>\n- brick: visual-builder.property-editor\n properties:\n id: editor\n editorName: eo-button\n advancedMode: <%= CTX.isAdvanced %>\n events:\n validate.success:\n - action: console.log\n validate.error:\n - action: console.log\n- brick: eo-search-bar\n context:\n - name: isAdvanced\n value: false\n children:\n - brick: eo-button\n slot: start\n properties:\n textContent: Submit\n events:\n click:\n - target: \"#editor\"\n method: validate\n - brick: eo-link\n slot: end\n properties:\n textContent: |\n <%= `切换到${CTX.isAdvanced ? \"普通\" : \"高级\"}模式` %>\n events:\n click:\n - action: context.replace\n args:\n - isAdvanced\n - <% !CTX.isAdvanced %>\n# -- YAML DELIMITER (1nbbm8) --\n# <eo-select\n# label=\"选择一个构件\"\n# value=\"eo-button\"\n# options=\"&lt;% MISC.local_editors %&gt;\"\n# style=\"display: block; margin-bottom: 2em\"\n# id=\"brick-1\"\n# ></eo-select>\n# <visual-builder.property-editor\n# editor-name=\"eo-button\"\n# advanced-mode\n# id=\"editor\"\n# ></visual-builder.property-editor>\n# <eo-search-bar>\n# <eo-button slot=\"start\" id=\"brick-2\">Submit</eo-button>\n# <eo-link slot=\"end\" id=\"brick-3\">\n# &lt;%= `切换到${CTX.isAdvanced ? \"普通\" : \"高级\"}模式` %&gt;\n# </eo-link>\n# </eo-search-bar>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"change\", (e) => {\n# const brick = document.querySelector(\"#editor\");\n# brick.editorName = \"<% EVENT.detail.value %>\";\n# });\n# \n# const editor = document.getElementById(\"editor\");\n# editor.addEventListener(\"validate.success\", (e) => {\n# console.log(e.detail);\n# });\n# editor.addEventListener(\"validate.error\", (e) => {\n# console.log(e.detail);\n# });\n# \n# const brick_2 = document.getElementById(\"brick-2\");\n# brick_2.addEventListener(\"click\", (e) => {\n# const brick = document.querySelector(\"#editor\");\n# brick.validate();\n# });\n# \n# const brick_3 = document.getElementById(\"brick-3\");\n# brick_3.addEventListener(\"click\", (e) => {\n# // WARN: encountered incompatible event handlers in HTML mode, please try YAML.\n# });\n# </script>\n# \n```\n"
45
+ "doc": "---\ntagName: visual-builder.property-editor\ndisplayName: WrappedVisualBuilderPropertyEditor\ndescription: 构件属性编辑器,基于 Formily 渲染指定构件的属性编辑表单\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.property-editor\n\n> 构件属性编辑器,基于 Formily 渲染指定构件的属性编辑表单\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| -------------- | ---------------- | ---- | ------ | ------------------------------------------------ |\n| editorName | `string` | 否 | - | 构件名称,用于加载对应的属性编辑器 |\n| values | `any` | 否 | - | 属性编辑器的当前值 |\n| advancedMode | `boolean` | 否 | - | 是否启用高级模式,高级模式下直接编辑原始属性对象 |\n| dataList | `DataItem[]` | 是 | - | 数据列表,用于编辑器中的数据绑定选项 |\n| editorPackages | `BrickPackage[]` | 是 | - | 构件包信息,用于加载自定义编辑器 |\n| links | `any` | 是 | - | 链接配置,用于编辑器中的跳转链接选项 |\n| extraLibs | `SelectOptions` | 是 | - | 额外的代码补全库,用于代码编辑器的类型提示 |\n| childSlots | `SelectOptions` | 是 | - | 子插槽选项,用于编辑器中选择子插槽 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ---------------- | -------------------------------------------------- | ------------------------------- |\n| validate.success | `Record<string, unknown>` — 表单验证成功后的表单值 | 表单验证成功时触发事件 |\n| validate.error | `any[]` — 表单验证错误信息数组 | 表单验证报错时触发事件 |\n| values.change | `any` — 当前表单的最新值 | 表单值发生变化时触发 |\n| token.click | `string` — 被点击的 token 字符串 | 点击代码编辑器中的 token 时触发 |\n| trigger.action | `string` — 触发的动作标识 | 编辑器内部触发自定义动作时触发 |\n\n## Methods\n\n| 方法 | 参数 | 返回值 | 说明 |\n| -------- | ------------ | ------ | ---------------------------------------------------------------------------------- |\n| validate | `() => void` | `void` | 触发表单校验,验证成功后触发 validate.success 事件,失败后触发 validate.error 事件 |\n\n## Examples\n\n### Basic\n\n选择构件后加载对应的属性编辑器,支持普通模式与高级模式切换,点击 Submit 触发校验。\n\n```yaml preview\n- brick: eo-select\n properties:\n label: 选择一个构件\n value: eo-button\n options: <% MISC.local_editors %>\n style:\n display: block\n marginBottom: 2em\n events:\n change:\n target: \"#editor\"\n properties:\n editorName: <% EVENT.detail.value %>\n- brick: visual-builder.property-editor\n properties:\n id: editor\n editorName: eo-button\n advancedMode: <%= CTX.isAdvanced %>\n events:\n validate.success:\n - action: console.log\n validate.error:\n - action: console.log\n values.change:\n - action: console.log\n- brick: eo-search-bar\n context:\n - name: isAdvanced\n value: false\n children:\n - brick: eo-button\n slot: start\n properties:\n textContent: Submit\n events:\n click:\n - target: \"#editor\"\n method: validate\n - brick: eo-link\n slot: end\n properties:\n textContent: |\n <%= `切换到${CTX.isAdvanced ? \"普通\" : \"高级\"}模式` %>\n events:\n click:\n - action: context.replace\n args:\n - isAdvanced\n - <% !CTX.isAdvanced %>\n# -- YAML DELIMITER (1nbbm8) --\n# <eo-select\n# label=\"选择一个构件\"\n# value=\"eo-button\"\n# options=\"&lt;% MISC.local_editors %&gt;\"\n# style=\"display: block; margin-bottom: 2em\"\n# id=\"brick-1\"\n# ></eo-select>\n# <visual-builder.property-editor\n# editor-name=\"eo-button\"\n# advanced-mode\n# id=\"editor\"\n# ></visual-builder.property-editor>\n# <eo-search-bar>\n# <eo-button slot=\"start\" id=\"brick-2\">Submit</eo-button>\n# <eo-link slot=\"end\" id=\"brick-3\">\n# &lt;%= `切换到${CTX.isAdvanced ? \"普通\" : \"高级\"}模式` %&gt;\n# </eo-link>\n# </eo-search-bar>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.addEventListener(\"change\", (e) => {\n# const brick = document.querySelector(\"#editor\");\n# brick.editorName = \"<% EVENT.detail.value %>\";\n# });\n# \n# const editor = document.getElementById(\"editor\");\n# editor.addEventListener(\"validate.success\", (e) => {\n# console.log(e.detail);\n# });\n# editor.addEventListener(\"validate.error\", (e) => {\n# console.log(e.detail);\n# });\n# editor.addEventListener(\"values.change\", (e) => {\n# console.log(e.detail);\n# });\n# \n# const brick_2 = document.getElementById(\"brick-2\");\n# brick_2.addEventListener(\"click\", (e) => {\n# const brick = document.querySelector(\"#editor\");\n# brick.validate();\n# });\n# \n# const brick_3 = document.getElementById(\"brick-3\");\n# brick_3.addEventListener(\"click\", (e) => {\n# // WARN: encountered incompatible event handlers in HTML mode, please try YAML.\n# });\n# </script>\n# \n```\n"
13
46
  },
14
47
  "visual-builder.raw-data-preview": {
15
- "doc": "构件 `visual-builder.raw-data-preview`\n\n```yaml preview minHeight=\"500px\"\nbrick: visual-builder.raw-data-preview\nproperties:\n previewUrl: /preview/\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n style:\n height: calc(100vh - 4em)\n generations:\n - generationId: 6202dcb92c165\n objectId: IDEA\n objectName: 想法\n propertyId: predictDeliveryTime\n propertyName: 预计交付时间\n propertyInstanceId: 61df43df88cc1\n instanceId: 6202dcb92c165\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n - generationId: 6202d9c17c601\n objectId: IDEA\n objectName: 想法\n propertyId: gradeInfo\n propertyName: 评价信息\n propertyInstanceId: 61df43df88d25\n instanceId: 6202d9c17c601\n candidates:\n - display: text\n field: grade\n type: struct\n visualWeight: 0\n - display: link\n field: memo\n type: struct\n visualWeight: 1\n - display: tag\n field: gradeTime\n type: struct\n visualWeight: 2\n - generationId: 6202d9c1824ed\n objectId: IDEA\n objectName: 想法\n propertyId: createRole\n propertyName: 创建idea的用户角色\n propertyInstanceId: 61df43df88d89\n instanceId: 6202d9c1824ed\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c17d9ed\n objectId: IDEA\n objectName: 想法\n propertyId: pmoReviewComment\n propertyName: PMO评审意见\n propertyInstanceId: 61df43df88ded\n instanceId: 6202d9c17d9ed\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c17d8c1\n objectId: IDEA\n objectName: 想法\n propertyId: value\n propertyName: 想法价值\n propertyInstanceId: 61df43df88e51\n instanceId: 6202d9c17d8c1\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202dcb90ef61\n objectId: IDEA\n objectName: 想法\n propertyId: planStartDate\n propertyName: 计划开始日期\n propertyInstanceId: 61df43df88eb5\n instanceId: 6202dcb90ef61\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n - generationId: 6202dcb90c081\n objectId: IDEA\n objectName: 想法\n propertyId: planStartTime\n propertyName: 计划开始时间\n propertyInstanceId: 61df43df88f19\n instanceId: 6202dcb90c081\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n - generationId: 6202d9c198f09\n objectId: IDEA\n objectName: 想法\n propertyId: stage\n propertyName: 项目阶段\n propertyInstanceId: 61df43df88f7d\n instanceId: 6202d9c198f09\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202dcb94428d\n objectId: IDEA\n objectName: 想法\n propertyId: pmoReviewTime\n propertyName: PMO评审时间\n propertyInstanceId: 61df43df88fe1\n instanceId: 6202dcb94428d\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n - generationId: 6202d9c19ac55\n objectId: IDEA\n objectName: 想法\n propertyId: customerConfirm\n propertyName: 客户确认情况\n propertyInstanceId: 61df43df89045\n instanceId: 6202d9c19ac55\n candidates:\n - display: text\n field: confirm\n type: struct\n visualWeight: 0\n - display: link\n field: confirmTime\n type: struct\n visualWeight: 1\n - display: tag\n field: rejectReason\n type: struct\n visualWeight: 2\n - display: text\n field: confirmTime\n type: struct\n visualWeight: -1\n - generationId: 6202d9c1a1825\n objectId: IDEA\n objectName: 想法\n propertyId: finishTime\n propertyName: 结束时间\n propertyInstanceId: 61df43df890a9\n instanceId: 6202d9c1a1825\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202dcb90eefd\n objectId: IDEA\n objectName: 想法\n propertyId: pdReviewDate\n propertyName: PD评审日期\n propertyInstanceId: 61df43df8910d\n instanceId: 6202dcb90eefd\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n - generationId: 6202d9c1b5e51\n objectId: IDEA\n objectName: 想法\n propertyId: realStoryPoint\n propertyName: 实际消耗人天\n propertyInstanceId: 61df43df89171\n instanceId: 6202d9c1b5e51\n candidates:\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-secondary)\n size: medium\n type: float\n visualWeight: -1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n size: medium\n type: float\n visualWeight: 0\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: float\n visualWeight: 1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: float\n visualWeight: 2\n - generationId: 6202d9c1b7369\n objectId: IDEA\n objectName: 想法\n propertyId: document\n propertyName: 文档链接\n propertyInstanceId: 61df43df891d5\n instanceId: 6202d9c1b7369\n candidates:\n - display: text\n field: developUrl\n type: struct\n visualWeight: 0\n - display: link\n field: developUrl\n type: struct\n visualWeight: 1\n - display: link\n field: requirementUrl\n type: struct\n visualWeight: 2\n - generationId: 6202d9c1bcc79\n objectId: IDEA\n objectName: 想法\n propertyId: op_plan_month\n propertyName: 是否是运营每月10个需求\n propertyInstanceId: 61df43df89239\n instanceId: 6202d9c1bcc79\n candidates:\n - display: text\n \"false\":\n style:\n color: var(--text-color-default)\n text: N\n \"true\":\n style:\n color: var(--text-color-default)\n text: Y\n type: boolean\n visualWeight: -1\n - display: icon\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n type: boolean\n visualWeight: 0\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n text: 否\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n text: 是\n type: boolean\n visualWeight: 1\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n fontWeight: bold\n text: 非运营每月10个需求\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n fontWeight: bold\n text: 是运营每月10个需求\n type: boolean\n visualWeight: 2\n - generationId: 6202d9c1c0905\n objectId: IDEA\n objectName: 想法\n propertyId: pmoReviewResult\n propertyName: PMO评审结果\n propertyInstanceId: 61df43df8929d\n instanceId: 6202d9c1c0905\n candidates:\n - display: text\n \"false\":\n style:\n color: var(--text-color-default)\n text: 未通过\n \"true\":\n style:\n color: var(--text-color-default)\n text: 通过\n type: boolean\n visualWeight: -1\n - display: icon\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n type: boolean\n visualWeight: 0\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n text: 未通过\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n text: 通过\n type: boolean\n visualWeight: 1\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n fontWeight: bold\n text: PMO评审未通过\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n fontWeight: bold\n text: PMO评审已通过\n type: boolean\n visualWeight: 2\n - generationId: 6202d9c1bd8f9\n objectId: IDEA\n objectName: 想法\n propertyId: score\n propertyName: 需求得分\n propertyInstanceId: 61df43df89301\n instanceId: 6202d9c1bd8f9\n candidates:\n - display: text\n formatter:\n decimals: 1\n format: decimal\n type: number\n style:\n color: var(--text-color-secondary)\n size: medium\n type: float\n visualWeight: -1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n size: medium\n type: float\n visualWeight: 0\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: float\n visualWeight: 1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: float\n visualWeight: 2\n - generationId: 6202d9c1c6085\n objectId: IDEA\n objectName: 想法\n propertyId: description\n propertyName: 面临/希望解决的问题\n propertyInstanceId: 61df43df89365\n instanceId: 6202d9c1c6085\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c1ccc55\n objectId: IDEA\n objectName: 想法\n propertyId: number\n propertyName: 序号\n propertyInstanceId: 61df43df893c9\n instanceId: 6202d9c1ccc55\n candidates:\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c1d631d\n objectId: IDEA\n objectName: 想法\n propertyId: source\n propertyName: 客户来源(微信端传参)\n propertyInstanceId: 61df43df8942d\n instanceId: 6202d9c1d631d\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c1d7a8d\n objectId: IDEA\n objectName: 想法\n propertyId: category\n propertyName: 想法分类\n propertyInstanceId: 61df43df89491\n instanceId: 6202d9c1d7a8d\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: enum\n visualWeight: -1\n - display: tag\n style:\n palette:\n displaceRequirements: green\n functionalRequirements: blue\n instructionsRequirementsDefinition: orange\n optimizedRequirements: purple\n performance: red\n sowClearRequirementsDefinition: gray\n variant: default\n type: enum\n visualWeight: 0\n - display: tag\n style:\n palette:\n displaceRequirements: green\n functionalRequirements: blue\n instructionsRequirementsDefinition: orange\n optimizedRequirements: purple\n performance: red\n sowClearRequirementsDefinition: gray\n variant: outline\n type: enum\n visualWeight: 1\n - display: tag\n style:\n palette:\n displaceRequirements: green\n functionalRequirements: blue\n instructionsRequirementsDefinition: orange\n optimizedRequirements: purple\n performance: red\n sowClearRequirementsDefinition: gray\n variant: background\n type: enum\n visualWeight: 2\n - generationId: 6202d9c1db1a1\n objectId: IDEA\n objectName: 想法\n propertyId: deliveryStatus\n propertyName: 交付验收状态\n propertyInstanceId: 61df43df894f5\n instanceId: 6202d9c1db1a1\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: enum\n visualWeight: -1\n - display: tag\n style:\n palette:\n passed: green\n unconfirmed: gray\n unpassed: red\n variant: default\n type: enum\n visualWeight: 0\n - display: tag\n style:\n palette:\n passed: green\n unconfirmed: gray\n unpassed: red\n variant: outline\n type: enum\n visualWeight: 1\n - display: tag\n style:\n palette:\n passed: green\n unconfirmed: gray\n unpassed: red\n variant: background\n type: enum\n visualWeight: 2\n - generationId: 6202dcb90e40d\n objectId: IDEA\n objectName: 想法\n propertyId: startDate\n propertyName: 开始时间\n propertyInstanceId: 61df43df89559\n instanceId: 6202dcb90e40d\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n - generationId: 6202d9c1dd8b1\n objectId: IDEA\n objectName: 想法\n propertyId: resolveTime\n propertyName: 解决时间\n propertyInstanceId: 61df43df895bd\n instanceId: 6202d9c1dd8b1\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c1ea9ad\n objectId: IDEA\n objectName: 想法\n propertyId: classification\n propertyName: 想法类型\n propertyInstanceId: 61df43df89621\n instanceId: 6202d9c1ea9ad\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: enum\n visualWeight: -1\n - display: tag\n style:\n palette:\n deliveryCustomization: purple\n feature: blue\n optimization: green\n requirement: orange\n variant: default\n type: enum\n visualWeight: 0\n - display: tag\n style:\n palette:\n deliveryCustomization: purple\n feature: blue\n optimization: green\n requirement: orange\n variant: outline\n type: enum\n visualWeight: 1\n - display: tag\n style:\n palette:\n deliveryCustomization: purple\n feature: blue\n optimization: green\n requirement: orange\n variant: background\n type: enum\n visualWeight: 2\n - generationId: 6202d9c1f6e8d\n objectId: IDEA\n objectName: 想法\n propertyId: pdReviewResult\n propertyName: PD评审结果\n propertyInstanceId: 61df43df89685\n instanceId: 6202d9c1f6e8d\n candidates:\n - display: text\n \"false\":\n style:\n color: var(--text-color-default)\n text: 未通过\n \"true\":\n style:\n color: var(--text-color-default)\n text: 通过\n type: boolean\n visualWeight: -1\n - display: icon\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n type: boolean\n visualWeight: 0\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n text: 未通过\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n text: 通过\n type: boolean\n visualWeight: 1\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n fontWeight: bold\n size: large\n text: 未通过\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n fontWeight: bold\n size: large\n text: 通过\n type: boolean\n visualWeight: 2\n - generationId: 6202d9c200cc1\n objectId: IDEA\n objectName: 想法\n propertyId: closeReason\n propertyName: 关闭原因\n propertyInstanceId: 61df43df896e9\n instanceId: 6202d9c200cc1\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c1f7bd5\n objectId: IDEA\n objectName: 想法\n propertyId: confirmUrl\n propertyName: 验收链接\n propertyInstanceId: 61df43df8974d\n instanceId: 6202d9c1f7bd5\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c200d89\n objectId: IDEA\n objectName: 想法\n propertyId: deliveryConfirm\n propertyName: 交付确认\n propertyInstanceId: 61df43df897b1\n instanceId: 6202d9c200d89\n candidates:\n - display: text\n \"false\":\n style:\n color: var(--text-color-default)\n text: N\n \"true\":\n style:\n color: var(--text-color-default)\n text: Y\n type: boolean\n visualWeight: -1\n - display: icon\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n type: boolean\n visualWeight: 0\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n text: Not Confirmed\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n text: Confirmed\n type: boolean\n visualWeight: 1\n - display: icon+text\n \"false\":\n icon: xmark\n style:\n color: var(--color-error)\n fontWeight: bold\n size: large\n text: Not Confirmed\n \"true\":\n icon: check\n style:\n color: var(--color-success)\n fontWeight: bold\n size: large\n text: Confirmed\n type: boolean\n visualWeight: 2\n - generationId: 6202d9c2066fd\n objectId: IDEA\n objectName: 想法\n propertyId: humanCost\n propertyName: 人力评估\n propertyInstanceId: 61df43df89815\n instanceId: 6202d9c2066fd\n candidates:\n - display: text\n field: frontend\n type: struct\n visualWeight: 0\n - display: link\n field: frontend\n type: struct\n visualWeight: 1\n - display: tag\n field: backend\n type: struct\n visualWeight: 2\n - generationId: 6202dcb979eb5\n objectId: IDEA\n objectName: 想法\n propertyId: expectReleaseDate\n propertyName: 期望最迟交付的日期\n propertyInstanceId: 61df43df89879\n instanceId: 6202dcb979eb5\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n - generationId: 6202dcb97aeb9\n objectId: IDEA\n objectName: 想法\n propertyId: pdReviewTime\n propertyName: pd评审时间\n propertyInstanceId: 61df43df898dd\n instanceId: 6202dcb97aeb9\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n - generationId: 6202d9c221705\n objectId: IDEA\n objectName: 想法\n propertyId: status\n propertyName: 状态\n propertyInstanceId: 61df43df89941\n instanceId: 6202d9c221705\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: enum\n visualWeight: -1\n - display: tag\n style:\n palette:\n closed: gray\n pointEstimation: gray\n producerReview: gray\n ready: orange\n refused: red\n released: green\n techReview: gray\n waitAssess: gray\n waitInitialScore: gray\n waitIterate: gray\n waitPlan: gray\n waitProducerDesigned: gray\n waitRelease: gray\n waitTechDesigned: gray\n variant: default\n type: enum\n visualWeight: 0\n - display: tag\n style:\n palette:\n closed: gray\n pointEstimation: gray\n producerReview: gray\n ready: orange\n refused: red\n released: green\n techReview: gray\n waitAssess: gray\n waitInitialScore: gray\n waitIterate: gray\n waitPlan: gray\n waitProducerDesigned: gray\n waitRelease: gray\n waitTechDesigned: gray\n variant: outline\n type: enum\n visualWeight: 1\n - display: tag\n style:\n palette:\n closed: gray\n pointEstimation: gray\n producerReview: gray\n ready: orange\n refused: red\n released: green\n techReview: gray\n waitAssess: gray\n waitInitialScore: gray\n waitIterate: gray\n waitPlan: gray\n waitProducerDesigned: gray\n waitRelease: gray\n waitTechDesigned: gray\n variant: background\n type: enum\n visualWeight: 2\n - generationId: 6202d9c222385\n objectId: IDEA\n objectName: 想法\n propertyId: speedUp\n propertyName: 加速标志\n propertyInstanceId: 61df43df899a5\n instanceId: 6202d9c222385\n candidates:\n - countOnly: true\n display: text\n type: struct-list\n visualWeight: -1\n - countOnly: true\n display: link\n type: struct-list\n visualWeight: 0\n - display: tag\n field: reason\n maxItems: 2\n style:\n variant: default\n type: struct-list\n visualWeight: 1\n - display: tag\n field: mark\n maxItems: 2\n style:\n variant: outline\n type: struct-list\n visualWeight: 2\n - generationId: 6202d9c225909\n objectId: IDEA\n objectName: 想法\n propertyId: initialScore\n propertyName: PMO初评分\n propertyInstanceId: 61df43df89a09\n instanceId: 6202d9c225909\n candidates:\n - display: text\n formatter:\n decimals: 1\n format: decimal\n type: number\n style:\n color: var(--text-color-secondary)\n size: medium\n type: float\n visualWeight: -1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n size: medium\n type: float\n visualWeight: 0\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: float\n visualWeight: 1\n - display: text\n formatter:\n decimals: 2\n format: decimal\n type: number\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: float\n visualWeight: 2\n - generationId: 6202dcb981ce1\n objectId: IDEA\n objectName: 想法\n propertyId: pmoReviewDate\n propertyName: PMO初评日期\n propertyInstanceId: 61df43df89a6d\n instanceId: 6202dcb981ce1\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n - generationId: 6202d9c227141\n objectId: IDEA\n objectName: 想法\n propertyId: ratingDetails\n propertyName: 评分详情\n propertyInstanceId: 61df43df89ad1\n instanceId: 6202d9c227141\n candidates:\n - countOnly: true\n display: text\n type: struct-list\n visualWeight: -1\n - countOnly: true\n display: link\n type: struct-list\n visualWeight: 0\n - display: tag\n field: type\n maxItems: 2\n style:\n variant: default\n type: struct-list\n visualWeight: 1\n - display: tag\n field: type\n maxItems: 2\n style:\n variant: outline\n type: struct-list\n visualWeight: 2\n - generationId: 6202d9c23969d\n objectId: IDEA\n objectName: 想法\n propertyId: enterpriseVersion\n propertyName: 发行版版本\n propertyInstanceId: 61df43df89b35\n instanceId: 6202d9c23969d\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c24265d\n objectId: IDEA\n objectName: 想法\n propertyId: pdReviewComment\n propertyName: PD评审意见\n propertyInstanceId: 61df43df89b99\n instanceId: 6202d9c24265d\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202d9c240f51\n objectId: IDEA\n objectName: 想法\n propertyId: productLine\n propertyName: 产品线\n propertyInstanceId: 61df43df89bfd\n instanceId: 6202d9c240f51\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: medium\n type: string\n visualWeight: 1\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n - generationId: 6202dcb97a365\n objectId: IDEA\n objectName: 想法\n propertyId: confirmDeliveryTime\n propertyName: 确认交付时间\n propertyInstanceId: 61df43df89c61\n instanceId: 6202dcb97a365\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n - generationId: 6202db84cacc9\n objectId: IDEA\n objectName: 想法\n propertyId: endDate\n propertyName: 完成时间\n propertyInstanceId: 61df43df89cc5\n instanceId: 6202db84cacc9\n candidates:\n - display: text\n formatter:\n format: relative\n type: date\n type: date\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date\n type: date\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date\n type: date\n visualWeight: 2\n mocks:\n - category: performance\n classification: optimization\n closeReason: \"\"\n confirmDeliveryTime: \"2024-08-25 14:30:00\"\n confirmUrl: https://example.com/verify/001\n createRole: Product Manager\n customerConfirm:\n confirm: 1\n confirmTime: \"2024-08-16 16:00:00\"\n rejectReason: \"\"\n deliveryConfirm: false\n deliveryStatus: passed\n description: 提升用户界面的响应速度,减少加载时间。\n document:\n developUrl: https://example.com/develop/1234\n requirementUrl: https://example.com/requirement/5678\n endDate: \"2024-10-20\"\n enterpriseVersion: v2.1.0\n expectReleaseDate: \"2024-10-15\"\n finishTime: \"2024-08-31 17:00:00\"\n gradeInfo:\n grade: 4\n gradeTime: \"2024-08-15 14:30:00\"\n memo: 高质量交付,客户满意。\n humanCost:\n backend: 180.3\n frontend: 120.5\n initialScore: 75\n number: \"001\"\n op_plan_month: false\n pdReviewComment: 需要进一步评估市场反馈。\n pdReviewDate: \"2024-08-18\"\n pdReviewResult: true\n pdReviewTime: \"2024-08-20 10:00:00\"\n planStartDate: \"2024-08-20\"\n planStartTime: \"2024-08-20 09:00:00\"\n pmoReviewComment: 项目计划清晰,资源分配合理。\n pmoReviewDate: \"2024-08-22\"\n pmoReviewResult: true\n pmoReviewTime: \"2024-08-17 10:00:00\"\n predictDeliveryTime: \"2024-09-01 18:00:00\"\n productLine: Enterprise\n ratingDetails:\n - effort: 6\n frequency: 9\n reach: 7\n type: user\n urgent: 5\n value: 8\n - effort: 5\n frequency: 8\n reach: 6\n type: tech\n urgent: 4\n value: 7\n realStoryPoint: 12.5\n resolveTime: \"2024-07-15 10:30:00\"\n score: 8.5\n source: 微信端\n speedUp:\n - mark: true\n reason: 市场竞争力提升\n score: 1.5\n - mark: false\n reason: 内部需求调整\n score: 0\n stage: Development\n startDate: \"2024-07-01\"\n status: waitInitialScore\n value: High\n - category: functionalRequirements\n classification: feature\n closeReason: 需求范围不明确,需重新定义。\n confirmDeliveryTime: \"2024-08-26 15:00:00\"\n confirmUrl: https://example.com/verify/002\n createRole: Project Coordinator\n customerConfirm:\n confirm: 0\n confirmTime: \"\"\n rejectReason: 功能未完全满足需求。\n deliveryConfirm: true\n deliveryStatus: unconfirmed\n description: 增加新功能,允许用户自定义报告模板。\n document:\n developUrl: https://example.com/develop/4321\n requirementUrl: https://example.com/requirement/8765\n endDate: \"2024-11-10\"\n enterpriseVersion: v2.2.0\n expectReleaseDate: \"2024-11-01\"\n finishTime: \"2024-09-14 15:00:00\"\n gradeInfo:\n grade: 3\n gradeTime: \"2024-08-10 10:00:00\"\n memo: 交付质量一般,需改进。\n humanCost:\n backend: 150\n frontend: 90.2\n initialScore: 80\n number: \"002\"\n op_plan_month: true\n pdReviewComment: 优先级较高,需尽快安排资源。\n pdReviewDate: \"2024-08-20\"\n pdReviewResult: false\n pdReviewTime: \"2024-08-21 11:00:00\"\n planStartDate: \"2024-08-25\"\n planStartTime: \"2024-08-25 09:30:00\"\n pmoReviewComment: 项目计划需细化,资源分配需优化。\n pmoReviewDate: \"2024-08-23\"\n pmoReviewResult: false\n pmoReviewTime: \"2024-08-16 11:00:00\"\n predictDeliveryTime: \"2024-09-15 16:00:00\"\n productLine: Consumer\n ratingDetails:\n - effort: 5\n frequency: 10\n reach: 8\n type: user\n urgent: 6\n value: 9\n - effort: 4\n frequency: 9\n reach: 7\n type: tech\n urgent: 5\n value: 8\n realStoryPoint: 10.2\n resolveTime: \"2024-08-20 14:45:00\"\n score: 7.2\n source: 客户反馈\n speedUp:\n - mark: false\n reason: 无特殊加速需求\n score: 0\n - mark: true\n reason: 客户紧急需求\n score: 2\n stage: Planning\n startDate: \"2024-08-01\"\n status: waitAssess\n value: Medium\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.raw-data-preview\n# preview-url=\"/preview/\"\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# style=\"height: calc(100vh - 4em)\"\n# id=\"brick-1\"\n# ></visual-builder.raw-data-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# generationId: \"6202dcb92c165\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"predictDeliveryTime\",\n# propertyName: \"预计交付时间\",\n# propertyInstanceId: \"61df43df88cc1\",\n# instanceId: \"6202dcb92c165\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c17c601\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"gradeInfo\",\n# propertyName: \"评价信息\",\n# propertyInstanceId: \"61df43df88d25\",\n# instanceId: \"6202d9c17c601\",\n# candidates: [\n# {\n# display: \"text\",\n# field: \"grade\",\n# type: \"struct\",\n# visualWeight: 0,\n# },\n# {\n# display: \"link\",\n# field: \"memo\",\n# type: \"struct\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# field: \"gradeTime\",\n# type: \"struct\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1824ed\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"createRole\",\n# propertyName: \"创建idea的用户角色\",\n# propertyInstanceId: \"61df43df88d89\",\n# instanceId: \"6202d9c1824ed\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c17d9ed\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pmoReviewComment\",\n# propertyName: \"PMO评审意见\",\n# propertyInstanceId: \"61df43df88ded\",\n# instanceId: \"6202d9c17d9ed\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c17d8c1\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"value\",\n# propertyName: \"想法价值\",\n# propertyInstanceId: \"61df43df88e51\",\n# instanceId: \"6202d9c17d8c1\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb90ef61\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"planStartDate\",\n# propertyName: \"计划开始日期\",\n# propertyInstanceId: \"61df43df88eb5\",\n# instanceId: \"6202dcb90ef61\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb90c081\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"planStartTime\",\n# propertyName: \"计划开始时间\",\n# propertyInstanceId: \"61df43df88f19\",\n# instanceId: \"6202dcb90c081\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c198f09\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"stage\",\n# propertyName: \"项目阶段\",\n# propertyInstanceId: \"61df43df88f7d\",\n# instanceId: \"6202d9c198f09\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb94428d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pmoReviewTime\",\n# propertyName: \"PMO评审时间\",\n# propertyInstanceId: \"61df43df88fe1\",\n# instanceId: \"6202dcb94428d\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c19ac55\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"customerConfirm\",\n# propertyName: \"客户确认情况\",\n# propertyInstanceId: \"61df43df89045\",\n# instanceId: \"6202d9c19ac55\",\n# candidates: [\n# {\n# display: \"text\",\n# field: \"confirm\",\n# type: \"struct\",\n# visualWeight: 0,\n# },\n# {\n# display: \"link\",\n# field: \"confirmTime\",\n# type: \"struct\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# field: \"rejectReason\",\n# type: \"struct\",\n# visualWeight: 2,\n# },\n# {\n# display: \"text\",\n# field: \"confirmTime\",\n# type: \"struct\",\n# visualWeight: -1,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1a1825\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"finishTime\",\n# propertyName: \"结束时间\",\n# propertyInstanceId: \"61df43df890a9\",\n# instanceId: \"6202d9c1a1825\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb90eefd\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pdReviewDate\",\n# propertyName: \"PD评审日期\",\n# propertyInstanceId: \"61df43df8910d\",\n# instanceId: \"6202dcb90eefd\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1b5e51\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"realStoryPoint\",\n# propertyName: \"实际消耗人天\",\n# propertyInstanceId: \"61df43df89171\",\n# instanceId: \"6202d9c1b5e51\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"float\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1b7369\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"document\",\n# propertyName: \"文档链接\",\n# propertyInstanceId: \"61df43df891d5\",\n# instanceId: \"6202d9c1b7369\",\n# candidates: [\n# {\n# display: \"text\",\n# field: \"developUrl\",\n# type: \"struct\",\n# visualWeight: 0,\n# },\n# {\n# display: \"link\",\n# field: \"developUrl\",\n# type: \"struct\",\n# visualWeight: 1,\n# },\n# {\n# display: \"link\",\n# field: \"requirementUrl\",\n# type: \"struct\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1bcc79\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"op_plan_month\",\n# propertyName: \"是否是运营每月10个需求\",\n# propertyInstanceId: \"61df43df89239\",\n# instanceId: \"6202d9c1bcc79\",\n# candidates: [\n# {\n# display: \"text\",\n# false: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"N\",\n# },\n# true: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"Y\",\n# },\n# type: \"boolean\",\n# visualWeight: -1,\n# },\n# {\n# display: \"icon\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# },\n# type: \"boolean\",\n# visualWeight: 0,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# text: \"否\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# text: \"是\",\n# },\n# type: \"boolean\",\n# visualWeight: 1,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# fontWeight: \"bold\",\n# },\n# text: \"非运营每月10个需求\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# fontWeight: \"bold\",\n# },\n# text: \"是运营每月10个需求\",\n# },\n# type: \"boolean\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1c0905\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pmoReviewResult\",\n# propertyName: \"PMO评审结果\",\n# propertyInstanceId: \"61df43df8929d\",\n# instanceId: \"6202d9c1c0905\",\n# candidates: [\n# {\n# display: \"text\",\n# false: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"未通过\",\n# },\n# true: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"通过\",\n# },\n# type: \"boolean\",\n# visualWeight: -1,\n# },\n# {\n# display: \"icon\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# },\n# type: \"boolean\",\n# visualWeight: 0,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# text: \"未通过\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# text: \"通过\",\n# },\n# type: \"boolean\",\n# visualWeight: 1,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# fontWeight: \"bold\",\n# },\n# text: \"PMO评审未通过\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# fontWeight: \"bold\",\n# },\n# text: \"PMO评审已通过\",\n# },\n# type: \"boolean\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1bd8f9\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"score\",\n# propertyName: \"需求得分\",\n# propertyInstanceId: \"61df43df89301\",\n# instanceId: \"6202d9c1bd8f9\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 1,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"float\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1c6085\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"description\",\n# propertyName: \"面临/希望解决的问题\",\n# propertyInstanceId: \"61df43df89365\",\n# instanceId: \"6202d9c1c6085\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1ccc55\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"number\",\n# propertyName: \"序号\",\n# propertyInstanceId: \"61df43df893c9\",\n# instanceId: \"6202d9c1ccc55\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1d631d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"source\",\n# propertyName: \"客户来源(微信端传参)\",\n# propertyInstanceId: \"61df43df8942d\",\n# instanceId: \"6202d9c1d631d\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1d7a8d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"category\",\n# propertyName: \"想法分类\",\n# propertyInstanceId: \"61df43df89491\",\n# instanceId: \"6202d9c1d7a8d\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"enum\",\n# visualWeight: -1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# displaceRequirements: \"green\",\n# functionalRequirements: \"blue\",\n# instructionsRequirementsDefinition: \"orange\",\n# optimizedRequirements: \"purple\",\n# performance: \"red\",\n# sowClearRequirementsDefinition: \"gray\",\n# },\n# variant: \"default\",\n# },\n# type: \"enum\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# displaceRequirements: \"green\",\n# functionalRequirements: \"blue\",\n# instructionsRequirementsDefinition: \"orange\",\n# optimizedRequirements: \"purple\",\n# performance: \"red\",\n# sowClearRequirementsDefinition: \"gray\",\n# },\n# variant: \"outline\",\n# },\n# type: \"enum\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# displaceRequirements: \"green\",\n# functionalRequirements: \"blue\",\n# instructionsRequirementsDefinition: \"orange\",\n# optimizedRequirements: \"purple\",\n# performance: \"red\",\n# sowClearRequirementsDefinition: \"gray\",\n# },\n# variant: \"background\",\n# },\n# type: \"enum\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1db1a1\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"deliveryStatus\",\n# propertyName: \"交付验收状态\",\n# propertyInstanceId: \"61df43df894f5\",\n# instanceId: \"6202d9c1db1a1\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"enum\",\n# visualWeight: -1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# passed: \"green\",\n# unconfirmed: \"gray\",\n# unpassed: \"red\",\n# },\n# variant: \"default\",\n# },\n# type: \"enum\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# passed: \"green\",\n# unconfirmed: \"gray\",\n# unpassed: \"red\",\n# },\n# variant: \"outline\",\n# },\n# type: \"enum\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# passed: \"green\",\n# unconfirmed: \"gray\",\n# unpassed: \"red\",\n# },\n# variant: \"background\",\n# },\n# type: \"enum\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb90e40d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"startDate\",\n# propertyName: \"开始时间\",\n# propertyInstanceId: \"61df43df89559\",\n# instanceId: \"6202dcb90e40d\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1dd8b1\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"resolveTime\",\n# propertyName: \"解决时间\",\n# propertyInstanceId: \"61df43df895bd\",\n# instanceId: \"6202d9c1dd8b1\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1ea9ad\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"classification\",\n# propertyName: \"想法类型\",\n# propertyInstanceId: \"61df43df89621\",\n# instanceId: \"6202d9c1ea9ad\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"enum\",\n# visualWeight: -1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# deliveryCustomization: \"purple\",\n# feature: \"blue\",\n# optimization: \"green\",\n# requirement: \"orange\",\n# },\n# variant: \"default\",\n# },\n# type: \"enum\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# deliveryCustomization: \"purple\",\n# feature: \"blue\",\n# optimization: \"green\",\n# requirement: \"orange\",\n# },\n# variant: \"outline\",\n# },\n# type: \"enum\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# deliveryCustomization: \"purple\",\n# feature: \"blue\",\n# optimization: \"green\",\n# requirement: \"orange\",\n# },\n# variant: \"background\",\n# },\n# type: \"enum\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1f6e8d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pdReviewResult\",\n# propertyName: \"PD评审结果\",\n# propertyInstanceId: \"61df43df89685\",\n# instanceId: \"6202d9c1f6e8d\",\n# candidates: [\n# {\n# display: \"text\",\n# false: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"未通过\",\n# },\n# true: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"通过\",\n# },\n# type: \"boolean\",\n# visualWeight: -1,\n# },\n# {\n# display: \"icon\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# },\n# type: \"boolean\",\n# visualWeight: 0,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# text: \"未通过\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# text: \"通过\",\n# },\n# type: \"boolean\",\n# visualWeight: 1,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# text: \"未通过\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# text: \"通过\",\n# },\n# type: \"boolean\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c200cc1\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"closeReason\",\n# propertyName: \"关闭原因\",\n# propertyInstanceId: \"61df43df896e9\",\n# instanceId: \"6202d9c200cc1\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c1f7bd5\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"confirmUrl\",\n# propertyName: \"验收链接\",\n# propertyInstanceId: \"61df43df8974d\",\n# instanceId: \"6202d9c1f7bd5\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c200d89\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"deliveryConfirm\",\n# propertyName: \"交付确认\",\n# propertyInstanceId: \"61df43df897b1\",\n# instanceId: \"6202d9c200d89\",\n# candidates: [\n# {\n# display: \"text\",\n# false: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"N\",\n# },\n# true: {\n# style: {\n# color: \"var(--text-color-default)\",\n# },\n# text: \"Y\",\n# },\n# type: \"boolean\",\n# visualWeight: -1,\n# },\n# {\n# display: \"icon\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# },\n# type: \"boolean\",\n# visualWeight: 0,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# },\n# text: \"Not Confirmed\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# },\n# text: \"Confirmed\",\n# },\n# type: \"boolean\",\n# visualWeight: 1,\n# },\n# {\n# display: \"icon+text\",\n# false: {\n# icon: \"xmark\",\n# style: {\n# color: \"var(--color-error)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# text: \"Not Confirmed\",\n# },\n# true: {\n# icon: \"check\",\n# style: {\n# color: \"var(--color-success)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# text: \"Confirmed\",\n# },\n# type: \"boolean\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c2066fd\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"humanCost\",\n# propertyName: \"人力评估\",\n# propertyInstanceId: \"61df43df89815\",\n# instanceId: \"6202d9c2066fd\",\n# candidates: [\n# {\n# display: \"text\",\n# field: \"frontend\",\n# type: \"struct\",\n# visualWeight: 0,\n# },\n# {\n# display: \"link\",\n# field: \"frontend\",\n# type: \"struct\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# field: \"backend\",\n# type: \"struct\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb979eb5\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"expectReleaseDate\",\n# propertyName: \"期望最迟交付的日期\",\n# propertyInstanceId: \"61df43df89879\",\n# instanceId: \"6202dcb979eb5\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb97aeb9\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pdReviewTime\",\n# propertyName: \"pd评审时间\",\n# propertyInstanceId: \"61df43df898dd\",\n# instanceId: \"6202dcb97aeb9\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c221705\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"status\",\n# propertyName: \"状态\",\n# propertyInstanceId: \"61df43df89941\",\n# instanceId: \"6202d9c221705\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"enum\",\n# visualWeight: -1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# closed: \"gray\",\n# pointEstimation: \"gray\",\n# producerReview: \"gray\",\n# ready: \"orange\",\n# refused: \"red\",\n# released: \"green\",\n# techReview: \"gray\",\n# waitAssess: \"gray\",\n# waitInitialScore: \"gray\",\n# waitIterate: \"gray\",\n# waitPlan: \"gray\",\n# waitProducerDesigned: \"gray\",\n# waitRelease: \"gray\",\n# waitTechDesigned: \"gray\",\n# },\n# variant: \"default\",\n# },\n# type: \"enum\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# closed: \"gray\",\n# pointEstimation: \"gray\",\n# producerReview: \"gray\",\n# ready: \"orange\",\n# refused: \"red\",\n# released: \"green\",\n# techReview: \"gray\",\n# waitAssess: \"gray\",\n# waitInitialScore: \"gray\",\n# waitIterate: \"gray\",\n# waitPlan: \"gray\",\n# waitProducerDesigned: \"gray\",\n# waitRelease: \"gray\",\n# waitTechDesigned: \"gray\",\n# },\n# variant: \"outline\",\n# },\n# type: \"enum\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# style: {\n# palette: {\n# closed: \"gray\",\n# pointEstimation: \"gray\",\n# producerReview: \"gray\",\n# ready: \"orange\",\n# refused: \"red\",\n# released: \"green\",\n# techReview: \"gray\",\n# waitAssess: \"gray\",\n# waitInitialScore: \"gray\",\n# waitIterate: \"gray\",\n# waitPlan: \"gray\",\n# waitProducerDesigned: \"gray\",\n# waitRelease: \"gray\",\n# waitTechDesigned: \"gray\",\n# },\n# variant: \"background\",\n# },\n# type: \"enum\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c222385\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"speedUp\",\n# propertyName: \"加速标志\",\n# propertyInstanceId: \"61df43df899a5\",\n# instanceId: \"6202d9c222385\",\n# candidates: [\n# {\n# countOnly: true,\n# display: \"text\",\n# type: \"struct-list\",\n# visualWeight: -1,\n# },\n# {\n# countOnly: true,\n# display: \"link\",\n# type: \"struct-list\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# field: \"reason\",\n# maxItems: 2,\n# style: {\n# variant: \"default\",\n# },\n# type: \"struct-list\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# field: \"mark\",\n# maxItems: 2,\n# style: {\n# variant: \"outline\",\n# },\n# type: \"struct-list\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c225909\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"initialScore\",\n# propertyName: \"PMO初评分\",\n# propertyInstanceId: \"61df43df89a09\",\n# instanceId: \"6202d9c225909\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 1,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"float\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# decimals: 2,\n# format: \"decimal\",\n# type: \"number\",\n# },\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"float\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb981ce1\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pmoReviewDate\",\n# propertyName: \"PMO初评日期\",\n# propertyInstanceId: \"61df43df89a6d\",\n# instanceId: \"6202dcb981ce1\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c227141\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"ratingDetails\",\n# propertyName: \"评分详情\",\n# propertyInstanceId: \"61df43df89ad1\",\n# instanceId: \"6202d9c227141\",\n# candidates: [\n# {\n# countOnly: true,\n# display: \"text\",\n# type: \"struct-list\",\n# visualWeight: -1,\n# },\n# {\n# countOnly: true,\n# display: \"link\",\n# type: \"struct-list\",\n# visualWeight: 0,\n# },\n# {\n# display: \"tag\",\n# field: \"type\",\n# maxItems: 2,\n# style: {\n# variant: \"default\",\n# },\n# type: \"struct-list\",\n# visualWeight: 1,\n# },\n# {\n# display: \"tag\",\n# field: \"type\",\n# maxItems: 2,\n# style: {\n# variant: \"outline\",\n# },\n# type: \"struct-list\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c23969d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"enterpriseVersion\",\n# propertyName: \"发行版版本\",\n# propertyInstanceId: \"61df43df89b35\",\n# instanceId: \"6202d9c23969d\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c24265d\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"pdReviewComment\",\n# propertyName: \"PD评审意见\",\n# propertyInstanceId: \"61df43df89b99\",\n# instanceId: \"6202d9c24265d\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c240f51\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"productLine\",\n# propertyName: \"产品线\",\n# propertyInstanceId: \"61df43df89bfd\",\n# instanceId: \"6202d9c240f51\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202dcb97a365\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"confirmDeliveryTime\",\n# propertyName: \"确认交付时间\",\n# propertyInstanceId: \"61df43df89c61\",\n# instanceId: \"6202dcb97a365\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# {\n# generationId: \"6202db84cacc9\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"endDate\",\n# propertyName: \"完成时间\",\n# propertyInstanceId: \"61df43df89cc5\",\n# instanceId: \"6202db84cacc9\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date\",\n# },\n# type: \"date\",\n# visualWeight: 2,\n# },\n# ],\n# },\n# ];\n# brick_1.mocks = [\n# {\n# category: \"performance\",\n# classification: \"optimization\",\n# closeReason: \"\",\n# confirmDeliveryTime: \"2024-08-25 14:30:00\",\n# confirmUrl: \"https://example.com/verify/001\",\n# createRole: \"Product Manager\",\n# customerConfirm: {\n# confirm: 1,\n# confirmTime: \"2024-08-16 16:00:00\",\n# rejectReason: \"\",\n# },\n# deliveryConfirm: false,\n# deliveryStatus: \"passed\",\n# description: \"提升用户界面的响应速度,减少加载时间。\",\n# document: {\n# developUrl: \"https://example.com/develop/1234\",\n# requirementUrl: \"https://example.com/requirement/5678\",\n# },\n# endDate: \"2024-10-20\",\n# enterpriseVersion: \"v2.1.0\",\n# expectReleaseDate: \"2024-10-15\",\n# finishTime: \"2024-08-31 17:00:00\",\n# gradeInfo: {\n# grade: 4,\n# gradeTime: \"2024-08-15 14:30:00\",\n# memo: \"高质量交付,客户满意。\",\n# },\n# humanCost: {\n# backend: 180.3,\n# frontend: 120.5,\n# },\n# initialScore: 75,\n# number: \"001\",\n# op_plan_month: false,\n# pdReviewComment: \"需要进一步评估市场反馈。\",\n# pdReviewDate: \"2024-08-18\",\n# pdReviewResult: true,\n# pdReviewTime: \"2024-08-20 10:00:00\",\n# planStartDate: \"2024-08-20\",\n# planStartTime: \"2024-08-20 09:00:00\",\n# pmoReviewComment: \"项目计划清晰,资源分配合理。\",\n# pmoReviewDate: \"2024-08-22\",\n# pmoReviewResult: true,\n# pmoReviewTime: \"2024-08-17 10:00:00\",\n# predictDeliveryTime: \"2024-09-01 18:00:00\",\n# productLine: \"Enterprise\",\n# ratingDetails: [\n# {\n# effort: 6,\n# frequency: 9,\n# reach: 7,\n# type: \"user\",\n# urgent: 5,\n# value: 8,\n# },\n# {\n# effort: 5,\n# frequency: 8,\n# reach: 6,\n# type: \"tech\",\n# urgent: 4,\n# value: 7,\n# },\n# ],\n# realStoryPoint: 12.5,\n# resolveTime: \"2024-07-15 10:30:00\",\n# score: 8.5,\n# source: \"微信端\",\n# speedUp: [\n# {\n# mark: true,\n# reason: \"市场竞争力提升\",\n# score: 1.5,\n# },\n# {\n# mark: false,\n# reason: \"内部需求调整\",\n# score: 0,\n# },\n# ],\n# stage: \"Development\",\n# startDate: \"2024-07-01\",\n# status: \"waitInitialScore\",\n# value: \"High\",\n# },\n# {\n# category: \"functionalRequirements\",\n# classification: \"feature\",\n# closeReason: \"需求范围不明确,需重新定义。\",\n# confirmDeliveryTime: \"2024-08-26 15:00:00\",\n# confirmUrl: \"https://example.com/verify/002\",\n# createRole: \"Project Coordinator\",\n# customerConfirm: {\n# confirm: 0,\n# confirmTime: \"\",\n# rejectReason: \"功能未完全满足需求。\",\n# },\n# deliveryConfirm: true,\n# deliveryStatus: \"unconfirmed\",\n# description: \"增加新功能,允许用户自定义报告模板。\",\n# document: {\n# developUrl: \"https://example.com/develop/4321\",\n# requirementUrl: \"https://example.com/requirement/8765\",\n# },\n# endDate: \"2024-11-10\",\n# enterpriseVersion: \"v2.2.0\",\n# expectReleaseDate: \"2024-11-01\",\n# finishTime: \"2024-09-14 15:00:00\",\n# gradeInfo: {\n# grade: 3,\n# gradeTime: \"2024-08-10 10:00:00\",\n# memo: \"交付质量一般,需改进。\",\n# },\n# humanCost: {\n# backend: 150,\n# frontend: 90.2,\n# },\n# initialScore: 80,\n# number: \"002\",\n# op_plan_month: true,\n# pdReviewComment: \"优先级较高,需尽快安排资源。\",\n# pdReviewDate: \"2024-08-20\",\n# pdReviewResult: false,\n# pdReviewTime: \"2024-08-21 11:00:00\",\n# planStartDate: \"2024-08-25\",\n# planStartTime: \"2024-08-25 09:30:00\",\n# pmoReviewComment: \"项目计划需细化,资源分配需优化。\",\n# pmoReviewDate: \"2024-08-23\",\n# pmoReviewResult: false,\n# pmoReviewTime: \"2024-08-16 11:00:00\",\n# predictDeliveryTime: \"2024-09-15 16:00:00\",\n# productLine: \"Consumer\",\n# ratingDetails: [\n# {\n# effort: 5,\n# frequency: 10,\n# reach: 8,\n# type: \"user\",\n# urgent: 6,\n# value: 9,\n# },\n# {\n# effort: 4,\n# frequency: 9,\n# reach: 7,\n# type: \"tech\",\n# urgent: 5,\n# value: 8,\n# },\n# ],\n# realStoryPoint: 10.2,\n# resolveTime: \"2024-08-20 14:45:00\",\n# score: 7.2,\n# source: \"客户反馈\",\n# speedUp: [\n# {\n# mark: false,\n# reason: \"无特殊加速需求\",\n# score: 0,\n# },\n# {\n# mark: true,\n# reason: \"客户紧急需求\",\n# score: 2,\n# },\n# ],\n# stage: \"Planning\",\n# startDate: \"2024-08-01\",\n# status: \"waitAssess\",\n# value: \"Medium\",\n# },\n# ];\n# </script>\n# \n```\n"
48
+ "doc": "---\ntagName: visual-builder.raw-data-preview\ndisplayName: WrappedVisualBuilderRawDataPreview\ndescription: 原始数据预览,在 iframe 中渲染属性生成候选编排的对比表格,支持批注和确认操作\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.raw-data-preview\n\n> 原始数据预览,在 iframe 中渲染属性生成候选编排的对比表格,支持批注和确认操作\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ----------- | ------------------------------------------------------------------------------------------- | ---- | --------- | ------------------------------------------------ |\n| previewUrl | `string` | 否 | - | 预览 iframe 地址,默认使用内置预览地址 |\n| generations | `AttributeGeneration[]` | 否 | - | 属性生成数据列表 |\n| mocks | `Record<string, unknown>[]` | 否 | - | 模拟数据列表,作为各属性的候补示例数据 |\n| busy | `boolean` | 否 | - | 是否处于加载中状态,为 true 时禁用批注和确认操作 |\n| category | `\"detail-item\" \\| \"form-item\" \\| \"table-column\" \\| \"card-item\" \\| \"metric-item\" \\| \"value\"` | 否 | `\"value\"` | 预览分类,影响数据容器的渲染方式 |\n| theme | `string` | 否 | - | 预览主题 |\n| uiVersion | `string` | 否 | - | UI 版本 |\n| app | `MicroApp` | 否 | - | 微应用信息 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |\n| comment | `CommentDetail` — { comment: 批注内容, propertyInstanceId: 属性实例 ID } | 提交批注时触发(在批注文本框中按 ⌘/Ctrl + 回车) |\n| approve | `ApproveDetail` — { approved: 是否已确认, propertyInstanceId: 属性实例 ID } | 点击确认 checkbox 时触发 |\n| view.attr.prompt | `AttributeGeneration` — { generationId: 生成 ID, objectId: 对象 ID, objectName: 对象名称, propertyId: 属性 ID, propertyName: 属性名称, propertyType: 属性类型, candidates: 候选编排列表, mockData: 模拟数据 } | 点击属性类型链接查看提示词时触发 |\n\n## Examples\n\n### Basic\n\n展示多个对象属性的候选编排,支持批注和确认操作。\n\n```yaml preview minHeight=\"500px\"\nbrick: visual-builder.raw-data-preview\nproperties:\n previewUrl: /preview/\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n style:\n height: calc(100vh - 4em)\n generations:\n - generationId: 6202dcb92c165\n objectId: IDEA\n objectName: 想法\n propertyId: predictDeliveryTime\n propertyName: 预计交付时间\n propertyInstanceId: 61df43df88cc1\n candidates:\n - display: text\n formatter:\n format: relative\n type: date-time\n type: date-time\n visualWeight: -1\n - display: text\n formatter:\n format: accurate\n type: date-time\n type: date-time\n visualWeight: 0\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 1\n - display: text\n formatter:\n format: full\n type: date-time\n type: date-time\n visualWeight: 2\n mockData:\n - predictDeliveryTime: \"2024-06-30T12:00:00Z\"\n - predictDeliveryTime: \"2024-12-31T00:00:00Z\"\n - generationId: 6202d9c17c601\n objectId: IDEA\n objectName: 想法\n propertyId: createRole\n propertyName: 创建 idea 的用户角色\n propertyInstanceId: 61df43df88d89\n candidates:\n - display: text\n style:\n color: var(--text-color-secondary)\n size: medium\n type: string\n visualWeight: -1\n - display: text\n style:\n color: var(--text-color-default)\n size: medium\n type: string\n visualWeight: 0\n - display: text\n style:\n color: var(--text-color-default)\n fontWeight: bold\n size: large\n type: string\n visualWeight: 2\n mockData:\n - createRole: Admin\n - createRole: Developer\n events:\n comment:\n - action: console.log\n approve:\n - action: console.log\n view.attr.prompt:\n - action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.raw-data-preview\n# preview-url=\"/preview/\"\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# style=\"height: calc(100vh - 4em)\"\n# events=\"[object Object]\"\n# id=\"brick-1\"\n# ></visual-builder.raw-data-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# generationId: \"6202dcb92c165\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"predictDeliveryTime\",\n# propertyName: \"预计交付时间\",\n# propertyInstanceId: \"61df43df88cc1\",\n# candidates: [\n# {\n# display: \"text\",\n# formatter: {\n# format: \"relative\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"accurate\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 1,\n# },\n# {\n# display: \"text\",\n# formatter: {\n# format: \"full\",\n# type: \"date-time\",\n# },\n# type: \"date-time\",\n# visualWeight: 2,\n# },\n# ],\n# mockData: [\n# {\n# predictDeliveryTime: \"2024-06-30T12:00:00Z\",\n# },\n# {\n# predictDeliveryTime: \"2024-12-31T00:00:00Z\",\n# },\n# ],\n# },\n# {\n# generationId: \"6202d9c17c601\",\n# objectId: \"IDEA\",\n# objectName: \"想法\",\n# propertyId: \"createRole\",\n# propertyName: \"创建 idea 的用户角色\",\n# propertyInstanceId: \"61df43df88d89\",\n# candidates: [\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-secondary)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: -1,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# size: \"medium\",\n# },\n# type: \"string\",\n# visualWeight: 0,\n# },\n# {\n# display: \"text\",\n# style: {\n# color: \"var(--text-color-default)\",\n# fontWeight: \"bold\",\n# size: \"large\",\n# },\n# type: \"string\",\n# visualWeight: 2,\n# },\n# ],\n# mockData: [\n# {\n# createRole: \"Admin\",\n# },\n# {\n# createRole: \"Developer\",\n# },\n# ],\n# },\n# ];\n# </script>\n# \n```\n\n### 加载中状态\n\n将 busy 设置为 true 以禁用批注和确认操作,适用于后台处理过程中。\n\n```yaml preview minHeight=\"300px\"\nbrick: visual-builder.raw-data-preview\nproperties:\n busy: true\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n style:\n height: 300px\n generations:\n - generationId: abc001\n objectId: HOST\n objectName: 主机\n propertyId: hostname\n propertyName: 主机名\n propertyInstanceId: inst001\n candidates:\n - display: text\n type: string\n visualWeight: 0\n mockData:\n - hostname: server-01\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.raw-data-preview\n# busy\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# style=\"height: 300px\"\n# id=\"brick-1\"\n# ></visual-builder.raw-data-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# generationId: \"abc001\",\n# objectId: \"HOST\",\n# objectName: \"主机\",\n# propertyId: \"hostname\",\n# propertyName: \"主机名\",\n# propertyInstanceId: \"inst001\",\n# candidates: [\n# {\n# display: \"text\",\n# type: \"string\",\n# visualWeight: 0,\n# },\n# ],\n# mockData: [\n# {\n# hostname: \"server-01\",\n# },\n# ],\n# },\n# ];\n# </script>\n# \n```\n"
49
+ },
50
+ "visual-builder.pre-generated-config": {
51
+ "doc": "---\ntagName: visual-builder.pre-generated-config\ndisplayName: WrappedVisualBuilderPreGeneratedConfig\ndescription: AI 预生成配置选择器,以 iframe 预览方式展示属性列表,允许用户勾选、排序和调整可视权重,生成最终砖块配置\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.pre-generated-config\n\n> AI 预生成配置选择器,以 iframe 预览方式展示属性列表,允许用户勾选、排序和调整可视权重,生成最终砖块配置\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| --------------- | --------------------------- | ---- | ------ | ------------------------------------------------------------------------------------------ |\n| previewUrl | `string` | 否 | - | 预览 iframe 的地址,默认使用内置预览地址 |\n| attrList | `ObjectAttr[]` | 否 | - | 属性列表,支持对象属性(ObjectAttr)和指标属性(MetricAttr) |\n| mockList | `Record<string, unknown>[]` | 否 | - | 模拟数据列表,用于在预览列中展示真实渲染效果 |\n| metricGroups | `MetricGroup[]` | 否 | - | 指标分组配置,仅在 containerConfig.type 为 \"grouped-chart\" 时生效 |\n| containerConfig | `ContainerConfig` | 否 | - | 容器配置,决定生成的砖块布局类型(table/descriptions/cards/chart/grouped-chart)及数据绑定 |\n\n## Events\n\n| 事件 | detail | 说明 |\n| ------------ | ----------------------------------------------------------------------- | ---------------------------------------------------- |\n| brick.change | `BrickConf \\| null` — 根据当前选择和权重生成的砖块配置,无选中时为 null | 用户选择、排序或调整权重后,生成的砖块配置变化时触发 |\n\n## Examples\n\n### Basic\n\n展示预生成配置选择器基本用法,提供属性列表让用户选择和排序。\n\n```yaml preview\nbrick: visual-builder.pre-generated-config\nproperties:\n attrList:\n - id: name\n name: 名称\n candidates:\n - visualWeight: 0\n - id: status\n name: 状态\n candidates:\n - visualWeight: 0\n - id: createTime\n name: 创建时间\n candidates:\n - visualWeight: 0\n mockList:\n - name: 主机-001\n status: 运行中\n createTime: \"2024-01-01\"\n - name: 主机-002\n status: 已停止\n createTime: \"2024-01-02\"\n containerConfig:\n type: table\n dataName: hostList\nevents:\n brick.change:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-config\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-config>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.attrList = [\n# {\n# id: \"name\",\n# name: \"名称\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# {\n# id: \"status\",\n# name: \"状态\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# {\n# id: \"createTime\",\n# name: \"创建时间\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# ];\n# brick_1.mockList = [\n# {\n# name: \"主机-001\",\n# status: \"运行中\",\n# createTime: \"2024-01-01\",\n# },\n# {\n# name: \"主机-002\",\n# status: \"已停止\",\n# createTime: \"2024-01-02\",\n# },\n# ];\n# brick_1.containerConfig = {\n# type: \"table\",\n# dataName: \"hostList\",\n# };\n# brick_1.addEventListener(\"brick.change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n\n### Descriptions Container\n\n使用描述列表容器类型展示属性配置。\n\n```yaml preview\nbrick: visual-builder.pre-generated-config\nproperties:\n attrList:\n - id: name\n name: 名称\n candidates:\n - visualWeight: 0\n - id: ip\n name: IP 地址\n candidates:\n - visualWeight: 0\n - id: status\n name: 运营状态\n candidates:\n - visualWeight: 0\n mockList:\n - name: 主机-001\n ip: \"192.168.1.1\"\n status: 运行中\n containerConfig:\n type: descriptions\n dataName: hostDetail\nevents:\n brick.change:\n action: console.log\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-config\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-config>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.attrList = [\n# {\n# id: \"name\",\n# name: \"名称\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# {\n# id: \"ip\",\n# name: \"IP 地址\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# {\n# id: \"status\",\n# name: \"运营状态\",\n# candidates: [\n# {\n# visualWeight: 0,\n# },\n# ],\n# },\n# ];\n# brick_1.mockList = [\n# {\n# name: \"主机-001\",\n# ip: \"192.168.1.1\",\n# status: \"运行中\",\n# },\n# ];\n# brick_1.containerConfig = {\n# type: \"descriptions\",\n# dataName: \"hostDetail\",\n# };\n# brick_1.addEventListener(\"brick.change\", (e) => {\n# console.log(e.detail);\n# });\n# </script>\n# \n```\n"
52
+ },
53
+ "visual-builder.pre-generated-config-preview": {
54
+ "doc": "---\ntagName: visual-builder.pre-generated-config-preview\ndisplayName: WrappedVisualBuilderPreGeneratedConfigPreview\ndescription: AI 预生成配置预览构件,在 iframe 中将属性列表渲染为表格或描述列表,用于直观展示配置结果\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.pre-generated-config-preview\n\n> AI 预生成配置预览构件,在 iframe 中将属性列表渲染为表格或描述列表,用于直观展示配置结果\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ---------- | --------------------------- | ---- | ------ | --------------------------------------------------------------------------- |\n| previewUrl | `string` | 否 | - | 预览 iframe 的地址,默认使用内置预览地址 |\n| container | `\"table\" \\| \"descriptions\"` | 否 | - | 容器类型,\"table\" 渲染为表格,\"descriptions\" 渲染为描述列表,默认为 \"table\" |\n| attrList | `ObjectAttr[]` | 否 | - | 属性列表,每项包含 id、name,以及可选的可视化配置 |\n| mockList | `Record<string, unknown>[]` | 否 | - | 模拟数据列表,用于填充预览中的真实数据 |\n\n## Examples\n\n### Table Preview\n\n以表格形式预览属性列表配置。\n\n```yaml preview\nbrick: visual-builder.pre-generated-config-preview\nproperties:\n container: table\n attrList:\n - id: name\n name: 名称\n - id: ip\n name: IP 地址\n - id: status\n name: 运营状态\n - id: createTime\n name: 创建时间\n mockList:\n - name: 主机-001\n ip: \"192.168.1.1\"\n status: 运行中\n createTime: \"2024-01-01\"\n - name: 主机-002\n ip: \"192.168.1.2\"\n status: 已停止\n createTime: \"2024-01-02\"\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-config-preview\n# container=\"table\"\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-config-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.attrList = [\n# {\n# id: \"name\",\n# name: \"名称\",\n# },\n# {\n# id: \"ip\",\n# name: \"IP 地址\",\n# },\n# {\n# id: \"status\",\n# name: \"运营状态\",\n# },\n# {\n# id: \"createTime\",\n# name: \"创建时间\",\n# },\n# ];\n# brick_1.mockList = [\n# {\n# name: \"主机-001\",\n# ip: \"192.168.1.1\",\n# status: \"运行中\",\n# createTime: \"2024-01-01\",\n# },\n# {\n# name: \"主机-002\",\n# ip: \"192.168.1.2\",\n# status: \"已停止\",\n# createTime: \"2024-01-02\",\n# },\n# ];\n# </script>\n# \n```\n\n### Descriptions Preview\n\n以描述列表形式预览属性配置,适合展示单条记录的详细信息。\n\n```yaml preview\nbrick: visual-builder.pre-generated-config-preview\nproperties:\n container: descriptions\n attrList:\n - id: name\n name: 名称\n - id: ip\n name: IP 地址\n - id: status\n name: 运营状态\n - id: createTime\n name: 创建时间\n mockList:\n - name: 主机-001\n ip: \"192.168.1.1\"\n status: 运行中\n createTime: \"2024-01-01\"\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.pre-generated-config-preview\n# container=\"descriptions\"\n# id=\"brick-1\"\n# ></visual-builder.pre-generated-config-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.attrList = [\n# {\n# id: \"name\",\n# name: \"名称\",\n# },\n# {\n# id: \"ip\",\n# name: \"IP 地址\",\n# },\n# {\n# id: \"status\",\n# name: \"运营状态\",\n# },\n# {\n# id: \"createTime\",\n# name: \"创建时间\",\n# },\n# ];\n# brick_1.mockList = [\n# {\n# name: \"主机-001\",\n# ip: \"192.168.1.1\",\n# status: \"运行中\",\n# createTime: \"2024-01-01\",\n# },\n# ];\n# </script>\n# \n```\n"
55
+ },
56
+ "visual-builder.raw-metric-preview": {
57
+ "doc": "---\ntagName: visual-builder.raw-metric-preview\ndisplayName: WrappedVisualBuilderRawMetricPreview\ndescription: 原始指标预览,在 iframe 中渲染指标生成候选图表的对比表格\ncategory: \"\"\nsource: \"@next-bricks/visual-builder\"\n---\n\n# visual-builder.raw-metric-preview\n\n> 原始指标预览,在 iframe 中渲染指标生成候选图表的对比表格\n\n## Props\n\n| 属性 | 类型 | 必填 | 默认值 | 说明 |\n| ----------- | -------------------- | ---- | ------ | ---------------------------------------- |\n| previewUrl | `string` | 否 | - | 预览 iframe 地址,默认使用内置预览地址 |\n| generations | `MetricGeneration[]` | 否 | - | 指标生成数据列表 |\n| grouped | `boolean` | 否 | - | 是否按分组显示,启用后表格额外显示分组列 |\n| busy | `boolean` | 否 | - | 是否处于加载中状态 |\n| theme | `string` | 否 | - | 预览主题 |\n| uiVersion | `string` | 否 | - | UI 版本 |\n| app | `MicroApp` | 否 | - | 微应用信息 |\n\n## Examples\n\n### Basic\n\n展示指标生成候选图表的对比表格,按视觉重量分列渲染不同展示形式。\n\n```yaml preview minHeight=\"400px\"\nbrick: visual-builder.raw-metric-preview\nproperties:\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n style:\n height: 400px\n generations:\n - objectId: HOST\n objectName: 主机\n propertyId: cpu_usage\n propertyName: CPU 使用率\n propertyUnit: percent(100)\n propertyDataType: double\n candidates: []\n mockData:\n - 45.2\n - 67.8\n - 23.1\n - 89.5\n - 55.0\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.raw-metric-preview\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# style=\"height: 400px\"\n# id=\"brick-1\"\n# ></visual-builder.raw-metric-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# objectId: \"HOST\",\n# objectName: \"主机\",\n# propertyId: \"cpu_usage\",\n# propertyName: \"CPU 使用率\",\n# propertyUnit: \"percent(100)\",\n# propertyDataType: \"double\",\n# candidates: [],\n# mockData: [45.2, 67.8, 23.1, 89.5, 55],\n# },\n# ];\n# </script>\n# \n```\n\n### 分组展示\n\n启用 grouped 属性将相关指标合并展示在同一分组下。\n\n```yaml preview minHeight=\"400px\"\nbrick: visual-builder.raw-metric-preview\nproperties:\n theme: <% THEME.getTheme() %>\n uiVersion: \"8.2\"\n grouped: true\n style:\n height: 400px\n generations:\n - objectId: HOST\n objectName: 主机\n propertyId: bytes_in\n propertyName: 入流量\n propertyUnit: bytes\n propertyDataType: long\n groupIndex: 0\n group: 网络流量\n candidates: []\n mockData:\n - 1024\n - 2048\n - 512\n - objectId: HOST\n objectName: 主机\n propertyId: bytes_out\n propertyName: 出流量\n propertyUnit: bytes\n propertyDataType: long\n groupIndex: 0\n group: 网络流量\n candidates: []\n mockData:\n - 768\n - 1536\n - 256\n# -- YAML DELIMITER (1nbbm8) --\n# <visual-builder.raw-metric-preview\n# theme=\"&lt;% THEME.getTheme() %&gt;\"\n# ui-version=\"8.2\"\n# grouped\n# style=\"height: 400px\"\n# id=\"brick-1\"\n# ></visual-builder.raw-metric-preview>\n# \n# <script>\n# const brick_1 = document.getElementById(\"brick-1\");\n# brick_1.generations = [\n# {\n# objectId: \"HOST\",\n# objectName: \"主机\",\n# propertyId: \"bytes_in\",\n# propertyName: \"入流量\",\n# propertyUnit: \"bytes\",\n# propertyDataType: \"long\",\n# groupIndex: 0,\n# group: \"网络流量\",\n# candidates: [],\n# mockData: [1024, 2048, 512],\n# },\n# {\n# objectId: \"HOST\",\n# objectName: \"主机\",\n# propertyId: \"bytes_out\",\n# propertyName: \"出流量\",\n# propertyUnit: \"bytes\",\n# propertyDataType: \"long\",\n# groupIndex: 0,\n# group: \"网络流量\",\n# candidates: [],\n# mockData: [768, 1536, 256],\n# },\n# ];\n# </script>\n# \n```\n"
16
58
  }
17
59
  }