@fudanda/workflow 2.20261024.1-beta.2 → 2.20261107.1-beta.1

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 (293) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +114 -114
  3. package/THIRD-PARTY-NOTICES.md +57 -57
  4. package/dist/{ai-markdown-esl-I5ck.js → ai-markdown--SqEglSn.js} +1 -2
  5. package/dist/chrome.js +46 -53
  6. package/dist/core.js +3 -3
  7. package/dist/{header-shortcuts-BQZuNfpA.js → header-shortcuts-BcwVJV2g.js} +1 -2
  8. package/dist/index.js +925 -1000
  9. package/dist/{schema-tree-CTM6hEdm.js → schema-tree-B4yoWS9A.js} +5 -10
  10. package/dist/{start-form-L6xw9phk.js → start-form-DWlAhZhs.js} +169 -335
  11. package/dist/styles.css +1 -1
  12. package/dist/{test-input-validation-CkORPCfm.js → test-input-validation-Ch9pS4X8.js} +1 -2
  13. package/package.json +108 -106
  14. package/vendor/coze/LICENSE-APACHE +177 -177
  15. package/vendor/coze/UPSTREAM.json +8 -8
  16. package/vendor/coze/original/base-test-button.tsx +22 -22
  17. package/vendor/coze/original/comment-container.tsx +68 -68
  18. package/vendor/coze/original/condition-container.tsx +60 -60
  19. package/vendor/coze/original/condition-tag.tsx +58 -58
  20. package/vendor/coze/original/coze-global.less +234 -234
  21. package/vendor/coze/original/create-loop-function-json.ts +134 -134
  22. package/vendor/coze/original/create-loop-function.ts +56 -56
  23. package/vendor/coze/original/end-registry.ts +41 -41
  24. package/vendor/coze/original/execute-result-panel.less +97 -97
  25. package/vendor/coze/original/execute-result-panel.tsx +171 -171
  26. package/vendor/coze/original/form-item.less +39 -39
  27. package/vendor/coze/original/form-item.tsx +200 -200
  28. package/vendor/coze/original/http-api-field.tsx +42 -42
  29. package/vendor/coze/original/http-form-render.tsx +102 -102
  30. package/vendor/coze/original/icon-add.svg +3 -3
  31. package/vendor/coze/original/icon-arrow-left.svg +3 -3
  32. package/vendor/coze/original/icon-auto-layout.svg +18 -18
  33. package/vendor/coze/original/icon-code.svg +13 -13
  34. package/vendor/coze/original/icon-condition.svg +12 -12
  35. package/vendor/coze/original/icon-database.svg +18 -18
  36. package/vendor/coze/original/icon-delete.svg +5 -5
  37. package/vendor/coze/original/icon-fullscreen.svg +9 -9
  38. package/vendor/coze/original/icon-more.svg +11 -11
  39. package/vendor/coze/original/icon-play-round-outlined.svg +8 -8
  40. package/vendor/coze/original/icon-plugin-tool.svg +6 -6
  41. package/vendor/coze/original/icon-standard-copy.svg +8 -8
  42. package/vendor/coze/original/icon-unknown.svg +7 -7
  43. package/vendor/coze/original/icon-var.svg +6 -6
  44. package/vendor/coze/original/icon-workflow-end.svg +5 -5
  45. package/vendor/coze/original/icon-workflow-start.svg +5 -5
  46. package/vendor/coze/original/icon-workflow.svg +21 -21
  47. package/vendor/coze/original/icon-workflows.svg +5 -5
  48. package/vendor/coze/original/if-form-meta.tsx +88 -88
  49. package/vendor/coze/original/logic-display.tsx +33 -33
  50. package/vendor/coze/original/mouse-icon.tsx +35 -35
  51. package/vendor/coze/original/mouse-pad-selector.tsx +180 -180
  52. package/vendor/coze/original/node-card.tsx +77 -77
  53. package/vendor/coze/original/node-category-panel.less +4 -4
  54. package/vendor/coze/original/node-category-panel.tsx +53 -53
  55. package/vendor/coze/original/node-config-form.tsx +67 -67
  56. package/vendor/coze/original/node-header.less +165 -165
  57. package/vendor/coze/original/node-header.tsx +552 -552
  58. package/vendor/coze/original/node-panel.less +183 -183
  59. package/vendor/coze/original/node-render.less +20 -20
  60. package/vendor/coze/original/node-side-sheet.less +57 -57
  61. package/vendor/coze/original/node-side-sheet.tsx +214 -214
  62. package/vendor/coze/original/node-wrapper.tsx +71 -71
  63. package/vendor/coze/original/pad-icon.tsx +45 -45
  64. package/vendor/coze/original/resizable-side-panel-constants.ts +18 -18
  65. package/vendor/coze/original/resizable-side-panel.tsx +42 -42
  66. package/vendor/coze/original/start-registry.ts +53 -53
  67. package/vendor/coze/original/sub-canvas-background.less +4 -4
  68. package/vendor/coze/original/sub-canvas-background.tsx +48 -48
  69. package/vendor/coze/original/sub-canvas-container.less +16 -16
  70. package/vendor/coze/original/sub-canvas-container.tsx +97 -97
  71. package/vendor/coze/original/sub-canvas-header.less +75 -75
  72. package/vendor/coze/original/sub-canvas-header.tsx +95 -95
  73. package/vendor/coze/original/test-form-sheet-header.tsx +82 -82
  74. package/vendor/coze/original/test-form-sheet.less +178 -178
  75. package/vendor/coze/original/toolbar-add-node.tsx +68 -68
  76. package/vendor/coze/original/toolbar-auto-layout.tsx +61 -61
  77. package/vendor/coze/original/toolbar-comment.tsx +121 -121
  78. package/vendor/coze/original/toolbar-container.tsx +42 -42
  79. package/vendor/coze/original/toolbar-interactive.tsx +98 -98
  80. package/vendor/coze/original/toolbar-minimap-switch.tsx +41 -41
  81. package/vendor/coze/original/toolbar-tools.less +46 -46
  82. package/vendor/coze/original/toolbar-tools.tsx +89 -89
  83. package/vendor/coze/original/toolbar-zoom.tsx +134 -134
  84. package/vendor/coze/original/tree-variable-selector.less +291 -291
  85. package/vendor/coze/original/tree-variable-selector.tsx +298 -298
  86. package/vendor/coze/original/workflow-document-custom-options.ts +151 -151
  87. package/vendor/coze/original/workflow-header.less +65 -65
  88. package/vendor/coze/original/workflow-header.tsx +85 -85
  89. package/vendor/coze/source/agent-models/model-option/index.module.less +18 -18
  90. package/vendor/coze/source/agent-models/model-option/index.tsx +321 -321
  91. package/vendor/coze/source/agent-models/model-option-avatar/index.tsx +175 -175
  92. package/vendor/coze/source/agent-models/model-option-group/index.tsx +87 -87
  93. package/vendor/coze/source/agent-models/model-option-thumb/index.tsx +41 -41
  94. package/vendor/coze/source/agent-models/model-select-ui/index.tsx +238 -238
  95. package/vendor/coze/source/agent-models/popover-model-list-view/index.tsx +146 -146
  96. package/vendor/coze/source/components/code-editor/text-editor.tsx +71 -71
  97. package/vendor/coze/source/components/comment/components/editor/block.tsx +117 -117
  98. package/vendor/coze/source/components/comment/components/editor/leaf.tsx +64 -64
  99. package/vendor/coze/source/components/comment/components/toolbar.tsx +366 -366
  100. package/vendor/coze/source/components/comment/constant.ts +94 -94
  101. package/vendor/coze/source/components/editor-container/expand-editor/index.module.less +107 -107
  102. package/vendor/coze/source/components/editor-container/expand-editor/index.tsx +117 -117
  103. package/vendor/coze/source/components/model-select/components/model-setting.tsx +300 -300
  104. package/vendor/coze/source/components/model-select/components/settings.tsx +144 -144
  105. package/vendor/coze/source/components/model-select/index.module.less +34 -34
  106. package/vendor/coze/source/components/model-select/utils/index.tsx +100 -100
  107. package/vendor/coze/source/components/node-render/node-render-new/fields/constants.tsx +79 -79
  108. package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.module.less +12 -12
  109. package/vendor/coze/source/components/node-render/node-render-new/fields/field-empty.tsx +37 -37
  110. package/vendor/coze/source/components/node-render/node-render-new/fields/field.module.less +19 -19
  111. package/vendor/coze/source/components/node-render/node-render-new/fields/field.tsx +52 -52
  112. package/vendor/coze/source/components/node-render/node-render-new/fields/http-api-field/index.tsx +42 -42
  113. package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.module.less +47 -47
  114. package/vendor/coze/source/components/node-render/node-render-new/fields/overflow-tag-list.tsx +162 -162
  115. package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.module.less +48 -48
  116. package/vendor/coze/source/components/node-render/node-render-new/fields/variable-tag-list.tsx +126 -126
  117. package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.module.less +97 -97
  118. package/vendor/coze/source/components/node-wrapper/execute-result-panel/index.tsx +171 -171
  119. package/vendor/coze/source/components/sub-canvas/components/background/index.module.less +4 -4
  120. package/vendor/coze/source/components/sub-canvas/components/header/index.module.less +75 -75
  121. package/vendor/coze/source/components/test-run/test-run-button/single-node.tsx +158 -158
  122. package/vendor/coze/source/execution-panel/panel.module.less +48 -48
  123. package/vendor/coze/source/execution-panel/panel.tsx +99 -99
  124. package/vendor/coze/source/execution-panel/use-resize.ts +79 -79
  125. package/vendor/coze/source/external/features/log/components/data-viewer/constants.ts +28 -28
  126. package/vendor/coze/source/external/features/log/components/data-viewer/context/context.ts +21 -21
  127. package/vendor/coze/source/external/features/log/components/data-viewer/context/create-store.ts +48 -48
  128. package/vendor/coze/source/external/features/log/components/data-viewer/context/index.ts +19 -19
  129. package/vendor/coze/source/external/features/log/components/data-viewer/context/provider.tsx +50 -50
  130. package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.module.less +26 -26
  131. package/vendor/coze/source/external/features/log/components/data-viewer/data-viewer.tsx +79 -79
  132. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/index.ts +18 -18
  133. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-data-viewer-store.ts +29 -29
  134. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-expand.ts +35 -35
  135. package/vendor/coze/source/external/features/log/components/data-viewer/hooks/use-value.tsx +66 -66
  136. package/vendor/coze/source/external/features/log/components/data-viewer/index.tsx +21 -21
  137. package/vendor/coze/source/external/features/log/components/data-viewer/json-field/index.tsx +186 -186
  138. package/vendor/coze/source/external/features/log/components/data-viewer/json-field/json-field.module.less +79 -79
  139. package/vendor/coze/source/external/features/log/components/data-viewer/types.ts +50 -50
  140. package/vendor/coze/source/external/features/log/components/data-viewer/utils/big-number.ts +35 -35
  141. package/vendor/coze/source/external/features/log/components/data-viewer/utils/generate-field.ts +104 -104
  142. package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.module.less +27 -27
  143. package/vendor/coze/source/external/features/log/components/log-parser/log-wrap.tsx +109 -109
  144. package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.module.less +52 -52
  145. package/vendor/coze/source/external/features/log/components/node-status-bar/node-status-bar.tsx +113 -113
  146. package/vendor/coze/source/form/components/field-empty.tsx +45 -45
  147. package/vendor/coze/source/form/components/section.tsx +91 -91
  148. package/vendor/coze/source/form-extensions/components/add-item-button/index.tsx +64 -64
  149. package/vendor/coze/source/form-extensions/components/form-card/index.module.less +131 -131
  150. package/vendor/coze/source/form-extensions/components/form-card/index.tsx +309 -309
  151. package/vendor/coze/source/form-extensions/components/form-item/index.module.less +39 -39
  152. package/vendor/coze/source/form-extensions/components/form-item/index.tsx +200 -200
  153. package/vendor/coze/source/form-extensions/components/form-item-feedback/index.module.less +7 -7
  154. package/vendor/coze/source/form-extensions/components/form-item-feedback/index.tsx +39 -39
  155. package/vendor/coze/source/form-extensions/components/level-line/index.module.less +346 -346
  156. package/vendor/coze/source/form-extensions/components/level-line/index.ts +17 -17
  157. package/vendor/coze/source/form-extensions/components/level-line/level-line.tsx +460 -460
  158. package/vendor/coze/source/form-extensions/components/level-line/types.ts +38 -38
  159. package/vendor/coze/source/form-extensions/components/level-line/utils.ts +60 -60
  160. package/vendor/coze/source/form-extensions/components/literal-value-input/constants.ts +61 -61
  161. package/vendor/coze/source/form-extensions/components/literal-value-input/input-boolean.tsx +80 -80
  162. package/vendor/coze/source/form-extensions/components/literal-value-input/input-integer.tsx +68 -68
  163. package/vendor/coze/source/form-extensions/components/literal-value-input/input-number.tsx +62 -62
  164. package/vendor/coze/source/form-extensions/components/literal-value-input/input-select.tsx +59 -59
  165. package/vendor/coze/source/form-extensions/components/literal-value-input/input-string.tsx +55 -55
  166. package/vendor/coze/source/form-extensions/components/literal-value-input/literal-value-input.tsx +35 -35
  167. package/vendor/coze/source/form-extensions/components/literal-value-input/styles.module.less +46 -46
  168. package/vendor/coze/source/form-extensions/components/literal-value-input/type.ts +61 -61
  169. package/vendor/coze/source/form-extensions/components/literal-value-input/utils.tsx +117 -117
  170. package/vendor/coze/source/form-extensions/components/node-header/components/close-button.tsx +44 -44
  171. package/vendor/coze/source/form-extensions/components/node-header/description-display.tsx +52 -52
  172. package/vendor/coze/source/form-extensions/components/node-header/description.tsx +131 -131
  173. package/vendor/coze/source/form-extensions/components/node-header/index.module.less +165 -165
  174. package/vendor/coze/source/form-extensions/components/node-header/index.tsx +552 -552
  175. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-btn/index.tsx +43 -43
  176. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/default-value-input.tsx +276 -276
  177. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.module.less +124 -124
  178. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/index.tsx +131 -131
  179. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/expand-content/types.ts +32 -32
  180. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.module.less +38 -38
  181. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-name/index.tsx +101 -101
  182. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.module.less +51 -51
  183. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-operator/index.tsx +107 -107
  184. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.module.less +17 -17
  185. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-required/index.tsx +53 -53
  186. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/constants.tsx +77 -77
  187. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.module.less +97 -97
  188. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/components/param-type/index.tsx +155 -155
  189. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/constants.ts +38 -38
  190. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.module.less +138 -138
  191. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/index.tsx +360 -360
  192. package/vendor/coze/source/form-extensions/components/output-tree/components/custom-tree-node/type.ts +88 -88
  193. package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.module.less +36 -36
  194. package/vendor/coze/source/form-extensions/components/output-tree/components/header/index.tsx +104 -104
  195. package/vendor/coze/source/form-extensions/components/output-tree/constants.ts +22 -22
  196. package/vendor/coze/source/form-extensions/components/output-tree/context.ts +28 -28
  197. package/vendor/coze/source/form-extensions/components/output-tree/hooks/use-columns-style.ts +39 -39
  198. package/vendor/coze/source/form-extensions/components/output-tree/index.module.less +83 -83
  199. package/vendor/coze/source/form-extensions/components/output-tree/index.tsx +692 -692
  200. package/vendor/coze/source/form-extensions/components/output-tree/utils.ts +185 -185
  201. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/index.tsx +97 -97
  202. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/option-item.tsx +30 -30
  203. package/vendor/coze/source/form-extensions/components/setting-on-error/components/process-type/types.ts +23 -23
  204. package/vendor/coze/source/form-extensions/components/setting-on-error/components/retry-times/index.tsx +45 -45
  205. package/vendor/coze/source/form-extensions/components/setting-on-error/components/timeout/index.tsx +102 -102
  206. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-option.tsx +167 -167
  207. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select-tree-panel.tsx +165 -165
  208. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.module.less +96 -96
  209. package/vendor/coze/source/form-extensions/components/tree-variable-selector/composite-select.tsx +265 -265
  210. package/vendor/coze/source/form-extensions/components/tree-variable-selector/context.tsx +42 -42
  211. package/vendor/coze/source/form-extensions/components/tree-variable-selector/expand-icon.tsx +30 -30
  212. package/vendor/coze/source/form-extensions/components/tree-variable-selector/index.module.less +291 -291
  213. package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.module.less +48 -48
  214. package/vendor/coze/source/form-extensions/components/tree-variable-selector/node-variable-tree.tsx +149 -149
  215. package/vendor/coze/source/form-extensions/components/tree-variable-selector/utils.tsx +500 -500
  216. package/vendor/coze/source/form-extensions/components/tree-variable-selector/value-display.tsx +130 -130
  217. package/vendor/coze/source/form-extensions/components/value-expression-input/const.ts +68 -68
  218. package/vendor/coze/source/form-extensions/components/value-expression-input/context.ts +27 -27
  219. package/vendor/coze/source/form-extensions/components/value-expression-input/index.module.less +144 -144
  220. package/vendor/coze/source/form-extensions/components/value-expression-input/value-expression-input.tsx +418 -418
  221. package/vendor/coze/source/form-extensions/components/variable-type-selector/constants.tsx +77 -77
  222. package/vendor/coze/source/form-extensions/components/variable-type-selector/index.module.less +31 -31
  223. package/vendor/coze/source/form-extensions/components/variable-type-selector/index.tsx +17 -17
  224. package/vendor/coze/source/form-extensions/components/variable-type-selector/utils.tsx +298 -298
  225. package/vendor/coze/source/form-extensions/components/variable-type-selector/variable-type-selector.tsx +235 -235
  226. package/vendor/coze/source/form-extensions/components/variable-type-tag/index.tsx +54 -54
  227. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.module.less +9 -9
  228. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-branch.tsx +249 -249
  229. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-header.tsx +50 -50
  230. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.module.less +13 -13
  231. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-item-logic.tsx +73 -73
  232. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.module.less +10 -10
  233. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/delete/index.tsx +42 -42
  234. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.module.less +9 -9
  235. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/index.tsx +254 -254
  236. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.module.less +7 -7
  237. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/operator/index.tsx +144 -144
  238. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/condition-params-item/value-expression-with-state/index.tsx +69 -69
  239. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/context.ts +36 -36
  240. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch-preview.tsx +44 -44
  241. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/condition-branch.tsx +152 -152
  242. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/container.tsx +19 -19
  243. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/custom-drag-layer.tsx +117 -117
  244. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/draggable/types.ts +18 -18
  245. package/vendor/coze/source/form-extensions/setters/condition/multi-condition/types.ts +58 -58
  246. package/vendor/coze/source/node-registries/end/components/terminate-plan-field.tsx +29 -29
  247. package/vendor/coze/source/node-registries/end/constants.ts +34 -34
  248. package/vendor/coze/source/node-registries/end/form.tsx +66 -66
  249. package/vendor/coze/source/node-registries/end/types.ts +45 -45
  250. package/vendor/coze/source/node-registries/http/components/base-editor/raw-text-editor.tsx +80 -80
  251. package/vendor/coze/source/node-registries/http/constants.ts +80 -80
  252. package/vendor/coze/source/node-registries/http/fields/json-import-editor/index.module.less +191 -191
  253. package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-expand-editor.tsx +141 -141
  254. package/vendor/coze/source/node-registries/http/fields/json-import-editor/json-import-components/json-import.tsx +99 -99
  255. package/vendor/coze/source/node-registries/http/form-render.tsx +102 -102
  256. package/vendor/coze/source/node-registries/http/setters/api/curl-expand-editor.tsx +161 -161
  257. package/vendor/coze/source/node-registries/http/setters/api/curl-import.tsx +96 -96
  258. package/vendor/coze/source/node-registries/http/setters/api/index.module.less +199 -199
  259. package/vendor/coze/source/node-registries/http/setters/api/index.tsx +149 -149
  260. package/vendor/coze/source/node-registries/http/setters/api/utils.ts +41 -41
  261. package/vendor/coze/source/node-registries/http/setters/body/index.tsx +201 -201
  262. package/vendor/coze/source/node-registries/http/setters/constants.ts +83 -83
  263. package/vendor/coze/source/node-registries/if/components/else/index.tsx +41 -41
  264. package/vendor/coze/source/node-registries/intent/components/intents/index.module.less +14 -14
  265. package/vendor/coze/source/node-registries/intent/components/intents/option-item/index.tsx +189 -189
  266. package/vendor/coze/source/node-registries/json-stringify/constants.ts +32 -32
  267. package/vendor/coze/source/node-registries/json-stringify/form.tsx +46 -46
  268. package/vendor/coze/source/node-registries/loop/constants.ts +43 -43
  269. package/vendor/coze/source/node-registries/loop/loop-fields/loop-settings-section/index.tsx +48 -48
  270. package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/index.tsx +81 -81
  271. package/vendor/coze/source/node-registries/loop/loop-fields/loop-type/options.ts +34 -34
  272. package/vendor/coze/source/node-registries/start/form.tsx +209 -209
  273. package/vendor/coze/source/node-registries/text-process/components/method-selector/index.tsx +46 -46
  274. package/vendor/coze/source/node-registries/text-process/constants.ts +132 -132
  275. package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.module.less +7 -7
  276. package/vendor/coze/source/nodes-v2/components/form-item-feedback/index.tsx +47 -47
  277. package/vendor/coze/source/nodes-v2/components/system-prompt/index.module.less +66 -66
  278. package/vendor/coze/source/nodes-v2/components/system-prompt/prompt-kit-bar.tsx +129 -129
  279. package/vendor/coze/source/nodes-v2/components/system-prompt/system-prompt-editor.tsx +110 -110
  280. package/vendor/coze/source/nodes-v2/llm/user-prompt/index.tsx +64 -64
  281. package/vendor/coze/source/prompt-kit/input-config-popover/index.tsx +80 -80
  282. package/vendor/coze/source/prompt-kit/input-slot-widget/index.css +34 -34
  283. package/vendor/coze/source/prompt-kit/input-slot-widget/index.ts +169 -169
  284. package/vendor/coze/source/prompt-kit/library-item.tsx +141 -141
  285. package/vendor/coze/source/prompt-kit/prompt-info-input.tsx +90 -90
  286. package/vendor/coze/source/ui-components/add-operation/index.module.less +19 -19
  287. package/vendor/coze/source/ui-components/add-operation/index.tsx +67 -67
  288. package/vendor/coze/source/ui-components/auto-size-tooltip/index.module.less +39 -39
  289. package/vendor/coze/source/ui-components/auto-size-tooltip/index.tsx +74 -74
  290. package/vendor/coze/source/ui-components/workflow-sl-input/index.module.less +36 -36
  291. package/vendor/coze/source/ui-components/workflow-sl-input/index.tsx +194 -194
  292. package/vendor/coze/source/utils/create-slots/index.tsx +126 -126
  293. package/vendor/coze/source/utils/create-slots/use-force-update.ts +23 -23
@@ -1,552 +1,552 @@
1
- /*
2
- * Copyright 2025 coze-dev Authors
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- /* eslint-disable complexity */
18
- /* eslint-disable max-lines-per-function */
19
- import React, {
20
- useCallback,
21
- useEffect,
22
- useRef,
23
- useState,
24
- type ReactNode,
25
- type MouseEvent,
26
- } from 'react';
27
-
28
- import { get } from 'lodash-es';
29
- import classnames from 'classnames';
30
- import {
31
- useEntityFromContext,
32
- useService,
33
- usePlaygroundContainer,
34
- } from '@flowgram-adapter/free-layout-editor';
35
- import {
36
- type WorkflowNodeEntity,
37
- type WorkflowNodeMeta,
38
- } from '@flowgram-adapter/free-layout-editor';
39
- import { WorkflowNodeData, type NodeData } from '@coze-workflow/nodes';
40
- import {
41
- ENCAPSULATE_SHORTCUTS,
42
- EncapsulateService,
43
- } from '@coze-workflow/feature-encapsulate';
44
- import { StandardNodeType } from '@coze-workflow/base/types';
45
- import { useNodeTestId } from '@coze-workflow/base';
46
- import { I18n } from '@coze-arch/i18n';
47
- import {
48
- IconCozMore,
49
- IconCozTrigger,
50
- IconCozWarningCircleFill,
51
- } from '@coze-arch/coze-design/icons';
52
- import {
53
- IconButton,
54
- Typography,
55
- Dropdown,
56
- Input,
57
- Tag,
58
- Divider,
59
- } from '@coze-arch/coze-design';
60
- import { PluginType } from '@coze-arch/bot-api/developer_api';
61
-
62
- import { useNodeSideSheetStore } from '@/hooks/use-node-side-sheet-store';
63
-
64
- import { ValidationErrorWrapper, useError } from '../validation';
65
- import { WorkflowEditService } from '../../../services';
66
- import {
67
- useNodeRenderData,
68
- useGlobalState,
69
- useNodeRenderScene,
70
- } from '../../../hooks';
71
- import { TestRunSingleNodeButton } from '../../../components/test-run/test-run-button/single-node';
72
- import {
73
- ReferenceNodeOrigin,
74
- ReferenceNodeVersion,
75
- } from '../../../components/reference-node-info';
76
- import { NodeIcon } from '../../../components/node-icon';
77
- import { getBgColor } from './utils/get-bg-color';
78
- import { useMoveOut } from './use-move-out';
79
- import { DescriptionDisplay } from './description-display';
80
- import { Description } from './description';
81
- import PluginMockSet from './components/PluginMockSet';
82
- import { HelpLinkButton } from './components/help-link-button';
83
- import { CloseButton } from './components/close-button';
84
-
85
- import styles from './index.module.less';
86
-
87
- interface NodeHeaderProps {
88
- title: string;
89
- subTitle?: string;
90
- description?: string;
91
- logo: string;
92
- readonly?: boolean;
93
- readonlyAllowDeleteOperation?: boolean;
94
- hideTest?: boolean;
95
- onTitleChange: (newTitle: string) => void;
96
- onDescriptionChange: (desc: string) => void;
97
- extraOperation: ReactNode;
98
- showCloseButton?: boolean;
99
- className?: string;
100
- showTrigger?: boolean;
101
- triggerIsOpen?: boolean;
102
- nodeDisabled?: boolean;
103
- }
104
-
105
- export const NodeHeader: React.FC<NodeHeaderProps> = ({
106
- title,
107
- description,
108
- readonly,
109
- readonlyAllowDeleteOperation,
110
- hideTest,
111
- onTitleChange,
112
- onDescriptionChange,
113
- extraOperation,
114
- showCloseButton = false,
115
- className = '',
116
- showTrigger,
117
- triggerIsOpen,
118
- nodeDisabled,
119
- }) => {
120
- const titleInput = useRef<HTMLInputElement>(null);
121
- const [editableTitle, setEditableTitle] = useState(title);
122
- const [editable, setEditable] = useState(false);
123
- const editService = useService<WorkflowEditService>(WorkflowEditService);
124
- const encapsulateService = useService<EncapsulateService>(EncapsulateService);
125
- const node = useEntityFromContext<WorkflowNodeEntity>();
126
- const [menusVisible, setMenusVisible] = useState(true);
127
-
128
- const { canMoveOut, handleMoveOut, updateCanMoveOut } = useMoveOut({
129
- onHandle: () => {
130
- // Forced destruction of Dropdown menu
131
- setMenusVisible(false);
132
- requestAnimationFrame(() => {
133
- setMenusVisible(true);
134
- });
135
- },
136
- });
137
-
138
- const closeNodeSideSheet = useNodeSideSheetStore(
139
- state => state.closeNodeSideSheet,
140
- );
141
-
142
- const { expanded } = useNodeRenderData();
143
-
144
- const { getNodeTestId, concatTestId } = useNodeTestId();
145
-
146
- const meta = node.getNodeMeta<WorkflowNodeMeta>();
147
-
148
- const { canMockset } = useGlobalState(false);
149
- const { isNewNodeRender, isNodeSideSheet } = useNodeRenderScene();
150
-
151
- const showMockset = !isNewNodeRender && canMockset;
152
-
153
- useEffect(() => {
154
- setEditableTitle(title);
155
- }, [title]);
156
-
157
- /**
158
- * Delete Node
159
- */
160
- const handleDelete = (e: MouseEvent) => {
161
- e.stopPropagation();
162
- // Add a setTimtout, close the panel and then display the delete pop-up window.
163
- setTimeout(() => {
164
- editService.deleteNode(node, true);
165
- closeNodeSideSheet();
166
- // eslint-disable-next-line @typescript-eslint/no-magic-numbers
167
- }, 10);
168
- };
169
-
170
- const container = usePlaygroundContainer();
171
- const handleCopy = useCallback(
172
- async (_: unknown, e: MouseEvent) => {
173
- e.stopPropagation();
174
- const {
175
- WorkflowCopyShortcutsContribution,
176
- WorkflowPasteShortcutsContribution,
177
- } = await import('@/shortcuts');
178
- const copyService = container.get(WorkflowCopyShortcutsContribution);
179
- const pasteService = container.get(WorkflowPasteShortcutsContribution);
180
- const data = await copyService.toData([node]);
181
- pasteService.apply(data);
182
- },
183
- [container, node],
184
- );
185
-
186
- const handleDecapsulate = (_, e: MouseEvent) => {
187
- e.stopPropagation();
188
- encapsulateService.decapsulate(node);
189
- };
190
-
191
- const handleEditState = useCallback((e: MouseEvent) => {
192
- e.stopPropagation();
193
- setEditable(true);
194
- setTimeout(() => {
195
- titleInput.current?.focus();
196
- }, 0);
197
- }, []);
198
-
199
- const error = useError('title');
200
-
201
- const quitEditable = useCallback(
202
- e => {
203
- if (e.target !== titleInput?.current && !error) {
204
- setEditable(false);
205
- document.body.removeEventListener('click', quitEditable);
206
- }
207
- },
208
- [error],
209
- );
210
-
211
- useEffect(() => {
212
- if (editable) {
213
- document.body.addEventListener('click', quitEditable);
214
- }
215
- return () => {
216
- document.body.removeEventListener('click', quitEditable);
217
- };
218
- }, [editable, quitEditable]);
219
-
220
- const nodeDataEntity = node.getData<WorkflowNodeData>(WorkflowNodeData);
221
- const registry = node.getNodeRegistry();
222
-
223
- const nodeData = nodeDataEntity.getNodeData();
224
-
225
- const handleTitleChange = (newTitle: string) => {
226
- // const newTitle = event.target.value;
227
- setEditableTitle(newTitle);
228
-
229
- // Update the title to nodeDataEntity for easy consumption elsewhere
230
- nodeDataEntity.updateNodeData<keyof NodeData>({
231
- title: newTitle,
232
- });
233
- };
234
-
235
- // Do you need to render... more operations, non-read-only state, or show when there are additional operations
236
- const needShowOperations =
237
- (!readonly ||
238
- (readonly && readonlyAllowDeleteOperation) ||
239
- !!extraOperation) &&
240
- menusVisible;
241
-
242
- // Whether it is a terminal plug-in, the terminal plug-in displays a special tag.
243
- const isLocalPlugin =
244
- node.flowNodeType === StandardNodeType.Api &&
245
- get(nodeData, 'pluginType') === PluginType.LOCAL;
246
-
247
- return (
248
- <div
249
- className={classnames(
250
- 'node-header',
251
- 'coz-bg-plus !p-0',
252
- styles.container,
253
- {
254
- '!mb-0': !expanded,
255
- [className]: !!className,
256
- '!cursor-default mx-[-12px]': isNodeSideSheet,
257
- 'cursor-move': !isNodeSideSheet,
258
- 'rounded-[7px] overflow-hidden': isNewNodeRender,
259
- },
260
- )}
261
- >
262
- <div
263
- className={classnames('node-header-title', 'w-full', {
264
- '!cursor-default': isNodeSideSheet,
265
- })}
266
- >
267
- {nodeDisabled && isNodeSideSheet ? (
268
- <div
269
- className={'flex items-center p-8px'}
270
- style={{
271
- background:
272
- ' var(--coz-mg-hglt-yellow, rgba(255, 188, 133, 0.2))',
273
- }}
274
- >
275
- <IconCozWarningCircleFill
276
- style={{
277
- flexShrink: 0,
278
- fontSize: '24px',
279
- color: 'var(--coz-fg-hglt-yellow, rgba(255, 129, 26, 1))',
280
- }}
281
- />
282
-
283
- <span
284
- className={'ml-8px'}
285
- style={{
286
- fontSize: '14px',
287
- lineHeight: '20px',
288
- color: 'var(--coz-fg-primary, rgba(15, 21, 41, 0.82))',
289
- }}
290
- >
291
- {I18n.t('variable_node_offline_toast')}
292
- </span>
293
- </div>
294
- ) : null}
295
-
296
- <div
297
- className={classnames(
298
- 'flex items-center w-full py-3 px-3 pb-[8px] pr-[10px]',
299
- {
300
- 'cursor-move': !isNodeSideSheet,
301
- },
302
- )}
303
- style={{
304
- background: nodeData?.mainColor
305
- ? `linear-gradient(${getBgColor(
306
- nodeData.mainColor,
307
- 0.08,
308
- )} 0%, var(--coz-bg-plus) 100%)`
309
- : 'var(--coz-bg-plus)',
310
- }}
311
- >
312
- <NodeIcon
313
- className={styles.logo}
314
- nodeId={node.id}
315
- size={24}
316
- alt="logo"
317
- />
318
- {
319
- <ValidationErrorWrapper
320
- path="title"
321
- className={styles['input-wrapper']}
322
- >
323
- {({ showError, onBlur, onChange }) => {
324
- const _readonly = readonly || !editable;
325
-
326
- return _readonly ? (
327
- <div
328
- className={styles['input-readonly']}
329
- onDoubleClick={handleEditState}
330
- data-testid={concatTestId(
331
- getNodeTestId(),
332
- 'input',
333
- 'rename',
334
- 'readonly',
335
- )}
336
- >
337
- <Typography.Paragraph
338
- ellipsis={{
339
- rows: 1,
340
- showTooltip: {
341
- type: 'tooltip',
342
- opts: {
343
- style: {
344
- width: '100%',
345
- wordBreak: 'break-word',
346
- },
347
- },
348
- },
349
- }}
350
- >
351
- {editableTitle}
352
- {showTrigger ? (
353
- <span className="h-full inline-flex flex-row items-center">
354
- <Tag
355
- size="mini"
356
- className={'ml-[4px]'}
357
- prefixIcon={<IconCozTrigger />}
358
- color={triggerIsOpen ? 'brand' : 'primary'}
359
- >
360
- {I18n.t(
361
- 'workflow_start_trigger_triggername',
362
- {},
363
- '触发器',
364
- )}
365
- </Tag>
366
- </span>
367
- ) : undefined}
368
- </Typography.Paragraph>
369
- <ReferenceNodeOrigin node={node} />
370
- <ReferenceNodeVersion node={node} />
371
- </div>
372
- ) : (
373
- <Input
374
- onBlur={() => {
375
- onTitleChange(editableTitle);
376
- onBlur();
377
- }}
378
- ref={titleInput}
379
- // size="small"
380
- readonly={_readonly}
381
- value={editableTitle}
382
- onChange={e => {
383
- handleTitleChange(e);
384
- onChange();
385
- }}
386
- className={`${styles.input} ${
387
- showError ? styles.inputError : ''
388
- }`}
389
- placeholder={I18n.t('workflow_detail_node_name_default')}
390
- data-testid={concatTestId(
391
- getNodeTestId(),
392
- 'input',
393
- 'rename',
394
- )}
395
- />
396
- );
397
- }}
398
- </ValidationErrorWrapper>
399
- }
400
-
401
- <div className={styles.operators}>
402
- {showMockset ? (
403
- <PluginMockSet node={node} readonly={readonly} />
404
- ) : null}
405
-
406
- {!hideTest ? (
407
- <div>
408
- <TestRunSingleNodeButton />
409
- </div>
410
- ) : null}
411
-
412
- {registry?.meta?.helpLink && isNodeSideSheet ? (
413
- <HelpLinkButton
414
- nodeData={nodeData}
415
- nodeType={registry.type}
416
- helpLink={registry.meta.helpLink}
417
- />
418
- ) : null}
419
-
420
- {needShowOperations ? (
421
- <Dropdown
422
- trigger="hover"
423
- position="bottomRight"
424
- onVisibleChange={updateCanMoveOut}
425
- render={
426
- <Dropdown.Menu className={styles['dropdown-menus']}>
427
- {!readonly && canMoveOut ? (
428
- <>
429
- <Dropdown.Item
430
- onClick={(_v, e) => handleMoveOut(e)}
431
- data-testid={concatTestId(
432
- getNodeTestId(),
433
- 'opr',
434
- 'move_out_container',
435
- )}
436
- >
437
- {I18n.t('workflow_subcanvas_remove')}
438
- </Dropdown.Item>
439
- <Divider />
440
- </>
441
- ) : null}
442
- {!readonly ? (
443
- <Dropdown.Item
444
- onClick={(_v, e) => handleEditState(e)}
445
- data-testid={concatTestId(
446
- getNodeTestId(),
447
- 'opr',
448
- 'rename',
449
- )}
450
- >
451
- {I18n.t('workflow_detail_node_rename')}
452
- </Dropdown.Item>
453
- ) : null}
454
- {!readonly ? (
455
- <Dropdown.Item
456
- onClick={handleCopy}
457
- data-testid={concatTestId(
458
- getNodeTestId(),
459
- 'opr',
460
- 'copy',
461
- )}
462
- >
463
- {I18n.t('workflow_detail_title_copy')}
464
- </Dropdown.Item>
465
- ) : null}
466
- {!meta.deleteDisable &&
467
- (!readonly ||
468
- (readonly && readonlyAllowDeleteOperation)) ? (
469
- <Dropdown.Item
470
- onClick={(_v, e) => handleDelete(e)}
471
- data-testid={concatTestId(
472
- getNodeTestId(),
473
- 'opr',
474
- 'delete',
475
- )}
476
- >
477
- {I18n.t('workflow_detail_node_delete')}
478
- </Dropdown.Item>
479
- ) : null}
480
- {encapsulateService.canDecapsulate(node) && (
481
- <Dropdown.Item
482
- onClick={handleDecapsulate}
483
- data-testid={concatTestId(
484
- getNodeTestId(),
485
- 'opr',
486
- 'decapsulate',
487
- )}
488
- >
489
- <div className="cursor-pointer flex items-center w-full justify-between absolute inset-0 px-2">
490
- <div>
491
- {I18n.t(
492
- 'workflow_encapsulate_decapsulate',
493
- undefined,
494
- '解散工作流',
495
- )}
496
- </div>
497
- <div className="coz-fg-secondary text-xs">
498
- {ENCAPSULATE_SHORTCUTS.decapsulate}
499
- </div>
500
- </div>
501
- </Dropdown.Item>
502
- )}
503
- {extraOperation ? (
504
- <Dropdown.Item
505
- className="extra-operation-item"
506
- data-testid={concatTestId(
507
- getNodeTestId(),
508
- 'opr',
509
- 'extra-operation',
510
- )}
511
- >
512
- {extraOperation}
513
- </Dropdown.Item>
514
- ) : null}
515
- </Dropdown.Menu>
516
- }
517
- >
518
- <IconButton
519
- color="secondary"
520
- size={isNodeSideSheet ? 'default' : 'small'}
521
- icon={<IconCozMore />}
522
- onClick={e => e.stopPropagation()}
523
- />
524
- </Dropdown>
525
- ) : undefined}
526
- {showCloseButton ? <CloseButton /> : null}
527
- </div>
528
- </div>
529
- </div>
530
-
531
- <div
532
- className={classnames('node-header-description px-2 w-full', {
533
- '!cursor-default': isNodeSideSheet,
534
- 'pb-2': isNewNodeRender,
535
- '!mb-0': !expanded,
536
- })}
537
- >
538
- {isNewNodeRender ? (
539
- <DescriptionDisplay description={description} />
540
- ) : (
541
- <Description
542
- description={description}
543
- expanded={expanded}
544
- isLocalPlugin={isLocalPlugin}
545
- onChange={onDescriptionChange}
546
- readonly={readonly || nodeDisabled}
547
- />
548
- )}
549
- </div>
550
- </div>
551
- );
552
- };
1
+ /*
2
+ * Copyright 2025 coze-dev Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* eslint-disable complexity */
18
+ /* eslint-disable max-lines-per-function */
19
+ import React, {
20
+ useCallback,
21
+ useEffect,
22
+ useRef,
23
+ useState,
24
+ type ReactNode,
25
+ type MouseEvent,
26
+ } from 'react';
27
+
28
+ import { get } from 'lodash-es';
29
+ import classnames from 'classnames';
30
+ import {
31
+ useEntityFromContext,
32
+ useService,
33
+ usePlaygroundContainer,
34
+ } from '@flowgram-adapter/free-layout-editor';
35
+ import {
36
+ type WorkflowNodeEntity,
37
+ type WorkflowNodeMeta,
38
+ } from '@flowgram-adapter/free-layout-editor';
39
+ import { WorkflowNodeData, type NodeData } from '@coze-workflow/nodes';
40
+ import {
41
+ ENCAPSULATE_SHORTCUTS,
42
+ EncapsulateService,
43
+ } from '@coze-workflow/feature-encapsulate';
44
+ import { StandardNodeType } from '@coze-workflow/base/types';
45
+ import { useNodeTestId } from '@coze-workflow/base';
46
+ import { I18n } from '@coze-arch/i18n';
47
+ import {
48
+ IconCozMore,
49
+ IconCozTrigger,
50
+ IconCozWarningCircleFill,
51
+ } from '@coze-arch/coze-design/icons';
52
+ import {
53
+ IconButton,
54
+ Typography,
55
+ Dropdown,
56
+ Input,
57
+ Tag,
58
+ Divider,
59
+ } from '@coze-arch/coze-design';
60
+ import { PluginType } from '@coze-arch/bot-api/developer_api';
61
+
62
+ import { useNodeSideSheetStore } from '@/hooks/use-node-side-sheet-store';
63
+
64
+ import { ValidationErrorWrapper, useError } from '../validation';
65
+ import { WorkflowEditService } from '../../../services';
66
+ import {
67
+ useNodeRenderData,
68
+ useGlobalState,
69
+ useNodeRenderScene,
70
+ } from '../../../hooks';
71
+ import { TestRunSingleNodeButton } from '../../../components/test-run/test-run-button/single-node';
72
+ import {
73
+ ReferenceNodeOrigin,
74
+ ReferenceNodeVersion,
75
+ } from '../../../components/reference-node-info';
76
+ import { NodeIcon } from '../../../components/node-icon';
77
+ import { getBgColor } from './utils/get-bg-color';
78
+ import { useMoveOut } from './use-move-out';
79
+ import { DescriptionDisplay } from './description-display';
80
+ import { Description } from './description';
81
+ import PluginMockSet from './components/PluginMockSet';
82
+ import { HelpLinkButton } from './components/help-link-button';
83
+ import { CloseButton } from './components/close-button';
84
+
85
+ import styles from './index.module.less';
86
+
87
+ interface NodeHeaderProps {
88
+ title: string;
89
+ subTitle?: string;
90
+ description?: string;
91
+ logo: string;
92
+ readonly?: boolean;
93
+ readonlyAllowDeleteOperation?: boolean;
94
+ hideTest?: boolean;
95
+ onTitleChange: (newTitle: string) => void;
96
+ onDescriptionChange: (desc: string) => void;
97
+ extraOperation: ReactNode;
98
+ showCloseButton?: boolean;
99
+ className?: string;
100
+ showTrigger?: boolean;
101
+ triggerIsOpen?: boolean;
102
+ nodeDisabled?: boolean;
103
+ }
104
+
105
+ export const NodeHeader: React.FC<NodeHeaderProps> = ({
106
+ title,
107
+ description,
108
+ readonly,
109
+ readonlyAllowDeleteOperation,
110
+ hideTest,
111
+ onTitleChange,
112
+ onDescriptionChange,
113
+ extraOperation,
114
+ showCloseButton = false,
115
+ className = '',
116
+ showTrigger,
117
+ triggerIsOpen,
118
+ nodeDisabled,
119
+ }) => {
120
+ const titleInput = useRef<HTMLInputElement>(null);
121
+ const [editableTitle, setEditableTitle] = useState(title);
122
+ const [editable, setEditable] = useState(false);
123
+ const editService = useService<WorkflowEditService>(WorkflowEditService);
124
+ const encapsulateService = useService<EncapsulateService>(EncapsulateService);
125
+ const node = useEntityFromContext<WorkflowNodeEntity>();
126
+ const [menusVisible, setMenusVisible] = useState(true);
127
+
128
+ const { canMoveOut, handleMoveOut, updateCanMoveOut } = useMoveOut({
129
+ onHandle: () => {
130
+ // Forced destruction of Dropdown menu
131
+ setMenusVisible(false);
132
+ requestAnimationFrame(() => {
133
+ setMenusVisible(true);
134
+ });
135
+ },
136
+ });
137
+
138
+ const closeNodeSideSheet = useNodeSideSheetStore(
139
+ state => state.closeNodeSideSheet,
140
+ );
141
+
142
+ const { expanded } = useNodeRenderData();
143
+
144
+ const { getNodeTestId, concatTestId } = useNodeTestId();
145
+
146
+ const meta = node.getNodeMeta<WorkflowNodeMeta>();
147
+
148
+ const { canMockset } = useGlobalState(false);
149
+ const { isNewNodeRender, isNodeSideSheet } = useNodeRenderScene();
150
+
151
+ const showMockset = !isNewNodeRender && canMockset;
152
+
153
+ useEffect(() => {
154
+ setEditableTitle(title);
155
+ }, [title]);
156
+
157
+ /**
158
+ * Delete Node
159
+ */
160
+ const handleDelete = (e: MouseEvent) => {
161
+ e.stopPropagation();
162
+ // Add a setTimtout, close the panel and then display the delete pop-up window.
163
+ setTimeout(() => {
164
+ editService.deleteNode(node, true);
165
+ closeNodeSideSheet();
166
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
167
+ }, 10);
168
+ };
169
+
170
+ const container = usePlaygroundContainer();
171
+ const handleCopy = useCallback(
172
+ async (_: unknown, e: MouseEvent) => {
173
+ e.stopPropagation();
174
+ const {
175
+ WorkflowCopyShortcutsContribution,
176
+ WorkflowPasteShortcutsContribution,
177
+ } = await import('@/shortcuts');
178
+ const copyService = container.get(WorkflowCopyShortcutsContribution);
179
+ const pasteService = container.get(WorkflowPasteShortcutsContribution);
180
+ const data = await copyService.toData([node]);
181
+ pasteService.apply(data);
182
+ },
183
+ [container, node],
184
+ );
185
+
186
+ const handleDecapsulate = (_, e: MouseEvent) => {
187
+ e.stopPropagation();
188
+ encapsulateService.decapsulate(node);
189
+ };
190
+
191
+ const handleEditState = useCallback((e: MouseEvent) => {
192
+ e.stopPropagation();
193
+ setEditable(true);
194
+ setTimeout(() => {
195
+ titleInput.current?.focus();
196
+ }, 0);
197
+ }, []);
198
+
199
+ const error = useError('title');
200
+
201
+ const quitEditable = useCallback(
202
+ e => {
203
+ if (e.target !== titleInput?.current && !error) {
204
+ setEditable(false);
205
+ document.body.removeEventListener('click', quitEditable);
206
+ }
207
+ },
208
+ [error],
209
+ );
210
+
211
+ useEffect(() => {
212
+ if (editable) {
213
+ document.body.addEventListener('click', quitEditable);
214
+ }
215
+ return () => {
216
+ document.body.removeEventListener('click', quitEditable);
217
+ };
218
+ }, [editable, quitEditable]);
219
+
220
+ const nodeDataEntity = node.getData<WorkflowNodeData>(WorkflowNodeData);
221
+ const registry = node.getNodeRegistry();
222
+
223
+ const nodeData = nodeDataEntity.getNodeData();
224
+
225
+ const handleTitleChange = (newTitle: string) => {
226
+ // const newTitle = event.target.value;
227
+ setEditableTitle(newTitle);
228
+
229
+ // Update the title to nodeDataEntity for easy consumption elsewhere
230
+ nodeDataEntity.updateNodeData<keyof NodeData>({
231
+ title: newTitle,
232
+ });
233
+ };
234
+
235
+ // Do you need to render... more operations, non-read-only state, or show when there are additional operations
236
+ const needShowOperations =
237
+ (!readonly ||
238
+ (readonly && readonlyAllowDeleteOperation) ||
239
+ !!extraOperation) &&
240
+ menusVisible;
241
+
242
+ // Whether it is a terminal plug-in, the terminal plug-in displays a special tag.
243
+ const isLocalPlugin =
244
+ node.flowNodeType === StandardNodeType.Api &&
245
+ get(nodeData, 'pluginType') === PluginType.LOCAL;
246
+
247
+ return (
248
+ <div
249
+ className={classnames(
250
+ 'node-header',
251
+ 'coz-bg-plus !p-0',
252
+ styles.container,
253
+ {
254
+ '!mb-0': !expanded,
255
+ [className]: !!className,
256
+ '!cursor-default mx-[-12px]': isNodeSideSheet,
257
+ 'cursor-move': !isNodeSideSheet,
258
+ 'rounded-[7px] overflow-hidden': isNewNodeRender,
259
+ },
260
+ )}
261
+ >
262
+ <div
263
+ className={classnames('node-header-title', 'w-full', {
264
+ '!cursor-default': isNodeSideSheet,
265
+ })}
266
+ >
267
+ {nodeDisabled && isNodeSideSheet ? (
268
+ <div
269
+ className={'flex items-center p-8px'}
270
+ style={{
271
+ background:
272
+ ' var(--coz-mg-hglt-yellow, rgba(255, 188, 133, 0.2))',
273
+ }}
274
+ >
275
+ <IconCozWarningCircleFill
276
+ style={{
277
+ flexShrink: 0,
278
+ fontSize: '24px',
279
+ color: 'var(--coz-fg-hglt-yellow, rgba(255, 129, 26, 1))',
280
+ }}
281
+ />
282
+
283
+ <span
284
+ className={'ml-8px'}
285
+ style={{
286
+ fontSize: '14px',
287
+ lineHeight: '20px',
288
+ color: 'var(--coz-fg-primary, rgba(15, 21, 41, 0.82))',
289
+ }}
290
+ >
291
+ {I18n.t('variable_node_offline_toast')}
292
+ </span>
293
+ </div>
294
+ ) : null}
295
+
296
+ <div
297
+ className={classnames(
298
+ 'flex items-center w-full py-3 px-3 pb-[8px] pr-[10px]',
299
+ {
300
+ 'cursor-move': !isNodeSideSheet,
301
+ },
302
+ )}
303
+ style={{
304
+ background: nodeData?.mainColor
305
+ ? `linear-gradient(${getBgColor(
306
+ nodeData.mainColor,
307
+ 0.08,
308
+ )} 0%, var(--coz-bg-plus) 100%)`
309
+ : 'var(--coz-bg-plus)',
310
+ }}
311
+ >
312
+ <NodeIcon
313
+ className={styles.logo}
314
+ nodeId={node.id}
315
+ size={24}
316
+ alt="logo"
317
+ />
318
+ {
319
+ <ValidationErrorWrapper
320
+ path="title"
321
+ className={styles['input-wrapper']}
322
+ >
323
+ {({ showError, onBlur, onChange }) => {
324
+ const _readonly = readonly || !editable;
325
+
326
+ return _readonly ? (
327
+ <div
328
+ className={styles['input-readonly']}
329
+ onDoubleClick={handleEditState}
330
+ data-testid={concatTestId(
331
+ getNodeTestId(),
332
+ 'input',
333
+ 'rename',
334
+ 'readonly',
335
+ )}
336
+ >
337
+ <Typography.Paragraph
338
+ ellipsis={{
339
+ rows: 1,
340
+ showTooltip: {
341
+ type: 'tooltip',
342
+ opts: {
343
+ style: {
344
+ width: '100%',
345
+ wordBreak: 'break-word',
346
+ },
347
+ },
348
+ },
349
+ }}
350
+ >
351
+ {editableTitle}
352
+ {showTrigger ? (
353
+ <span className="h-full inline-flex flex-row items-center">
354
+ <Tag
355
+ size="mini"
356
+ className={'ml-[4px]'}
357
+ prefixIcon={<IconCozTrigger />}
358
+ color={triggerIsOpen ? 'brand' : 'primary'}
359
+ >
360
+ {I18n.t(
361
+ 'workflow_start_trigger_triggername',
362
+ {},
363
+ '触发器',
364
+ )}
365
+ </Tag>
366
+ </span>
367
+ ) : undefined}
368
+ </Typography.Paragraph>
369
+ <ReferenceNodeOrigin node={node} />
370
+ <ReferenceNodeVersion node={node} />
371
+ </div>
372
+ ) : (
373
+ <Input
374
+ onBlur={() => {
375
+ onTitleChange(editableTitle);
376
+ onBlur();
377
+ }}
378
+ ref={titleInput}
379
+ // size="small"
380
+ readonly={_readonly}
381
+ value={editableTitle}
382
+ onChange={e => {
383
+ handleTitleChange(e);
384
+ onChange();
385
+ }}
386
+ className={`${styles.input} ${
387
+ showError ? styles.inputError : ''
388
+ }`}
389
+ placeholder={I18n.t('workflow_detail_node_name_default')}
390
+ data-testid={concatTestId(
391
+ getNodeTestId(),
392
+ 'input',
393
+ 'rename',
394
+ )}
395
+ />
396
+ );
397
+ }}
398
+ </ValidationErrorWrapper>
399
+ }
400
+
401
+ <div className={styles.operators}>
402
+ {showMockset ? (
403
+ <PluginMockSet node={node} readonly={readonly} />
404
+ ) : null}
405
+
406
+ {!hideTest ? (
407
+ <div>
408
+ <TestRunSingleNodeButton />
409
+ </div>
410
+ ) : null}
411
+
412
+ {registry?.meta?.helpLink && isNodeSideSheet ? (
413
+ <HelpLinkButton
414
+ nodeData={nodeData}
415
+ nodeType={registry.type}
416
+ helpLink={registry.meta.helpLink}
417
+ />
418
+ ) : null}
419
+
420
+ {needShowOperations ? (
421
+ <Dropdown
422
+ trigger="hover"
423
+ position="bottomRight"
424
+ onVisibleChange={updateCanMoveOut}
425
+ render={
426
+ <Dropdown.Menu className={styles['dropdown-menus']}>
427
+ {!readonly && canMoveOut ? (
428
+ <>
429
+ <Dropdown.Item
430
+ onClick={(_v, e) => handleMoveOut(e)}
431
+ data-testid={concatTestId(
432
+ getNodeTestId(),
433
+ 'opr',
434
+ 'move_out_container',
435
+ )}
436
+ >
437
+ {I18n.t('workflow_subcanvas_remove')}
438
+ </Dropdown.Item>
439
+ <Divider />
440
+ </>
441
+ ) : null}
442
+ {!readonly ? (
443
+ <Dropdown.Item
444
+ onClick={(_v, e) => handleEditState(e)}
445
+ data-testid={concatTestId(
446
+ getNodeTestId(),
447
+ 'opr',
448
+ 'rename',
449
+ )}
450
+ >
451
+ {I18n.t('workflow_detail_node_rename')}
452
+ </Dropdown.Item>
453
+ ) : null}
454
+ {!readonly ? (
455
+ <Dropdown.Item
456
+ onClick={handleCopy}
457
+ data-testid={concatTestId(
458
+ getNodeTestId(),
459
+ 'opr',
460
+ 'copy',
461
+ )}
462
+ >
463
+ {I18n.t('workflow_detail_title_copy')}
464
+ </Dropdown.Item>
465
+ ) : null}
466
+ {!meta.deleteDisable &&
467
+ (!readonly ||
468
+ (readonly && readonlyAllowDeleteOperation)) ? (
469
+ <Dropdown.Item
470
+ onClick={(_v, e) => handleDelete(e)}
471
+ data-testid={concatTestId(
472
+ getNodeTestId(),
473
+ 'opr',
474
+ 'delete',
475
+ )}
476
+ >
477
+ {I18n.t('workflow_detail_node_delete')}
478
+ </Dropdown.Item>
479
+ ) : null}
480
+ {encapsulateService.canDecapsulate(node) && (
481
+ <Dropdown.Item
482
+ onClick={handleDecapsulate}
483
+ data-testid={concatTestId(
484
+ getNodeTestId(),
485
+ 'opr',
486
+ 'decapsulate',
487
+ )}
488
+ >
489
+ <div className="cursor-pointer flex items-center w-full justify-between absolute inset-0 px-2">
490
+ <div>
491
+ {I18n.t(
492
+ 'workflow_encapsulate_decapsulate',
493
+ undefined,
494
+ '解散工作流',
495
+ )}
496
+ </div>
497
+ <div className="coz-fg-secondary text-xs">
498
+ {ENCAPSULATE_SHORTCUTS.decapsulate}
499
+ </div>
500
+ </div>
501
+ </Dropdown.Item>
502
+ )}
503
+ {extraOperation ? (
504
+ <Dropdown.Item
505
+ className="extra-operation-item"
506
+ data-testid={concatTestId(
507
+ getNodeTestId(),
508
+ 'opr',
509
+ 'extra-operation',
510
+ )}
511
+ >
512
+ {extraOperation}
513
+ </Dropdown.Item>
514
+ ) : null}
515
+ </Dropdown.Menu>
516
+ }
517
+ >
518
+ <IconButton
519
+ color="secondary"
520
+ size={isNodeSideSheet ? 'default' : 'small'}
521
+ icon={<IconCozMore />}
522
+ onClick={e => e.stopPropagation()}
523
+ />
524
+ </Dropdown>
525
+ ) : undefined}
526
+ {showCloseButton ? <CloseButton /> : null}
527
+ </div>
528
+ </div>
529
+ </div>
530
+
531
+ <div
532
+ className={classnames('node-header-description px-2 w-full', {
533
+ '!cursor-default': isNodeSideSheet,
534
+ 'pb-2': isNewNodeRender,
535
+ '!mb-0': !expanded,
536
+ })}
537
+ >
538
+ {isNewNodeRender ? (
539
+ <DescriptionDisplay description={description} />
540
+ ) : (
541
+ <Description
542
+ description={description}
543
+ expanded={expanded}
544
+ isLocalPlugin={isLocalPlugin}
545
+ onChange={onDescriptionChange}
546
+ readonly={readonly || nodeDisabled}
547
+ />
548
+ )}
549
+ </div>
550
+ </div>
551
+ );
552
+ };