@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.
Files changed (233) hide show
  1. package/es/_chunks/dep-1007ac80.js +205 -0
  2. package/es/_chunks/dep-1007ac80.js.map +1 -0
  3. package/es/_chunks/dep-16520c2b.js +1247 -0
  4. package/es/_chunks/dep-16520c2b.js.map +1 -0
  5. package/es/_chunks/dep-1743bd61.js +438 -0
  6. package/es/_chunks/dep-1743bd61.js.map +1 -0
  7. package/es/_chunks/dep-56f5e08e.js +448 -0
  8. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  9. package/es/_chunks/dep-96eca06f.js +169 -0
  10. package/es/_chunks/dep-96eca06f.js.map +1 -0
  11. package/es/_util/reactify.js +1 -1
  12. package/es/_util/useDynamicStyle.js +1 -1
  13. package/es/attachments/index.js +1 -1
  14. package/es/chat-actionbar/index.js +1 -1
  15. package/es/chat-engine/components/activity/index.js +3 -1
  16. package/es/chat-engine/components/activity/index.js.map +1 -1
  17. package/es/chat-engine/components/activity/registry.js +1 -1
  18. package/es/chat-engine/components/activity/render.d.ts +4 -0
  19. package/es/chat-engine/components/activity/render.js +14 -2
  20. package/es/chat-engine/components/activity/render.js.map +1 -1
  21. package/es/chat-engine/components/activity/types.js +1 -1
  22. package/es/chat-engine/components/index.js +28 -20
  23. package/es/chat-engine/components/index.js.map +1 -1
  24. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  25. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  26. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  27. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  28. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  29. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  30. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  31. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  32. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  33. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  34. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  35. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  36. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  37. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  38. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  39. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  40. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  41. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  42. package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
  43. package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
  44. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
  45. package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
  46. package/es/chat-engine/components/json-render/contexts/data.js +155 -76
  47. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
  48. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  49. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  50. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  51. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  52. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  53. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  54. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  55. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  56. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  57. package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
  58. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
  59. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
  60. package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
  61. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
  62. package/es/chat-engine/components/json-render/index.d.ts +9 -32
  63. package/es/chat-engine/components/json-render/index.js +59 -19
  64. package/es/chat-engine/components/json-render/index.js.map +1 -1
  65. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  66. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  67. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  68. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  69. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  70. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  71. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  72. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  73. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  74. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  75. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  76. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  77. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  78. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  79. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  80. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  81. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  82. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  83. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  84. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  85. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  86. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  87. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  88. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  89. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  90. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  91. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  92. package/es/chat-engine/components/json-render/types.d.ts +37 -19
  93. package/es/chat-engine/components/json-render/types.js +1 -1
  94. package/es/chat-engine/components/provider/agent-state.js +14 -7
  95. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  96. package/es/chat-engine/components/toolcall/index.js +14 -7
  97. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  98. package/es/chat-engine/components/toolcall/registry.js +1 -1
  99. package/es/chat-engine/components/toolcall/render.js +16 -9
  100. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  101. package/es/chat-engine/components/toolcall/types.js +1 -1
  102. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  103. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  104. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  105. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  106. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  107. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  108. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  109. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  110. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  111. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  112. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  113. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  114. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  115. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  116. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  117. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  118. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  119. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  120. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  121. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  122. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  123. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  124. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  125. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  126. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  127. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  128. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  129. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  130. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  131. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  132. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  133. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  134. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  135. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  136. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  137. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  138. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
  139. package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
  140. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  141. package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
  142. package/es/chat-engine/core/adapters/agui/index.js +11 -16
  143. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  144. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
  145. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  146. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  147. package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
  148. package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
  149. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  150. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  151. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  152. package/es/chat-engine/core/adapters/index.js +34 -0
  153. package/es/chat-engine/core/adapters/index.js.map +1 -0
  154. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  155. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  156. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  157. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  158. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  159. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  160. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  161. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  162. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  163. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  164. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  165. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  166. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  167. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  168. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  169. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  170. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  171. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  172. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  173. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  174. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  175. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  176. package/es/chat-engine/core/event-bus/index.js +1 -1
  177. package/es/chat-engine/core/event-bus/types.js +1 -1
  178. package/es/chat-engine/core/index.d.ts +2 -3
  179. package/es/chat-engine/core/index.js +16 -8
  180. package/es/chat-engine/core/index.js.map +1 -1
  181. package/es/chat-engine/core/processor/index.js +1 -1
  182. package/es/chat-engine/core/server/batch-client.js +1 -1
  183. package/es/chat-engine/core/server/connection-manager.js +1 -1
  184. package/es/chat-engine/core/server/errors.js +1 -1
  185. package/es/chat-engine/core/server/index.js +1 -1
  186. package/es/chat-engine/core/server/llm-service.js +15 -17
  187. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  188. package/es/chat-engine/core/server/sse-client.js +1 -1
  189. package/es/chat-engine/core/server/sse-parser.js +1 -1
  190. package/es/chat-engine/core/server/types.js +1 -1
  191. package/es/chat-engine/core/store/message.js +6 -4
  192. package/es/chat-engine/core/store/message.js.map +1 -1
  193. package/es/chat-engine/core/store/model.js +2 -1
  194. package/es/chat-engine/core/store/model.js.map +1 -1
  195. package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
  196. package/es/chat-engine/core/store/reactiveState.js +15 -1235
  197. package/es/chat-engine/core/store/reactiveState.js.map +1 -1
  198. package/es/chat-engine/core/type.d.ts +8 -19
  199. package/es/chat-engine/core/type.js +1 -1
  200. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  201. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  202. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  203. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  204. package/es/chat-engine/core/utils/index.d.ts +7 -2
  205. package/es/chat-engine/core/utils/index.js +8 -12
  206. package/es/chat-engine/core/utils/index.js.map +1 -1
  207. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  208. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  209. package/es/chat-engine/core/utils/logger.js +1 -1
  210. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  211. package/es/chat-engine/core/utils/performance.js +205 -0
  212. package/es/chat-engine/core/utils/performance.js.map +1 -0
  213. package/es/chat-engine/hooks/index.js +14 -7
  214. package/es/chat-engine/hooks/index.js.map +1 -1
  215. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  216. package/es/chat-engine/hooks/useAgentState.js +14 -7
  217. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  218. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  219. package/es/chat-engine/hooks/useChat.js +14 -7
  220. package/es/chat-engine/hooks/useChat.js.map +1 -1
  221. package/es/chat-engine/index.js +28 -20
  222. package/es/chat-engine/index.js.map +1 -1
  223. package/es/chat-filecard/index.js +1 -1
  224. package/es/chat-loading/index.js +1 -1
  225. package/es/chat-markdown/index.js +1 -1
  226. package/es/chat-message/index.js +1 -1
  227. package/es/chat-sender/index.js +1 -1
  228. package/es/chat-thinking/index.js +1 -1
  229. package/es/chatbot/index.js +1 -1
  230. package/es/index.js +28 -20
  231. package/es/index.js.map +1 -1
  232. package/es/style/index.js +1 -1
  233. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import '@babel/runtime/helpers/defineProperty';
8
+ import '@babel/runtime/helpers/slicedToArray';
9
+ import 'react';
10
+ import '../../../../_chunks/dep-96eca06f.js';
11
+ import '../catalog/atomic/button.js';
12
+ export { d as A2UIButton, A as A2UITextField, a as a2uiRegistry, g as createA2UIJsonRenderActivityConfig, b as createA2UIRegistry, c as createCustomRegistry, f as createJsonRenderActivityConfig, t as tdesignRegistry, e as withA2UIBinding, w as withStableProps } from '../../../../_chunks/dep-1743bd61.js';
13
+ import '../catalog/atomic/card.js';
14
+ import '../catalog/atomic/text.js';
15
+ import '../catalog/atomic/layout.js';
16
+ import '@babel/runtime/helpers/typeof';
17
+ import '@babel/runtime/helpers/objectWithoutProperties';
18
+ import 'tdesign-react';
19
+ import '../renderer/JsonRenderActivityRenderer.js';
20
+ import '../renderer/JsonUIRenderer.js';
21
+ import '../contexts/index.js';
22
+ import '../contexts/data.js';
23
+ import '@babel/runtime/helpers/classCallCheck';
24
+ import '@babel/runtime/helpers/createClass';
25
+ import '@babel/runtime/helpers/possibleConstructorReturn';
26
+ import '@babel/runtime/helpers/getPrototypeOf';
27
+ import '@babel/runtime/helpers/inherits';
28
+ import '../../../../_chunks/dep-16520c2b.js';
29
+ import '@babel/runtime/helpers/wrapNativeSuper';
30
+ import '@json-render/core';
31
+ import '../contexts/store.js';
32
+ import '../contexts/visibility.js';
33
+ import '../contexts/actions.js';
34
+ import '@babel/runtime/helpers/asyncToGenerator';
35
+ import '@babel/runtime/regenerator';
36
+ import '../contexts/validation.js';
37
+ import '../contexts/tree.js';
38
+ import '../renderer/A2UIJsonRenderActivityRenderer.js';
39
+ import '../../../core/index.js';
40
+ import '../../../core/adapters/agui/index.js';
41
+ import '@babel/runtime/helpers/toConsumableArray';
42
+ import '../../../core/adapters/agui/event-mapper.js';
43
+ import '../../../core/adapters/agui/types/index.js';
44
+ import 'zod';
45
+ import '../../../core/adapters/agui/StateManager.js';
46
+ import '../../../core/utils/index.js';
47
+ import '../../../core/utils/immutable-patch.js';
48
+ import '@babel/runtime/helpers/toArray';
49
+ import '../../../core/adapters/agui/ActivityManager.js';
50
+ import '../../../core/adapters/agui/utils.js';
51
+ import '../../../core/event-bus/index.js';
52
+ import '../../../core/event-bus/ChatEventBus.js';
53
+ import '../../../core/event-bus/types.js';
54
+ import '../../../core/store/message.js';
55
+ import '@babel/runtime/helpers/get';
56
+ import '../../../core/store/reactiveState.js';
57
+ import '../../../core/processor/index.js';
58
+ import '../../../core/server/index.js';
59
+ import '../../../core/server/llm-service.js';
60
+ import '../../../core/utils/logger.js';
61
+ import '../../../core/server/batch-client.js';
62
+ import '../../../core/utils/eventEmitter.js';
63
+ import '../../../core/server/errors.js';
64
+ import '../../../core/server/sse-client.js';
65
+ import '../../../core/server/connection-manager.js';
66
+ import '../../../core/server/sse-parser.js';
67
+ import '../../../core/server/types.js';
68
+ import '../../../core/adapters/index.js';
69
+ import '../../../core/adapters/json-render/index.js';
70
+ import '../../../core/adapters/json-render/a2ui-to-jsonrender.js';
71
+ import '../../../core/adapters/json-render/types/a2ui.js';
72
+ import '../../../core/adapters/json-render/SurfaceStateManager.js';
73
+ import '../../../core/adapters/json-render/types/index.js';
74
+ import '../../../core/adapters/json-render/types/core.js';
75
+ import '../catalog/catalog-to-prompt.js';
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A2UI v0.9 + json-render Activity 渲染器
3
+ * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染
4
+ *
5
+ * 工作流程:
6
+ * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content
7
+ * 2. 区分消息类型:UI型 vs 纯数据型
8
+ * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI
9
+ * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染
10
+ *
11
+ * 消息分类:
12
+ * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI
13
+ * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI
14
+ */
15
+ import React from 'react';
16
+ import type { A2UIMessage } from '../../../core';
17
+ import type { JsonRenderActivityProps, ComponentRegistry } from '../types';
18
+ export interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {
19
+ /** A2UI content(包含 messages 数组) */
20
+ content: {
21
+ messages?: A2UIMessage[];
22
+ [key: string]: any;
23
+ };
24
+ /** 组件注册表(必须) */
25
+ registry: ComponentRegistry;
26
+ /** Action 处理器(可选) */
27
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;
28
+ /** 显示调试信息 */
29
+ debug?: boolean;
30
+ }
31
+ /**
32
+ * A2UI v0.9 + json-render Activity 渲染器组件
33
+ */
34
+ export declare const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps>;
35
+ export default A2UIJsonRenderActivityRenderer;
@@ -0,0 +1,271 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import React, { useEffect, useState, useMemo, useCallback } from 'react';
9
+ import '../../../core/index.js';
10
+ import { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer.js';
11
+ import { surfaceStateManager } from '../../../core/adapters/json-render/SurfaceStateManager.js';
12
+ import { convertA2UIMessagesToJsonRender } from '../../../core/adapters/json-render/a2ui-to-jsonrender.js';
13
+ import '@babel/runtime/helpers/objectWithoutProperties';
14
+ import '@babel/runtime/helpers/asyncToGenerator';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/helpers/defineProperty';
18
+ import '@babel/runtime/regenerator';
19
+ import '../../../core/adapters/agui/index.js';
20
+ import '@babel/runtime/helpers/toConsumableArray';
21
+ import '../../../core/adapters/agui/event-mapper.js';
22
+ import '../../../core/adapters/agui/types/index.js';
23
+ import 'zod';
24
+ import '@babel/runtime/helpers/possibleConstructorReturn';
25
+ import '@babel/runtime/helpers/getPrototypeOf';
26
+ import '@babel/runtime/helpers/inherits';
27
+ import '@babel/runtime/helpers/wrapNativeSuper';
28
+ import '../../../core/adapters/agui/StateManager.js';
29
+ import '@babel/runtime/helpers/typeof';
30
+ import '../../../core/utils/index.js';
31
+ import '../../../core/utils/immutable-patch.js';
32
+ import '@babel/runtime/helpers/toArray';
33
+ import '../../../core/adapters/agui/ActivityManager.js';
34
+ import '../../../core/adapters/agui/utils.js';
35
+ import '../../../core/event-bus/index.js';
36
+ import '../../../core/event-bus/ChatEventBus.js';
37
+ import '../../../core/event-bus/types.js';
38
+ import '../../../core/store/message.js';
39
+ import '@babel/runtime/helpers/get';
40
+ import '../../../core/store/reactiveState.js';
41
+ import '../../../../_chunks/dep-16520c2b.js';
42
+ import '../../../core/processor/index.js';
43
+ import '../../../core/server/index.js';
44
+ import '../../../core/server/llm-service.js';
45
+ import '../../../core/utils/logger.js';
46
+ import '../../../core/server/batch-client.js';
47
+ import '../../../core/utils/eventEmitter.js';
48
+ import '../../../core/server/errors.js';
49
+ import '../../../core/server/sse-client.js';
50
+ import '../../../core/server/connection-manager.js';
51
+ import '../../../core/server/sse-parser.js';
52
+ import '../../../core/server/types.js';
53
+ import '../../../core/adapters/index.js';
54
+ import '../../../core/adapters/json-render/index.js';
55
+ import '../../../core/adapters/json-render/types/a2ui.js';
56
+ import '../../../core/adapters/json-render/types/index.js';
57
+ import '../../../core/adapters/json-render/types/core.js';
58
+ import '../../../../_chunks/dep-96eca06f.js';
59
+ import './JsonUIRenderer.js';
60
+ import '../contexts/index.js';
61
+ import '../contexts/data.js';
62
+ import '@json-render/core';
63
+ import '../contexts/store.js';
64
+ import '../contexts/visibility.js';
65
+ import '../contexts/actions.js';
66
+ import '../contexts/validation.js';
67
+ import '../contexts/tree.js';
68
+
69
+ 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; } } }; }
70
+ 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; } }
71
+ 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; }
72
+ function extractSurfaceId(messages) {
73
+ var _iterator = _createForOfIteratorHelper(messages),
74
+ _step;
75
+ try {
76
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
77
+ var msg = _step.value;
78
+ if (msg.createSurface) return msg.createSurface.surfaceId;
79
+ if (msg.updateComponents) return msg.updateComponents.surfaceId;
80
+ if (msg.updateDataModel) return msg.updateDataModel.surfaceId;
81
+ if (msg.deleteSurface) return msg.deleteSurface.surfaceId;
82
+ }
83
+ } catch (err) {
84
+ _iterator.e(err);
85
+ } finally {
86
+ _iterator.f();
87
+ }
88
+ return null;
89
+ }
90
+ function isUIMessages(messages) {
91
+ return messages.some(function (msg) {
92
+ return msg.createSurface || msg.updateComponents || msg.deleteSurface;
93
+ });
94
+ }
95
+ function hasDeletionMessages(messages) {
96
+ return messages.some(function (msg) {
97
+ return msg.deleteSurface;
98
+ });
99
+ }
100
+ function hasCreationMessages(messages) {
101
+ return messages.some(function (msg) {
102
+ return msg.createSurface || msg.updateComponents;
103
+ });
104
+ }
105
+ var A2UIJsonRenderActivityRenderer = function A2UIJsonRenderActivityRenderer(_ref) {
106
+ var activityType = _ref.activityType,
107
+ content = _ref.content,
108
+ messageId = _ref.messageId,
109
+ ext = _ref.ext,
110
+ registry = _ref.registry,
111
+ actionHandlers = _ref.actionHandlers,
112
+ _ref$debug = _ref.debug,
113
+ debug = _ref$debug === void 0 ? false : _ref$debug;
114
+ useEffect(function () {
115
+ surfaceStateManager.setDebug(debug);
116
+ }, [debug]);
117
+ var _useState = useState(0),
118
+ _useState2 = _slicedToArray(_useState, 2),
119
+ schemaVersion = _useState2[0],
120
+ setSchemaVersion = _useState2[1];
121
+ var _useMemo = useMemo(function () {
122
+ var msgs = content.messages;
123
+ if (!Array.isArray(msgs) || msgs.length === 0) {
124
+ return {
125
+ surfaceId: null,
126
+ isUI: false,
127
+ isDeletion: false,
128
+ isCreation: false,
129
+ messages: []
130
+ };
131
+ }
132
+ return {
133
+ surfaceId: extractSurfaceId(msgs),
134
+ isUI: isUIMessages(msgs),
135
+ isDeletion: hasDeletionMessages(msgs),
136
+ isCreation: hasCreationMessages(msgs),
137
+ messages: msgs
138
+ };
139
+ }, [content.messages]),
140
+ surfaceId = _useMemo.surfaceId,
141
+ isUI = _useMemo.isUI,
142
+ isDeletion = _useMemo.isDeletion,
143
+ isCreation = _useMemo.isCreation,
144
+ messages = _useMemo.messages;
145
+ var initialSchema = useMemo(function () {
146
+ if (!surfaceId || messages.length === 0) {
147
+ return null;
148
+ }
149
+ if (debug) {
150
+ console.log("[A2UI Adapter] \u5904\u7406\u6D88\u606F:", {
151
+ messageId: messageId,
152
+ surfaceId: surfaceId,
153
+ messagesCount: messages.length,
154
+ messageTypes: messages.map(function (m) {
155
+ return Object.keys(m).filter(function (k) {
156
+ return ["createSurface", "updateComponents", "updateDataModel", "deleteSurface"].includes(k);
157
+ })[0];
158
+ }),
159
+ isUI: isUI,
160
+ isCreation: isCreation,
161
+ isDeletion: isDeletion,
162
+ cachedSurfaces: surfaceStateManager.getAllSurfaceIds()
163
+ });
164
+ }
165
+ if (isDeletion) {
166
+ surfaceStateManager.deleteSurface(surfaceId);
167
+ if (debug) {
168
+ console.log("[A2UI Adapter] \u5220\u9664 Surface:", surfaceId);
169
+ }
170
+ return null;
171
+ }
172
+ if (isCreation) {
173
+ var schema = convertA2UIMessagesToJsonRender(messages);
174
+ if (schema) {
175
+ var _messages$find;
176
+ var catalogId = (_messages$find = messages.find(function (m) {
177
+ return m.createSurface;
178
+ })) === null || _messages$find === void 0 || (_messages$find = _messages$find.createSurface) === null || _messages$find === void 0 ? void 0 : _messages$find.catalogId;
179
+ surfaceStateManager.registerSurface(surfaceId, schema, catalogId);
180
+ if (debug) {
181
+ console.log("[A2UI Adapter] \u521B\u5EFA\u578B\u6D88\u606F\uFF0C\u6CE8\u518C Surface:", {
182
+ surfaceId: surfaceId,
183
+ elementsCount: Object.keys(schema.elements).length,
184
+ data: schema.data
185
+ });
186
+ }
187
+ }
188
+ return schema;
189
+ }
190
+ var _iterator2 = _createForOfIteratorHelper(messages),
191
+ _step2;
192
+ try {
193
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
194
+ var msg = _step2.value;
195
+ if (msg.updateDataModel) {
196
+ var _msg$updateDataModel = msg.updateDataModel,
197
+ path = _msg$updateDataModel.path,
198
+ op = _msg$updateDataModel.op,
199
+ value = _msg$updateDataModel.value;
200
+ var success = surfaceStateManager.updateData(surfaceId, path, op || "replace", value);
201
+ if (debug) {
202
+ console.log("[A2UI Adapter] \u66F4\u65B0\u578B\u6D88\u606F\uFF0C\u66F4\u65B0\u6570\u636E:", {
203
+ surfaceId: surfaceId,
204
+ path: path,
205
+ op: op || "replace",
206
+ value: value,
207
+ success: success
208
+ });
209
+ }
210
+ }
211
+ }
212
+ } catch (err) {
213
+ _iterator2.e(err);
214
+ } finally {
215
+ _iterator2.f();
216
+ }
217
+ return null;
218
+ }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);
219
+ var handleSchemaUpdate = useCallback(function () {
220
+ if (debug) {
221
+ console.log("[A2UI Adapter] \u6536\u5230\u72B6\u6001\u66F4\u65B0\u901A\u77E5\uFF0C\u89E6\u53D1\u91CD\u6E32\u67D3");
222
+ }
223
+ setSchemaVersion(function (v) {
224
+ return v + 1;
225
+ });
226
+ }, [debug]);
227
+ useEffect(function () {
228
+ if (!isCreation || !surfaceId) {
229
+ return;
230
+ }
231
+ if (debug) {
232
+ console.log("[A2UI Adapter] \u8BA2\u9605 Surface \u72B6\u6001:", surfaceId);
233
+ }
234
+ var unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);
235
+ return function () {
236
+ if (debug) {
237
+ console.log("[A2UI Adapter] \u53D6\u6D88\u8BA2\u9605 Surface \u72B6\u6001:", surfaceId);
238
+ }
239
+ unsubscribe();
240
+ };
241
+ }, [isCreation, surfaceId, handleSchemaUpdate, debug]);
242
+ var currentSchema = useMemo(function () {
243
+ if (!isCreation || !surfaceId) {
244
+ return null;
245
+ }
246
+ return surfaceStateManager.getSchema(surfaceId) || initialSchema;
247
+ }, [isCreation, surfaceId, initialSchema, schemaVersion]);
248
+ if (!isUI) {
249
+ if (debug && messages.length > 0) {
250
+ console.log("[A2UI Adapter] \u7EAF\u6570\u636E\u66F4\u65B0\u6D88\u606F\uFF0C\u8DF3\u8FC7\u6E32\u67D3");
251
+ }
252
+ return null;
253
+ }
254
+ if (isDeletion && !isCreation) {
255
+ if (debug) {
256
+ console.log("[A2UI Adapter] \u5220\u9664\u578B\u6D88\u606F\uFF0C\u8DF3\u8FC7\u6E32\u67D3");
257
+ }
258
+ return null;
259
+ }
260
+ return /* @__PURE__ */React.createElement(JsonRenderActivityRenderer, {
261
+ activityType: activityType,
262
+ content: currentSchema,
263
+ messageId: messageId,
264
+ ext: ext,
265
+ registry: registry,
266
+ actionHandlers: actionHandlers
267
+ });
268
+ };
269
+
270
+ export { A2UIJsonRenderActivityRenderer, A2UIJsonRenderActivityRenderer as default };
271
+ //# sourceMappingURL=A2UIJsonRenderActivityRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIJsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\n * A2UI v0.9 + json-render Activity 渲染器\n * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染\n * \n * 工作流程:\n * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content\n * 2. 区分消息类型:UI型 vs 纯数据型\n * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI\n * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染\n * \n * 消息分类:\n * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI\n * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI\n */\n\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport { convertA2UIMessagesToJsonRender, surfaceStateManager } from '../../../core';\nimport type { A2UIMessage, JsonRenderSchema } from '../../../core';\nimport type { JsonRenderActivityProps, ComponentRegistry } from '../types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\n\n\nexport interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {\n /** A2UI content(包含 messages 数组) */\n content: {\n messages?: A2UIMessage[];\n [key: string]: any;\n };\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** Action 处理器(可选) */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * 从消息中提取 surfaceId\n */\nfunction extractSurfaceId(messages: A2UIMessage[]): string | null {\n for (const msg of messages) {\n if (msg.createSurface) return msg.createSurface.surfaceId;\n if (msg.updateComponents) return msg.updateComponents.surfaceId;\n if (msg.updateDataModel) return msg.updateDataModel.surfaceId;\n if (msg.deleteSurface) return msg.deleteSurface.surfaceId;\n }\n return null;\n}\n\n/**\n * 判断消息是否为\"UI型\"(需要渲染/更新 UI)\n * 包括 createSurface / updateComponents / deleteSurface\n * 只有纯 updateDataModel 消息不需要渲染\n */\nfunction isUIMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents || msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含删除操作\n */\nfunction hasDeletionMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含创建/更新操作(需要渲染 UI 的)\n */\nfunction hasCreationMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents);\n}\n\n/**\n * A2UI v0.9 + json-render Activity 渲染器组件\n */\nexport const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n ext,\n registry,\n actionHandlers,\n debug = false,\n}) => {\n // 设置调试模式\n useEffect(() => {\n surfaceStateManager.setDebug(debug);\n }, [debug]);\n\n // 用于触发重渲染的版本号\n const [schemaVersion, setSchemaVersion] = useState(0);\n\n // 分析消息类型\n const { surfaceId, isUI, isDeletion, isCreation, messages } = useMemo(() => {\n const msgs = content.messages;\n if (!Array.isArray(msgs) || msgs.length === 0) {\n return { surfaceId: null, isUI: false, isDeletion: false, isCreation: false, messages: [] };\n }\n return {\n surfaceId: extractSurfaceId(msgs),\n isUI: isUIMessages(msgs),\n isDeletion: hasDeletionMessages(msgs),\n isCreation: hasCreationMessages(msgs),\n messages: msgs,\n };\n }, [content.messages]);\n\n // 处理消息并获取 Schema\n const initialSchema = useMemo<JsonRenderSchema | null>(() => {\n if (!surfaceId || messages.length === 0) {\n return null;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 处理消息:', {\n messageId,\n surfaceId,\n messagesCount: messages.length,\n messageTypes: messages.map(m => \n Object.keys(m).filter(k => ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'].includes(k))[0]\n ),\n isUI,\n isCreation,\n isDeletion,\n cachedSurfaces: surfaceStateManager.getAllSurfaceIds(),\n });\n }\n\n // 删除型消息:清理缓存\n if (isDeletion) {\n surfaceStateManager.deleteSurface(surfaceId);\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除 Surface:', surfaceId);\n }\n return null;\n }\n\n // 创建型消息:转换并注册\n if (isCreation) {\n const schema = convertA2UIMessagesToJsonRender(messages);\n if (schema) {\n // 提取 catalogId\n const catalogId = messages.find(m => m.createSurface)?.createSurface?.catalogId;\n surfaceStateManager.registerSurface(surfaceId, schema, catalogId);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 创建型消息,注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n data: schema.data,\n });\n }\n }\n return schema;\n }\n\n // 更新型消息:通过 SurfaceStateManager 更新数据\n for (const msg of messages) {\n if (msg.updateDataModel) {\n const { path, op, value } = msg.updateDataModel;\n const success = surfaceStateManager.updateData(surfaceId, path, op || 'replace', value);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 更新型消息,更新数据:', {\n surfaceId,\n path,\n op: op || 'replace',\n value,\n success,\n });\n }\n }\n }\n\n // 更新型消息不需要渲染,返回 null\n return null;\n }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);\n\n // 订阅状态变化的回调\n const handleSchemaUpdate = useCallback(() => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 收到状态更新通知,触发重渲染');\n }\n setSchemaVersion(v => v + 1);\n }, [debug]);\n\n // 订阅 Surface 状态变化(仅当是创建型消息时)\n useEffect(() => {\n if (!isCreation || !surfaceId) {\n return;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 订阅 Surface 状态:', surfaceId);\n }\n\n const unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);\n\n return () => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 取消订阅 Surface 状态:', surfaceId);\n }\n unsubscribe();\n };\n }, [isCreation, surfaceId, handleSchemaUpdate, debug]);\n\n // 获取当前 Schema(考虑版本变化)\n const currentSchema = useMemo(() => {\n if (!isCreation || !surfaceId) {\n return null;\n }\n // schemaVersion 变化时从缓存获取最新 Schema\n return surfaceStateManager.getSchema(surfaceId) || initialSchema;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isCreation, surfaceId, initialSchema, schemaVersion]);\n\n // 非 UI 型消息不渲染(仅 updateDataModel 的消息)\n if (!isUI) {\n if (debug && messages.length > 0) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 纯数据更新消息,跳过渲染');\n }\n return null;\n }\n\n // 删除型消息:返回 null(UI 已被删除)\n if (isDeletion && !isCreation) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除型消息,跳过渲染');\n }\n return null;\n }\n\n // 渲染 UI\n return (\n <JsonRenderActivityRenderer\n activityType={activityType}\n content={currentSchema}\n messageId={messageId}\n ext={ext}\n registry={registry}\n actionHandlers={actionHandlers}\n />\n );\n};\n\nexport default A2UIJsonRenderActivityRenderer;\n"],"names":["extractSurfaceId","messages","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","createSurface","surfaceId","updateComponents","updateDataModel","deleteSurface","err","e","f","isUIMessages","some","hasDeletionMessages","hasCreationMessages","A2UIJsonRenderActivityRenderer","activityType","_ref","content","messageId","ext","registry","actionHandlers","_ref$debug","debug","useEffect","surfaceStateManager","setDebug","_useState","useState","_useState2","_slicedToArray","schemaVersion","setSchemaVersion","_useMemo","useMemo","msgs","Array","isArray","length","isUI","isDeletion","isCreation","initialSchema","console","log","messagesCount","messageTypes","map","Object","keys","m","filter","k","includes","cachedSurfaces","getAllSurfaceIds","schema","convertA2UIMessagesToJsonRender","_messages$find","catalogId","find","registerSurface","elementsCount","elements","data","_iterator2","_step2","_msg$updateDataModel","path","op","value","success","updateData","handleSchemaUpdate","useCallback","v","unsubscribe","subscribe","currentSchema","getSchema","React","createElement","JsonRenderActivityRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,SAASA,iBAAiBC,QAAwC,EAAA;AAAA,EAAA,IAAAC,SAAA,GAAAC,0BAAA,CAC9CF,QAAU,CAAA;IAAAG,KAAA,CAAA;AAAA,EAAA,IAAA;IAA5B,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA4B;AAAA,MAAA,IAAjBC;MACT,IAAIA,GAAI,CAAAC,aAAA,EAAe,OAAOD,IAAIC,aAAc,CAAAC,SAAA,CAAA;MAChD,IAAIF,GAAI,CAAAG,gBAAA,EAAkB,OAAOH,IAAIG,gBAAiB,CAAAD,SAAA,CAAA;MACtD,IAAIF,GAAI,CAAAI,eAAA,EAAiB,OAAOJ,IAAII,eAAgB,CAAAF,SAAA,CAAA;MACpD,IAAIF,GAAI,CAAAK,aAAA,EAAe,OAAOL,IAAIK,aAAc,CAAAH,SAAA,CAAA;AAClD,KAAA;AAAA,GAAA,CAAA,OAAAI,GAAA,EAAA;IAAAZ,SAAA,CAAAa,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,GAAA,SAAA;AAAAZ,IAAAA,SAAA,CAAAc,CAAA,EAAA,CAAA;AAAA,GAAA;AACO,EAAA,OAAA,IAAA,CAAA;AACT,CAAA;AAOA,SAASC,aAAahB,QAAkC,EAAA;AAC/C,EAAA,OAAAA,QAAA,CAASiB,KAAK,UAAOV,GAAA,EAAA;IAAA,OAAAA,GAAA,CAAIC,iBAAiBD,GAAI,CAAAG,gBAAA,IAAoBH,IAAIK,aAAa,CAAA;GAAA,CAAA,CAAA;AAC5F,CAAA;AAKA,SAASM,oBAAoBlB,QAAkC,EAAA;AAC7D,EAAA,OAAOA,QAAS,CAAAiB,IAAA,CAAK,UAAOV,GAAA,EAAA;IAAA,OAAAA,GAAA,CAAIK,aAAa,CAAA;GAAA,CAAA,CAAA;AAC/C,CAAA;AAKA,SAASO,oBAAoBnB,QAAkC,EAAA;AAC7D,EAAA,OAAOA,SAASiB,IAAK,CAAA,UAAAV,GAAA,EAAA;AAAA,IAAA,OAAOA,GAAI,CAAAC,aAAA,IAAiBD,IAAIG,gBAAgB,CAAA;GAAA,CAAA,CAAA;AACvE,CAAA;IAKaU,iCAAgF,SAAhFA,qCAQP;AAAA,EAAA,IAPJC,YAAA,GAAAC,IAAA,CAAAD,YAAA;IACAE,OAAA,GAAAD,IAAA,CAAAC,OAAA;IACAC,SAAA,GAAAF,IAAA,CAAAE,SAAA;IACAC,GAAA,GAAAH,IAAA,CAAAG,GAAA;IACAC,QAAA,GAAAJ,IAAA,CAAAI,QAAA;IACAC,cAAA,GAAAL,IAAA,CAAAK,cAAA;IAAAC,UAAA,GAAAN,IAAA,CACAO,KAAQ;AAARA,IAAAA,KAAQ,GAAAD,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,UAAA,CAAA;AAGRE,EAAAA,SAAA,CAAU,YAAM;AACdC,IAAAA,mBAAA,CAAoBC,SAASH,KAAK,CAAA,CAAA;AACpC,GAAA,EAAG,CAACA,KAAK,CAAC,CAAA,CAAA;AAGV,EAAA,IAAAI,SAAA,GAA0CC,SAAS,CAAC,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA7CI,IAAAA,aAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAeG,IAAAA,gBAAgB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAGhC,EAAA,IAAAI,QAAA,GAAwDC,QAAQ,YAAM;AAC1E,MAAA,IAAMC,OAAOlB,OAAQ,CAAAvB,QAAA,CAAA;AACrB,MAAA,IAAI,CAAC0C,KAAM,CAAAC,OAAA,CAAQF,IAAI,CAAK,IAAAA,IAAA,CAAKG,WAAW,CAAG,EAAA;QACtC,OAAA;AAAEnC,UAAAA,SAAW,EAAA,IAAA;AAAMoC,UAAAA,IAAM,EAAA,KAAA;AAAOC,UAAAA,UAAY,EAAA,KAAA;AAAOC,UAAAA,UAAY,EAAA,KAAA;AAAO/C,UAAAA,QAAU,EAAA,EAAA;SAAG,CAAA;AAC5F,OAAA;MACO,OAAA;AACLS,QAAAA,SAAA,EAAWV,iBAAiB0C,IAAI,CAAA;AAChCI,QAAAA,IAAA,EAAM7B,aAAayB,IAAI,CAAA;AACvBK,QAAAA,UAAA,EAAY5B,oBAAoBuB,IAAI,CAAA;AACpCM,QAAAA,UAAA,EAAY5B,oBAAoBsB,IAAI,CAAA;AACpCzC,QAAAA,QAAU,EAAAyC,IAAAA;OACZ,CAAA;AACF,KAAG,EAAA,CAAClB,OAAQ,CAAAvB,QAAQ,CAAC,CAAA;IAZbS,qBAAAA;IAAWoC,IAAM,GAAAN,QAAA,CAANM,IAAM;IAAAC,UAAA,GAAAP,QAAA,CAAAO,UAAA;IAAYC,sBAAAA;IAAY/C,QAAS,GAAAuC,QAAA,CAATvC,QAAS,CAAA;AAepD,EAAA,IAAAgD,aAAA,GAAgBR,QAAiC,YAAM;IAC3D,IAAI,CAAC/B,SAAA,IAAaT,QAAS,CAAA4C,MAAA,KAAW,CAAG,EAAA;AAChC,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAEA,IAAA,IAAIf,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,0CAAwB,EAAA;AAClC1B,QAAAA,SAAA,EAAAA,SAAA;AACAf,QAAAA,SAAA,EAAAA,SAAA;QACA0C,eAAenD,QAAS,CAAA4C,MAAA;AACxBQ,QAAAA,cAAcpD,QAAS,CAAAqD,GAAA,CAAI;iBACzBC,MAAO,CAAAC,IAAA,CAAKC,CAAC,CAAA,CAAEC,OAAO,UAAKC,CAAA,EAAA;AAAA,YAAA,OAAA,CAAC,eAAiB,EAAA,kBAAA,EAAoB,mBAAmB,eAAe,CAAA,CAAEC,QAAS,CAAAD,CAAC,CAAC,CAAA;WAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SACpH,CAAA;AACAb,QAAAA,IAAA,EAAAA,IAAA;AACAE,QAAAA,UAAA,EAAAA,UAAA;AACAD,QAAAA,UAAA,EAAAA,UAAA;AACAc,QAAAA,cAAA,EAAgB7B,oBAAoB8B,gBAAiB,EAAA;AACvD,OAAC,CAAA,CAAA;AACH,KAAA;AAGA,IAAA,IAAIf,UAAY,EAAA;AACdf,MAAAA,mBAAA,CAAoBnB,cAAcH,SAAS,CAAA,CAAA;AAC3C,MAAA,IAAIoB,KAAO,EAAA;AAEDoB,QAAAA,OAAA,CAAAC,GAAA,CAAI,wCAA8BzC,SAAS,CAAA,CAAA;AACrD,OAAA;AACO,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAGA,IAAA,IAAIsC,UAAY,EAAA;AACR,MAAA,IAAAe,MAAA,GAASC,gCAAgC/D,QAAQ,CAAA,CAAA;AACvD,MAAA,IAAI8D,MAAQ,EAAA;AAAA,QAAA,IAAAE,cAAA,CAAA;QAEV,IAAMC,8BAAYjE,QAAS,CAAAkE,IAAA,CAAK;iBAAKV,CAAE,CAAAhD,aAAa,CAAA;AAAA,SAAA,8DAAlCwD,cAAA,CAAqCxD,aAAe,MAAAwD,IAAAA,IAAAA,cAAA,KAApDA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAoDC,SAAA,CAAA;QAClDlC,mBAAA,CAAAoC,eAAA,CAAgB1D,SAAW,EAAAqD,MAAA,EAAQG,SAAS,CAAA,CAAA;AAEhE,QAAA,IAAIpC,KAAO,EAAA;AAEToB,UAAAA,OAAA,CAAQC,IAAI,0EAAoC,EAAA;AAC9CzC,YAAAA,SAAA,EAAAA,SAAA;YACA2D,aAAe,EAAAd,MAAA,CAAOC,IAAK,CAAAO,MAAA,CAAOO,QAAQ,CAAE,CAAAzB,MAAA;YAC5C0B,MAAMR,MAAO,CAAAQ,IAAAA;AACf,WAAC,CAAA,CAAA;AACH,SAAA;AACF,OAAA;AACO,MAAA,OAAAR,MAAA,CAAA;AACT,KAAA;AAAA,IAAA,IAAAS,UAAA,GAAArE,0BAAA,CAGkBF,QAAU,CAAA;MAAAwE,MAAA,CAAA;AAAA,IAAA,IAAA;MAA5B,KAAAD,UAAA,CAAAnE,CAAA,EAAAoE,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAlE,CAAA,EAAAC,EAAAA,IAAA,GAA4B;AAAA,QAAA,IAAjBC;QACT,IAAIA,IAAII,eAAiB,EAAA;AACvB,UAAA,IAAA8D,oBAAA,GAA4BlE,GAAI,CAAAI,eAAA;YAAxB+D,IAAA,GAAAD,oBAAA,CAAAC,IAAA;YAAMC,EAAI,GAAAF,oBAAA,CAAJE,EAAI;YAAAC,KAAA,GAAAH,oBAAA,CAAAG,KAAA,CAAA;AAClB,UAAA,IAAMC,UAAU9C,mBAAoB,CAAA+C,UAAA,CAAWrE,WAAWiE,IAAM,EAAAC,EAAA,IAAM,WAAWC,KAAK,CAAA,CAAA;AAEtF,UAAA,IAAI/C,KAAO,EAAA;AAEToB,YAAAA,OAAA,CAAQC,IAAI,8EAA8B,EAAA;AACxCzC,cAAAA,SAAA,EAAAA,SAAA;AACAiE,cAAAA,IAAA,EAAAA,IAAA;cACAC,IAAIA,EAAM,IAAA,SAAA;AACVC,cAAAA,KAAA,EAAAA,KAAA;AACAC,cAAAA,OAAA,EAAAA,OAAAA;AACF,aAAC,CAAA,CAAA;AACH,WAAA;AACF,SAAA;AACF,OAAA;AAAA,KAAA,CAAA,OAAAhE,GAAA,EAAA;MAAA0D,UAAA,CAAAzD,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,KAAA,SAAA;AAAA0D,MAAAA,UAAA,CAAAxD,CAAA,EAAA,CAAA;AAAA,KAAA;AAGO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA,EAAG,CAACf,QAAU,EAAAS,SAAA,EAAWsC,YAAYD,UAAY,EAAAD,IAAA,EAAMhB,KAAO,EAAAL,SAAS,CAAC,CAAA,CAAA;AAGlE,EAAA,IAAAuD,kBAAA,GAAqBC,YAAY,YAAM;AAC3C,IAAA,IAAInD,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,qGAA+B,CAAA,CAAA;AAC7C,KAAA;IACiBZ,gBAAA,CAAA,UAAA2C,CAAA,EAAA;MAAA,OAAKA,IAAI,CAAC,CAAA;KAAA,CAAA,CAAA;AAC7B,GAAA,EAAG,CAACpD,KAAK,CAAC,CAAA,CAAA;AAGVC,EAAAA,SAAA,CAAU,YAAM;AACV,IAAA,IAAA,CAACiB,UAAc,IAAA,CAACtC,SAAW,EAAA;AAC7B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIoB,KAAO,EAAA;AAEDoB,MAAAA,OAAA,CAAAC,GAAA,CAAI,qDAAiCzC,SAAS,CAAA,CAAA;AACxD,KAAA;IAEA,IAAMyE,WAAc,GAAAnD,mBAAA,CAAoBoD,SAAU,CAAA1E,SAAA,EAAWsE,kBAAkB,CAAA,CAAA;AAE/E,IAAA,OAAO,YAAM;AACX,MAAA,IAAIlD,KAAO,EAAA;AAEDoB,QAAAA,OAAA,CAAAC,GAAA,CAAI,iEAAmCzC,SAAS,CAAA,CAAA;AAC1D,OAAA;AACYyE,MAAAA,WAAA,EAAA,CAAA;KACd,CAAA;KACC,CAACnC,UAAA,EAAYtC,SAAW,EAAAsE,kBAAA,EAAoBlD,KAAK,CAAC,CAAA,CAAA;AAG/C,EAAA,IAAAuD,aAAA,GAAgB5C,QAAQ,YAAM;AAC9B,IAAA,IAAA,CAACO,UAAc,IAAA,CAACtC,SAAW,EAAA;AACtB,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAEO,IAAA,OAAAsB,mBAAA,CAAoBsD,SAAU,CAAA5E,SAAS,CAAK,IAAAuC,aAAA,CAAA;KAElD,CAACD,UAAA,EAAYtC,SAAW,EAAAuC,aAAA,EAAeX,aAAa,CAAC,CAAA,CAAA;EAGxD,IAAI,CAACQ,IAAM,EAAA;AACL,IAAA,IAAAhB,KAAA,IAAS7B,QAAS,CAAA4C,MAAA,GAAS,CAAG,EAAA;AAEhCK,MAAAA,OAAA,CAAQC,IAAI,yFAA6B,CAAA,CAAA;AAC3C,KAAA;AACO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGI,EAAA,IAAAJ,UAAA,IAAc,CAACC,UAAY,EAAA;AAC7B,IAAA,IAAIlB,KAAO,EAAA;AAEToB,MAAAA,OAAA,CAAQC,IAAI,6EAA2B,CAAA,CAAA;AACzC,KAAA;AACO,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGA,EAAA,sBACGoC,KAAA,CAAAC,aAAA,CAAAC,0BAAA,EAAA;AACCnE,IAAAA,YAAA,EAAAA,YAAA;AACAE,IAAAA,OAAS,EAAA6D,aAAA;AACT5D,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,GAAA,EAAAA,GAAA;AACAC,IAAAA,QAAA,EAAAA,QAAA;AACAC,IAAAA,cAAA,EAAAA,cAAAA;AACF,GAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * json-render Activity 渲染器
3
+ * 基于 TDesign ChatEngine 的 Activity 机制集成 json-render
4
+ *
5
+ * 核心特性:
6
+ * 1. 支持 ACTIVITY_SNAPSHOT 全量渲染
7
+ * 2. 支持 ACTIVITY_DELTA 增量更新(Delta Merge 由数据层完成,此处接收完整 Schema)
8
+ * 3. 使用 React.memo + react-fast-compare 优化渲染性能
9
+ *
10
+ */
11
+ import React from 'react';
12
+ import type { JsonRenderActivityProps, ComponentRegistry } from '../types';
13
+ export interface JsonRenderActivityRendererProps extends JsonRenderActivityProps {
14
+ /** 组件注册表(必须) */
15
+ registry: ComponentRegistry;
16
+ /**
17
+ * Action 处理器映射表
18
+ *
19
+ * 示例:
20
+ * ```tsx
21
+ * const actionHandlers = {
22
+ * submit: async (params) => { ... },
23
+ * reset: async (params) => { ... },
24
+ * cancel: async (params) => { ... },
25
+ * };
26
+ * ```
27
+ */
28
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;
29
+ /** 显示调试信息 */
30
+ debug?: boolean;
31
+ }
32
+ /**
33
+ * 使用 React.memo 包装,配合 react-fast-compare 进行高效的深比较
34
+ *
35
+ * 对比策略:
36
+ * 1. registry 引用比较(通常是稳定的)
37
+ * 2. actionHandlers 引用比较(建议使用 useMemo 稳定化)
38
+ * 3. content 使用 react-fast-compare 深比较(比 JSON.stringify 快 3-5 倍)
39
+ */
40
+ export declare const JsonRenderActivityRenderer: React.NamedExoticComponent<JsonRenderActivityRendererProps>;
41
+ /**
42
+ * 默认导出
43
+ */
44
+ export default JsonRenderActivityRenderer;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import React, { useMemo } from 'react';
8
+ import { r as reactFastCompare } from '../../../../_chunks/dep-96eca06f.js';
9
+ import { JsonRenderElement } from './JsonUIRenderer.js';
10
+ import '../contexts/index.js';
11
+ import { DataProvider } from '../contexts/data.js';
12
+ import { VisibilityProvider } from '../contexts/visibility.js';
13
+ import { ActionProvider } from '../contexts/actions.js';
14
+ import '@babel/runtime/helpers/typeof';
15
+ import '@babel/runtime/helpers/defineProperty';
16
+ import '../contexts/tree.js';
17
+ import '@babel/runtime/helpers/classCallCheck';
18
+ import '@babel/runtime/helpers/createClass';
19
+ import '@babel/runtime/helpers/possibleConstructorReturn';
20
+ import '@babel/runtime/helpers/getPrototypeOf';
21
+ import '@babel/runtime/helpers/inherits';
22
+ import '../contexts/store.js';
23
+ import '../contexts/validation.js';
24
+ import '@babel/runtime/helpers/objectWithoutProperties';
25
+ import '@babel/runtime/helpers/slicedToArray';
26
+ import '@json-render/core';
27
+ import '../../../../_chunks/dep-16520c2b.js';
28
+ import '@babel/runtime/helpers/wrapNativeSuper';
29
+ import '@babel/runtime/helpers/asyncToGenerator';
30
+ import '@babel/runtime/regenerator';
31
+
32
+ var JsonRenderActivityRendererInner = function JsonRenderActivityRendererInner(_ref) {
33
+ var activityType = _ref.activityType,
34
+ content = _ref.content,
35
+ messageId = _ref.messageId,
36
+ registry = _ref.registry,
37
+ _ref$actionHandlers = _ref.actionHandlers,
38
+ actionHandlers = _ref$actionHandlers === void 0 ? {} : _ref$actionHandlers;
39
+ var isValidSchema = content && content.root && content.elements && content.elements[content.root];
40
+ var renderData = useMemo(function () {
41
+ return (content === null || content === void 0 ? void 0 : content.data) || {};
42
+ }, [content === null || content === void 0 ? void 0 : content.data]);
43
+ return /* @__PURE__ */React.createElement("div", {
44
+ "data-activity-type": activityType,
45
+ "data-message-id": messageId
46
+ }, /* @__PURE__ */React.createElement(DataProvider, {
47
+ initialData: renderData
48
+ }, /* @__PURE__ */React.createElement(VisibilityProvider, null, /* @__PURE__ */React.createElement(ActionProvider, {
49
+ handlers: actionHandlers
50
+ }, /* @__PURE__ */React.createElement(JsonRenderElement, {
51
+ tree: content,
52
+ registry: registry
53
+ })))));
54
+ };
55
+ var JsonRenderActivityRenderer = /*#__PURE__*/React.memo(JsonRenderActivityRendererInner, function (prevProps, nextProps) {
56
+ if (prevProps.registry !== nextProps.registry) return false;
57
+ if (prevProps.actionHandlers !== nextProps.actionHandlers) return false;
58
+ if (prevProps.content === nextProps.content) return true;
59
+ return reactFastCompare(prevProps.content, nextProps.content);
60
+ });
61
+
62
+ export { JsonRenderActivityRenderer, JsonRenderActivityRenderer as default };
63
+ //# sourceMappingURL=JsonRenderActivityRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\n * json-render Activity 渲染器\n * 基于 TDesign ChatEngine 的 Activity 机制集成 json-render\n * \n * 核心特性:\n * 1. 支持 ACTIVITY_SNAPSHOT 全量渲染\n * 2. 支持 ACTIVITY_DELTA 增量更新(Delta Merge 由数据层完成,此处接收完整 Schema)\n * 3. 使用 React.memo + react-fast-compare 优化渲染性能\n * \n */\n\nimport React, { useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { JsonRenderElement } from './JsonUIRenderer';\nimport { DataProvider, ActionProvider, VisibilityProvider } from '../contexts';\nimport type { JsonRenderActivityProps, ComponentRegistry } from '../types';\n\nexport interface JsonRenderActivityRendererProps extends JsonRenderActivityProps {\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** \n * Action 处理器映射表\n * \n * 示例:\n * ```tsx\n * const actionHandlers = {\n * submit: async (params) => { ... },\n * reset: async (params) => { ... },\n * cancel: async (params) => { ... },\n * };\n * ```\n */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * json-render Activity 渲染器组件\n */\nconst JsonRenderActivityRendererInner: React.FC<JsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n registry,\n actionHandlers = {},\n}) => {\n // 直接在渲染阶段做校验\n const isValidSchema = content && content.root && content.elements && content.elements[content.root];\n\n // 数据处理:使用 useMemo 缓存,只在 content.data 变化时重新计算\n const renderData = useMemo(() => content?.data || {}, [content?.data]);\n\n // todo: Schema 无效时显示加载状态\n // if (!isValidSchema) {\n // return (\n // <div style={{ padding: '16px', color: 'var(--td-text-color-secondary)' }}>\n // 数据初始化中...\n // </div>\n // );\n // }\n return (\n <div data-activity-type={activityType} data-message-id={messageId}>\n <DataProvider initialData={renderData}>\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers}>\n <JsonRenderElement tree={content} registry={registry} />\n </ActionProvider>\n </VisibilityProvider>\n </DataProvider>\n </div>\n );\n};\n\n/**\n * 使用 React.memo 包装,配合 react-fast-compare 进行高效的深比较\n * \n * 对比策略:\n * 1. registry 引用比较(通常是稳定的)\n * 2. actionHandlers 引用比较(建议使用 useMemo 稳定化)\n * 3. content 使用 react-fast-compare 深比较(比 JSON.stringify 快 3-5 倍)\n */\nexport const JsonRenderActivityRenderer = React.memo(\n JsonRenderActivityRendererInner,\n (prevProps, nextProps) => {\n // registry 变化必须重渲染\n if (prevProps.registry !== nextProps.registry) return false;\n \n // actionHandlers 变化必须重渲染\n if (prevProps.actionHandlers !== nextProps.actionHandlers) return false;\n\n // content 引用相同,跳过渲染\n if (prevProps.content === nextProps.content) return true;\n\n // 使用 react-fast-compare 进行高效深比较\n // 比 JSON.stringify 快 3-5 倍,且能正确处理循环引用\n return isEqual(prevProps.content, nextProps.content);\n },\n);\n\n/**\n * 默认导出\n */\nexport default JsonRenderActivityRenderer;\n"],"names":["JsonRenderActivityRendererInner","activityType","_ref","content","messageId","registry","_ref$actionHandlers","actionHandlers","isValidSchema","root","elements","renderData","useMemo","data","React","createElement","DataProvider","initialData","VisibilityProvider","ActionProvider","handlers","JsonRenderElement","tree","JsonRenderActivityRenderer","memo","prevProps","nextProps","isEqual"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAMA,kCAA6E,SAA7EA,sCAMA;AAAA,EAAA,IALJC,YAAA,GAAAC,IAAA,CAAAD,YAAA;IACAE,OAAA,GAAAD,IAAA,CAAAC,OAAA;IACAC,SAAA,GAAAF,IAAA,CAAAE,SAAA;IACAC,QAAA,GAAAH,IAAA,CAAAG,QAAA;IAAAC,mBAAA,GAAAJ,IAAA,CACAK;AAAAA,IAAAA,kDAAiB,EAAC,GAAAD,mBAAA,CAAA;AAGZ,EAAA,IAAAE,aAAA,GAAgBL,WAAWA,OAAQ,CAAAM,IAAA,IAAQN,QAAQO,QAAY,IAAAP,OAAA,CAAQO,SAASP,OAAQ,CAAAM,IAAA,CAAA,CAAA;EAGxF,IAAAE,UAAA,GAAaC,OAAQ,CAAA,YAAA;IAAA,OAAM,CAAAT,OAAS,KAAA,IAAA,IAATA,OAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAATA,OAAS,CAAAU,IAAA,KAAQ,EAAI,CAAA;GAAA,EAAA,CAACV,OAAS,KAATA,IAAAA,IAAAA,OAAS,uBAATA,OAAS,CAAAU,IAAI,CAAC,CAAA,CAAA;AAUrE,EAAA,sBACGC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAI,IAAA,oBAAoB,EAAAd,YAAA;AAAc,IAAA,iBAAiB,EAAAG,SAAAA;AAAA,GAAA,iBACrDU,KAAA,CAAAC,aAAA,CAAAC,YAAA,EAAA;AAAaC,IAAAA,WAAa,EAAAN,UAAAA;AACzB,GAAA,iBAAAG,KAAA,CAAAC,aAAA,CAACG,yCACEJ,KAAA,CAAAC,aAAA,CAAAI,cAAA,EAAA;AAAeC,IAAAA,QAAU,EAAAb,cAAAA;AAAA,GAAA,iBACvBO,KAAA,CAAAC,aAAA,CAAAM,iBAAA,EAAA;AAAkBC,IAAAA,IAAM,EAAAnB,OAAA;AAASE,IAAAA,QAAA,EAAAA,QAAAA;AAAoB,GAAA,CACxD,CACF,CACF,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAUakB,IAAAA,0CAA6BT,KAAM,CAAAU,IAAA,CAC9CxB,+BAAA,EACA,UAACyB,WAAWC,SAAc,EAAA;EAEpB,IAAAD,SAAA,CAAUpB,aAAaqB,SAAU,CAAArB,QAAA,EAAiB,OAAA,KAAA,CAAA;EAGlD,IAAAoB,SAAA,CAAUlB,mBAAmBmB,SAAU,CAAAnB,cAAA,EAAuB,OAAA,KAAA,CAAA;EAG9D,IAAAkB,SAAA,CAAUtB,YAAYuB,SAAU,CAAAvB,OAAA,EAAgB,OAAA,IAAA,CAAA;EAIpD,OAAOwB,gBAAQ,CAAAF,SAAA,CAAUtB,OAAS,EAAAuB,SAAA,CAAUvB,OAAO,CAAA,CAAA;AACrD,CACF;;;;"}
@@ -0,0 +1,44 @@
1
+ import { type ComponentType, type ReactNode } from "react";
2
+ import type { Catalog, ComponentDefinition } from "@json-render/core";
3
+ import type { ComponentRegistry, RendererProps } from "../types";
4
+ /**
5
+ * Main renderer component
6
+ *
7
+ * 架构说明:
8
+ * - JsonRenderElement 作为入口,不因 tree 变化而重渲染
9
+ * - tree 更新通过 store.setTree() 通知订阅者
10
+ * - 每个 ElementRenderer 独立订阅自己的 element
11
+ * - 配合上游 Structural Sharing,只有真正变化的节点才重渲染
12
+ */
13
+ export declare function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps): import("react/jsx-runtime").JSX.Element;
14
+ /**
15
+ * Props for JSONUIProvider
16
+ */
17
+ export interface JSONUIProviderProps {
18
+ /** Component registry */
19
+ registry: ComponentRegistry;
20
+ /** Initial data model */
21
+ initialData?: Record<string, unknown>;
22
+ /** Auth state */
23
+ authState?: {
24
+ isSignedIn: boolean;
25
+ user?: Record<string, unknown>;
26
+ };
27
+ /** Action handlers */
28
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => Promise<unknown> | unknown>;
29
+ /** Navigation function */
30
+ navigate?: (path: string) => void;
31
+ /** Custom validation functions */
32
+ validationFunctions?: Record<string, (value: unknown, args?: Record<string, unknown>) => boolean>;
33
+ /** Callback when data changes */
34
+ onDataChange?: (path: string, value: unknown) => void;
35
+ children: ReactNode;
36
+ }
37
+ /**
38
+ * Combined provider for all JSONUI contexts
39
+ */
40
+ export declare function JSONUIProvider({ registry, initialData, authState, actionHandlers, navigate, validationFunctions, onDataChange, children, }: JSONUIProviderProps): import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * Helper to create a renderer component from a catalog
43
+ */
44
+ export declare function createRendererFromCatalog<C extends Catalog<Record<string, ComponentDefinition>>>(_catalog: C, registry: ComponentRegistry): ComponentType<Omit<RendererProps, "registry">>;