@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,131 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React, { useRef, useLayoutEffect, useMemo } from 'react';
9
+ import '../contexts/index.js';
10
+ import { useRenderContext, useElement, useRoot, TreeStore, RenderContext } from '../contexts/tree.js';
11
+ import { useIsVisible, VisibilityProvider } from '../contexts/visibility.js';
12
+ import { useActions, ActionProvider } from '../contexts/actions.js';
13
+ import { DataProvider } from '../contexts/data.js';
14
+ import { ValidationProvider } from '../contexts/validation.js';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/helpers/possibleConstructorReturn';
18
+ import '@babel/runtime/helpers/getPrototypeOf';
19
+ import '@babel/runtime/helpers/inherits';
20
+ import '../contexts/store.js';
21
+ import '@json-render/core';
22
+ import '@babel/runtime/helpers/typeof';
23
+ import '@babel/runtime/helpers/slicedToArray';
24
+ import '../../../../_chunks/dep-16520c2b.js';
25
+ import '@babel/runtime/helpers/wrapNativeSuper';
26
+ import '@babel/runtime/helpers/asyncToGenerator';
27
+ import '@babel/runtime/regenerator';
28
+ import '@babel/runtime/helpers/objectWithoutProperties';
29
+
30
+ "use client";
31
+ 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; }
32
+ 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; }
33
+ var ElementRenderer = /*#__PURE__*/React.memo(function ElementRenderer2(_ref) {
34
+ var _registry$element$typ, _element$children;
35
+ var elementKey = _ref.elementKey;
36
+ var _useRenderContext = useRenderContext(),
37
+ registry = _useRenderContext.registry,
38
+ loading = _useRenderContext.loading,
39
+ fallback = _useRenderContext.fallback;
40
+ var element = useElement(elementKey);
41
+ var isVisible = useIsVisible(element === null || element === void 0 ? void 0 : element.visible);
42
+ var _useActions = useActions(),
43
+ execute = _useActions.execute;
44
+ if (!element || !isVisible) {
45
+ return null;
46
+ }
47
+ var Component = (_registry$element$typ = registry[element.type]) !== null && _registry$element$typ !== void 0 ? _registry$element$typ : fallback;
48
+ if (!Component) {
49
+ console.warn("No renderer for component type: ".concat(element.type));
50
+ return null;
51
+ }
52
+ console.count("ElementRenderer-".concat(element.type));
53
+ var children = (_element$children = element.children) === null || _element$children === void 0 ? void 0 : _element$children.map(function (childKey) {
54
+ return /* @__PURE__ */React.createElement(ElementRenderer2, {
55
+ key: childKey,
56
+ elementKey: childKey
57
+ });
58
+ });
59
+ return /* @__PURE__ */React.createElement(Component, {
60
+ element: element,
61
+ onAction: execute,
62
+ loading: loading
63
+ }, children);
64
+ });
65
+ function RootRenderer() {
66
+ var root = useRoot();
67
+ if (!root) {
68
+ return null;
69
+ }
70
+ return /* @__PURE__ */React.createElement(ElementRenderer, {
71
+ elementKey: root
72
+ });
73
+ }
74
+ function JsonRenderElement(_ref2) {
75
+ var tree = _ref2.tree,
76
+ registry = _ref2.registry,
77
+ loading = _ref2.loading,
78
+ fallback = _ref2.fallback;
79
+ if (!tree || !tree.root) {
80
+ return null;
81
+ }
82
+ var storeRef = useRef(null);
83
+ if (!storeRef.current) {
84
+ storeRef.current = new TreeStore();
85
+ }
86
+ var store = storeRef.current;
87
+ useLayoutEffect(function () {
88
+ store.setTree(tree);
89
+ }, [tree, store]);
90
+ var contextValue = useMemo(function () {
91
+ return {
92
+ store: store,
93
+ registry: registry,
94
+ loading: loading,
95
+ fallback: fallback
96
+ };
97
+ }, [store, registry, loading, fallback]);
98
+ return /* @__PURE__ */React.createElement(RenderContext.Provider, {
99
+ value: contextValue
100
+ }, /* @__PURE__ */React.createElement(RootRenderer, null));
101
+ }
102
+ function JSONUIProvider(_ref3) {
103
+ var registry = _ref3.registry,
104
+ initialData = _ref3.initialData,
105
+ authState = _ref3.authState,
106
+ actionHandlers = _ref3.actionHandlers,
107
+ navigate = _ref3.navigate,
108
+ validationFunctions = _ref3.validationFunctions,
109
+ onDataChange = _ref3.onDataChange,
110
+ children = _ref3.children;
111
+ return /* @__PURE__ */React.createElement(DataProvider, {
112
+ initialData: initialData,
113
+ authState: authState,
114
+ onDataChange: onDataChange
115
+ }, /* @__PURE__ */React.createElement(VisibilityProvider, null, /* @__PURE__ */React.createElement(ActionProvider, {
116
+ handlers: actionHandlers,
117
+ navigate: navigate
118
+ }, /* @__PURE__ */React.createElement(ValidationProvider, {
119
+ customFunctions: validationFunctions
120
+ }, children, /* @__PURE__ */React.createElement(ConfirmationDialogManager, null)))));
121
+ }
122
+ function createRendererFromCatalog(_catalog, registry) {
123
+ return function CatalogRenderer(props) {
124
+ return /* @__PURE__ */React.createElement(JsonRenderElement, _objectSpread(_objectSpread({}, props), {}, {
125
+ registry: registry
126
+ }));
127
+ };
128
+ }
129
+
130
+ export { JSONUIProvider, JsonRenderElement, createRendererFromCatalog };
131
+ //# sourceMappingURL=JsonUIRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonUIRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/JsonUIRenderer.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { type ComponentType, type ReactNode, useRef, useLayoutEffect, useMemo } from \"react\";\nimport type {\n Catalog,\n ComponentDefinition,\n} from \"@json-render/core\";\nimport { \n useIsVisible, \n useActions,\n DataProvider, \n ValidationProvider, \n ActionProvider, \n VisibilityProvider,\n} from \"../contexts\";\n\nimport {\n useElement,\n useRoot,\n useRenderContext,\n TreeStore,\n RenderContext,\n} from \"../contexts/tree\";\n\nimport type { ComponentRegistry, RendererProps } from \"../types\";\n\n/**\n * ElementRenderer - 使用 selector 模式订阅特定 element\n * \n * 性能优化原理:\n * 1. 上游使用 Structural Sharing,未修改的节点保持原引用\n * 2. useSyncExternalStore 的 getSnapshot 返回 element 引用\n * 3. 引用相同 → 不重渲染;引用不同 → 重渲染\n */\nconst ElementRenderer = React.memo(function ElementRenderer({\n elementKey,\n}: {\n elementKey: string;\n}) {\n const { registry, loading, fallback } = useRenderContext();\n const element = useElement(elementKey);\n const isVisible = useIsVisible(element?.visible);\n const { execute } = useActions();\n\n // Don't render if element doesn't exist or not visible\n if (!element || !isVisible) {\n return null;\n }\n\n // Get the component renderer\n const Component = registry[element.type] ?? fallback;\n\n if (!Component) {\n console.warn(`No renderer for component type: ${element.type}`);\n return null;\n }\n\n console.count(`ElementRenderer-${element.type}`);\n\n // 子组件独立订阅\n const children = element.children?.map((childKey) => (\n <ElementRenderer key={childKey} elementKey={childKey} />\n ));\n\n return (\n <Component element={element} onAction={execute} loading={loading}>\n {children}\n </Component>\n );\n});\n\n/**\n * Root renderer - 订阅 root 变化\n */\nfunction RootRenderer() {\n const root = useRoot();\n \n if (!root) {\n return null;\n }\n \n return <ElementRenderer elementKey={root} />;\n}\n\n/**\n * Main renderer component\n * \n * 架构说明:\n * - JsonRenderElement 作为入口,不因 tree 变化而重渲染\n * - tree 更新通过 store.setTree() 通知订阅者\n * - 每个 ElementRenderer 独立订阅自己的 element\n * - 配合上游 Structural Sharing,只有真正变化的节点才重渲染\n */\nexport function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps) {\n // 边界保护\n if (!tree || !tree.root) {\n return null;\n }\n // 创建稳定的 store 引用\n const storeRef = useRef<TreeStore | null>(null);\n if (!storeRef.current) {\n storeRef.current = new TreeStore();\n }\n const store = storeRef.current;\n \n // 确保子组件在 useEffect 或布局计算前能获取到最新的 tree。\n useLayoutEffect(() => {\n store.setTree(tree);\n }, [tree, store]);\n \n const contextValue = useMemo(() => ({\n store,\n registry,\n loading,\n fallback,\n }), [store, registry, loading, fallback]);\n\n\n\n return (\n <RenderContext.Provider value={contextValue}>\n <RootRenderer />\n </RenderContext.Provider>\n );\n}\n\n/**\n * Props for JSONUIProvider\n */\nexport interface JSONUIProviderProps {\n /** Component registry */\n registry: ComponentRegistry;\n /** Initial data model */\n initialData?: Record<string, unknown>;\n /** Auth state */\n authState?: { isSignedIn: boolean; user?: Record<string, unknown> };\n /** Action handlers */\n actionHandlers?: Record<\n string,\n (params: Record<string, unknown>) => Promise<unknown> | unknown\n >;\n /** Navigation function */\n navigate?: (path: string) => void;\n /** Custom validation functions */\n validationFunctions?: Record<\n string,\n (value: unknown, args?: Record<string, unknown>) => boolean\n >;\n /** Callback when data changes */\n onDataChange?: (path: string, value: unknown) => void;\n children: ReactNode;\n}\n\n\n/**\n * Combined provider for all JSONUI contexts\n */\nexport function JSONUIProvider({\n registry,\n initialData,\n authState,\n actionHandlers,\n navigate,\n validationFunctions,\n onDataChange,\n children,\n}: JSONUIProviderProps) {\n return (\n <DataProvider\n initialData={initialData}\n authState={authState}\n onDataChange={onDataChange}\n >\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers} navigate={navigate}>\n <ValidationProvider customFunctions={validationFunctions}>\n {children}\n <ConfirmationDialogManager />\n </ValidationProvider>\n </ActionProvider>\n </VisibilityProvider>\n </DataProvider>\n );\n}\n\n/**\n * Helper to create a renderer component from a catalog\n */\nexport function createRendererFromCatalog<\n C extends Catalog<Record<string, ComponentDefinition>>,\n>(\n _catalog: C,\n registry: ComponentRegistry,\n): ComponentType<Omit<RendererProps, \"registry\">> {\n return function CatalogRenderer(props: Omit<RendererProps, \"registry\">) {\n return <JsonRenderElement {...props} registry={registry} />;\n };\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ElementRenderer","React","memo","ElementRenderer2","_ref","_registry$element$typ","_element$children","elementKey","_useRenderContext","useRenderContext","registry","loading","fallback","element","useElement","isVisible","useIsVisible","visible","_useActions","useActions","execute","Component","type","console","warn","concat","count","children","map","childKey","key","createElement","onAction","RootRenderer","root","useRoot","JsonRenderElement","tree","_ref2","storeRef","useRef","current","TreeStore","store","useLayoutEffect","setTree","contextValue","useMemo","RenderContext","Provider","value","JSONUIProvider","_ref3","initialData","authState","actionHandlers","navigate","validationFunctions","onDataChange","DataProvider","VisibilityProvider","ActionProvider","handlers","ValidationProvider","customFunctions","ConfirmationDialogManager","createRendererFromCatalog","_catalog","CatalogRenderer","props"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type ComponentType, type ReactNode } from "react";
2
+ import type { UIElement, UITree, Action, Catalog, ComponentDefinition } from "@json-render/core";
3
+ /**
4
+ * Props passed to component renderers
5
+ */
6
+ export interface ComponentRenderProps<P = Record<string, unknown>> {
7
+ /** The element being rendered */
8
+ element: UIElement<string, P>;
9
+ /** Rendered children */
10
+ children?: ReactNode;
11
+ /** Execute an action */
12
+ onAction?: (action: Action) => void;
13
+ /** Whether the parent is loading */
14
+ loading?: boolean;
15
+ }
16
+ /**
17
+ * Component renderer type
18
+ */
19
+ export type ComponentRenderer<P = Record<string, unknown>> = ComponentType<ComponentRenderProps<P>>;
20
+ /**
21
+ * Registry of component renderers
22
+ */
23
+ export type ComponentRegistry = Record<string, ComponentRenderer<any>>;
24
+ /**
25
+ * Props for the Renderer component
26
+ */
27
+ export interface RendererProps {
28
+ /** The UI tree to render */
29
+ tree: UITree | null;
30
+ /** Component registry */
31
+ registry: ComponentRegistry;
32
+ /** Whether the tree is currently loading/streaming */
33
+ loading?: boolean;
34
+ /** Fallback component for unknown types */
35
+ fallback?: ComponentRenderer;
36
+ }
37
+ /**
38
+ * Main renderer component
39
+ */
40
+ export declare function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps): import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * Props for JSONUIProvider
43
+ */
44
+ export interface JSONUIProviderProps {
45
+ /** Component registry */
46
+ registry: ComponentRegistry;
47
+ /** Initial data model */
48
+ initialData?: Record<string, unknown>;
49
+ /** Auth state */
50
+ authState?: {
51
+ isSignedIn: boolean;
52
+ user?: Record<string, unknown>;
53
+ };
54
+ /** Action handlers */
55
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => Promise<unknown> | unknown>;
56
+ /** Navigation function */
57
+ navigate?: (path: string) => void;
58
+ /** Custom validation functions */
59
+ validationFunctions?: Record<string, (value: unknown, args?: Record<string, unknown>) => boolean>;
60
+ /** Callback when data changes */
61
+ onDataChange?: (path: string, value: unknown) => void;
62
+ children: ReactNode;
63
+ }
64
+ /**
65
+ * Combined provider for all JSONUI contexts
66
+ */
67
+ export declare function JSONUIProvider({ registry, initialData, authState, actionHandlers, navigate, validationFunctions, onDataChange, children, }: JSONUIProviderProps): import("react/jsx-runtime").JSX.Element;
68
+ /**
69
+ * Helper to create a renderer component from a catalog
70
+ */
71
+ export declare function createRendererFromCatalog<C extends Catalog<Record<string, ComponentDefinition>>>(_catalog: C, registry: ComponentRegistry): ComponentType<Omit<RendererProps, "registry">>;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React from 'react';
9
+ import '../contexts/index.js';
10
+ import { useIsVisible, VisibilityProvider } from '../contexts/visibility.js';
11
+ import { useActions, ActionProvider, ConfirmDialog } from '../contexts/actions.js';
12
+ import { DataProvider } from '../contexts/data.js';
13
+ import { ValidationProvider } from '../contexts/validation.js';
14
+ import '@babel/runtime/helpers/typeof';
15
+ import '@babel/runtime/helpers/slicedToArray';
16
+ import '@babel/runtime/helpers/classCallCheck';
17
+ import '@babel/runtime/helpers/createClass';
18
+ import '@babel/runtime/helpers/possibleConstructorReturn';
19
+ import '@babel/runtime/helpers/getPrototypeOf';
20
+ import '@babel/runtime/helpers/inherits';
21
+ import '../../../../_chunks/dep-16520c2b.js';
22
+ import '@babel/runtime/helpers/wrapNativeSuper';
23
+ import '@json-render/core';
24
+ import '../contexts/store.js';
25
+ import '@babel/runtime/helpers/asyncToGenerator';
26
+ import '@babel/runtime/regenerator';
27
+ import '@babel/runtime/helpers/objectWithoutProperties';
28
+
29
+ "use client";
30
+ 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; }
31
+ 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; }
32
+ function ElementRenderer(_ref) {
33
+ var _registry$element$typ, _element$children;
34
+ var element = _ref.element,
35
+ tree = _ref.tree,
36
+ registry = _ref.registry,
37
+ loading = _ref.loading,
38
+ fallback = _ref.fallback;
39
+ var isVisible = useIsVisible(element.visible);
40
+ var _useActions = useActions(),
41
+ execute = _useActions.execute;
42
+ if (!isVisible) {
43
+ return null;
44
+ }
45
+ var Component = (_registry$element$typ = registry[element.type]) !== null && _registry$element$typ !== void 0 ? _registry$element$typ : fallback;
46
+ if (!Component) {
47
+ console.warn("No renderer for component type: ".concat(element.type));
48
+ return null;
49
+ }
50
+ var children = (_element$children = element.children) === null || _element$children === void 0 ? void 0 : _element$children.map(function (childKey) {
51
+ var childElement = tree.elements[childKey];
52
+ if (!childElement) {
53
+ return null;
54
+ }
55
+ return /* @__PURE__ */React.createElement(ElementRenderer, {
56
+ key: childKey,
57
+ element: childElement,
58
+ tree: tree,
59
+ registry: registry,
60
+ loading: loading,
61
+ fallback: fallback
62
+ });
63
+ });
64
+ return /* @__PURE__ */React.createElement(Component, {
65
+ element: element,
66
+ onAction: execute,
67
+ loading: loading
68
+ }, children);
69
+ }
70
+ function JsonRenderElement(_ref2) {
71
+ var tree = _ref2.tree,
72
+ registry = _ref2.registry,
73
+ loading = _ref2.loading,
74
+ fallback = _ref2.fallback;
75
+ if (!tree || !tree.root) {
76
+ return null;
77
+ }
78
+ var rootElement = tree.elements[tree.root];
79
+ if (!rootElement) {
80
+ return null;
81
+ }
82
+ return /* @__PURE__ */React.createElement(ElementRenderer, {
83
+ element: rootElement,
84
+ tree: tree,
85
+ registry: registry,
86
+ loading: loading,
87
+ fallback: fallback
88
+ });
89
+ }
90
+ function JSONUIProvider(_ref3) {
91
+ var registry = _ref3.registry,
92
+ initialData = _ref3.initialData,
93
+ authState = _ref3.authState,
94
+ actionHandlers = _ref3.actionHandlers,
95
+ navigate = _ref3.navigate,
96
+ validationFunctions = _ref3.validationFunctions,
97
+ onDataChange = _ref3.onDataChange,
98
+ children = _ref3.children;
99
+ return /* @__PURE__ */React.createElement(DataProvider, {
100
+ initialData: initialData,
101
+ authState: authState,
102
+ onDataChange: onDataChange
103
+ }, /* @__PURE__ */React.createElement(VisibilityProvider, null, /* @__PURE__ */React.createElement(ActionProvider, {
104
+ handlers: actionHandlers,
105
+ navigate: navigate
106
+ }, /* @__PURE__ */React.createElement(ValidationProvider, {
107
+ customFunctions: validationFunctions
108
+ }, children, /* @__PURE__ */React.createElement(ConfirmationDialogManager, null)))));
109
+ }
110
+ function ConfirmationDialogManager() {
111
+ var _useActions2 = useActions(),
112
+ pendingConfirmation = _useActions2.pendingConfirmation,
113
+ confirm = _useActions2.confirm,
114
+ cancel = _useActions2.cancel;
115
+ if (!(pendingConfirmation !== null && pendingConfirmation !== void 0 && pendingConfirmation.action.confirm)) {
116
+ return null;
117
+ }
118
+ return /* @__PURE__ */React.createElement(ConfirmDialog, {
119
+ confirm: pendingConfirmation.action.confirm,
120
+ onConfirm: confirm,
121
+ onCancel: cancel
122
+ });
123
+ }
124
+ function createRendererFromCatalog(_catalog, registry) {
125
+ return function CatalogRenderer(props) {
126
+ return /* @__PURE__ */React.createElement(JsonRenderElement, _objectSpread(_objectSpread({}, props), {}, {
127
+ registry: registry
128
+ }));
129
+ };
130
+ }
131
+
132
+ export { JSONUIProvider, JsonRenderElement, createRendererFromCatalog };
133
+ //# sourceMappingURL=_index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_index.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/_index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { type ComponentType, type ReactNode } from \"react\";\nimport type {\n UIElement,\n UITree,\n Action,\n Catalog,\n ComponentDefinition,\n} from \"@json-render/core\";\nimport { useIsVisible, useActions, ConfirmDialog } from \"../contexts\";\nimport { DataProvider, ValidationProvider, ActionProvider, VisibilityProvider } from \"../contexts\";\n\n/**\n * Props passed to component renderers\n */\nexport interface ComponentRenderProps<P = Record<string, unknown>> {\n /** The element being rendered */\n element: UIElement<string, P>;\n /** Rendered children */\n children?: ReactNode;\n /** Execute an action */\n onAction?: (action: Action) => void;\n /** Whether the parent is loading */\n loading?: boolean;\n}\n\n/**\n * Component renderer type\n */\nexport type ComponentRenderer<P = Record<string, unknown>> = ComponentType<\n ComponentRenderProps<P>\n>;\n\n/**\n * Registry of component renderers\n */\nexport type ComponentRegistry = Record<string, ComponentRenderer<any>>;\n\n/**\n * Props for the Renderer component\n */\nexport interface RendererProps {\n /** The UI tree to render */\n tree: UITree | null;\n /** Component registry */\n registry: ComponentRegistry;\n /** Whether the tree is currently loading/streaming */\n loading?: boolean;\n /** Fallback component for unknown types */\n fallback?: ComponentRenderer;\n}\n\n/**\n * Element renderer component\n */\nfunction ElementRenderer({\n element,\n tree,\n registry,\n loading,\n fallback,\n}: {\n element: UIElement;\n tree: UITree;\n registry: ComponentRegistry;\n loading?: boolean;\n fallback?: ComponentRenderer;\n}) {\n const isVisible = useIsVisible(element.visible);\n const { execute } = useActions();\n\n // Don't render if not visible\n if (!isVisible) {\n return null;\n }\n\n // Get the component renderer\n const Component = registry[element.type] ?? fallback;\n\n if (!Component) {\n console.warn(`No renderer for component type: ${element.type}`);\n return null;\n }\n\n // Render children\n const children = element.children?.map((childKey) => {\n const childElement = tree.elements[childKey];\n if (!childElement) {\n return null;\n }\n return (\n <ElementRenderer\n key={childKey}\n element={childElement}\n tree={tree}\n registry={registry}\n loading={loading}\n fallback={fallback}\n />\n );\n });\n\n return (\n <Component element={element} onAction={execute} loading={loading}>\n {children}\n </Component>\n );\n}\n\n/**\n * Main renderer component\n */\nexport function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps) {\n if (!tree || !tree.root) {\n return null;\n }\n\n const rootElement = tree.elements[tree.root];\n if (!rootElement) {\n return null;\n }\n\n return (\n <ElementRenderer\n element={rootElement}\n tree={tree}\n registry={registry}\n loading={loading}\n fallback={fallback}\n />\n );\n}\n\n/**\n * Props for JSONUIProvider\n */\nexport interface JSONUIProviderProps {\n /** Component registry */\n registry: ComponentRegistry;\n /** Initial data model */\n initialData?: Record<string, unknown>;\n /** Auth state */\n authState?: { isSignedIn: boolean; user?: Record<string, unknown> };\n /** Action handlers */\n actionHandlers?: Record<\n string,\n (params: Record<string, unknown>) => Promise<unknown> | unknown\n >;\n /** Navigation function */\n navigate?: (path: string) => void;\n /** Custom validation functions */\n validationFunctions?: Record<\n string,\n (value: unknown, args?: Record<string, unknown>) => boolean\n >;\n /** Callback when data changes */\n onDataChange?: (path: string, value: unknown) => void;\n children: ReactNode;\n}\n\n\n/**\n * Combined provider for all JSONUI contexts\n */\nexport function JSONUIProvider({\n registry,\n initialData,\n authState,\n actionHandlers,\n navigate,\n validationFunctions,\n onDataChange,\n children,\n}: JSONUIProviderProps) {\n return (\n <DataProvider\n initialData={initialData}\n authState={authState}\n onDataChange={onDataChange}\n >\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers} navigate={navigate}>\n <ValidationProvider customFunctions={validationFunctions}>\n {children}\n <ConfirmationDialogManager />\n </ValidationProvider>\n </ActionProvider>\n </VisibilityProvider>\n </DataProvider>\n );\n}\n\n/**\n * Renders the confirmation dialog when needed\n */\nfunction ConfirmationDialogManager() {\n const { pendingConfirmation, confirm, cancel } = useActions();\n\n if (!pendingConfirmation?.action.confirm) {\n return null;\n }\n\n return (\n <ConfirmDialog\n confirm={pendingConfirmation.action.confirm}\n onConfirm={confirm}\n onCancel={cancel}\n />\n );\n}\n\n/**\n * Helper to create a renderer component from a catalog\n */\nexport function createRendererFromCatalog<\n C extends Catalog<Record<string, ComponentDefinition>>,\n>(\n _catalog: C,\n registry: ComponentRegistry,\n): ComponentType<Omit<RendererProps, \"registry\">> {\n return function CatalogRenderer(props: Omit<RendererProps, \"registry\">) {\n return <JsonRenderElement {...props} registry={registry} />;\n };\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ElementRenderer","_ref","_registry$element$typ","_element$children","element","tree","registry","loading","fallback","isVisible","useIsVisible","visible","_useActions","useActions","execute","Component","type","console","warn","concat","children","map","childKey","childElement","elements","React","createElement","key","onAction","JsonRenderElement","_ref2","root","rootElement","JSONUIProvider","_ref3","initialData","authState","actionHandlers","navigate","validationFunctions","onDataChange","DataProvider","VisibilityProvider","ActionProvider","handlers","ValidationProvider","customFunctions","ConfirmationDialogManager","_useActions2","pendingConfirmation","confirm","cancel","action","ConfirmDialog","onConfirm","onCancel","createRendererFromCatalog","_catalog","CatalogRenderer","props"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type ComponentType, type ReactNode } from "react";
2
+ import type { UIElement, UITree, Action, Catalog, ComponentDefinition } from "@json-render/core";
3
+ /**
4
+ * Props passed to component renderers
5
+ */
6
+ export interface ComponentRenderProps<P = Record<string, unknown>> {
7
+ /** The element being rendered */
8
+ element: UIElement<string, P>;
9
+ /** Rendered children */
10
+ children?: ReactNode;
11
+ /** Execute an action */
12
+ onAction?: (action: Action) => void;
13
+ /** Whether the parent is loading */
14
+ loading?: boolean;
15
+ }
16
+ /**
17
+ * Component renderer type
18
+ */
19
+ export type ComponentRenderer<P = Record<string, unknown>> = ComponentType<ComponentRenderProps<P>>;
20
+ /**
21
+ * Registry of component renderers
22
+ */
23
+ export type ComponentRegistry = Record<string, ComponentRenderer<any>>;
24
+ /**
25
+ * Props for the Renderer component
26
+ */
27
+ export interface RendererProps {
28
+ /** The UI tree to render */
29
+ tree: UITree | null;
30
+ /** Component registry */
31
+ registry: ComponentRegistry;
32
+ /** Whether the tree is currently loading/streaming */
33
+ loading?: boolean;
34
+ /** Fallback component for unknown types */
35
+ fallback?: ComponentRenderer;
36
+ }
37
+ /**
38
+ * Main renderer component
39
+ */
40
+ export declare function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps): import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * Props for JSONUIProvider
43
+ */
44
+ export interface JSONUIProviderProps {
45
+ /** Component registry */
46
+ registry: ComponentRegistry;
47
+ /** Initial data model */
48
+ initialData?: Record<string, unknown>;
49
+ /** Auth state */
50
+ authState?: {
51
+ isSignedIn: boolean;
52
+ user?: Record<string, unknown>;
53
+ };
54
+ /** Action handlers */
55
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => Promise<unknown> | unknown>;
56
+ /** Navigation function */
57
+ navigate?: (path: string) => void;
58
+ /** Custom validation functions */
59
+ validationFunctions?: Record<string, (value: unknown, args?: Record<string, unknown>) => boolean>;
60
+ /** Callback when data changes */
61
+ onDataChange?: (path: string, value: unknown) => void;
62
+ children: ReactNode;
63
+ }
64
+ /**
65
+ * Combined provider for all JSONUI contexts
66
+ */
67
+ export declare function JSONUIProvider({ registry, initialData, authState, actionHandlers, navigate, validationFunctions, onDataChange, children, }: JSONUIProviderProps): import("react/jsx-runtime").JSX.Element;
68
+ /**
69
+ * Helper to create a renderer component from a catalog
70
+ */
71
+ export declare function createRendererFromCatalog<C extends Catalog<Record<string, ComponentDefinition>>>(_catalog: C, registry: ComponentRegistry): ComponentType<Omit<RendererProps, "registry">>;
@@ -0,0 +1,125 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.5
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React from 'react';
9
+ import '../contexts/index.js';
10
+ import { useIsVisible, VisibilityProvider } from '../contexts/visibility.js';
11
+ import { useActions, ActionProvider, ConfirmDialog } from '../contexts/actions.js';
12
+ import { DataProvider } from '../contexts/data.js';
13
+ import { ValidationProvider } from '../contexts/validation.js';
14
+ import '@json-render/core';
15
+ import '@babel/runtime/helpers/asyncToGenerator';
16
+ import '@babel/runtime/helpers/slicedToArray';
17
+ import '@babel/runtime/regenerator';
18
+ import '@babel/runtime/helpers/typeof';
19
+ import '@babel/runtime/helpers/objectWithoutProperties';
20
+
21
+ "use client";
22
+ 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; }
23
+ 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; }
24
+ function ElementRenderer(_ref) {
25
+ var _registry$element$typ, _element$children;
26
+ var element = _ref.element,
27
+ tree = _ref.tree,
28
+ registry = _ref.registry,
29
+ loading = _ref.loading,
30
+ fallback = _ref.fallback;
31
+ var isVisible = useIsVisible(element.visible);
32
+ var _useActions = useActions(),
33
+ execute = _useActions.execute;
34
+ if (!isVisible) {
35
+ return null;
36
+ }
37
+ var Component = (_registry$element$typ = registry[element.type]) !== null && _registry$element$typ !== void 0 ? _registry$element$typ : fallback;
38
+ if (!Component) {
39
+ console.warn("No renderer for component type: ".concat(element.type));
40
+ return null;
41
+ }
42
+ var children = (_element$children = element.children) === null || _element$children === void 0 ? void 0 : _element$children.map(function (childKey) {
43
+ var childElement = tree.elements[childKey];
44
+ if (!childElement) {
45
+ return null;
46
+ }
47
+ return /* @__PURE__ */React.createElement(ElementRenderer, {
48
+ key: childKey,
49
+ element: childElement,
50
+ tree: tree,
51
+ registry: registry,
52
+ loading: loading,
53
+ fallback: fallback
54
+ });
55
+ });
56
+ return /* @__PURE__ */React.createElement(Component, {
57
+ element: element,
58
+ onAction: execute,
59
+ loading: loading
60
+ }, children);
61
+ }
62
+ function JsonRenderElement(_ref2) {
63
+ var tree = _ref2.tree,
64
+ registry = _ref2.registry,
65
+ loading = _ref2.loading,
66
+ fallback = _ref2.fallback;
67
+ if (!tree || !tree.root) {
68
+ return null;
69
+ }
70
+ var rootElement = tree.elements[tree.root];
71
+ if (!rootElement) {
72
+ return null;
73
+ }
74
+ return /* @__PURE__ */React.createElement(ElementRenderer, {
75
+ element: rootElement,
76
+ tree: tree,
77
+ registry: registry,
78
+ loading: loading,
79
+ fallback: fallback
80
+ });
81
+ }
82
+ function JSONUIProvider(_ref3) {
83
+ var registry = _ref3.registry,
84
+ initialData = _ref3.initialData,
85
+ authState = _ref3.authState,
86
+ actionHandlers = _ref3.actionHandlers,
87
+ navigate = _ref3.navigate,
88
+ validationFunctions = _ref3.validationFunctions,
89
+ onDataChange = _ref3.onDataChange,
90
+ children = _ref3.children;
91
+ return /* @__PURE__ */React.createElement(DataProvider, {
92
+ initialData: initialData,
93
+ authState: authState,
94
+ onDataChange: onDataChange
95
+ }, /* @__PURE__ */React.createElement(VisibilityProvider, null, /* @__PURE__ */React.createElement(ActionProvider, {
96
+ handlers: actionHandlers,
97
+ navigate: navigate
98
+ }, /* @__PURE__ */React.createElement(ValidationProvider, {
99
+ customFunctions: validationFunctions
100
+ }, children, /* @__PURE__ */React.createElement(ConfirmationDialogManager, null)))));
101
+ }
102
+ function ConfirmationDialogManager() {
103
+ var _useActions2 = useActions(),
104
+ pendingConfirmation = _useActions2.pendingConfirmation,
105
+ confirm = _useActions2.confirm,
106
+ cancel = _useActions2.cancel;
107
+ if (!(pendingConfirmation !== null && pendingConfirmation !== void 0 && pendingConfirmation.action.confirm)) {
108
+ return null;
109
+ }
110
+ return /* @__PURE__ */React.createElement(ConfirmDialog, {
111
+ confirm: pendingConfirmation.action.confirm,
112
+ onConfirm: confirm,
113
+ onCancel: cancel
114
+ });
115
+ }
116
+ function createRendererFromCatalog(_catalog, registry) {
117
+ return function CatalogRenderer(props) {
118
+ return /* @__PURE__ */React.createElement(JsonRenderElement, _objectSpread(_objectSpread({}, props), {}, {
119
+ registry: registry
120
+ }));
121
+ };
122
+ }
123
+
124
+ export { JSONUIProvider, JsonRenderElement, createRendererFromCatalog };
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { type ComponentType, type ReactNode } from \"react\";\nimport type {\n UIElement,\n UITree,\n Action,\n Catalog,\n ComponentDefinition,\n} from \"@json-render/core\";\nimport { useIsVisible, useActions, ConfirmDialog } from \"../contexts\";\nimport { DataProvider, ValidationProvider, ActionProvider, VisibilityProvider } from \"../contexts\";\n\n/**\n * Props passed to component renderers\n */\nexport interface ComponentRenderProps<P = Record<string, unknown>> {\n /** The element being rendered */\n element: UIElement<string, P>;\n /** Rendered children */\n children?: ReactNode;\n /** Execute an action */\n onAction?: (action: Action) => void;\n /** Whether the parent is loading */\n loading?: boolean;\n}\n\n/**\n * Component renderer type\n */\nexport type ComponentRenderer<P = Record<string, unknown>> = ComponentType<\n ComponentRenderProps<P>\n>;\n\n/**\n * Registry of component renderers\n */\nexport type ComponentRegistry = Record<string, ComponentRenderer<any>>;\n\n/**\n * Props for the Renderer component\n */\nexport interface RendererProps {\n /** The UI tree to render */\n tree: UITree | null;\n /** Component registry */\n registry: ComponentRegistry;\n /** Whether the tree is currently loading/streaming */\n loading?: boolean;\n /** Fallback component for unknown types */\n fallback?: ComponentRenderer;\n}\n\n/**\n * Element renderer component\n */\nfunction ElementRenderer({\n element,\n tree,\n registry,\n loading,\n fallback,\n}: {\n element: UIElement;\n tree: UITree;\n registry: ComponentRegistry;\n loading?: boolean;\n fallback?: ComponentRenderer;\n}) {\n const isVisible = useIsVisible(element.visible);\n const { execute } = useActions();\n\n // Don't render if not visible\n if (!isVisible) {\n return null;\n }\n\n // Get the component renderer\n const Component = registry[element.type] ?? fallback;\n\n if (!Component) {\n console.warn(`No renderer for component type: ${element.type}`);\n return null;\n }\n\n // Render children\n const children = element.children?.map((childKey) => {\n const childElement = tree.elements[childKey];\n if (!childElement) {\n return null;\n }\n return (\n <ElementRenderer\n key={childKey}\n element={childElement}\n tree={tree}\n registry={registry}\n loading={loading}\n fallback={fallback}\n />\n );\n });\n\n return (\n <Component element={element} onAction={execute} loading={loading}>\n {children}\n </Component>\n );\n}\n\n/**\n * Main renderer component\n */\nexport function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps) {\n if (!tree || !tree.root) {\n return null;\n }\n\n const rootElement = tree.elements[tree.root];\n if (!rootElement) {\n return null;\n }\n\n return (\n <ElementRenderer\n element={rootElement}\n tree={tree}\n registry={registry}\n loading={loading}\n fallback={fallback}\n />\n );\n}\n\n/**\n * Props for JSONUIProvider\n */\nexport interface JSONUIProviderProps {\n /** Component registry */\n registry: ComponentRegistry;\n /** Initial data model */\n initialData?: Record<string, unknown>;\n /** Auth state */\n authState?: { isSignedIn: boolean; user?: Record<string, unknown> };\n /** Action handlers */\n actionHandlers?: Record<\n string,\n (params: Record<string, unknown>) => Promise<unknown> | unknown\n >;\n /** Navigation function */\n navigate?: (path: string) => void;\n /** Custom validation functions */\n validationFunctions?: Record<\n string,\n (value: unknown, args?: Record<string, unknown>) => boolean\n >;\n /** Callback when data changes */\n onDataChange?: (path: string, value: unknown) => void;\n children: ReactNode;\n}\n\n\n/**\n * Combined provider for all JSONUI contexts\n */\nexport function JSONUIProvider({\n registry,\n initialData,\n authState,\n actionHandlers,\n navigate,\n validationFunctions,\n onDataChange,\n children,\n}: JSONUIProviderProps) {\n return (\n <DataProvider\n initialData={initialData}\n authState={authState}\n onDataChange={onDataChange}\n >\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers} navigate={navigate}>\n <ValidationProvider customFunctions={validationFunctions}>\n {children}\n <ConfirmationDialogManager />\n </ValidationProvider>\n </ActionProvider>\n </VisibilityProvider>\n </DataProvider>\n );\n}\n\n/**\n * Renders the confirmation dialog when needed\n */\nfunction ConfirmationDialogManager() {\n const { pendingConfirmation, confirm, cancel } = useActions();\n\n if (!pendingConfirmation?.action.confirm) {\n return null;\n }\n\n return (\n <ConfirmDialog\n confirm={pendingConfirmation.action.confirm}\n onConfirm={confirm}\n onCancel={cancel}\n />\n );\n}\n\n/**\n * Helper to create a renderer component from a catalog\n */\nexport function createRendererFromCatalog<\n C extends Catalog<Record<string, ComponentDefinition>>,\n>(\n _catalog: C,\n registry: ComponentRegistry,\n): ComponentType<Omit<RendererProps, \"registry\">> {\n return function CatalogRenderer(props: Omit<RendererProps, \"registry\">) {\n return <JsonRenderElement {...props} registry={registry} />;\n };\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ElementRenderer","_ref","_registry$element$typ","_element$children","element","tree","registry","loading","fallback","isVisible","useIsVisible","visible","_useActions","useActions","execute","Component","type","console","warn","concat","children","map","childKey","childElement","elements","React","createElement","key","onAction","JsonRenderElement","_ref2","root","rootElement","JSONUIProvider","_ref3","initialData","authState","actionHandlers","navigate","validationFunctions","onDataChange","DataProvider","VisibilityProvider","ActionProvider","handlers","ValidationProvider","customFunctions","ConfirmationDialogManager","_useActions2","pendingConfirmation","confirm","cancel","action","ConfirmDialog","onConfirm","onCancel","createRendererFromCatalog","_catalog","CatalogRenderer","props"],"mappings":"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"}