@tdesign-react/chat 1.0.2-alpha.9 → 1.1.0-alpha.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.
- package/es/_chunks/dep-f2051ebd.js +839 -0
- package/es/_chunks/dep-f2051ebd.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/a2ui/A2UIActivityRenderer.d.ts +196 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
- package/es/chat-engine/components/a2ui/containers/index.js +30 -0
- package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/index.d.ts +11 -0
- package/es/chat-engine/components/a2ui/index.js +62 -0
- package/es/chat-engine/components/a2ui/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
- package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
- package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
- package/es/chat-engine/components/a2ui/registry.js +74 -0
- package/es/chat-engine/components/a2ui/registry.js.map +1 -0
- package/es/chat-engine/components/activity/index.js +1 -1
- package/es/chat-engine/components/activity/registry.d.ts +1 -1
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/registry.js.map +1 -1
- package/es/chat-engine/components/activity/render.d.ts +2 -2
- package/es/chat-engine/components/activity/render.js +1 -1
- 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.d.ts +1 -0
- package/es/chat-engine/components/index.js +57 -9
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
- package/es/chat-engine/components/json-render/adapters/index.js +11 -0
- package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
- package/es/chat-engine/components/json-render/catalog/index.js +36 -0
- package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/input.js +36 -0
- package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
- package/es/chat-engine/components/json-render/catalog.js +147 -0
- package/es/chat-engine/components/json-render/catalog.js.map +1 -0
- package/es/chat-engine/components/json-render/config.d.ts +154 -0
- package/es/chat-engine/components/json-render/config.js +36 -0
- package/es/chat-engine/components/json-render/config.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
- package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
- package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
- package/es/chat-engine/components/json-render/contexts/data.js +104 -0
- package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
- package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
- package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
- package/es/chat-engine/components/json-render/engine.d.ts +58 -0
- package/es/chat-engine/components/json-render/engine.js +88 -0
- package/es/chat-engine/components/json-render/engine.js.map +1 -0
- package/es/chat-engine/components/json-render/index.d.ts +34 -0
- package/es/chat-engine/components/json-render/index.js +36 -0
- package/es/chat-engine/components/json-render/index.js.map +1 -0
- package/es/chat-engine/components/json-render/performance.d.ts +91 -0
- package/es/chat-engine/components/json-render/performance.js +135 -0
- package/es/chat-engine/components/json-render/performance.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer.js +124 -0
- package/es/chat-engine/components/json-render/renderer.js.map +1 -0
- package/es/chat-engine/components/json-render/types.d.ts +69 -0
- package/es/chat-engine/components/json-render/types.js +7 -0
- package/es/chat-engine/components/json-render/types.js.map +1 -0
- package/es/chat-engine/components/provider/agent-state.js +39 -2
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +32 -2
- 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.d.ts +1 -1
- package/es/chat-engine/components/toolcall/render.js +33 -4
- 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/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/a2ui/index.js +24 -0
- package/es/chat-engine/core/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
- package/es/chat-engine/core/adapters/agui/event-mapper.js +90 -50
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
- package/es/chat-engine/core/adapters/agui/events.js +34 -34
- package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +22 -2
- package/es/chat-engine/core/adapters/agui/index.js +34 -14
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
- package/es/chat-engine/core/adapters/agui/types.d.ts +57 -56
- package/es/chat-engine/core/adapters/agui/types.js +5 -5
- package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
- package/es/chat-engine/core/adapters/agui/utils.js +23 -4
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
- package/es/chat-engine/core/event-bus/index.d.ts +5 -0
- package/es/chat-engine/core/event-bus/index.js +13 -0
- package/es/chat-engine/core/event-bus/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/types.d.ts +230 -0
- package/es/chat-engine/core/event-bus/types.js +32 -0
- package/es/chat-engine/core/event-bus/types.js.map +1 -0
- package/es/chat-engine/core/index.d.ts +16 -1
- package/es/chat-engine/core/index.js +174 -17
- 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 +17 -15
- 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 +2 -2
- package/es/chat-engine/core/store/message.js.map +1 -1
- package/es/chat-engine/core/store/model.js +1 -1
- package/es/chat-engine/core/store/reactiveState.js +1 -1
- package/es/chat-engine/core/type.d.ts +18 -2
- 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/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
- package/es/chat-engine/hooks/a2ui/index.js +19 -0
- package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
- package/es/chat-engine/hooks/index.js +38 -4
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
- package/es/chat-engine/hooks/useAgentState.js +39 -2
- 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.d.ts +3 -3
- package/es/chat-engine/hooks/useChat.js +40 -2
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
- package/es/chat-engine/index.d.ts +1 -3
- package/es/chat-engine/index.js +30 -8
- 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/docs/react-best-practice.d.ts +13 -0
- package/es/chatbot/index.js +1 -1
- package/es/index.js +27 -5
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _typeof from '@babel/runtime/helpers/typeof';
|
|
8
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
9
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
10
|
+
|
|
11
|
+
var _excluded = ["id", "component", "weight", "child", "children"];
|
|
12
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
13
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15
|
+
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; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var TYPE_MAPPING = {
|
|
18
|
+
Text: "Text",
|
|
19
|
+
Image: "Image",
|
|
20
|
+
Icon: "Icon",
|
|
21
|
+
Video: "Video",
|
|
22
|
+
AudioPlayer: "AudioPlayer",
|
|
23
|
+
Button: "Button",
|
|
24
|
+
TextField: "TextField",
|
|
25
|
+
CheckBox: "Checkbox",
|
|
26
|
+
ChoicePicker: "Select",
|
|
27
|
+
Slider: "Slider",
|
|
28
|
+
DateTimeInput: "DatePicker",
|
|
29
|
+
Card: "Card",
|
|
30
|
+
Row: "Row",
|
|
31
|
+
Column: "Column",
|
|
32
|
+
Col: "Col",
|
|
33
|
+
List: "List",
|
|
34
|
+
Tabs: "Tabs",
|
|
35
|
+
Divider: "Divider",
|
|
36
|
+
Modal: "Dialog"
|
|
37
|
+
};
|
|
38
|
+
function mapProps(component) {
|
|
39
|
+
var id = component.id,
|
|
40
|
+
componentType = component.component,
|
|
41
|
+
weight = component.weight,
|
|
42
|
+
child = component.child,
|
|
43
|
+
children = component.children,
|
|
44
|
+
restProps = _objectWithoutProperties(component, _excluded);
|
|
45
|
+
var mappedProps = _objectSpread({}, restProps);
|
|
46
|
+
if (weight !== void 0) {
|
|
47
|
+
mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
|
|
48
|
+
flexGrow: weight
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
switch (componentType) {
|
|
52
|
+
case "Button":
|
|
53
|
+
if (mappedProps.text && typeof mappedProps.text === "string") {
|
|
54
|
+
mappedProps.label = mappedProps.text;
|
|
55
|
+
delete mappedProps.text;
|
|
56
|
+
}
|
|
57
|
+
if (mappedProps.action && _typeof(mappedProps.action) === "object") {
|
|
58
|
+
var a2uiAction = mappedProps.action;
|
|
59
|
+
mappedProps.action = {
|
|
60
|
+
name: a2uiAction.name,
|
|
61
|
+
params: a2uiAction.context || {}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case "TextField":
|
|
66
|
+
if (mappedProps.text && _typeof(mappedProps.text) === "object" && mappedProps.text.path) {
|
|
67
|
+
mappedProps.valuePath = mappedProps.text.path;
|
|
68
|
+
delete mappedProps.text;
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case "CheckBox":
|
|
72
|
+
if (mappedProps.checked && _typeof(mappedProps.checked) === "object" && mappedProps.checked.path) {
|
|
73
|
+
mappedProps.valuePath = mappedProps.checked.path;
|
|
74
|
+
delete mappedProps.checked;
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
case "Column":
|
|
78
|
+
if (mappedProps.gap !== void 0) {
|
|
79
|
+
mappedProps.size = mappedProps.gap;
|
|
80
|
+
mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
|
|
81
|
+
display: "flex",
|
|
82
|
+
flexDirection: "column",
|
|
83
|
+
gap: "".concat(mappedProps.gap, "px")
|
|
84
|
+
});
|
|
85
|
+
delete mappedProps.gap;
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
case "Row":
|
|
89
|
+
if (mappedProps.gap !== void 0) {
|
|
90
|
+
mappedProps.gutter = mappedProps.gap;
|
|
91
|
+
mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
|
|
92
|
+
display: "flex",
|
|
93
|
+
flexDirection: "row",
|
|
94
|
+
gap: "".concat(mappedProps.gap, "px")
|
|
95
|
+
});
|
|
96
|
+
delete mappedProps.gap;
|
|
97
|
+
}
|
|
98
|
+
if (mappedProps.distribution) {
|
|
99
|
+
var distributionMap = {
|
|
100
|
+
start: "start",
|
|
101
|
+
end: "end",
|
|
102
|
+
center: "center",
|
|
103
|
+
"space-between": "space-between",
|
|
104
|
+
"space-around": "space-around"
|
|
105
|
+
};
|
|
106
|
+
mappedProps.justify = distributionMap[mappedProps.distribution] || mappedProps.distribution;
|
|
107
|
+
mappedProps.style = _objectSpread(_objectSpread({}, mappedProps.style), {}, {
|
|
108
|
+
justifyContent: mappedProps.distribution === "end" ? "flex-end" : mappedProps.distribution
|
|
109
|
+
});
|
|
110
|
+
delete mappedProps.distribution;
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
if (mappedProps.disabled && _typeof(mappedProps.disabled) === "object" && mappedProps.disabled.path) {
|
|
117
|
+
mappedProps.disabledPath = mappedProps.disabled.path;
|
|
118
|
+
delete mappedProps.disabled;
|
|
119
|
+
}
|
|
120
|
+
return mappedProps;
|
|
121
|
+
}
|
|
122
|
+
function convertComponent(component) {
|
|
123
|
+
var a2uiType = component.component;
|
|
124
|
+
var mappedType = TYPE_MAPPING[a2uiType] || a2uiType;
|
|
125
|
+
var props = mapProps(component);
|
|
126
|
+
var element = {
|
|
127
|
+
key: component.id,
|
|
128
|
+
type: mappedType,
|
|
129
|
+
props: props
|
|
130
|
+
};
|
|
131
|
+
if (component.children) {
|
|
132
|
+
if (Array.isArray(component.children)) {
|
|
133
|
+
element.children = component.children;
|
|
134
|
+
} else if (_typeof(component.children) === "object" && component.children.path) {
|
|
135
|
+
element.props.childrenPath = component.children.path;
|
|
136
|
+
element.props.childTemplate = component.children.componentId;
|
|
137
|
+
}
|
|
138
|
+
} else if (component.child) {
|
|
139
|
+
element.children = [component.child];
|
|
140
|
+
}
|
|
141
|
+
return element;
|
|
142
|
+
}
|
|
143
|
+
function buildSurfaceState(messages) {
|
|
144
|
+
var surfaceState = null;
|
|
145
|
+
var _iterator = _createForOfIteratorHelper(messages),
|
|
146
|
+
_step;
|
|
147
|
+
try {
|
|
148
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
149
|
+
var _surfaceState;
|
|
150
|
+
var msg = _step.value;
|
|
151
|
+
if (msg.createSurface) {
|
|
152
|
+
surfaceState = {
|
|
153
|
+
surfaceId: msg.createSurface.surfaceId,
|
|
154
|
+
catalogId: msg.createSurface.catalogId,
|
|
155
|
+
components: /* @__PURE__ */new Map(),
|
|
156
|
+
dataModel: {}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (msg.updateComponents && surfaceState) {
|
|
160
|
+
var components = msg.updateComponents.components;
|
|
161
|
+
if (Array.isArray(components)) {
|
|
162
|
+
var _iterator2 = _createForOfIteratorHelper(components),
|
|
163
|
+
_step2;
|
|
164
|
+
try {
|
|
165
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
166
|
+
var comp = _step2.value;
|
|
167
|
+
surfaceState.components.set(comp.id, comp);
|
|
168
|
+
}
|
|
169
|
+
} catch (err) {
|
|
170
|
+
_iterator2.e(err);
|
|
171
|
+
} finally {
|
|
172
|
+
_iterator2.f();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (msg.updateDataModel && surfaceState) {
|
|
177
|
+
var _msg$updateDataModel = msg.updateDataModel,
|
|
178
|
+
path = _msg$updateDataModel.path,
|
|
179
|
+
op = _msg$updateDataModel.op,
|
|
180
|
+
value = _msg$updateDataModel.value;
|
|
181
|
+
var operation = op || "replace";
|
|
182
|
+
if (operation === "replace" && (path === "/" || !path)) {
|
|
183
|
+
surfaceState.dataModel = value;
|
|
184
|
+
} else if (operation === "replace" && path) {
|
|
185
|
+
setValueByPath(surfaceState.dataModel, path, value);
|
|
186
|
+
} else if (operation === "add" && path) {
|
|
187
|
+
setValueByPath(surfaceState.dataModel, path, value);
|
|
188
|
+
} else if (operation === "remove" && path) {
|
|
189
|
+
deleteValueByPath(surfaceState.dataModel, path);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (msg.deleteSurface && ((_surfaceState = surfaceState) === null || _surfaceState === void 0 ? void 0 : _surfaceState.surfaceId) === msg.deleteSurface.surfaceId) {
|
|
193
|
+
surfaceState = null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
} catch (err) {
|
|
197
|
+
_iterator.e(err);
|
|
198
|
+
} finally {
|
|
199
|
+
_iterator.f();
|
|
200
|
+
}
|
|
201
|
+
return surfaceState;
|
|
202
|
+
}
|
|
203
|
+
function setValueByPath(obj, path, value) {
|
|
204
|
+
var parts = path.split("/").filter(Boolean);
|
|
205
|
+
var current = obj;
|
|
206
|
+
for (var i = 0; i < parts.length - 1; i++) {
|
|
207
|
+
var key = parts[i];
|
|
208
|
+
var nextKey = parts[i + 1];
|
|
209
|
+
if (!(key in current)) {
|
|
210
|
+
current[key] = /^\d+$/.test(nextKey) ? [] : {};
|
|
211
|
+
}
|
|
212
|
+
current = current[key];
|
|
213
|
+
}
|
|
214
|
+
if (parts.length > 0) {
|
|
215
|
+
current[parts[parts.length - 1]] = value;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function deleteValueByPath(obj, path) {
|
|
219
|
+
var parts = path.split("/").filter(Boolean);
|
|
220
|
+
var current = obj;
|
|
221
|
+
for (var i = 0; i < parts.length - 1; i++) {
|
|
222
|
+
var key = parts[i];
|
|
223
|
+
if (!(key in current)) return;
|
|
224
|
+
current = current[key];
|
|
225
|
+
}
|
|
226
|
+
if (parts.length > 0) {
|
|
227
|
+
var lastKey = parts[parts.length - 1];
|
|
228
|
+
if (Array.isArray(current) && /^\d+$/.test(lastKey)) {
|
|
229
|
+
current.splice(parseInt(lastKey, 10), 1);
|
|
230
|
+
} else {
|
|
231
|
+
delete current[lastKey];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function surfaceStateToSchema(state) {
|
|
236
|
+
var elements = {};
|
|
237
|
+
state.components.forEach(function (component, id) {
|
|
238
|
+
elements[id] = convertComponent(component);
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
root: "root",
|
|
242
|
+
elements: elements,
|
|
243
|
+
data: state.dataModel
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function convertA2UIMessagesToJsonRender(messages) {
|
|
247
|
+
if (!messages || messages.length === 0) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
var surfaceState = buildSurfaceState(messages);
|
|
251
|
+
if (!surfaceState) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
if (!surfaceState.components.has("root")) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
return surfaceStateToSchema(surfaceState);
|
|
258
|
+
}
|
|
259
|
+
function applyA2UIUpdates(schema, components) {
|
|
260
|
+
if (!Array.isArray(components)) {
|
|
261
|
+
return schema;
|
|
262
|
+
}
|
|
263
|
+
var newElements = _objectSpread({}, schema.elements);
|
|
264
|
+
var _iterator3 = _createForOfIteratorHelper(components),
|
|
265
|
+
_step3;
|
|
266
|
+
try {
|
|
267
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
268
|
+
var component = _step3.value;
|
|
269
|
+
newElements[component.id] = convertComponent(component);
|
|
270
|
+
}
|
|
271
|
+
} catch (err) {
|
|
272
|
+
_iterator3.e(err);
|
|
273
|
+
} finally {
|
|
274
|
+
_iterator3.f();
|
|
275
|
+
}
|
|
276
|
+
return _objectSpread(_objectSpread({}, schema), {}, {
|
|
277
|
+
elements: newElements
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
function applyA2UIDataUpdate(schema, path) {
|
|
281
|
+
var op = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "replace";
|
|
282
|
+
var value = arguments.length > 3 ? arguments[3] : undefined;
|
|
283
|
+
var newData = _objectSpread({}, schema.data);
|
|
284
|
+
if (op === "replace" && (path === "/" || !path)) {
|
|
285
|
+
return _objectSpread(_objectSpread({}, schema), {}, {
|
|
286
|
+
data: value
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
if (path) {
|
|
290
|
+
if (op === "remove") {
|
|
291
|
+
deleteValueByPath(newData, path);
|
|
292
|
+
} else {
|
|
293
|
+
setValueByPath(newData, path, value);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return _objectSpread(_objectSpread({}, schema), {}, {
|
|
297
|
+
data: newData
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
var a2uiToJsonrender = {
|
|
301
|
+
convertA2UIMessagesToJsonRender: convertA2UIMessagesToJsonRender,
|
|
302
|
+
applyA2UIUpdates: applyA2UIUpdates,
|
|
303
|
+
applyA2UIDataUpdate: applyA2UIDataUpdate
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
export { applyA2UIDataUpdate, applyA2UIUpdates, convertA2UIMessagesToJsonRender, a2uiToJsonrender as default };
|
|
307
|
+
//# sourceMappingURL=a2ui-to-jsonrender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2ui-to-jsonrender.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.ts"],"sourcesContent":["/**\n * A2UI v0.9 → json-render 适配器\n * 将 A2UI v0.9 协议转换为 json-render Schema\n * \n * 核心设计:\n * 1. A2UI v0.9 的 createSurface 只是初始化信号,不包含组件数据\n * 2. 组件数据通过 updateComponents 消息逐步发送(数组形式)\n * 3. 数据模型通过 updateDataModel 消息填充\n * 4. 组件字段名是 'component',不是 'type'\n */\n\nimport type { UIElement } from '@json-render/core';\nimport type { JsonRenderSchema } from '../types';\nimport type { A2UIComponent, A2UIMessage, A2UISurfaceState } from './a2ui-types';\n\n/**\n * 组件类型映射表\n * A2UI 类型 → json-render 类型\n */\nconst TYPE_MAPPING: Record<string, string> = {\n // 基础组件\n Text: 'Text',\n Image: 'Image',\n Icon: 'Icon',\n Video: 'Video',\n AudioPlayer: 'AudioPlayer',\n Button: 'Button',\n TextField: 'TextField', // 映射到 TextField 以支持数据绑定\n CheckBox: 'Checkbox',\n ChoicePicker: 'Select',\n Slider: 'Slider',\n DateTimeInput: 'DatePicker',\n \n // 布局组件\n Card: 'Card',\n Row: 'Row',\n Column: 'Column', // A2UI Column → json-render Column(垂直布局),不是 Col(栅格列)\n Col: 'Col', // 保留 Col 映射给显式使用栅格的场景\n List: 'List',\n Tabs: 'Tabs',\n Divider: 'Divider',\n Modal: 'Dialog',\n};\n\n/**\n * 属性映射函数\n * 将 A2UI v0.9 组件属性转换为 json-render 组件属性\n */\nfunction mapProps(component: A2UIComponent): Record<string, any> {\n // 排除 A2UI 特有字段,保留其他属性\n const { id, component: componentType, weight, child, children, ...restProps } = component;\n \n const mappedProps: Record<string, any> = { ...restProps };\n\n // 处理 weight(flex-grow)\n if (weight !== undefined) {\n mappedProps.style = {\n ...mappedProps.style,\n flexGrow: weight,\n };\n }\n\n // 特定类型的属性转换\n switch (componentType) {\n case 'Button':\n // A2UI Button 的 text 属性 → json-render 的 label(或 children)\n if (mappedProps.text && typeof mappedProps.text === 'string') {\n mappedProps.label = mappedProps.text;\n delete mappedProps.text;\n }\n // A2UI action 格式转换:{ name, context } → { name, params }\n // context 中的 { path: \"/xxx\" } 会在运行时被 Button 组件解析\n if (mappedProps.action && typeof mappedProps.action === 'object') {\n const a2uiAction = mappedProps.action as { name: string; context?: Record<string, unknown> };\n mappedProps.action = {\n name: a2uiAction.name,\n // 将 context 转为 params,保留动态绑定引用供运行时解析\n params: a2uiAction.context || {},\n };\n }\n // 处理 theme 映射(A2UI 的 theme: 'primary' → TDesign 的 theme: 'primary')\n // 保持不变,TDesign Button 支持 theme 属性\n break;\n\n case 'TextField':\n // A2UI TextField 的 text 属性(数据绑定)→ json-render 的 value\n if (mappedProps.text && typeof mappedProps.text === 'object' && mappedProps.text.path) {\n mappedProps.valuePath = mappedProps.text.path;\n delete mappedProps.text;\n }\n break;\n\n case 'CheckBox':\n // A2UI CheckBox 的 checked 属性(数据绑定)\n if (mappedProps.checked && typeof mappedProps.checked === 'object' && mappedProps.checked.path) {\n mappedProps.valuePath = mappedProps.checked.path;\n delete mappedProps.checked;\n }\n break;\n\n case 'Column':\n // A2UI Column 的 gap 属性 → json-render Column 的 size 属性 + CSS gap 后备\n if (mappedProps.gap !== undefined) {\n mappedProps.size = mappedProps.gap;\n // 同时设置 CSS gap 作为后备方案\n mappedProps.style = {\n ...mappedProps.style,\n display: 'flex',\n flexDirection: 'column',\n gap: `${mappedProps.gap}px`,\n };\n delete mappedProps.gap;\n }\n break;\n\n case 'Row':\n // A2UI Row 的 gap 属性 → json-render Row 的 gutter 属性 + CSS gap 后备\n if (mappedProps.gap !== undefined) {\n mappedProps.gutter = mappedProps.gap;\n // 同时设置 CSS gap 作为后备方案\n mappedProps.style = {\n ...mappedProps.style,\n display: 'flex',\n flexDirection: 'row',\n gap: `${mappedProps.gap}px`,\n };\n delete mappedProps.gap;\n }\n // A2UI Row 的 distribution 属性 → json-render Row 的 justify 属性\n if (mappedProps.distribution) {\n const distributionMap: Record<string, string> = {\n start: 'start',\n end: 'end',\n center: 'center',\n 'space-between': 'space-between',\n 'space-around': 'space-around',\n };\n mappedProps.justify = distributionMap[mappedProps.distribution] || mappedProps.distribution;\n // 同时设置 CSS justifyContent\n mappedProps.style = {\n ...mappedProps.style,\n justifyContent: mappedProps.distribution === 'end' ? 'flex-end' : mappedProps.distribution,\n };\n delete mappedProps.distribution;\n }\n break;\n\n default:\n break;\n }\n\n // 处理通用的 disabled 数据绑定\n if (mappedProps.disabled && typeof mappedProps.disabled === 'object' && mappedProps.disabled.path) {\n mappedProps.disabledPath = mappedProps.disabled.path;\n delete mappedProps.disabled;\n }\n\n return mappedProps;\n}\n\n/**\n * 转换单个 A2UI 组件为 json-render UIElement\n */\nfunction convertComponent(component: A2UIComponent): UIElement {\n // A2UI v0.9 使用 'component' 字段,不是 'type'\n const a2uiType = component.component;\n const mappedType = TYPE_MAPPING[a2uiType] || a2uiType;\n const props = mapProps(component);\n\n const element: UIElement = {\n key: component.id, // UIElement 需要 key 属性\n type: mappedType,\n props,\n };\n\n // 处理子组件\n if (component.children) {\n if (Array.isArray(component.children)) {\n // 静态子组件数组\n element.children = component.children;\n } else if (typeof component.children === 'object' && component.children.path) {\n // 模板子组件(数据绑定列表)\n element.props.childrenPath = component.children.path;\n element.props.childTemplate = component.children.componentId;\n }\n } else if (component.child) {\n // 单子组件\n element.children = [component.child];\n }\n\n return element;\n}\n\n/**\n * 从 A2UI 消息数组构建 Surface 状态\n * 累积处理所有消息类型\n */\nfunction buildSurfaceState(messages: A2UIMessage[]): A2UISurfaceState | null {\n let surfaceState: A2UISurfaceState | null = null;\n\n for (const msg of messages) {\n // 1. createSurface - 初始化 Surface\n if (msg.createSurface) {\n surfaceState = {\n surfaceId: msg.createSurface.surfaceId,\n catalogId: msg.createSurface.catalogId,\n components: new Map(),\n dataModel: {},\n };\n }\n\n // 2. updateComponents - 累积组件\n if (msg.updateComponents && surfaceState) {\n const { components } = msg.updateComponents;\n // A2UI v0.9 的 components 是数组\n if (Array.isArray(components)) {\n for (const comp of components) {\n surfaceState.components.set(comp.id, comp);\n }\n }\n }\n\n // 3. updateDataModel - 累积数据\n if (msg.updateDataModel && surfaceState) {\n const { path, op, value } = msg.updateDataModel;\n const operation = op || 'replace';\n \n if (operation === 'replace' && (path === '/' || !path)) {\n // 替换整个数据模型\n surfaceState.dataModel = value as Record<string, unknown>;\n } else if (operation === 'replace' && path) {\n // 替换指定路径\n setValueByPath(surfaceState.dataModel, path, value);\n } else if (operation === 'add' && path) {\n // 添加到指定路径\n setValueByPath(surfaceState.dataModel, path, value);\n } else if (operation === 'remove' && path) {\n // 删除指定路径\n deleteValueByPath(surfaceState.dataModel, path);\n }\n }\n\n // 4. deleteSurface - 删除 Surface(返回 null)\n if (msg.deleteSurface && surfaceState?.surfaceId === msg.deleteSurface.surfaceId) {\n surfaceState = null;\n }\n }\n\n return surfaceState;\n}\n\n/**\n * 根据 JSON Pointer 路径设置值\n * 支持数组索引路径(如 /list/0/name)\n */\nfunction setValueByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const parts = path.split('/').filter(Boolean);\n let current: any = obj;\n \n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i];\n const nextKey = parts[i + 1];\n if (!(key in current)) {\n // 如果下一个 key 是数字,创建数组;否则创建对象\n current[key] = /^\\d+$/.test(nextKey) ? [] : {};\n }\n current = current[key];\n }\n \n if (parts.length > 0) {\n current[parts[parts.length - 1]] = value;\n }\n}\n\n/**\n * 根据 JSON Pointer 路径删除值\n * 支持数组索引路径\n */\nfunction deleteValueByPath(obj: Record<string, unknown>, path: string): void {\n const parts = path.split('/').filter(Boolean);\n let current: any = obj;\n \n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i];\n if (!(key in current)) return;\n current = current[key];\n }\n \n if (parts.length > 0) {\n const lastKey = parts[parts.length - 1];\n if (Array.isArray(current) && /^\\d+$/.test(lastKey)) {\n // 数组元素删除\n current.splice(parseInt(lastKey, 10), 1);\n } else {\n delete current[lastKey];\n }\n }\n}\n\n/**\n * 将 Surface 状态转换为 json-render Schema\n */\nfunction surfaceStateToSchema(state: A2UISurfaceState): JsonRenderSchema {\n const elements: Record<string, UIElement> = {};\n\n // 遍历所有组件,转换为 json-render elements\n state.components.forEach((component, id) => {\n elements[id] = convertComponent(component);\n });\n\n return {\n root: 'root', // A2UI v0.9 规定必须有 id 为 'root' 的组件\n elements,\n data: state.dataModel,\n };\n}\n\n/**\n * 转换 A2UI v0.9 消息数组为 json-render Schema\n * \n * 处理流程:\n * 1. 查找 createSurface 消息初始化 Surface\n * 2. 累积所有 updateComponents 消息构建组件树\n * 3. 累积所有 updateDataModel 消息填充数据\n * 4. 转换为 json-render Schema\n * \n * @param messages A2UI 消息数组\n * @returns json-render Schema 或 null\n */\nexport function convertA2UIMessagesToJsonRender(\n messages: A2UIMessage[],\n): JsonRenderSchema | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n // 构建 Surface 状态\n const surfaceState = buildSurfaceState(messages);\n \n if (!surfaceState) {\n return null;\n }\n\n // 检查是否有 root 组件\n if (!surfaceState.components.has('root')) {\n return null;\n }\n\n // 转换为 json-render Schema\n return surfaceStateToSchema(surfaceState);\n}\n\n/**\n * 应用增量更新到现有 Schema\n * \n * @param schema 当前 json-render Schema\n * @param components A2UI updateComponents 的组件数组\n * @returns 更新后的 Schema\n */\nexport function applyA2UIUpdates(\n schema: JsonRenderSchema,\n components: A2UIComponent[],\n): JsonRenderSchema {\n if (!Array.isArray(components)) {\n return schema;\n }\n\n const newElements = { ...schema.elements };\n\n for (const component of components) {\n // 转换组件并添加/更新\n newElements[component.id] = convertComponent(component);\n }\n\n return {\n ...schema,\n elements: newElements,\n };\n}\n\n/**\n * 应用数据模型更新到现有 Schema\n * \n * @param schema 当前 json-render Schema\n * @param path JSON Pointer 路径\n * @param op 操作类型\n * @param value 值\n * @returns 更新后的 Schema\n */\nexport function applyA2UIDataUpdate(\n schema: JsonRenderSchema,\n path: string | undefined,\n op: 'add' | 'replace' | 'remove' = 'replace',\n value?: unknown,\n): JsonRenderSchema {\n const newData = { ...schema.data };\n\n if (op === 'replace' && (path === '/' || !path)) {\n return {\n ...schema,\n data: value as Record<string, unknown>,\n };\n }\n\n if (path) {\n if (op === 'remove') {\n deleteValueByPath(newData, path);\n } else {\n setValueByPath(newData, path, value);\n }\n }\n\n return {\n ...schema,\n data: newData,\n };\n}\n\nexport default {\n convertA2UIMessagesToJsonRender,\n applyA2UIUpdates,\n applyA2UIDataUpdate,\n};\n"],"names":["TYPE_MAPPING","Text","Image","Icon","Video","AudioPlayer","Button","TextField","CheckBox","ChoicePicker","Slider","DateTimeInput","Card","Row","Column","Col","List","Tabs","Divider","Modal","mapProps","component","id","componentType","weight","child","children","restProps","_excluded","mappedProps","_objectSpread","style","flexGrow","text","label","action","_typeof","a2uiAction","name","params","context","path","valuePath","checked","gap","size","display","flexDirection","concat","gutter","distribution","distributionMap","start","end","center","justify","justifyContent","disabled","disabledPath","convertComponent","a2uiType","mappedType","props","element","key","type","Array","isArray","childrenPath","childTemplate","componentId","buildSurfaceState","messages","surfaceState","_iterator","_createForOfIteratorHelper","_step","s","n","done","_surfaceState","msg","createSurface","surfaceId","catalogId","components","Map","dataModel","updateComponents","_iterator2","_step2","comp","set","err","e","f","updateDataModel","_msg$updateDataModel","op","value","operation","setValueByPath","deleteValueByPath","deleteSurface","obj","parts","split","filter","Boolean","current","i","length","nextKey","test","lastKey","splice","parseInt","surfaceStateToSchema","state","elements","forEach","root","data","convertA2UIMessagesToJsonRender","has","applyA2UIUpdates","schema","newElements","_iterator3","_step3","applyA2UIDataUpdate","arguments","undefined","newData"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 协议类型定义
|
|
3
|
+
* 用于 A2UI → json-render 转换
|
|
4
|
+
*
|
|
5
|
+
* 参考:A2UI Protocol v0.9 Specification
|
|
6
|
+
* https://a2ui.dev/specification/0.9/
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A2UI 标准组件类型(Standard Catalog)
|
|
10
|
+
*/
|
|
11
|
+
export type A2UIComponentType = 'Text' | 'Image' | 'Icon' | 'Video' | 'AudioPlayer' | 'Button' | 'TextField' | 'CheckBox' | 'ChoicePicker' | 'Slider' | 'DateTimeInput' | 'Card' | 'Row' | 'Column' | 'List' | 'Tabs' | 'Divider' | 'Modal';
|
|
12
|
+
/**
|
|
13
|
+
* A2UI v0.9 组件定义
|
|
14
|
+
* 注意:v0.9 使用 'component' 字段(不是 'type')
|
|
15
|
+
*/
|
|
16
|
+
export interface A2UIComponent {
|
|
17
|
+
/** 组件唯一标识符 */
|
|
18
|
+
id: string;
|
|
19
|
+
/** 组件类型(A2UI v0.9 使用 'component' 字段) */
|
|
20
|
+
component: string;
|
|
21
|
+
/** 权重(flex-grow),仅在 Row/Column 子组件中有效 */
|
|
22
|
+
weight?: number;
|
|
23
|
+
/** 单子组件 ID */
|
|
24
|
+
child?: string;
|
|
25
|
+
/** 多子组件 ID 数组,或模板配置 */
|
|
26
|
+
children?: string[] | {
|
|
27
|
+
path: string;
|
|
28
|
+
componentId: string;
|
|
29
|
+
};
|
|
30
|
+
/** 其他组件特定属性 */
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A2UI v0.9 createSurface 消息
|
|
35
|
+
* 只包含 surfaceId 和 catalogId,不包含组件数据
|
|
36
|
+
*/
|
|
37
|
+
export interface A2UICreateSurface {
|
|
38
|
+
/** Surface 唯一标识符 */
|
|
39
|
+
surfaceId: string;
|
|
40
|
+
/** Catalog ID(组件目录标识) */
|
|
41
|
+
catalogId: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A2UI v0.9 updateComponents 消息
|
|
45
|
+
* components 是数组,不是 Record
|
|
46
|
+
*/
|
|
47
|
+
export interface A2UIUpdateComponents {
|
|
48
|
+
/** Surface 唯一标识符 */
|
|
49
|
+
surfaceId: string;
|
|
50
|
+
/** 组件数组(不是 Record) */
|
|
51
|
+
components: A2UIComponent[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A2UI v0.9 updateDataModel 消息
|
|
55
|
+
*/
|
|
56
|
+
export interface A2UIUpdateDataModel {
|
|
57
|
+
/** Surface 唯一标识符 */
|
|
58
|
+
surfaceId: string;
|
|
59
|
+
/** JSON Pointer 路径 */
|
|
60
|
+
path?: string;
|
|
61
|
+
/** 操作类型 */
|
|
62
|
+
op?: 'add' | 'replace' | 'remove';
|
|
63
|
+
/** 数据值 */
|
|
64
|
+
value?: unknown;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A2UI v0.9 deleteSurface 消息
|
|
68
|
+
*/
|
|
69
|
+
export interface A2UIDeleteSurface {
|
|
70
|
+
/** Surface 唯一标识符 */
|
|
71
|
+
surfaceId: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A2UI v0.9 消息类型(Server to Client)
|
|
75
|
+
* 每条消息只包含一种消息类型
|
|
76
|
+
*/
|
|
77
|
+
export interface A2UIMessage {
|
|
78
|
+
createSurface?: A2UICreateSurface;
|
|
79
|
+
updateComponents?: A2UIUpdateComponents;
|
|
80
|
+
updateDataModel?: A2UIUpdateDataModel;
|
|
81
|
+
deleteSurface?: A2UIDeleteSurface;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A2UI Surface 状态(客户端维护)
|
|
85
|
+
* 由多条消息累积构建
|
|
86
|
+
*/
|
|
87
|
+
export interface A2UISurfaceState {
|
|
88
|
+
/** Surface ID */
|
|
89
|
+
surfaceId: string;
|
|
90
|
+
/** Catalog ID */
|
|
91
|
+
catalogId: string;
|
|
92
|
+
/** 组件 Map(由 updateComponents 累积) */
|
|
93
|
+
components: Map<string, A2UIComponent>;
|
|
94
|
+
/** 数据模型(由 updateDataModel 累积) */
|
|
95
|
+
dataModel: Record<string, unknown>;
|
|
96
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2ui-types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* json-render 适配器模块
|
|
3
|
+
* 支持多种协议转换为 json-render Schema
|
|
4
|
+
*/
|
|
5
|
+
export type { A2UIComponentType, A2UIComponent, A2UIMessage, A2UICreateSurface, A2UIUpdateComponents, A2UIUpdateDataModel, A2UIDeleteSurface, A2UISurfaceState, } from './a2ui-types';
|
|
6
|
+
export { convertA2UIMessagesToJsonRender, applyA2UIUpdates, applyA2UIDataUpdate, } from './a2ui-to-jsonrender';
|
|
7
|
+
export { default as A2UIAdapter } from './a2ui-to-jsonrender';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { default as A2UIAdapter, applyA2UIDataUpdate, applyA2UIUpdates, convertA2UIMessagesToJsonRender } from './a2ui-to-jsonrender.js';
|
|
8
|
+
import '@babel/runtime/helpers/typeof';
|
|
9
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
10
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI 数据绑定 HOC
|
|
3
|
+
*
|
|
4
|
+
* 统一处理 A2UI 协议的标准字段:
|
|
5
|
+
* - valuePath: 值的数据绑定路径(如 /userInfo/name)
|
|
6
|
+
* - disabledPath: disabled 状态的数据绑定路径(如 /formDisabled)
|
|
7
|
+
* - action.context: action 参数中的动态数据绑定
|
|
8
|
+
*
|
|
9
|
+
* 性能优化:
|
|
10
|
+
* - 使用 React.memo + 精确值比较避免不必要渲染
|
|
11
|
+
* - Action 参数延迟解析(触发时才计算)
|
|
12
|
+
* - 使用 useRef 缓存回调函数避免重建
|
|
13
|
+
*
|
|
14
|
+
* 使用方式:
|
|
15
|
+
* ```tsx
|
|
16
|
+
* // 创建支持 A2UI 绑定的 Input
|
|
17
|
+
* const A2UIInput = withA2UIBinding(Input, {
|
|
18
|
+
* valueField: 'value',
|
|
19
|
+
* onChangeField: 'onChange',
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // 创建支持 action 的 Button
|
|
23
|
+
* const A2UIButton = withA2UIBinding(Button, {
|
|
24
|
+
* supportsAction: true,
|
|
25
|
+
* actionTrigger: 'onClick', // 默认
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Input 支持 onEnter 触发 action
|
|
29
|
+
* const A2UISearchInput = withA2UIBinding(Input, {
|
|
30
|
+
* valueField: 'value',
|
|
31
|
+
* onChangeField: 'onChange',
|
|
32
|
+
* supportsAction: true,
|
|
33
|
+
* actionTrigger: 'onEnter',
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import React from 'react';
|
|
38
|
+
import type { ComponentRenderProps } from '@json-render/react';
|
|
39
|
+
/**
|
|
40
|
+
* A2UI 绑定配置
|
|
41
|
+
*/
|
|
42
|
+
export interface A2UIBindingConfig {
|
|
43
|
+
/** 组件的值字段名,默认 'value' */
|
|
44
|
+
valueField?: string;
|
|
45
|
+
/** 组件的 onChange 字段名,默认 'onChange' */
|
|
46
|
+
onChangeField?: string;
|
|
47
|
+
/** 是否支持 action 绑定,默认 false */
|
|
48
|
+
supportsAction?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Action 触发事件名,默认 'onClick'
|
|
51
|
+
* 可设置为 'onEnter'、'onChange' 等
|
|
52
|
+
*/
|
|
53
|
+
actionTrigger?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A2UI 数据绑定 HOC
|
|
57
|
+
*
|
|
58
|
+
* 自动处理 A2UI 协议的标准字段,让原子组件保持纯净
|
|
59
|
+
*
|
|
60
|
+
* @param WrappedComponent 原始组件
|
|
61
|
+
* @param config 绑定配置
|
|
62
|
+
*/
|
|
63
|
+
export declare function withA2UIBinding<P extends Record<string, any>>(WrappedComponent: React.ComponentType<P>, config?: A2UIBindingConfig): React.FC<ComponentRenderProps>;
|
|
64
|
+
export default withA2UIBinding;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
8
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
9
|
+
import '@babel/runtime/helpers/typeof';
|
|
10
|
+
import '@babel/runtime/helpers/slicedToArray';
|
|
11
|
+
import 'react';
|
|
12
|
+
export { f as default, f as withA2UIBinding } from '../../../../_chunks/dep-f2051ebd.js';
|
|
13
|
+
import '@json-render/core';
|
|
14
|
+
import '../contexts/data.js';
|
|
15
|
+
import '../adapters/index.js';
|
|
16
|
+
import '../adapters/a2ui-to-jsonrender.js';
|
|
17
|
+
import '../SurfaceStateManager.js';
|
|
18
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
19
|
+
import '@babel/runtime/helpers/createClass';
|
|
20
|
+
import '../engine.js';
|
|
21
|
+
import '../performance.js';
|
|
22
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
23
|
+
import './button.js';
|
|
24
|
+
import 'tdesign-react';
|
|
25
|
+
import './card.js';
|
|
26
|
+
import './text.js';
|
|
27
|
+
import './layout.js';
|
|
28
|
+
import '../catalog.js';
|
|
29
|
+
import 'zod';
|
|
30
|
+
import '../contexts/visibility.js';
|
|
31
|
+
import '../contexts/actions.js';
|
|
32
|
+
import '@babel/runtime/helpers/asyncToGenerator';
|
|
33
|
+
import '@babel/runtime/regenerator';
|
|
34
|
+
import '../contexts/validation.js';
|
|
35
|
+
import '../renderer.js';
|
|
36
|
+
//# sourceMappingURL=a2ui-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2ui-binding.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|