@tdesign-react/chat 1.1.0-alpha.5 → 1.1.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_chunks/dep-1007ac80.js +205 -0
- package/es/_chunks/dep-1007ac80.js.map +1 -0
- package/es/_chunks/dep-16520c2b.js +1247 -0
- package/es/_chunks/dep-16520c2b.js.map +1 -0
- package/es/_chunks/dep-1743bd61.js +438 -0
- package/es/_chunks/dep-1743bd61.js.map +1 -0
- package/es/_chunks/dep-56f5e08e.js +448 -0
- package/es/_chunks/dep-56f5e08e.js.map +1 -0
- package/es/_chunks/dep-96eca06f.js +169 -0
- package/es/_chunks/dep-96eca06f.js.map +1 -0
- package/es/_util/reactify.js +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/attachments/index.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-engine/components/activity/index.js +3 -1
- package/es/chat-engine/components/activity/index.js.map +1 -1
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/render.d.ts +4 -0
- package/es/chat-engine/components/activity/render.js +14 -2
- package/es/chat-engine/components/activity/render.js.map +1 -1
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +28 -20
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
- package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
- package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
- package/es/chat-engine/components/json-render/contexts/data.js +155 -76
- package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
- package/es/chat-engine/components/json-render/contexts/index.js +27 -0
- package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
- package/es/chat-engine/components/json-render/contexts/store.js +104 -0
- package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
- package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
- package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
- package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
- package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
- package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
- package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
- package/es/chat-engine/components/json-render/index.d.ts +9 -32
- package/es/chat-engine/components/json-render/index.js +59 -19
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
- package/es/chat-engine/components/json-render/registry/config.js +76 -0
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
- package/es/chat-engine/components/json-render/registry/index.js +76 -0
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
- package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/index.js +125 -0
- package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
- package/es/chat-engine/components/json-render/types.d.ts +37 -19
- package/es/chat-engine/components/json-render/types.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js +14 -7
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +14 -7
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/render.js +16 -9
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
- package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
- package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
- package/es/chat-engine/core/adapters/agui/index.js +11 -16
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
- package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
- package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
- package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
- package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/utils.js +1 -1
- package/es/chat-engine/core/adapters/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/index.js +34 -0
- package/es/chat-engine/core/adapters/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
- package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
- package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
- package/es/chat-engine/core/adapters/json-render/index.js +18 -0
- package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
- package/es/chat-engine/core/event-bus/index.js +1 -1
- package/es/chat-engine/core/event-bus/types.js +1 -1
- package/es/chat-engine/core/index.d.ts +2 -3
- package/es/chat-engine/core/index.js +16 -8
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.js +1 -1
- package/es/chat-engine/core/server/batch-client.js +1 -1
- package/es/chat-engine/core/server/connection-manager.js +1 -1
- package/es/chat-engine/core/server/errors.js +1 -1
- package/es/chat-engine/core/server/index.js +1 -1
- package/es/chat-engine/core/server/llm-service.js +15 -17
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- package/es/chat-engine/core/server/sse-client.js +1 -1
- package/es/chat-engine/core/server/sse-parser.js +1 -1
- package/es/chat-engine/core/server/types.js +1 -1
- package/es/chat-engine/core/store/message.js +6 -4
- package/es/chat-engine/core/store/message.js.map +1 -1
- package/es/chat-engine/core/store/model.js +2 -1
- package/es/chat-engine/core/store/model.js.map +1 -1
- package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
- package/es/chat-engine/core/store/reactiveState.js +15 -1235
- package/es/chat-engine/core/store/reactiveState.js.map +1 -1
- package/es/chat-engine/core/type.d.ts +8 -19
- package/es/chat-engine/core/type.js +1 -1
- package/es/chat-engine/core/utils/eventEmitter.js +1 -1
- package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
- package/es/chat-engine/core/utils/immutable-patch.js +147 -0
- package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
- package/es/chat-engine/core/utils/index.d.ts +7 -2
- package/es/chat-engine/core/utils/index.js +8 -12
- package/es/chat-engine/core/utils/index.js.map +1 -1
- package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
- package/es/chat-engine/core/utils/json-patch/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/core/utils/performance.d.ts +94 -0
- package/es/chat-engine/core/utils/performance.js +205 -0
- package/es/chat-engine/core/utils/performance.js.map +1 -0
- package/es/chat-engine/hooks/index.js +14 -7
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js +14 -7
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useChat.js +14 -7
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +28 -20
- package/es/chat-engine/index.js.map +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/index.js +1 -1
- package/es/index.js +28 -20
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,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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"}
|