@tdesign-react/chat 1.1.0-alpha.5 → 1.1.0-alpha.6
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.
- package/es/_chunks/dep-1007ac80.js +205 -0
- package/es/_chunks/dep-1007ac80.js.map +1 -0
- package/es/_chunks/dep-16520c2b.js +1247 -0
- package/es/_chunks/dep-16520c2b.js.map +1 -0
- package/es/_chunks/dep-1743bd61.js +438 -0
- package/es/_chunks/dep-1743bd61.js.map +1 -0
- package/es/_chunks/dep-56f5e08e.js +448 -0
- package/es/_chunks/dep-56f5e08e.js.map +1 -0
- package/es/_chunks/dep-96eca06f.js +169 -0
- package/es/_chunks/dep-96eca06f.js.map +1 -0
- package/es/_util/reactify.js +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/attachments/index.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-engine/components/activity/index.js +3 -1
- package/es/chat-engine/components/activity/index.js.map +1 -1
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/render.d.ts +4 -0
- package/es/chat-engine/components/activity/render.js +14 -2
- package/es/chat-engine/components/activity/render.js.map +1 -1
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +28 -20
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
- package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
- package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
- package/es/chat-engine/components/json-render/contexts/data.js +155 -76
- package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
- package/es/chat-engine/components/json-render/contexts/index.js +27 -0
- package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
- package/es/chat-engine/components/json-render/contexts/store.js +104 -0
- package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
- package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
- package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
- package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
- package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
- package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
- package/es/chat-engine/components/json-render/index.d.ts +9 -32
- package/es/chat-engine/components/json-render/index.js +59 -19
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
- package/es/chat-engine/components/json-render/registry/config.js +76 -0
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
- package/es/chat-engine/components/json-render/registry/index.js +76 -0
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
- package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/index.js +125 -0
- package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
- package/es/chat-engine/components/json-render/types.d.ts +37 -19
- package/es/chat-engine/components/json-render/types.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js +14 -7
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +14 -7
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/render.js +16 -9
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
- package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
- package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
- package/es/chat-engine/core/adapters/agui/index.js +11 -16
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
- package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
- package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
- package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
- package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/utils.js +1 -1
- package/es/chat-engine/core/adapters/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/index.js +34 -0
- package/es/chat-engine/core/adapters/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
- package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
- package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
- package/es/chat-engine/core/adapters/json-render/index.js +18 -0
- package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
- package/es/chat-engine/core/event-bus/index.js +1 -1
- package/es/chat-engine/core/event-bus/types.js +1 -1
- package/es/chat-engine/core/index.d.ts +2 -3
- package/es/chat-engine/core/index.js +16 -8
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.js +1 -1
- package/es/chat-engine/core/server/batch-client.js +1 -1
- package/es/chat-engine/core/server/connection-manager.js +1 -1
- package/es/chat-engine/core/server/errors.js +1 -1
- package/es/chat-engine/core/server/index.js +1 -1
- package/es/chat-engine/core/server/llm-service.js +15 -17
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- package/es/chat-engine/core/server/sse-client.js +1 -1
- package/es/chat-engine/core/server/sse-parser.js +1 -1
- package/es/chat-engine/core/server/types.js +1 -1
- package/es/chat-engine/core/store/message.js +6 -4
- package/es/chat-engine/core/store/message.js.map +1 -1
- package/es/chat-engine/core/store/model.js +2 -1
- package/es/chat-engine/core/store/model.js.map +1 -1
- package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
- package/es/chat-engine/core/store/reactiveState.js +15 -1235
- package/es/chat-engine/core/store/reactiveState.js.map +1 -1
- package/es/chat-engine/core/type.d.ts +8 -19
- package/es/chat-engine/core/type.js +1 -1
- package/es/chat-engine/core/utils/eventEmitter.js +1 -1
- package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
- package/es/chat-engine/core/utils/immutable-patch.js +147 -0
- package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
- package/es/chat-engine/core/utils/index.d.ts +7 -2
- package/es/chat-engine/core/utils/index.js +8 -12
- package/es/chat-engine/core/utils/index.js.map +1 -1
- package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
- package/es/chat-engine/core/utils/json-patch/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/core/utils/performance.d.ts +94 -0
- package/es/chat-engine/core/utils/performance.js +205 -0
- package/es/chat-engine/core/utils/performance.js.map +1 -0
- package/es/chat-engine/hooks/index.js +14 -7
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js +14 -7
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useChat.js +14 -7
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +28 -20
- package/es/chat-engine/index.js.map +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/index.js +1 -1
- package/es/index.js +28 -20
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-to-prompt.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/catalog/catalog-to-prompt.ts"],"sourcesContent":["/**\n * TDesign Catalog 定义(约束层)\n * 用于定义组件 props schema 和 actions 白名单\n * \n * 概念区分:\n * - Catalog(本文件):约束层,定义组件 props 的 Zod schemas 和 actions 白名单(给 AI/服务端用)\n * - ComponentRegistry(catalog/index.ts):渲染层,映射组件名到 React 组件(给 Renderer 用)\n */\n\nimport { createCatalog } from '@json-render/core';\nimport { z } from 'zod';\n\n/**\n * TDesign 内置组件 Catalog\n * 定义所有内置组件的 props schema 和可用 actions\n * \n * 这个 Catalog 用于:\n * 1. 告诉 AI/LLM 可以生成哪些组件\n * 2. 约束每个组件的 props 类型\n * 3. 定义可触发的 actions 白名单\n */\nexport const tdesignCatalog = createCatalog({\n name: 'tdesign',\n components: {\n // ==================== 基础组件 ====================\n \n Button: {\n props: z.object({\n // 支持 label 或 children 两种方式传递按钮文本\n label: z.string().optional(),\n children: z.string().optional(),\n variant: z.enum(['base', 'outline', 'dashed', 'text']).nullable(),\n theme: z.enum(['default', 'primary', 'success', 'warning', 'danger']).nullable(),\n size: z.enum(['small', 'medium', 'large']).nullable(),\n disabled: z.boolean().nullable(),\n loading: z.boolean().nullable(),\n block: z.boolean().nullable(),\n // action 支持字符串(action 名称)或 Action 对象 { name, params }\n action: z.union([\n z.string(),\n z.object({\n name: z.string(),\n params: z.record(z.any()).optional(),\n }),\n ]).nullable(),\n }),\n description: 'TDesign Button component with action support',\n },\n\n Input: {\n props: z.object({\n value: z.string().nullable(),\n placeholder: z.string().nullable(),\n type: z.enum(['text', 'password', 'number']).nullable(),\n disabled: z.boolean().nullable(),\n clearable: z.boolean().nullable(),\n maxlength: z.number().nullable(),\n showLimitNumber: z.boolean().nullable(),\n }),\n description: 'TDesign Input component',\n },\n\n TextField: {\n props: z.object({\n label: z.string(),\n name: z.string().optional(), // 表单字段名称(可选)\n valuePath: z.string(), // 数据绑定路径(必需)\n placeholder: z.string().nullable(),\n required: z.boolean().nullable(),\n type: z.enum(['text', 'password', 'email', 'number', 'tel']).nullable(),\n disabled: z.boolean().nullable(),\n helperText: z.string().nullable(),\n }),\n description: 'Form text field with label and data binding (combines Input + label)',\n },\n\n Text: {\n props: z.object({\n content: z.string(),\n variant: z.enum(['body', 'caption', 'label']).nullable(),\n color: z.enum(['default', 'primary', 'secondary', 'success', 'warning', 'error']).nullable(),\n weight: z.enum(['normal', 'medium', 'bold']).nullable(),\n }),\n description: 'Text display component',\n },\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n bordered: z.boolean().nullable(),\n shadow: z.boolean().nullable(),\n loading: z.boolean().nullable(),\n }),\n hasChildren: true,\n description: 'TDesign Card container',\n },\n\n // ==================== 布局组件 ====================\n\n Row: {\n props: z.object({\n gutter: z.number().nullable(),\n justify: z.enum(['start', 'end', 'center', 'space-around', 'space-between']).nullable(),\n align: z.enum(['top', 'middle', 'bottom']).nullable(),\n }),\n hasChildren: true,\n description: 'Grid row layout',\n },\n\n Col: {\n props: z.object({\n span: z.number().min(1).max(24).nullable(),\n offset: z.number().nullable(),\n }),\n hasChildren: true,\n description: 'Grid column layout',\n },\n\n Space: {\n props: z.object({\n direction: z.enum(['horizontal', 'vertical']).nullable(),\n // size 支持字符串枚举或数字\n size: z.union([\n z.enum(['small', 'medium', 'large']),\n z.number(),\n z.string(),\n ]).nullable(),\n align: z.enum(['start', 'center', 'end', 'baseline']).nullable(),\n }),\n hasChildren: true,\n description: 'Space layout component',\n },\n\n Column: {\n props: z.object({\n gap: z.number().nullable(),\n align: z.enum(['start', 'center', 'end', 'stretch']).nullable(),\n }),\n hasChildren: true,\n description: 'Vertical column layout',\n },\n\n Divider: {\n props: z.object({\n layout: z.enum(['horizontal', 'vertical']).nullable(),\n dashed: z.boolean().nullable(),\n }),\n description: 'Divider line',\n },\n },\n \n actions: {\n submit: { \n description: 'Submit form data to server' \n },\n reset: { \n description: 'Reset form to initial state (handled by Button component automatically)' \n },\n cancel: { \n description: 'Cancel current operation' \n },\n },\n \n validation: 'strict',\n});\n\n/**\n * 创建自定义 Catalog(扩展 TDesign 内置 Catalog)\n * \n * @param customConfig - 自定义 Catalog 配置\n * @returns 合并后的 Catalog\n * \n * @example\n * ```typescript\n * import { createCustomCatalog } from '@tdesign-react/chat';\n * import { z } from 'zod';\n * \n * const customCatalog = createCustomCatalog({\n * name: 'my-dashboard',\n * components: {\n * StatusCard: {\n * props: z.object({\n * title: z.string(),\n * status: z.enum(['success', 'warning', 'error', 'info']),\n * description: z.string().nullable(),\n * }),\n * description: 'Custom status card component',\n * },\n * ProgressBar: {\n * props: z.object({\n * label: z.string().nullable(),\n * percentage: z.number().min(0).max(100),\n * showInfo: z.boolean().nullable(),\n * }),\n * description: 'Custom progress bar component',\n * },\n * },\n * actions: {\n * refresh: { description: 'Refresh data' },\n * export: { description: 'Export to file' },\n * },\n * });\n * \n * // 使用自定义 Catalog\n * // 1. 在服务端:告诉 AI 可以生成哪些组件\n * // 2. 在前端:配合 createCustomRegistry 提供渲染能力\n * ```\n */\nexport function createCustomCatalog(customConfig: {\n name: string;\n components?: Record<string, any>;\n actions?: Record<string, { description: string }>;\n validation?: 'strict' | 'warn';\n}) {\n // 获取 TDesign 内置配置\n const tdesignComponents = tdesignCatalog.components;\n const tdesignActions = tdesignCatalog.actions;\n\n // 合并配置\n return createCatalog({\n name: customConfig.name,\n components: {\n ...tdesignComponents,\n ...(customConfig.components || {}),\n },\n actions: {\n ...tdesignActions,\n ...(customConfig.actions || {}),\n },\n validation: customConfig.validation || 'strict',\n });\n}\n\n/**\n * 导出 TDesign Catalog 的组件列表(给 AI prompt 用)\n */\nexport const tdesignComponentList = tdesignCatalog.componentNames as string[];\n\n/**\n * 导出 TDesign Catalog 的 actions 列表(给 AI prompt 用)\n */\nexport const tdesignActionList = tdesignCatalog.actionNames as string[];\n\n/**\n * 内置组件的详细 Props 文档(用于生成详细 prompt)\n */\nconst BUILTIN_COMPONENT_DOCS: Record<string, { \n description: string;\n props: Record<string, string>;\n hasChildren?: boolean;\n}> = {\n Button: {\n description: 'Button component with action support',\n props: {\n label: 'string - Button text (alternative to children)',\n children: 'string - Button text',\n variant: '\"base\" | \"outline\" | \"dashed\" | \"text\" - Button style variant',\n theme: '\"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" - Color theme',\n size: '\"small\" | \"medium\" | \"large\" - Button size',\n disabled: 'boolean - Whether button is disabled',\n loading: 'boolean - Whether to show loading state',\n block: 'boolean - Whether button should be full width',\n action: 'string | { name: string, params?: object } - Action to trigger on click',\n },\n },\n Input: {\n description: 'Input component for text entry',\n props: {\n value: 'string - Input value',\n placeholder: 'string - Placeholder text',\n type: '\"text\" | \"password\" | \"number\" - Input type',\n disabled: 'boolean - Whether input is disabled',\n clearable: 'boolean - Whether to show clear button',\n maxlength: 'number - Maximum input length',\n showLimitNumber: 'boolean - Whether to show character count',\n },\n },\n TextField: {\n description: 'Form text field with label and data binding',\n props: {\n label: 'string (required) - Field label',\n name: 'string - Form field name',\n valuePath: 'string (required) - Data binding path in data model',\n placeholder: 'string - Placeholder text',\n required: 'boolean - Whether field is required',\n type: '\"text\" | \"password\" | \"email\" | \"number\" | \"tel\" - Input type',\n disabled: 'boolean - Whether field is disabled',\n disabledPath: 'string - Data path to control disabled state dynamically',\n helperText: 'string - Helper text below the field',\n },\n },\n Text: {\n description: 'Text display component',\n props: {\n content: 'string (required) - Text content to display',\n variant: '\"body\" | \"caption\" | \"label\" - Text style variant',\n color: '\"default\" | \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"error\" - Text color',\n weight: '\"normal\" | \"medium\" | \"bold\" - Font weight',\n },\n },\n Card: {\n description: 'Card container component',\n props: {\n title: 'string - Card title',\n description: 'string - Card description',\n bordered: 'boolean - Whether to show border',\n shadow: 'boolean - Whether to show shadow',\n loading: 'boolean - Whether to show loading state',\n },\n hasChildren: true,\n },\n Row: {\n description: 'Grid row layout (24-column grid system)',\n props: {\n gutter: 'number - Gap between columns in pixels',\n justify: '\"start\" | \"end\" | \"center\" | \"space-around\" | \"space-between\" - Horizontal alignment',\n align: '\"top\" | \"middle\" | \"bottom\" - Vertical alignment',\n },\n hasChildren: true,\n },\n Col: {\n description: 'Grid column layout (use inside Row)',\n props: {\n span: 'number (1-24) - Column width, out of 24 total',\n offset: 'number - Column offset from left',\n },\n hasChildren: true,\n },\n Space: {\n description: 'Space layout component for spacing children',\n props: {\n direction: '\"horizontal\" | \"vertical\" - Layout direction',\n size: '\"small\" | \"medium\" | \"large\" | number - Gap size',\n align: '\"start\" | \"center\" | \"end\" | \"baseline\" - Alignment',\n },\n hasChildren: true,\n },\n Column: {\n description: 'Vertical column layout',\n props: {\n gap: 'number - Gap between children in pixels',\n align: '\"start\" | \"center\" | \"end\" | \"stretch\" - Horizontal alignment',\n },\n hasChildren: true,\n },\n Divider: {\n description: 'Divider line',\n props: {\n layout: '\"horizontal\" | \"vertical\" - Divider direction',\n dashed: 'boolean - Whether to use dashed line',\n },\n },\n};\n\n/**\n * Prompt 模板模式\n * - 'default': 默认模板,生成标准的 JSON Schema UI\n * - 'a2ui': A2UI 模板,使用 A2UI 特定的消息格式和协议\n * - 'custom': 自定义模板,完全由 customTemplate 参数控制\n */\nexport type PromptTemplateMode = 'default' | 'a2ui' | 'custom';\n\n/**\n * 组件文档定义类型\n * props 支持两种格式:\n * 1. Record<string, string> - 人可读的 props 描述,如 { label: 'string - Button text' }\n * 2. ZodObject - Zod schema 对象,会自动转换为描述\n */\nexport interface ComponentDoc {\n description: string;\n /** Props 定义:可以是字符串描述映射,也可以是 Zod schema */\n props: Record<string, string> | z.ZodObject<any>;\n hasChildren?: boolean;\n}\n\n/**\n * 内部使用的标准化组件文档类型(props 已转为字符串)\n */\nexport interface NormalizedComponentDoc {\n description: string;\n props: Record<string, string>;\n hasChildren?: boolean;\n}\n\n/**\n * 将 Zod schema 转换为 props 描述字符串\n */\nfunction zodSchemaToPropsDoc(schema: z.ZodObject<any>): Record<string, string> {\n const result: Record<string, string> = {};\n const shape = schema.shape;\n \n for (const [key, value] of Object.entries(shape)) {\n result[key] = zodTypeToString(value as z.ZodTypeAny);\n }\n \n return result;\n}\n\n/**\n * 将 Zod 类型转换为可读字符串\n */\nfunction zodTypeToString(type: z.ZodTypeAny): string {\n // 处理 nullable\n if (type instanceof z.ZodNullable) {\n return `${zodTypeToString(type.unwrap())} (nullable)`;\n }\n \n // 处理 optional\n if (type instanceof z.ZodOptional) {\n return `${zodTypeToString(type.unwrap())} (optional)`;\n }\n \n // 处理 enum\n if (type instanceof z.ZodEnum) {\n const values = type.options as string[];\n return values.map(v => `\"${v}\"`).join(' | ');\n }\n \n // 处理 union\n if (type instanceof z.ZodUnion) {\n const options = (type as any)._def.options as z.ZodTypeAny[];\n return options.map(o => zodTypeToString(o)).join(' | ');\n }\n \n // 处理基础类型\n if (type instanceof z.ZodString) return 'string';\n if (type instanceof z.ZodNumber) return 'number';\n if (type instanceof z.ZodBoolean) return 'boolean';\n if (type instanceof z.ZodObject) return 'object';\n if (type instanceof z.ZodArray) return 'array';\n \n return 'any';\n}\n\n/**\n * 标准化组件文档(将 Zod schema 转换为字符串描述)\n */\nfunction normalizeComponentDoc(doc: ComponentDoc): NormalizedComponentDoc {\n let props: Record<string, string>;\n \n if (doc.props instanceof z.ZodObject) {\n props = zodSchemaToPropsDoc(doc.props);\n } else {\n props = doc.props;\n }\n \n return {\n description: doc.description,\n props,\n hasChildren: doc.hasChildren,\n };\n}\n\n/**\n * 自定义模板生成器函数类型\n * 接收标准化后的组件文档(props 已转为字符串描述)\n */\nexport type CustomTemplateGenerator = (context: {\n name: string;\n components: Record<string, NormalizedComponentDoc>;\n actions: Record<string, { description: string }>;\n}) => string;\n\n/**\n * 生成增强版 Catalog Prompt(包含完整 Props 文档和 Schema 示例)\n * \n * @param options - 配置选项\n * @returns 详细的 AI Prompt 字符串\n */\nexport function generateCatalogPrompt(options: {\n name?: string;\n components?: Record<string, ComponentDoc>;\n actions?: Record<string, { description: string }>;\n /** 是否包含 Schema 示例 */\n includeExample?: boolean;\n /** \n * Prompt 模板模式\n * - 'default': 标准 JSON Schema UI 模板\n * - 'a2ui': A2UI 协议模板(需服务端配合)\n * - 'custom': 使用自定义模板生成器\n */\n templateMode?: PromptTemplateMode;\n /**\n * 自定义模板生成器(仅当 templateMode='custom' 时使用)\n * 接收组件和 actions 上下文,返回完整的 prompt 字符串\n */\n customTemplate?: CustomTemplateGenerator;\n} = {}): string {\n const {\n name = 'tdesign',\n components = {},\n actions = {},\n includeExample = true,\n templateMode = 'default',\n customTemplate,\n } = options;\n\n // 合并内置组件和自定义组件,并标准化(将 Zod schema 转为字符串描述)\n const mergedComponents = { ...BUILTIN_COMPONENT_DOCS, ...components };\n const allComponents: Record<string, NormalizedComponentDoc> = {};\n for (const [key, doc] of Object.entries(mergedComponents)) {\n allComponents[key] = normalizeComponentDoc(doc);\n }\n \n // 合并内置 actions 和自定义 actions\n const builtinActions = {\n submit: { description: 'Submit form data to server' },\n reset: { description: 'Reset form to initial state' },\n cancel: { description: 'Cancel current operation' },\n };\n const allActions = { ...builtinActions, ...actions };\n\n // 自定义模板模式\n if (templateMode === 'custom' && customTemplate) {\n return customTemplate({ name, components: allComponents, actions: allActions });\n }\n\n // A2UI 模板模式 - 预留给服务端实现具体模板\n if (templateMode === 'a2ui') {\n return generateA2UIPrompt({ name, components: allComponents, actions: allActions, includeExample });\n }\n\n // 默认模板\n const lines: string[] = [\n `# ${name} UI Component Catalog`,\n '',\n 'You can generate dynamic UI using the following components and JSON schema format.',\n '',\n '## Output Format',\n '',\n 'Generate a JSON object with this structure:',\n '```json',\n '{',\n ' \"root\": \"element_id\", // ID of the root element',\n ' \"elements\": {',\n ' \"element_id\": {',\n ' \"key\": \"element_id\", // Same as the key in elements object',\n ' \"type\": \"ComponentName\", // One of the available components',\n ' \"props\": { ... }, // Component-specific props',\n ' \"children\": [\"child_id_1\", \"child_id_2\"] // Optional: IDs of child elements',\n ' }',\n ' },',\n ' \"data\": { // Optional: Initial data model for data binding',\n ' \"fieldName\": \"value\"',\n ' }',\n '}',\n '```',\n '',\n '## AG-UI ACTIVITY_DELTA Format (for Incremental Updates)',\n '',\n 'For updating existing UI, you can also generate AG-UI ACTIVITY_DELTA messages:',\n '```json',\n '{',\n ' \"type\": \"ACTIVITY_DELTA\",',\n ' \"messageId\": \"unique_message_id\",',\n ' \"activityType\": \"json-render-main-card\",',\n ' \"patch\": [',\n ' {\"op\": \"add\", \"path\": \"/elements/new-element\", \"value\": {...}},',\n ' {\"op\": \"replace\", \"path\": \"/elements/parent/children\", \"value\": [...]}',\n ' ]',\n '}',\n '```',\n '',\n '### JSON Patch Operations for ACTIVITY_DELTA',\n '',\n '**Add New Element:**',\n '```json',\n '{\"op\": \"add\", \"path\": \"/elements/new-button\", \"value\": {',\n ' \"key\": \"new-button\",',\n ' \"type\": \"Button\",',\n ' \"props\": {\"children\": \"Click Me\", \"theme\": \"primary\"}',\n '}}',\n '```',\n '',\n '**Update Element Properties:**',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/elements/my-card/props/title\", \"value\": \"Updated Title\"}',\n '```',\n '',\n '**Replace Children Array:**',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/elements/container/children\", \"value\": [\"child1\", \"child2\", \"new-child\"]}',\n '```',\n '',\n '**Add Child to Parent:**',\n '```json',\n '{\"op\": \"add\", \"path\": \"/elements/parent/children/-\", \"value\": \"new-child-id\"}',\n '```',\n '',\n '**Update Data Model:**',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/data/user/name\", \"value\": \"John Doe\"}',\n '```',\n '',\n '**Complete ACTIVITY_DELTA Example:**',\n '```json',\n '{',\n ' \"type\": \"ACTIVITY_DELTA\",',\n ' \"messageId\": \"update_123456\",',\n ' \"activityType\": \"json-render-main-card\",',\n ' \"patch\": [',\n ' {',\n ' \"op\": \"add\",',\n ' \"path\": \"/elements/success-message\",',\n ' \"value\": {',\n ' \"key\": \"success-message\",',\n ' \"type\": \"Text\",',\n ' \"props\": {',\n ' \"content\": \"Operation completed successfully!\",',\n ' \"color\": \"success\"',\n ' }',\n ' }',\n ' },',\n ' {',\n ' \"op\": \"add\",',\n ' \"path\": \"/elements/main-container/children/-\",',\n ' \"value\": \"success-message\"',\n ' }',\n ' ]',\n '}',\n '```',\n '',\n '## JSON-Render Data Structure Details',\n '',\n 'Understanding the structure is crucial for generating valid UI:',\n '',\n '### Root Level Properties',\n '- `root`: String - ID of the root element (must exist in elements)',\n '- `elements`: Object - Contains all UI elements indexed by their IDs',\n '- `data`: Object - Optional data model for form bindings and dynamic content',\n '',\n '### Element Structure',\n 'Each element in the `elements` object has:',\n '- `key`: String - Unique identifier (should match the object key)',\n '- `type`: String - Component type name (must be from available components)',\n '- `props`: Object - Component-specific properties',\n '- `children`: Array<String> - Optional array of child element IDs',\n '',\n '### Element Hierarchy Rules',\n '1. **Root Element**: Must be specified in `root` and exist in `elements`',\n '2. **Parent-Child Relationship**: Parent elements reference children by ID in `children` array',\n '3. **Child Order**: Order in `children` array determines rendering order',\n '4. **Unique IDs**: Each element must have a unique ID across the entire structure',\n '5. **Container Components**: Only components marked with \"can have children\" support `children`',\n '',\n '### Data Binding Paths',\n 'Form components can bind to data using dot notation:',\n '- `\"valuePath\": \"user.name\"` → binds to `data.user.name`',\n '- `\"valuePath\": \"settings.theme\"` → binds to `data.settings.theme`',\n '- `\"disabledPath\": \"form.disabled\"` → controls disabled state from `data.form.disabled`',\n '',\n '### Element ID Best Practices',\n '- Use descriptive names: `\"user_name_field\"` instead of `\"field1\"`',\n '- Use consistent naming: `snake_case` or `kebab-case`',\n '- Include purpose: `\"submit_button\"`, `\"main_container\"`, `\"status_card\"`',\n '',\n '## Available Components',\n '',\n ];\n\n // 组件文档\n for (const [name, doc] of Object.entries(allComponents)) {\n lines.push(`### ${name}`);\n lines.push(doc.description);\n if (doc.hasChildren) {\n lines.push('*This component can have children.*');\n }\n lines.push('');\n lines.push('**Props:**');\n for (const [propName, propDesc] of Object.entries(doc.props)) {\n lines.push(`- \\`${propName}\\`: ${propDesc}`);\n }\n lines.push('');\n }\n\n // Actions\n lines.push('## Available Actions');\n lines.push('');\n lines.push('Actions can be triggered by Button components. Use the `action` prop:');\n lines.push('- Simple: `\"action\": \"actionName\"`');\n lines.push('- With params: `\"action\": { \"name\": \"actionName\", \"params\": { ... } }`');\n lines.push('');\n for (const [name, def] of Object.entries(allActions)) {\n lines.push(`- \\`${name}\\`: ${def.description}`);\n }\n lines.push('');\n\n // Data Binding\n lines.push('## Data Binding');\n lines.push('');\n lines.push('Use `valuePath` to bind form fields to the data model:');\n lines.push('- `\"valuePath\": \"user.name\"` binds to `data.user.name`');\n lines.push('- `\"disabledPath\": \"formDisabled\"` controls disabled state from `data.formDisabled`');\n lines.push('');\n\n // 示例\n if (includeExample) {\n lines.push('## Examples');\n lines.push('');\n \n lines.push('### 1. Simple Form Structure');\n lines.push('A basic form with validation and data binding:');\n lines.push('```json');\n lines.push(JSON.stringify({\n root: 'main_card',\n elements: {\n main_card: {\n key: 'main_card',\n type: 'Card',\n props: { title: 'User Registration', bordered: true },\n children: ['form_layout'],\n },\n form_layout: {\n key: 'form_layout',\n type: 'Column',\n props: { gap: 16 },\n children: ['name_field', 'email_field', 'button_group'],\n },\n name_field: {\n key: 'name_field',\n type: 'TextField',\n props: {\n label: 'Full Name',\n valuePath: 'user.name',\n placeholder: 'Enter your full name',\n required: true,\n },\n },\n email_field: {\n key: 'email_field',\n type: 'TextField',\n props: {\n label: 'Email Address',\n valuePath: 'user.email',\n placeholder: 'Enter your email',\n type: 'email',\n required: true,\n },\n },\n button_group: {\n key: 'button_group',\n type: 'Space',\n props: { direction: 'horizontal', size: 'medium' },\n children: ['submit_btn', 'reset_btn'],\n },\n submit_btn: {\n key: 'submit_btn',\n type: 'Button',\n props: {\n children: 'Register',\n theme: 'primary',\n action: { name: 'submit', params: { form: 'registration' } },\n },\n },\n reset_btn: {\n key: 'reset_btn',\n type: 'Button',\n props: {\n children: 'Reset',\n variant: 'outline',\n action: 'reset',\n },\n },\n },\n data: {\n user: { name: '', email: '' },\n },\n }, null, 2));\n lines.push('```');\n lines.push('');\n \n lines.push('### 2. Dashboard Layout');\n lines.push('A more complex layout with grid system and multiple components:');\n lines.push('```json');\n lines.push(JSON.stringify({\n root: 'dashboard',\n elements: {\n dashboard: {\n key: 'dashboard',\n type: 'Column',\n props: { gap: 24 },\n children: ['header', 'content_row'],\n },\n header: {\n key: 'header',\n type: 'Card',\n props: { title: 'Dashboard Overview' },\n children: ['status_text'],\n },\n status_text: {\n key: 'status_text',\n type: 'Text',\n props: {\n content: 'System is running normally',\n color: 'success',\n weight: 'medium',\n },\n },\n content_row: {\n key: 'content_row',\n type: 'Row',\n props: { gutter: 16 },\n children: ['left_col', 'right_col'],\n },\n left_col: {\n key: 'left_col',\n type: 'Col',\n props: { span: 16 },\n children: ['main_content'],\n },\n right_col: {\n key: 'right_col',\n type: 'Col',\n props: { span: 8 },\n children: ['sidebar_card'],\n },\n main_content: {\n key: 'main_content',\n type: 'Card',\n props: { title: 'Main Content', shadow: true },\n children: ['content_text'],\n },\n content_text: {\n key: 'content_text',\n type: 'Text',\n props: { content: 'This is the main content area.' },\n },\n sidebar_card: {\n key: 'sidebar_card',\n type: 'Card',\n props: { title: 'Quick Actions' },\n children: ['action_buttons'],\n },\n action_buttons: {\n key: 'action_buttons',\n type: 'Column',\n props: { gap: 8 },\n children: ['refresh_btn', 'export_btn'],\n },\n refresh_btn: {\n key: 'refresh_btn',\n type: 'Button',\n props: {\n children: 'Refresh Data',\n block: true,\n action: 'refresh',\n },\n },\n export_btn: {\n key: 'export_btn',\n type: 'Button',\n props: {\n children: 'Export Report',\n variant: 'outline',\n block: true,\n action: 'export',\n },\n },\n },\n data: {\n lastUpdated: new Date().toISOString(),\n },\n }, null, 2));\n lines.push('```');\n lines.push('');\n \n lines.push('### 3. Dynamic Content with Data Binding');\n lines.push('Form with conditional disabled states:');\n lines.push('```json');\n lines.push(JSON.stringify({\n root: 'settings_form',\n elements: {\n settings_form: {\n key: 'settings_form',\n type: 'Card',\n props: { title: 'Settings' },\n children: ['form_fields'],\n },\n form_fields: {\n key: 'form_fields',\n type: 'Column',\n props: { gap: 16 },\n children: ['enable_notifications', 'email_field', 'save_btn'],\n },\n enable_notifications: {\n key: 'enable_notifications',\n type: 'TextField',\n props: {\n label: 'Enable Notifications',\n valuePath: 'settings.notifications',\n type: 'text',\n },\n },\n email_field: {\n key: 'email_field',\n type: 'TextField',\n props: {\n label: 'Notification Email',\n valuePath: 'settings.email',\n disabledPath: 'settings.emailDisabled',\n placeholder: 'Enter email for notifications',\n },\n },\n save_btn: {\n key: 'save_btn',\n type: 'Button',\n props: {\n children: 'Save Settings',\n theme: 'primary',\n action: 'submit',\n },\n },\n },\n data: {\n settings: {\n notifications: 'enabled',\n email: '',\n emailDisabled: false,\n },\n },\n }, null, 2));\n lines.push('```');\n }\n\n return lines.join('\\n');\n}\n\n/**\n * A2UI 协议专用 Prompt 生成器\n * 生成符合 A2UI 消息格式的系统提示词\n * \n * @internal 内部函数,由 generateDetailedCatalogPrompt 调用\n */\nfunction generateA2UIPrompt(context: {\n name: string;\n components: Record<string, NormalizedComponentDoc>;\n actions: Record<string, { description: string }>;\n includeExample?: boolean;\n}): string {\n const { name, components, actions, includeExample = true } = context;\n\n const lines: string[] = [\n `# ${name} A2UI Component Catalog`,\n '',\n 'You can generate dynamic UI using A2UI protocol messages.',\n '',\n '## AG-UI ACTIVITY_DELTA Format',\n '',\n 'When generating UI updates, use the AG-UI ACTIVITY_DELTA message format:',\n '```json',\n '{',\n ' \"type\": \"ACTIVITY_DELTA\",',\n ' \"messageId\": \"unique_message_id\",',\n ' \"activityType\": \"json-render-main-card\",',\n ' \"patch\": [',\n ' {\"op\": \"add\", \"path\": \"/elements/element-id\", \"value\": {...}},',\n ' {\"op\": \"replace\", \"path\": \"/elements/parent/children\", \"value\": [...]}',\n ' ]',\n '}',\n '```',\n '',\n '## JSON Patch Operations for AG-UI ACTIVITY_DELTA',\n '',\n 'The `patch` array contains JSON Patch operations that modify the UI structure:',\n '',\n '### Add New Element',\n 'Create a new UI element in the elements object:',\n '```json',\n '{\"op\": \"add\", \"path\": \"/elements/new-element-id\", \"value\": {',\n ' \"key\": \"new-element-id\",',\n ' \"type\": \"ComponentName\",',\n ' \"props\": {...},',\n ' \"children\": [\"child1\", \"child2\"] // optional',\n '}}',\n '```',\n '',\n '### Update Element Properties',\n 'Modify specific properties of an existing element:',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/elements/element-id/props/title\", \"value\": \"New Title\"}',\n '```',\n '',\n '### Replace Children Array',\n 'Update the children of a container element:',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/elements/parent-id/children\", \"value\": [\"child1\", \"child2\", \"new-child\"]}',\n '```',\n '',\n '### Add Child to Parent',\n 'Append a child to the end of parent\\'s children array:',\n '```json',\n '{\"op\": \"add\", \"path\": \"/elements/parent-id/children/-\", \"value\": \"new-child-id\"}',\n '```',\n '',\n '### Remove Element',\n 'Delete an element (ensure it\\'s removed from parent\\'s children first):',\n '```json',\n '{\"op\": \"remove\", \"path\": \"/elements/element-id\"}',\n '```',\n '',\n '### Update Data Model',\n 'Modify the data model for form bindings:',\n '```json',\n '{\"op\": \"replace\", \"path\": \"/data/user/name\", \"value\": \"John Doe\"}',\n '```',\n '',\n '### Complete AG-UI ACTIVITY_DELTA Example',\n 'Adding a status card and updating container children:',\n '```json',\n '{',\n ' \"type\": \"ACTIVITY_DELTA\",',\n ' \"messageId\": \"update_1234567890\",',\n ' \"activityType\": \"json-render-main-card\",',\n ' \"patch\": [',\n ' {',\n ' \"op\": \"add\",',\n ' \"path\": \"/elements/status-card\",',\n ' \"value\": {',\n ' \"key\": \"status-card\",',\n ' \"type\": \"Card\",',\n ' \"props\": {',\n ' \"title\": \"Status Update\",',\n ' \"description\": \"Operation completed successfully\"',\n ' }',\n ' }',\n ' },',\n ' {',\n ' \"op\": \"replace\",',\n ' \"path\": \"/elements/main-container/children\",',\n ' \"value\": [\"existing-element\", \"status-card\"]',\n ' }',\n ' ]',\n '}',\n '```',\n '',\n '## A2UI Message Types (Alternative Formats)',\n '',\n 'Besides AG-UI ACTIVITY_DELTA, A2UI also supports these message types:',\n '',\n '### createSurface',\n 'Create a new UI surface with initial elements:',\n '```json',\n '{',\n ' \"type\": \"createSurface\",',\n ' \"surfaceId\": \"unique_surface_id\",',\n ' \"ui\": {',\n ' \"root\": \"element_id\",',\n ' \"elements\": { ... }',\n ' },',\n ' \"data\": { ... }',\n '}',\n '```',\n '',\n '### updateComponents',\n 'Update existing UI elements (similar to ACTIVITY_DELTA but different format):',\n '```json',\n '{',\n ' \"type\": \"updateComponents\",',\n ' \"surfaceId\": \"existing_surface_id\",',\n ' \"patch\": [',\n ' {\"op\": \"add\", \"path\": \"/elements/new-element\", \"value\": {...}}',\n ' ]',\n '}',\n '```',\n '',\n '### updateDataModel',\n 'Update data model without changing UI:',\n '```json',\n '{',\n ' \"type\": \"updateDataModel\",',\n ' \"surfaceId\": \"existing_surface_id\",',\n ' \"data\": { ... }',\n '}',\n '```',\n '',\n '### deleteSurface',\n 'Remove a UI surface:',\n '```json',\n '{',\n ' \"type\": \"deleteSurface\",',\n ' \"surfaceId\": \"surface_to_delete\"',\n '}',\n '```',\n '',\n '## Available Components',\n '',\n ];\n\n // 组件文档\n for (const [compName, doc] of Object.entries(components)) {\n lines.push(`### ${compName}`);\n lines.push(doc.description);\n if (doc.hasChildren) {\n lines.push('*This component can have children.*');\n }\n lines.push('');\n lines.push('**Props:**');\n for (const [propName, propDesc] of Object.entries(doc.props)) {\n lines.push(`- \\`${propName}\\`: ${propDesc}`);\n }\n lines.push('');\n }\n\n // Actions\n lines.push('## Available Actions');\n lines.push('');\n for (const [actionName, def] of Object.entries(actions)) {\n lines.push(`- \\`${actionName}\\`: ${def.description}`);\n }\n lines.push('');\n\n // 示例\n if (includeExample) {\n lines.push('## Examples');\n lines.push('');\n \n lines.push('### 1. Create a form surface:');\n lines.push('```json');\n lines.push(JSON.stringify({\n type: 'createSurface',\n surfaceId: 'user_form_1',\n ui: {\n root: 'form_card',\n elements: {\n form_card: {\n key: 'form_card',\n type: 'Card',\n props: { title: 'User Form' },\n children: ['name_field', 'submit_btn'],\n },\n name_field: {\n key: 'name_field',\n type: 'TextField',\n props: { label: 'Name', valuePath: 'user.name' },\n },\n submit_btn: {\n key: 'submit_btn',\n type: 'Button',\n props: { children: 'Submit', theme: 'primary', action: 'submit' },\n },\n },\n },\n data: { user: { name: '' } },\n }, null, 2));\n lines.push('```');\n lines.push('');\n \n lines.push('### 2. Update existing surface with JSON Patch:');\n lines.push('Add a status card and update the form title:');\n lines.push('```json');\n lines.push(JSON.stringify({\n type: 'updateComponents',\n surfaceId: 'user_form_1',\n patch: [\n {\n op: 'replace',\n path: '/elements/form_card/props/title',\n value: 'Updated User Form'\n },\n {\n op: 'add',\n path: '/elements/status_card',\n value: {\n key: 'status_card',\n type: 'Card',\n props: { \n title: 'Status',\n description: 'Form is ready for submission'\n }\n }\n },\n {\n op: 'add',\n path: '/elements/form_card/children/0',\n value: 'status_card'\n }\n ]\n }, null, 2));\n lines.push('```');\n lines.push('');\n \n lines.push('### 3. Update data model:');\n lines.push('```json');\n lines.push(JSON.stringify({\n type: 'updateDataModel',\n surfaceId: 'user_form_1',\n data: { \n user: { name: 'John Doe' },\n formStatus: 'ready'\n }\n }, null, 2));\n lines.push('```');\n }\n\n return lines.join('\\n');\n}\n"],"names":["tdesignCatalog","createCatalog","name","components","Button","props","z","object","label","string","optional","children","variant","nullable","theme","size","disabled","loading","block","action","union","params","record","any","description","Input","value","placeholder","type","clearable","maxlength","number","showLimitNumber","TextField","valuePath","required","helperText","Text","content","color","weight","Card","title","bordered","shadow","hasChildren","Row","gutter","justify","align","Col","span","min","max","offset","Space","direction","Column","gap","Divider","layout","dashed","actions","submit","reset","cancel","validation","createCustomCatalog","customConfig","tdesignComponents","tdesignActions","_objectSpread","tdesignComponentList","componentNames","tdesignActionList","actionNames","BUILTIN_COMPONENT_DOCS","disabledPath","zodSchemaToPropsDoc","schema","result","shape","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray","key","zodTypeToString","ZodNullable","concat","unwrap","ZodOptional","ZodEnum","values","options","map","v","join","ZodUnion","_def","o","ZodString","ZodNumber","ZodBoolean","ZodObject","ZodArray","normalizeComponentDoc","doc","generateCatalogPrompt","arguments","undefined","_options$name","_options$components","_options$actions","_options$includeExamp","includeExample","_options$templateMode","templateMode","customTemplate","mergedComponents","allComponents","_i2","_Object$entries2","_Object$entries2$_i","builtinActions","allActions","generateA2UIPrompt","lines","_i3","_Object$entries3","_Object$entries3$_i","push","_i4","_Object$entries4","_Object$entries4$_i","propName","propDesc","_i5","_Object$entries5","_Object$entries5$_i","def","JSON","stringify","root","elements","main_card","form_layout","name_field","email_field","button_group","submit_btn","form","reset_btn","data","user","email","dashboard","header","status_text","content_row","left_col","right_col","main_content","content_text","sidebar_card","action_buttons","refresh_btn","export_btn","lastUpdated","Date","toISOString","settings_form","form_fields","enable_notifications","save_btn","settings","notifications","emailDisabled","context","_context$includeExamp","_i6","_Object$entries6","_Object$entries6$_i","compName","_i7","_Object$entries7","_Object$entries7$_i","_i8","_Object$entries8","_Object$entries8$_i","actionName","surfaceId","ui","form_card","patch","op","path","formStatus"],"mappings":"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BAAA,EACA,mBAAA,EACA,iDAAA,EACA,IAAA,EACA,KAAA,EACA,EAAA,EACA,+BAAA,EACA,oDAAA,EACA,SAAA,EACA,qFAAA,EACA,KAAA,EACA,EAAA,EACA,4BAAA,EACA,6CAAA,EACA,SAAA,EACA,uGAAA,EACA,KAAA,EACA,EAAA,EACA,yBAAA,EACA,uDAAA,EACA,SAAA,EACA,kFAAA,EACA,KAAA,EACA,EAAA,EACA,oBAAA,EACA,uEAAA,EACA,SAAA,EACA,kDAAA,EACA,KAAA,EACA,EAAA,EACA,uBAAA,EACA,0CAAA,EACA,SAAA,EACA,mEAAA,EACA,KAAA,EACA,EAAA,EACA,2CAAA,EACA,uDAAA,EACA,SAAA,EACA,GAAA,EACA,6BAAA,EACA,qCAAA,EACA,4CAAA,EACA,cAAA,EACA,OAAA,EACA,oBAAA,EACA,wCAAA,EACA,kBAAA,EACA,+BAAA,EACA,yBAAA,EACA,oBAAA,EACA,qCAAA,EACA,6DAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,OAAA,EACA,wBAAA,EACA,oDAAA,EACA,oDAAA,EACA,OAAA,EACA,KAAA,EACA,GAAA,EACA,KAAA,EACA,EAAA,EACA,6CAAA,EACA,EAAA,EACA,uEAAA,EACA,EAAA,EACA,mBAAA,EACA,gDAAA,EACA,SAAA,EACA,GAAA,EACA,4BAAA,EACA,qCAAA,EACA,WAAA,EACA,2BAAA,EACA,yBAAA,EACA,MAAA,EACA,mBAAA,EACA,GAAA,EACA,KAAA,EACA,EAAA,EACA,sBAAA,EACA,+EAAA,EACA,SAAA,EACA,GAAA,EACA,+BAAA,EACA,uCAAA,EACA,cAAA,EACA,oEAAA,EACA,KAAA,EACA,GAAA,EACA,KAAA,EACA,EAAA,EACA,qBAAA,EACA,wCAAA,EACA,SAAA,EACA,GAAA,EACA,8BAAA,EACA,uCAAA,EACA,mBAAA,EACA,GAAA,EACA,KAAA,EACA,EAAA,EACA,mBAAA,EACA,sBAAA,EACA,SAAA,EACA,GAAA,EACA,4BAAA,EACA,oCAAA,EACA,GAAA,EACA,KAAA,EACA,EAAA,EACA,yBAA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"}
|
|
@@ -44,6 +44,11 @@ export interface ActionProviderProps {
|
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Provider for action execution
|
|
47
|
+
*
|
|
48
|
+
* 性能优化:
|
|
49
|
+
* - execute 函数使用 DataStore 延迟读取 data,避免 data 变化导致函数重建
|
|
50
|
+
* - handlers 和 navigate 通过 ref 访问,保持 execute 引用稳定
|
|
51
|
+
* - Context value 只在必要时更新
|
|
47
52
|
*/
|
|
48
53
|
export declare function ActionProvider({ handlers: initialHandlers, navigate, children, }: ActionProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
49
54
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.5
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -8,10 +8,18 @@ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
|
8
8
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
9
9
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
10
10
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
11
|
-
import React, { createContext, useState, useCallback, useMemo, useContext } from 'react';
|
|
11
|
+
import React, { createContext, useState, useRef, useCallback, useMemo, useContext } from 'react';
|
|
12
12
|
import { executeAction, resolveAction } from '@json-render/core';
|
|
13
|
-
import {
|
|
13
|
+
import { useDataStore } from './data.js';
|
|
14
|
+
import { useStableCallback } from './store.js';
|
|
14
15
|
import '@babel/runtime/helpers/typeof';
|
|
16
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
17
|
+
import '@babel/runtime/helpers/createClass';
|
|
18
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
19
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
20
|
+
import '@babel/runtime/helpers/inherits';
|
|
21
|
+
import '../../../../_chunks/dep-16520c2b.js';
|
|
22
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
15
23
|
|
|
16
24
|
"use client";
|
|
17
25
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -22,9 +30,7 @@ function ActionProvider(_ref) {
|
|
|
22
30
|
initialHandlers = _ref$handlers === void 0 ? {} : _ref$handlers,
|
|
23
31
|
navigate = _ref.navigate,
|
|
24
32
|
children = _ref.children;
|
|
25
|
-
var
|
|
26
|
-
data = _useData.data,
|
|
27
|
-
set = _useData.set;
|
|
33
|
+
var dataStore = useDataStore();
|
|
28
34
|
var _useState = useState(initialHandlers),
|
|
29
35
|
_useState2 = _slicedToArray(_useState, 2),
|
|
30
36
|
handlers = _useState2[0],
|
|
@@ -37,19 +43,33 @@ function ActionProvider(_ref) {
|
|
|
37
43
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
38
44
|
pendingConfirmation = _useState6[0],
|
|
39
45
|
setPendingConfirmation = _useState6[1];
|
|
46
|
+
var storeRef = useRef(dataStore);
|
|
47
|
+
storeRef.current = dataStore;
|
|
48
|
+
var handlersRef = useRef(handlers);
|
|
49
|
+
handlersRef.current = handlers;
|
|
50
|
+
var navigateRef = useRef(navigate);
|
|
51
|
+
navigateRef.current = navigate;
|
|
40
52
|
var registerHandler = useCallback(function (name, handler) {
|
|
41
53
|
setHandlers(function (prev) {
|
|
42
54
|
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, handler));
|
|
43
55
|
});
|
|
44
56
|
}, []);
|
|
45
|
-
var
|
|
57
|
+
var executeRef = useRef();
|
|
58
|
+
var execute = useStableCallback(/*#__PURE__*/function () {
|
|
46
59
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(action) {
|
|
47
|
-
var resolved, handler;
|
|
60
|
+
var store, data, setData, currentHandlers, currentNavigate, resolved, handler;
|
|
48
61
|
return _regeneratorRuntime.wrap(function (_context4) {
|
|
49
62
|
while (1) switch (_context4.prev = _context4.next) {
|
|
50
63
|
case 0:
|
|
64
|
+
store = storeRef.current;
|
|
65
|
+
data = store.getData();
|
|
66
|
+
setData = function setData(path, value2) {
|
|
67
|
+
return store.setByPath(path, value2);
|
|
68
|
+
};
|
|
69
|
+
currentHandlers = handlersRef.current;
|
|
70
|
+
currentNavigate = navigateRef.current;
|
|
51
71
|
resolved = resolveAction(action, data);
|
|
52
|
-
handler =
|
|
72
|
+
handler = currentHandlers[resolved.name];
|
|
53
73
|
if (handler) {
|
|
54
74
|
_context4.next = 1;
|
|
55
75
|
break;
|
|
@@ -86,10 +106,11 @@ function ActionProvider(_ref) {
|
|
|
86
106
|
return executeAction({
|
|
87
107
|
action: resolved,
|
|
88
108
|
handler: handler,
|
|
89
|
-
setData:
|
|
90
|
-
navigate:
|
|
109
|
+
setData: setData,
|
|
110
|
+
navigate: currentNavigate,
|
|
91
111
|
executeAction: function () {
|
|
92
112
|
var _executeAction = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(name) {
|
|
113
|
+
var _executeRef$current;
|
|
93
114
|
var subAction;
|
|
94
115
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
95
116
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -98,7 +119,7 @@ function ActionProvider(_ref) {
|
|
|
98
119
|
name: name
|
|
99
120
|
};
|
|
100
121
|
_context.next = 1;
|
|
101
|
-
return
|
|
122
|
+
return (_executeRef$current = executeRef.current) === null || _executeRef$current === void 0 ? void 0 : _executeRef$current.call(executeRef, subAction);
|
|
102
123
|
case 1:
|
|
103
124
|
case "end":
|
|
104
125
|
return _context.stop();
|
|
@@ -134,10 +155,11 @@ function ActionProvider(_ref) {
|
|
|
134
155
|
return executeAction({
|
|
135
156
|
action: resolved,
|
|
136
157
|
handler: handler,
|
|
137
|
-
setData:
|
|
138
|
-
navigate:
|
|
158
|
+
setData: setData,
|
|
159
|
+
navigate: currentNavigate,
|
|
139
160
|
executeAction: function () {
|
|
140
161
|
var _executeAction2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(name) {
|
|
162
|
+
var _executeRef$current2;
|
|
141
163
|
var subAction;
|
|
142
164
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
143
165
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -146,7 +168,7 @@ function ActionProvider(_ref) {
|
|
|
146
168
|
name: name
|
|
147
169
|
};
|
|
148
170
|
_context3.next = 1;
|
|
149
|
-
return
|
|
171
|
+
return (_executeRef$current2 = executeRef.current) === null || _executeRef$current2 === void 0 ? void 0 : _executeRef$current2.call(executeRef, subAction);
|
|
150
172
|
case 1:
|
|
151
173
|
case "end":
|
|
152
174
|
return _context3.stop();
|
|
@@ -176,7 +198,8 @@ function ActionProvider(_ref) {
|
|
|
176
198
|
return function (_x) {
|
|
177
199
|
return _ref2.apply(this, arguments);
|
|
178
200
|
};
|
|
179
|
-
}()
|
|
201
|
+
}());
|
|
202
|
+
executeRef.current = execute;
|
|
180
203
|
var confirm = useCallback(function () {
|
|
181
204
|
pendingConfirmation === null || pendingConfirmation === void 0 || pendingConfirmation.resolve();
|
|
182
205
|
}, [pendingConfirmation]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/actions.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport {\n resolveAction,\n executeAction,\n type Action,\n type ActionHandler,\n type ActionConfirm,\n type ResolvedAction,\n} from \"@json-render/core\";\nimport { useData } from \"./data\";\n\n/**\n * Pending confirmation state\n */\nexport interface PendingConfirmation {\n /** The resolved action */\n action: ResolvedAction;\n /** The action handler */\n handler: ActionHandler;\n /** Resolve callback */\n resolve: () => void;\n /** Reject callback */\n reject: () => void;\n}\n\n/**\n * Action context value\n */\nexport interface ActionContextValue {\n /** Registered action handlers */\n handlers: Record<string, ActionHandler>;\n /** Currently loading action names */\n loadingActions: Set<string>;\n /** Pending confirmation dialog */\n pendingConfirmation: PendingConfirmation | null;\n /** Execute an action */\n execute: (action: Action) => Promise<void>;\n /** Confirm the pending action */\n confirm: () => void;\n /** Cancel the pending action */\n cancel: () => void;\n /** Register an action handler */\n registerHandler: (name: string, handler: ActionHandler) => void;\n}\n\nconst ActionContext = createContext<ActionContextValue | null>(null);\n\n/**\n * Props for ActionProvider\n */\nexport interface ActionProviderProps {\n /** Initial action handlers */\n handlers?: Record<string, ActionHandler>;\n /** Navigation function */\n navigate?: (path: string) => void;\n children: ReactNode;\n}\n\n/**\n * Provider for action execution\n */\nexport function ActionProvider({\n handlers: initialHandlers = {},\n navigate,\n children,\n}: ActionProviderProps) {\n const { data, set } = useData();\n const [handlers, setHandlers] =\n useState<Record<string, ActionHandler>>(initialHandlers);\n const [loadingActions, setLoadingActions] = useState<Set<string>>(new Set());\n const [pendingConfirmation, setPendingConfirmation] =\n useState<PendingConfirmation | null>(null);\n\n const registerHandler = useCallback(\n (name: string, handler: ActionHandler) => {\n setHandlers((prev) => ({ ...prev, [name]: handler }));\n },\n [],\n );\n\n const execute = useCallback(\n async (action: Action) => {\n const resolved = resolveAction(action, data);\n const handler = handlers[resolved.name];\n\n if (!handler) {\n console.warn(`No handler registered for action: ${resolved.name}`);\n return;\n }\n\n // If confirmation is required, show dialog\n if (resolved.confirm) {\n return new Promise<void>((resolve, reject) => {\n setPendingConfirmation({\n action: resolved,\n handler,\n resolve: () => {\n setPendingConfirmation(null);\n resolve();\n },\n reject: () => {\n setPendingConfirmation(null);\n reject(new Error(\"Action cancelled\"));\n },\n });\n }).then(async () => {\n setLoadingActions((prev) => new Set(prev).add(resolved.name));\n try {\n await executeAction({\n action: resolved,\n handler,\n setData: set,\n navigate,\n executeAction: async (name) => {\n const subAction: Action = { name };\n await execute(subAction);\n },\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.name);\n return next;\n });\n }\n });\n }\n\n // Execute immediately\n setLoadingActions((prev) => new Set(prev).add(resolved.name));\n try {\n await executeAction({\n action: resolved,\n handler,\n setData: set,\n navigate,\n executeAction: async (name) => {\n const subAction: Action = { name };\n await execute(subAction);\n },\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.name);\n return next;\n });\n }\n },\n [data, handlers, set, navigate],\n );\n\n const confirm = useCallback(() => {\n pendingConfirmation?.resolve();\n }, [pendingConfirmation]);\n\n const cancel = useCallback(() => {\n pendingConfirmation?.reject();\n }, [pendingConfirmation]);\n\n const value = useMemo<ActionContextValue>(\n () => ({\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler,\n }),\n [\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler,\n ],\n );\n\n return (\n <ActionContext.Provider value={value}>{children}</ActionContext.Provider>\n );\n}\n\n/**\n * Hook to access action context\n */\nexport function useActions(): ActionContextValue {\n const ctx = useContext(ActionContext);\n if (!ctx) {\n throw new Error(\"useActions must be used within an ActionProvider\");\n }\n return ctx;\n}\n\n/**\n * Hook to execute an action\n */\nexport function useAction(action: Action): {\n execute: () => Promise<void>;\n isLoading: boolean;\n} {\n const { execute, loadingActions } = useActions();\n const isLoading = loadingActions.has(action.name);\n\n const executeAction = useCallback(() => execute(action), [execute, action]);\n\n return { execute: executeAction, isLoading };\n}\n\n/**\n * Props for ConfirmDialog component\n */\nexport interface ConfirmDialogProps {\n /** The confirmation config */\n confirm: ActionConfirm;\n /** Called when confirmed */\n onConfirm: () => void;\n /** Called when cancelled */\n onCancel: () => void;\n}\n\n/**\n * Default confirmation dialog component\n */\nexport function ConfirmDialog({\n confirm,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) {\n const isDanger = confirm.variant === \"danger\";\n\n return (\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 50,\n }}\n onClick={onCancel}\n >\n <div\n style={{\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n padding: \"24px\",\n maxWidth: \"400px\",\n width: \"100%\",\n boxShadow: \"0 20px 25px -5px rgba(0, 0, 0, 0.1)\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <h3\n style={{\n margin: \"0 0 8px 0\",\n fontSize: \"18px\",\n fontWeight: 600,\n }}\n >\n {confirm.title}\n </h3>\n <p\n style={{\n margin: \"0 0 24px 0\",\n color: \"#6b7280\",\n }}\n >\n {confirm.message}\n </p>\n <div\n style={{\n display: \"flex\",\n gap: \"12px\",\n justifyContent: \"flex-end\",\n }}\n >\n <button\n onClick={onCancel}\n style={{\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"1px solid #d1d5db\",\n backgroundColor: \"white\",\n cursor: \"pointer\",\n }}\n >\n {confirm.cancelLabel ?? \"Cancel\"}\n </button>\n <button\n onClick={onConfirm}\n style={{\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"none\",\n backgroundColor: isDanger ? \"#dc2626\" : \"#3b82f6\",\n color: \"white\",\n cursor: \"pointer\",\n }}\n >\n {confirm.confirmLabel ?? \"Confirm\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ActionContext","createContext","ActionProvider","_ref","_ref$handlers","handlers","initialHandlers","navigate","children","_useData","useData","data","set","_useState","useState","_useState2","_slicedToArray","setHandlers","_useState3","Set","_useState4","loadingActions","setLoadingActions","_useState5","_useState6","pendingConfirmation","setPendingConfirmation","registerHandler","useCallback","name","handler","prev","execute","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","action","resolved","wrap","_context4","next","resolveAction","console","warn","concat","abrupt","confirm","Promise","resolve","reject","Error","then","_callee2","_context2","add","executeAction","setData","_executeAction","_callee","subAction","_context","stop","_x2","finish","_executeAction2","_callee3","_context3","_x3","_x","cancel","value","useMemo","React","createElement","Provider","useActions","ctx","useContext","useAction","_useActions","isLoading","has","ConfirmDialog","_ref4","_confirm$cancelLabel","_confirm$confirmLabel","onConfirm","onCancel","isDanger","variant","style","position","inset","backgroundColor","display","alignItems","justifyContent","zIndex","onClick","borderRadius","padding","maxWidth","width","boxShadow","stopPropagation","margin","fontSize","fontWeight","title","color","message","gap","border","cursor","cancelLabel","confirmLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actions.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/actions.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\nimport {\n resolveAction,\n executeAction,\n type Action,\n type ActionHandler,\n type ActionConfirm,\n type ResolvedAction,\n} from \"@json-render/core\";\nimport { useDataStore, type DataStore } from \"./data\";\nimport { useStableCallback } from \"./store\";\n\n/**\n * Pending confirmation state\n */\nexport interface PendingConfirmation {\n /** The resolved action */\n action: ResolvedAction;\n /** The action handler */\n handler: ActionHandler;\n /** Resolve callback */\n resolve: () => void;\n /** Reject callback */\n reject: () => void;\n}\n\n/**\n * Action context value\n */\nexport interface ActionContextValue {\n /** Registered action handlers */\n handlers: Record<string, ActionHandler>;\n /** Currently loading action names */\n loadingActions: Set<string>;\n /** Pending confirmation dialog */\n pendingConfirmation: PendingConfirmation | null;\n /** Execute an action */\n execute: (action: Action) => Promise<void>;\n /** Confirm the pending action */\n confirm: () => void;\n /** Cancel the pending action */\n cancel: () => void;\n /** Register an action handler */\n registerHandler: (name: string, handler: ActionHandler) => void;\n}\n\nconst ActionContext = createContext<ActionContextValue | null>(null);\n\n/**\n * Props for ActionProvider\n */\nexport interface ActionProviderProps {\n /** Initial action handlers */\n handlers?: Record<string, ActionHandler>;\n /** Navigation function */\n navigate?: (path: string) => void;\n children: ReactNode;\n}\n\n/**\n * Provider for action execution\n * \n * 性能优化:\n * - execute 函数使用 DataStore 延迟读取 data,避免 data 变化导致函数重建\n * - handlers 和 navigate 通过 ref 访问,保持 execute 引用稳定\n * - Context value 只在必要时更新\n */\nexport function ActionProvider({\n handlers: initialHandlers = {},\n navigate,\n children,\n}: ActionProviderProps) {\n // 获取 DataStore 实例,不订阅状态变化\n const dataStore = useDataStore();\n \n const [handlers, setHandlers] =\n useState<Record<string, ActionHandler>>(initialHandlers);\n const [loadingActions, setLoadingActions] = useState<Set<string>>(new Set());\n const [pendingConfirmation, setPendingConfirmation] =\n useState<PendingConfirmation | null>(null);\n\n // 使用 ref 存储依赖,保持 execute 函数引用稳定\n const storeRef = useRef<DataStore>(dataStore);\n storeRef.current = dataStore;\n \n const handlersRef = useRef(handlers);\n handlersRef.current = handlers;\n \n const navigateRef = useRef(navigate);\n navigateRef.current = navigate;\n\n const registerHandler = useCallback(\n (name: string, handler: ActionHandler) => {\n setHandlers((prev) => ({ ...prev, [name]: handler }));\n },\n [],\n );\n\n // executeRef 用于递归调用\n const executeRef = useRef<(action: Action) => Promise<void>>();\n\n // execute 函数引用稳定,通过 ref 访问最新依赖\n const execute = useStableCallback(async (action: Action) => {\n const store = storeRef.current;\n const data = store.getData();\n const setData = (path: string, value: unknown) => store.setByPath(path, value);\n const currentHandlers = handlersRef.current;\n const currentNavigate = navigateRef.current;\n\n const resolved = resolveAction(action, data);\n const handler = currentHandlers[resolved.name];\n\n if (!handler) {\n console.warn(`No handler registered for action: ${resolved.name}`);\n return;\n }\n\n // If confirmation is required, show dialog\n if (resolved.confirm) {\n return new Promise<void>((resolve, reject) => {\n setPendingConfirmation({\n action: resolved,\n handler,\n resolve: () => {\n setPendingConfirmation(null);\n resolve();\n },\n reject: () => {\n setPendingConfirmation(null);\n reject(new Error(\"Action cancelled\"));\n },\n });\n }).then(async () => {\n setLoadingActions((prev) => new Set(prev).add(resolved.name));\n try {\n await executeAction({\n action: resolved,\n handler,\n setData,\n navigate: currentNavigate,\n executeAction: async (name) => {\n const subAction: Action = { name };\n await executeRef.current?.(subAction);\n },\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.name);\n return next;\n });\n }\n });\n }\n\n // Execute immediately\n setLoadingActions((prev) => new Set(prev).add(resolved.name));\n try {\n await executeAction({\n action: resolved,\n handler,\n setData,\n navigate: currentNavigate,\n executeAction: async (name) => {\n const subAction: Action = { name };\n await executeRef.current?.(subAction);\n },\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.name);\n return next;\n });\n }\n });\n\n executeRef.current = execute;\n\n const confirm = useCallback(() => {\n pendingConfirmation?.resolve();\n }, [pendingConfirmation]);\n\n const cancel = useCallback(() => {\n pendingConfirmation?.reject();\n }, [pendingConfirmation]);\n\n const value = useMemo<ActionContextValue>(\n () => ({\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler,\n }),\n [\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler,\n ],\n );\n\n return (\n <ActionContext.Provider value={value}>{children}</ActionContext.Provider>\n );\n}\n\n/**\n * Hook to access action context\n */\nexport function useActions(): ActionContextValue {\n const ctx = useContext(ActionContext);\n if (!ctx) {\n throw new Error(\"useActions must be used within an ActionProvider\");\n }\n return ctx;\n}\n\n/**\n * Hook to execute an action\n */\nexport function useAction(action: Action): {\n execute: () => Promise<void>;\n isLoading: boolean;\n} {\n const { execute, loadingActions } = useActions();\n const isLoading = loadingActions.has(action.name);\n\n const executeAction = useCallback(() => execute(action), [execute, action]);\n\n return { execute: executeAction, isLoading };\n}\n\n/**\n * Props for ConfirmDialog component\n */\nexport interface ConfirmDialogProps {\n /** The confirmation config */\n confirm: ActionConfirm;\n /** Called when confirmed */\n onConfirm: () => void;\n /** Called when cancelled */\n onCancel: () => void;\n}\n\n/**\n * Default confirmation dialog component\n */\nexport function ConfirmDialog({\n confirm,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) {\n const isDanger = confirm.variant === \"danger\";\n\n return (\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 50,\n }}\n onClick={onCancel}\n >\n <div\n style={{\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n padding: \"24px\",\n maxWidth: \"400px\",\n width: \"100%\",\n boxShadow: \"0 20px 25px -5px rgba(0, 0, 0, 0.1)\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <h3\n style={{\n margin: \"0 0 8px 0\",\n fontSize: \"18px\",\n fontWeight: 600,\n }}\n >\n {confirm.title}\n </h3>\n <p\n style={{\n margin: \"0 0 24px 0\",\n color: \"#6b7280\",\n }}\n >\n {confirm.message}\n </p>\n <div\n style={{\n display: \"flex\",\n gap: \"12px\",\n justifyContent: \"flex-end\",\n }}\n >\n <button\n onClick={onCancel}\n style={{\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"1px solid #d1d5db\",\n backgroundColor: \"white\",\n cursor: \"pointer\",\n }}\n >\n {confirm.cancelLabel ?? \"Cancel\"}\n </button>\n <button\n onClick={onConfirm}\n style={{\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"none\",\n backgroundColor: isDanger ? \"#dc2626\" : \"#3b82f6\",\n color: \"white\",\n cursor: \"pointer\",\n }}\n >\n {confirm.confirmLabel ?? \"Confirm\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ActionContext","createContext","ActionProvider","_ref","_ref$handlers","handlers","initialHandlers","navigate","children","dataStore","useDataStore","_useState","useState","_useState2","_slicedToArray","setHandlers","_useState3","Set","_useState4","loadingActions","setLoadingActions","_useState5","_useState6","pendingConfirmation","setPendingConfirmation","storeRef","useRef","current","handlersRef","navigateRef","registerHandler","useCallback","name","handler","prev","executeRef","execute","useStableCallback","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","action","store","data","setData","currentHandlers","currentNavigate","resolved","wrap","_context4","next","getData","path","value","setByPath","resolveAction","console","warn","concat","abrupt","confirm","Promise","resolve","reject","Error","then","_callee2","_context2","add","executeAction","_executeAction","_callee","_executeRef$current","subAction","_context","call","stop","_x2","finish","_executeAction2","_callee3","_executeRef$current2","_context3","_x3","_x","cancel","useMemo","React","createElement","Provider","useActions","ctx","useContext","useAction","_useActions","isLoading","has","ConfirmDialog","_ref4","_confirm$cancelLabel","_confirm$confirmLabel","onConfirm","onCancel","isDanger","variant","style","position","inset","backgroundColor","display","alignItems","justifyContent","zIndex","onClick","borderRadius","padding","maxWidth","width","boxShadow","stopPropagation","margin","fontSize","fontWeight","title","color","message","gap","border","cursor","cancelLabel","confirmLabel"],"mappings":"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"}
|
|
@@ -1,7 +1,63 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type DataModel, type AuthState } from "@json-render/core";
|
|
3
|
+
import { Store } from "./store";
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* DataStore 状态类型
|
|
6
|
+
*/
|
|
7
|
+
export interface DataStoreState {
|
|
8
|
+
/** 数据模型 */
|
|
9
|
+
data: DataModel;
|
|
10
|
+
/** 认证状态 */
|
|
11
|
+
authState?: AuthState;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* DataStore - 管理表单/组件的数据状态
|
|
15
|
+
*
|
|
16
|
+
* 性能优化:
|
|
17
|
+
* - 使用外部 Store 模式,避免 Context 传递整个 data 导致级联重渲染
|
|
18
|
+
* - 支持细粒度订阅:组件只订阅自己需要的路径
|
|
19
|
+
* - 配合 Structural Sharing,通过引用比较判断变化
|
|
20
|
+
*/
|
|
21
|
+
export declare class DataStore extends Store<DataStoreState> {
|
|
22
|
+
private onDataChange?;
|
|
23
|
+
constructor(initialData?: DataModel, authState?: AuthState, onDataChange?: (path: string, value: unknown) => void);
|
|
24
|
+
/**
|
|
25
|
+
* 获取数据模型
|
|
26
|
+
*/
|
|
27
|
+
getData(): DataModel;
|
|
28
|
+
/**
|
|
29
|
+
* 获取认证状态
|
|
30
|
+
*/
|
|
31
|
+
getAuthState(): AuthState | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* 通过路径获取值
|
|
34
|
+
*/
|
|
35
|
+
getByPath(path: string): unknown;
|
|
36
|
+
/**
|
|
37
|
+
* 通过路径设置值(使用 immer 实现 Structural Sharing)
|
|
38
|
+
*/
|
|
39
|
+
setByPath(path: string, value: unknown): void;
|
|
40
|
+
/**
|
|
41
|
+
* 批量更新多个路径
|
|
42
|
+
*/
|
|
43
|
+
updatePaths(updates: Record<string, unknown>): void;
|
|
44
|
+
/**
|
|
45
|
+
* 合并新数据到现有数据
|
|
46
|
+
*/
|
|
47
|
+
mergeData(newData: DataModel): void;
|
|
48
|
+
/**
|
|
49
|
+
* 更新认证状态
|
|
50
|
+
*/
|
|
51
|
+
setAuthState(authState: AuthState | undefined): void;
|
|
52
|
+
/**
|
|
53
|
+
* 设置 onDataChange 回调
|
|
54
|
+
*/
|
|
55
|
+
setOnDataChange(callback: ((path: string, value: unknown) => void) | undefined): void;
|
|
56
|
+
}
|
|
57
|
+
declare const useDataStore: () => DataStore, useDataSelector: <R>(selector: (state: DataStoreState) => R) => R, useDataStoreState: () => DataStoreState;
|
|
58
|
+
export { useDataStore, useDataSelector, useDataStoreState };
|
|
59
|
+
/**
|
|
60
|
+
* Data context value(兼容旧 API)
|
|
5
61
|
*/
|
|
6
62
|
export interface DataContextValue {
|
|
7
63
|
/** The current data model */
|
|
@@ -29,17 +85,53 @@ export interface DataProviderProps {
|
|
|
29
85
|
}
|
|
30
86
|
/**
|
|
31
87
|
* Provider for data model context
|
|
88
|
+
*
|
|
89
|
+
* 性能优化:
|
|
90
|
+
* - 内部使用 DataStore,支持细粒度订阅
|
|
91
|
+
* - 提供兼容旧 API 的 useData() hook
|
|
92
|
+
* - 推荐使用 useDataValue() 进行细粒度订阅
|
|
32
93
|
*/
|
|
33
94
|
export declare function DataProvider({ initialData, authState, onDataChange, children, }: DataProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
34
95
|
/**
|
|
35
|
-
*
|
|
96
|
+
* 获取指定路径的值(细粒度订阅)
|
|
97
|
+
*
|
|
98
|
+
* 性能优化:只有指定路径的值变化时才重渲染
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* const name = useDataValue<string>('/userInfo/name');
|
|
102
|
+
*/
|
|
103
|
+
export declare function useDataValue<T>(path?: string): T | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* 数据绑定 hook(类似 useState 的 API)
|
|
106
|
+
*
|
|
107
|
+
* 返回 [value, setValue] 元组,value 支持细粒度订阅,setValue 引用稳定
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* const [name, setName] = useDataBinding<string>('/userInfo/name');
|
|
36
111
|
*/
|
|
37
|
-
export declare function
|
|
112
|
+
export declare function useDataBinding<T>(path?: string): [T | undefined, (value: T) => void];
|
|
38
113
|
/**
|
|
39
|
-
*
|
|
114
|
+
* 批量更新多个路径
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* const updatePaths = useDataUpdate();
|
|
118
|
+
* updatePaths({ '/name': 'Alice', '/age': 30 });
|
|
40
119
|
*/
|
|
41
|
-
export declare function
|
|
120
|
+
export declare function useDataUpdate(): (updates: Record<string, unknown>) => void;
|
|
42
121
|
/**
|
|
43
|
-
*
|
|
122
|
+
* 获取整个 data 和 authState(订阅所有变化)
|
|
123
|
+
*
|
|
124
|
+
* ⚠️ 警告:此 hook 会订阅整个 data 对象,任何数据变化都会触发重渲染
|
|
125
|
+
* 仅在以下场景使用:
|
|
126
|
+
* - 需要遍历整个 data 对象
|
|
127
|
+
* - 需要同时访问 data 和 authState
|
|
128
|
+
* - ValidationProvider 等基础设施层
|
|
129
|
+
*
|
|
130
|
+
* 普通组件请使用:
|
|
131
|
+
* - useDataValue() - 细粒度订阅
|
|
132
|
+
* - useDataBinding() - 双向绑定
|
|
44
133
|
*/
|
|
45
|
-
export declare function
|
|
134
|
+
export declare function useDataState(): {
|
|
135
|
+
data: DataModel;
|
|
136
|
+
authState?: AuthState;
|
|
137
|
+
};
|