@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,194 +1,194 @@
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
- import React, {
18
- type ComponentProps,
19
- useRef,
20
- useImperativeHandle,
21
- useMemo,
22
- useEffect,
23
- type ForwardedRef,
24
- } from 'react';
25
-
26
- import isNumber from 'lodash-es/isNumber';
27
- import cs from 'classnames';
28
- import { useReactive } from 'ahooks';
29
- import {
30
- Input as UIInput,
31
- type InputProps,
32
- type TooltipProps,
33
- } from '@coze-arch/coze-design';
34
-
35
- import AutoSizeTooltip from '../auto-size-tooltip';
36
-
37
- import s from './index.module.less';
38
-
39
- export interface WorkflowSLInputRefType {
40
- triggerFocus?: () => void;
41
- }
42
-
43
- export type WorkflowSLInputProps = ComponentProps<typeof UIInput> & {
44
- value: string | undefined;
45
- onRef?: ForwardedRef<WorkflowSLInputRefType>;
46
- ellipsis?: boolean;
47
- handleChange?: (v: string) => void;
48
- handleBlur?: (v: string) => void;
49
- handleFocus?: (v: string) => void;
50
- ellipsisTooltipProps?: TooltipProps;
51
- onFocusTooltipProps?: TooltipProps;
52
- tooltipProps?: TooltipProps;
53
- inputProps?: InputProps;
54
- errorMsg?: string;
55
- errorMsgFloat?: boolean;
56
- maxCount?: number;
57
- className?: string;
58
- style?: React.CSSProperties;
59
- };
60
-
61
- const SL_INPUT_TIMEOUT = 10;
62
-
63
- export default function WorkflowSLInput(props: WorkflowSLInputProps) {
64
- const { ellipsis = true, maxCount } = props;
65
- const showCount = isNumber(maxCount) && maxCount > 0;
66
- useImperativeHandle(props.onRef, () => ({
67
- triggerFocus,
68
- }));
69
- const $state = useReactive({
70
- value: props.value,
71
- inputOnFocus: false,
72
- inputEle: false,
73
- });
74
-
75
- const inputRef = useRef<HTMLInputElement>(null);
76
-
77
- const triggerFocus = () => {
78
- $state.inputEle = true;
79
- inputRef?.current?.focus();
80
- };
81
-
82
- const onFocus = () => {
83
- $state.inputOnFocus = true;
84
- $state.inputEle = true;
85
- props?.handleFocus?.($state.value || '');
86
- };
87
-
88
- const onBlur = (e: React.FocusEvent<HTMLInputElement>) => {
89
- $state.inputOnFocus = false;
90
- props?.handleBlur?.($state.value || '');
91
- props?.onBlur?.(e);
92
- $state.inputEle = false;
93
- };
94
-
95
- const onChange = (v: string) => {
96
- $state.value = v;
97
- props?.handleChange?.(v);
98
- };
99
-
100
- const onclick = () => {
101
- if (!$state.inputEle) {
102
- setTimeout(() => {
103
- inputRef?.current?.focus();
104
- }, SL_INPUT_TIMEOUT);
105
- }
106
- $state.inputEle = true;
107
- };
108
- const hasEllipsis = useMemo(() => {
109
- const clientWidth = inputRef.current?.clientWidth || 0;
110
- const scrollWidth = inputRef.current?.scrollWidth || 0;
111
- return clientWidth < scrollWidth - 1;
112
- }, [
113
- ellipsis,
114
- $state.inputOnFocus,
115
- $state.value,
116
- inputRef.current?.clientWidth,
117
- inputRef.current?.scrollWidth,
118
- $state.inputEle,
119
- ]);
120
-
121
- useEffect(() => {
122
- $state.value = props.value;
123
- }, [props.value]);
124
-
125
- const LimitCountNode = (
126
- <span className={s['limit-count']}>
127
- {$state.value?.length || 0}/{maxCount}
128
- </span>
129
- );
130
-
131
- return (
132
- <div
133
- className={cs(s['input-wrapper'], props.className)}
134
- style={props.style}
135
- >
136
- {!$state.inputEle && hasEllipsis ? (
137
- <AutoSizeTooltip
138
- content={$state.value}
139
- position={'top'}
140
- showArrow
141
- mouseEnterDelay={300}
142
- {...props.tooltipProps}
143
- >
144
- <div
145
- className={cs(props?.errorMsg ? s['error-wrapper'] : null)}
146
- onClick={onclick}
147
- >
148
- <UIInput
149
- {...props.inputProps}
150
- validateStatus={props.validateStatus}
151
- ref={inputRef}
152
- value={$state.value}
153
- className={ellipsis ? s.input : ''}
154
- suffix={showCount ? LimitCountNode : undefined}
155
- ></UIInput>
156
- </div>
157
- </AutoSizeTooltip>
158
- ) : (
159
- <div className={cs(props?.errorMsg ? s['error-wrapper'] : null)}>
160
- <AutoSizeTooltip
161
- {...props.onFocusTooltipProps}
162
- trigger="custom"
163
- visible={
164
- Boolean(props.onFocusTooltipProps?.content) && $state.inputOnFocus
165
- }
166
- showArrow
167
- >
168
- <UIInput
169
- {...props.inputProps}
170
- validateStatus={props.validateStatus}
171
- ref={inputRef}
172
- value={$state.value}
173
- className={ellipsis ? s.input : ''}
174
- onChange={onChange}
175
- onFocus={onFocus}
176
- onBlur={onBlur}
177
- suffix={showCount ? LimitCountNode : undefined}
178
- ></UIInput>
179
- </AutoSizeTooltip>
180
- </div>
181
- )}
182
- {props?.errorMsg ? (
183
- <div
184
- className={cs(
185
- s['error-content'],
186
- props?.errorMsgFloat ? s['error-float'] : null,
187
- )}
188
- >
189
- <div className={s['error-text']}>{props?.errorMsg}</div>
190
- </div>
191
- ) : null}
192
- </div>
193
- );
194
- }
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
+ import React, {
18
+ type ComponentProps,
19
+ useRef,
20
+ useImperativeHandle,
21
+ useMemo,
22
+ useEffect,
23
+ type ForwardedRef,
24
+ } from 'react';
25
+
26
+ import isNumber from 'lodash-es/isNumber';
27
+ import cs from 'classnames';
28
+ import { useReactive } from 'ahooks';
29
+ import {
30
+ Input as UIInput,
31
+ type InputProps,
32
+ type TooltipProps,
33
+ } from '@coze-arch/coze-design';
34
+
35
+ import AutoSizeTooltip from '../auto-size-tooltip';
36
+
37
+ import s from './index.module.less';
38
+
39
+ export interface WorkflowSLInputRefType {
40
+ triggerFocus?: () => void;
41
+ }
42
+
43
+ export type WorkflowSLInputProps = ComponentProps<typeof UIInput> & {
44
+ value: string | undefined;
45
+ onRef?: ForwardedRef<WorkflowSLInputRefType>;
46
+ ellipsis?: boolean;
47
+ handleChange?: (v: string) => void;
48
+ handleBlur?: (v: string) => void;
49
+ handleFocus?: (v: string) => void;
50
+ ellipsisTooltipProps?: TooltipProps;
51
+ onFocusTooltipProps?: TooltipProps;
52
+ tooltipProps?: TooltipProps;
53
+ inputProps?: InputProps;
54
+ errorMsg?: string;
55
+ errorMsgFloat?: boolean;
56
+ maxCount?: number;
57
+ className?: string;
58
+ style?: React.CSSProperties;
59
+ };
60
+
61
+ const SL_INPUT_TIMEOUT = 10;
62
+
63
+ export default function WorkflowSLInput(props: WorkflowSLInputProps) {
64
+ const { ellipsis = true, maxCount } = props;
65
+ const showCount = isNumber(maxCount) && maxCount > 0;
66
+ useImperativeHandle(props.onRef, () => ({
67
+ triggerFocus,
68
+ }));
69
+ const $state = useReactive({
70
+ value: props.value,
71
+ inputOnFocus: false,
72
+ inputEle: false,
73
+ });
74
+
75
+ const inputRef = useRef<HTMLInputElement>(null);
76
+
77
+ const triggerFocus = () => {
78
+ $state.inputEle = true;
79
+ inputRef?.current?.focus();
80
+ };
81
+
82
+ const onFocus = () => {
83
+ $state.inputOnFocus = true;
84
+ $state.inputEle = true;
85
+ props?.handleFocus?.($state.value || '');
86
+ };
87
+
88
+ const onBlur = (e: React.FocusEvent<HTMLInputElement>) => {
89
+ $state.inputOnFocus = false;
90
+ props?.handleBlur?.($state.value || '');
91
+ props?.onBlur?.(e);
92
+ $state.inputEle = false;
93
+ };
94
+
95
+ const onChange = (v: string) => {
96
+ $state.value = v;
97
+ props?.handleChange?.(v);
98
+ };
99
+
100
+ const onclick = () => {
101
+ if (!$state.inputEle) {
102
+ setTimeout(() => {
103
+ inputRef?.current?.focus();
104
+ }, SL_INPUT_TIMEOUT);
105
+ }
106
+ $state.inputEle = true;
107
+ };
108
+ const hasEllipsis = useMemo(() => {
109
+ const clientWidth = inputRef.current?.clientWidth || 0;
110
+ const scrollWidth = inputRef.current?.scrollWidth || 0;
111
+ return clientWidth < scrollWidth - 1;
112
+ }, [
113
+ ellipsis,
114
+ $state.inputOnFocus,
115
+ $state.value,
116
+ inputRef.current?.clientWidth,
117
+ inputRef.current?.scrollWidth,
118
+ $state.inputEle,
119
+ ]);
120
+
121
+ useEffect(() => {
122
+ $state.value = props.value;
123
+ }, [props.value]);
124
+
125
+ const LimitCountNode = (
126
+ <span className={s['limit-count']}>
127
+ {$state.value?.length || 0}/{maxCount}
128
+ </span>
129
+ );
130
+
131
+ return (
132
+ <div
133
+ className={cs(s['input-wrapper'], props.className)}
134
+ style={props.style}
135
+ >
136
+ {!$state.inputEle && hasEllipsis ? (
137
+ <AutoSizeTooltip
138
+ content={$state.value}
139
+ position={'top'}
140
+ showArrow
141
+ mouseEnterDelay={300}
142
+ {...props.tooltipProps}
143
+ >
144
+ <div
145
+ className={cs(props?.errorMsg ? s['error-wrapper'] : null)}
146
+ onClick={onclick}
147
+ >
148
+ <UIInput
149
+ {...props.inputProps}
150
+ validateStatus={props.validateStatus}
151
+ ref={inputRef}
152
+ value={$state.value}
153
+ className={ellipsis ? s.input : ''}
154
+ suffix={showCount ? LimitCountNode : undefined}
155
+ ></UIInput>
156
+ </div>
157
+ </AutoSizeTooltip>
158
+ ) : (
159
+ <div className={cs(props?.errorMsg ? s['error-wrapper'] : null)}>
160
+ <AutoSizeTooltip
161
+ {...props.onFocusTooltipProps}
162
+ trigger="custom"
163
+ visible={
164
+ Boolean(props.onFocusTooltipProps?.content) && $state.inputOnFocus
165
+ }
166
+ showArrow
167
+ >
168
+ <UIInput
169
+ {...props.inputProps}
170
+ validateStatus={props.validateStatus}
171
+ ref={inputRef}
172
+ value={$state.value}
173
+ className={ellipsis ? s.input : ''}
174
+ onChange={onChange}
175
+ onFocus={onFocus}
176
+ onBlur={onBlur}
177
+ suffix={showCount ? LimitCountNode : undefined}
178
+ ></UIInput>
179
+ </AutoSizeTooltip>
180
+ </div>
181
+ )}
182
+ {props?.errorMsg ? (
183
+ <div
184
+ className={cs(
185
+ s['error-content'],
186
+ props?.errorMsgFloat ? s['error-float'] : null,
187
+ )}
188
+ >
189
+ <div className={s['error-text']}>{props?.errorMsg}</div>
190
+ </div>
191
+ ) : null}
192
+ </div>
193
+ );
194
+ }
@@ -1,126 +1,126 @@
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
- import React, { useLayoutEffect } from 'react';
18
-
19
- import { useForceUpdate } from './use-force-update';
20
-
21
- /** createSlots is a factory that can create a
22
- * typesafe Slots + Slot pair to use in a component definition
23
- * For example: ActionList.Item uses createSlots to get a Slots wrapper
24
- * + Slot component that is used by LeadingVisual, Description
25
- */
26
- const createSlots = <SlotNames extends string>(slotNames: SlotNames[]) => {
27
- type Slots = {
28
- [key in SlotNames]?: React.ReactNode;
29
- };
30
-
31
- interface ContextProps {
32
- registerSlot: (name: SlotNames, contents: React.ReactNode) => void;
33
- unregisterSlot: (name: SlotNames) => void;
34
- context: Record<string, unknown>;
35
- }
36
- const SlotsContext = React.createContext<ContextProps>({
37
- registerSlot: () => null,
38
- unregisterSlot: () => null,
39
- context: {},
40
- });
41
-
42
- // maintain a static reference to avoid infinite render loop
43
- const defaultContext = Object.freeze({});
44
-
45
- /** Slots uses a Double render strategy inspired by [reach-ui/descendants](https://github.com/reach/reach-ui/tree/develop/packages/descendants)
46
- * Slot registers themself with the Slots parent.
47
- * When all the children have mounted = registered themselves in slot,
48
- * we re-render the parent component to render with slots
49
- */
50
- const Slots: React.FC<{
51
- context?: ContextProps['context'];
52
- children: (slots: Slots) => React.ReactNode;
53
- }> = ({ context = defaultContext, children }) => {
54
- // initialise slots
55
- const slotsDefinition: Slots = {};
56
- slotNames.map(name => (slotsDefinition[name] = null));
57
- const slotsRef = React.useRef<Slots>(slotsDefinition);
58
-
59
- const rerenderWithSlots = useForceUpdate();
60
- const [isMounted, setIsMounted] = React.useState(false);
61
-
62
- // fires after all the effects in children
63
- useLayoutEffect(() => {
64
- rerenderWithSlots();
65
- setIsMounted(true);
66
- }, [rerenderWithSlots]);
67
-
68
- const registerSlot = React.useCallback(
69
- (name: SlotNames, contents: React.ReactNode) => {
70
- slotsRef.current[name] = contents;
71
-
72
- // don't render until the component mounts = all slots are registered
73
- if (isMounted) {
74
- rerenderWithSlots();
75
- }
76
- },
77
- [isMounted, rerenderWithSlots],
78
- );
79
-
80
- // Slot can be removed from the tree as well,
81
- // we need to unregister them from the slot
82
- const unregisterSlot = React.useCallback(
83
- (name: SlotNames) => {
84
- slotsRef.current[name] = null;
85
- rerenderWithSlots();
86
- },
87
- [rerenderWithSlots],
88
- );
89
-
90
- /**
91
- * Slots uses a render prop API so abstract the
92
- * implementation detail of using a context provider.
93
- */
94
- const slots = slotsRef.current;
95
-
96
- return (
97
- <SlotsContext.Provider value={{ registerSlot, unregisterSlot, context }}>
98
- {children(slots)}
99
- </SlotsContext.Provider>
100
- );
101
- };
102
-
103
- const Slot: React.FC<{
104
- name: SlotNames;
105
- children:
106
- | React.ReactNode
107
- | ((context: ContextProps['context']) => React.ReactNode);
108
- }> = ({ name, children }) => {
109
- const { registerSlot, unregisterSlot, context } =
110
- React.useContext(SlotsContext);
111
-
112
- useLayoutEffect(() => {
113
- registerSlot(
114
- name,
115
- typeof children === 'function' ? children(context) : children,
116
- );
117
- return () => unregisterSlot(name);
118
- }, [name, children, registerSlot, unregisterSlot, context]);
119
-
120
- return null;
121
- };
122
-
123
- return { Slots, Slot };
124
- };
125
-
126
- export default createSlots;
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
+ import React, { useLayoutEffect } from 'react';
18
+
19
+ import { useForceUpdate } from './use-force-update';
20
+
21
+ /** createSlots is a factory that can create a
22
+ * typesafe Slots + Slot pair to use in a component definition
23
+ * For example: ActionList.Item uses createSlots to get a Slots wrapper
24
+ * + Slot component that is used by LeadingVisual, Description
25
+ */
26
+ const createSlots = <SlotNames extends string>(slotNames: SlotNames[]) => {
27
+ type Slots = {
28
+ [key in SlotNames]?: React.ReactNode;
29
+ };
30
+
31
+ interface ContextProps {
32
+ registerSlot: (name: SlotNames, contents: React.ReactNode) => void;
33
+ unregisterSlot: (name: SlotNames) => void;
34
+ context: Record<string, unknown>;
35
+ }
36
+ const SlotsContext = React.createContext<ContextProps>({
37
+ registerSlot: () => null,
38
+ unregisterSlot: () => null,
39
+ context: {},
40
+ });
41
+
42
+ // maintain a static reference to avoid infinite render loop
43
+ const defaultContext = Object.freeze({});
44
+
45
+ /** Slots uses a Double render strategy inspired by [reach-ui/descendants](https://github.com/reach/reach-ui/tree/develop/packages/descendants)
46
+ * Slot registers themself with the Slots parent.
47
+ * When all the children have mounted = registered themselves in slot,
48
+ * we re-render the parent component to render with slots
49
+ */
50
+ const Slots: React.FC<{
51
+ context?: ContextProps['context'];
52
+ children: (slots: Slots) => React.ReactNode;
53
+ }> = ({ context = defaultContext, children }) => {
54
+ // initialise slots
55
+ const slotsDefinition: Slots = {};
56
+ slotNames.map(name => (slotsDefinition[name] = null));
57
+ const slotsRef = React.useRef<Slots>(slotsDefinition);
58
+
59
+ const rerenderWithSlots = useForceUpdate();
60
+ const [isMounted, setIsMounted] = React.useState(false);
61
+
62
+ // fires after all the effects in children
63
+ useLayoutEffect(() => {
64
+ rerenderWithSlots();
65
+ setIsMounted(true);
66
+ }, [rerenderWithSlots]);
67
+
68
+ const registerSlot = React.useCallback(
69
+ (name: SlotNames, contents: React.ReactNode) => {
70
+ slotsRef.current[name] = contents;
71
+
72
+ // don't render until the component mounts = all slots are registered
73
+ if (isMounted) {
74
+ rerenderWithSlots();
75
+ }
76
+ },
77
+ [isMounted, rerenderWithSlots],
78
+ );
79
+
80
+ // Slot can be removed from the tree as well,
81
+ // we need to unregister them from the slot
82
+ const unregisterSlot = React.useCallback(
83
+ (name: SlotNames) => {
84
+ slotsRef.current[name] = null;
85
+ rerenderWithSlots();
86
+ },
87
+ [rerenderWithSlots],
88
+ );
89
+
90
+ /**
91
+ * Slots uses a render prop API so abstract the
92
+ * implementation detail of using a context provider.
93
+ */
94
+ const slots = slotsRef.current;
95
+
96
+ return (
97
+ <SlotsContext.Provider value={{ registerSlot, unregisterSlot, context }}>
98
+ {children(slots)}
99
+ </SlotsContext.Provider>
100
+ );
101
+ };
102
+
103
+ const Slot: React.FC<{
104
+ name: SlotNames;
105
+ children:
106
+ | React.ReactNode
107
+ | ((context: ContextProps['context']) => React.ReactNode);
108
+ }> = ({ name, children }) => {
109
+ const { registerSlot, unregisterSlot, context } =
110
+ React.useContext(SlotsContext);
111
+
112
+ useLayoutEffect(() => {
113
+ registerSlot(
114
+ name,
115
+ typeof children === 'function' ? children(context) : children,
116
+ );
117
+ return () => unregisterSlot(name);
118
+ }, [name, children, registerSlot, unregisterSlot, context]);
119
+
120
+ return null;
121
+ };
122
+
123
+ return { Slots, Slot };
124
+ };
125
+
126
+ export default createSlots;