@dudousxd/nestjs-agent-react 0.27.0 → 0.29.0
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/README.md +55 -2
- package/dist/{client-DNM5Qm5N.d.cts → client-DhHEJi7c.d.cts} +19 -1
- package/dist/{client-DNM5Qm5N.d.ts → client-DhHEJi7c.d.ts} +19 -1
- package/dist/{generative-ui-jT9TYfCi.d.cts → generative-ui-VTZ1EADD.d.cts} +12 -0
- package/dist/{generative-ui-jT9TYfCi.d.ts → generative-ui-VTZ1EADD.d.ts} +12 -0
- package/dist/genui-json-render.cjs +202 -370
- package/dist/genui-json-render.cjs.map +1 -1
- package/dist/genui-json-render.d.cts +1 -1
- package/dist/genui-json-render.d.ts +1 -1
- package/dist/genui-json-render.js +209 -373
- package/dist/genui-json-render.js.map +1 -1
- package/dist/genui.cjs +178 -320
- package/dist/genui.cjs.map +1 -1
- package/dist/genui.d.cts +2 -2
- package/dist/genui.d.ts +2 -2
- package/dist/genui.js +185 -323
- package/dist/genui.js.map +1 -1
- package/dist/index.cjs +2044 -2729
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +123 -12
- package/dist/index.d.ts +123 -12
- package/dist/index.js +2067 -2737
- package/dist/index.js.map +1 -1
- package/dist/markdown.cjs +23 -36
- package/dist/markdown.cjs.map +1 -1
- package/dist/markdown.js +23 -28
- package/dist/markdown.js.map +1 -1
- package/dist/media.cjs +46 -79
- package/dist/media.cjs.map +1 -1
- package/dist/media.d.cts +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.js +46 -81
- package/dist/media.js.map +1 -1
- package/package.json +3 -2
package/dist/genui.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/genui/generative-ui.tsx
|
|
5
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Component,
|
|
4
|
+
createContext as createContext2,
|
|
5
|
+
useCallback,
|
|
6
|
+
useContext as useContext2,
|
|
7
|
+
useMemo as useMemo2
|
|
8
|
+
} from "react";
|
|
6
9
|
|
|
7
10
|
// src/components/ambient-ui.ts
|
|
8
11
|
import { createContext, useContext } from "react";
|
|
@@ -15,7 +18,6 @@ function sharedContext(key) {
|
|
|
15
18
|
holder[symbol] = created;
|
|
16
19
|
return created;
|
|
17
20
|
}
|
|
18
|
-
__name(sharedContext, "sharedContext");
|
|
19
21
|
var AmbientRenderUiContext = sharedContext("@dudousxd/nestjs-agent-react:ambient-render-ui");
|
|
20
22
|
|
|
21
23
|
// src/genui/use-generative-ui.ts
|
|
@@ -28,7 +30,6 @@ var GENUI_TREE_COMPONENT = "genui:tree";
|
|
|
28
30
|
function isRecord(value) {
|
|
29
31
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
30
32
|
}
|
|
31
|
-
__name(isRecord, "isRecord");
|
|
32
33
|
function toGenerativeUIItem(part) {
|
|
33
34
|
if (!isRecord(part)) return null;
|
|
34
35
|
const source = part.type === "data-ui" && isRecord(part.data) ? part.data : part;
|
|
@@ -43,7 +44,6 @@ function toGenerativeUIItem(part) {
|
|
|
43
44
|
toolCallId: typeof source.toolCallId === "string" ? source.toolCallId : null
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
__name(toGenerativeUIItem, "toGenerativeUIItem");
|
|
47
47
|
var resolverCaches = /* @__PURE__ */ new WeakMap();
|
|
48
48
|
function resolveCached(resolve, name, version) {
|
|
49
49
|
let cache = resolverCaches.get(resolve);
|
|
@@ -58,49 +58,27 @@ function resolveCached(resolve, name, version) {
|
|
|
58
58
|
try {
|
|
59
59
|
const result = resolve(name, version);
|
|
60
60
|
if (result instanceof Promise) {
|
|
61
|
-
entry = {
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
entry = { resolution: { status: "loading" }, settled: null };
|
|
62
|
+
entry.settled = result.then(
|
|
63
|
+
(Component2) => {
|
|
64
|
+
entry.resolution = Component2 ? { status: "ready", Component: Component2 } : { status: "unknown" };
|
|
64
65
|
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
status: "ready",
|
|
70
|
-
Component: Component2
|
|
71
|
-
} : {
|
|
72
|
-
status: "unknown"
|
|
73
|
-
};
|
|
74
|
-
}, (error) => {
|
|
75
|
-
entry.resolution = {
|
|
76
|
-
status: "error",
|
|
77
|
-
error
|
|
78
|
-
};
|
|
79
|
-
});
|
|
66
|
+
(error) => {
|
|
67
|
+
entry.resolution = { status: "error", error };
|
|
68
|
+
}
|
|
69
|
+
);
|
|
80
70
|
} else {
|
|
81
71
|
entry = {
|
|
82
|
-
resolution: result ? {
|
|
83
|
-
status: "ready",
|
|
84
|
-
Component: result
|
|
85
|
-
} : {
|
|
86
|
-
status: "unknown"
|
|
87
|
-
},
|
|
72
|
+
resolution: result ? { status: "ready", Component: result } : { status: "unknown" },
|
|
88
73
|
settled: null
|
|
89
74
|
};
|
|
90
75
|
}
|
|
91
76
|
} catch (error) {
|
|
92
|
-
entry = {
|
|
93
|
-
resolution: {
|
|
94
|
-
status: "error",
|
|
95
|
-
error
|
|
96
|
-
},
|
|
97
|
-
settled: null
|
|
98
|
-
};
|
|
77
|
+
entry = { resolution: { status: "error", error }, settled: null };
|
|
99
78
|
}
|
|
100
79
|
cache.set(key, entry);
|
|
101
80
|
return entry;
|
|
102
81
|
}
|
|
103
|
-
__name(resolveCached, "resolveCached");
|
|
104
82
|
function useResolvedComponent(name, version, registry, resolve, fallbackTree) {
|
|
105
83
|
const [, setTick] = useState(0);
|
|
106
84
|
const own = registry[name];
|
|
@@ -115,170 +93,101 @@ function useResolvedComponent(name, version, registry, resolve, fallbackTree) {
|
|
|
115
93
|
return () => {
|
|
116
94
|
live = false;
|
|
117
95
|
};
|
|
118
|
-
}, [
|
|
119
|
-
|
|
120
|
-
]);
|
|
121
|
-
if (own !== void 0) return {
|
|
122
|
-
status: "ready",
|
|
123
|
-
Component: own
|
|
124
|
-
};
|
|
96
|
+
}, [pending]);
|
|
97
|
+
if (own !== void 0) return { status: "ready", Component: own };
|
|
125
98
|
if (entry !== null && entry.resolution.status !== "unknown") return entry.resolution;
|
|
126
99
|
if (name === GENUI_TREE_COMPONENT && fallbackTree !== void 0) {
|
|
127
|
-
return {
|
|
128
|
-
status: "ready",
|
|
129
|
-
Component: fallbackTree
|
|
130
|
-
};
|
|
100
|
+
return { status: "ready", Component: fallbackTree };
|
|
131
101
|
}
|
|
132
|
-
return {
|
|
133
|
-
status: "unknown"
|
|
134
|
-
};
|
|
102
|
+
return { status: "unknown" };
|
|
135
103
|
}
|
|
136
|
-
__name(useResolvedComponent, "useResolvedComponent");
|
|
137
104
|
function useValidatedProps(catalog, name, props) {
|
|
138
105
|
const checked = catalog?.has(name) === true;
|
|
139
106
|
const immediate = useMemo(() => {
|
|
140
|
-
if (!checked || catalog === void 0) return {
|
|
141
|
-
status: "ok",
|
|
142
|
-
props
|
|
143
|
-
};
|
|
107
|
+
if (!checked || catalog === void 0) return { status: "ok", props };
|
|
144
108
|
const result = catalog.validateSync?.(name, props);
|
|
145
109
|
if (result === void 0) return null;
|
|
146
|
-
return result.ok ? {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
issues: result.issues
|
|
152
|
-
};
|
|
153
|
-
}, [
|
|
154
|
-
checked,
|
|
155
|
-
catalog,
|
|
156
|
-
name,
|
|
157
|
-
props
|
|
158
|
-
]);
|
|
159
|
-
const [late, setLate] = useState(null);
|
|
110
|
+
return result.ok ? { status: "ok", props: result.value } : { status: "invalid", issues: result.issues };
|
|
111
|
+
}, [checked, catalog, name, props]);
|
|
112
|
+
const [late, setLate] = useState(
|
|
113
|
+
null
|
|
114
|
+
);
|
|
160
115
|
useEffect(() => {
|
|
161
116
|
if (immediate !== null || catalog === void 0) return;
|
|
162
117
|
let live = true;
|
|
163
|
-
catalog.validate(name, props).then(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
status: "ok",
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
{
|
|
183
|
-
path: [],
|
|
184
|
-
message: error instanceof Error ? error.message : String(error)
|
|
185
|
-
}
|
|
186
|
-
]
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
});
|
|
118
|
+
catalog.validate(name, props).then(
|
|
119
|
+
(result) => {
|
|
120
|
+
if (!live) return;
|
|
121
|
+
setLate({
|
|
122
|
+
props,
|
|
123
|
+
result: result.ok ? { status: "ok", props: result.value } : { status: "invalid", issues: result.issues }
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
(error) => {
|
|
127
|
+
if (!live) return;
|
|
128
|
+
setLate({
|
|
129
|
+
props,
|
|
130
|
+
result: {
|
|
131
|
+
status: "invalid",
|
|
132
|
+
issues: [{ path: [], message: error instanceof Error ? error.message : String(error) }]
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
);
|
|
190
137
|
return () => {
|
|
191
138
|
live = false;
|
|
192
139
|
};
|
|
193
|
-
}, [
|
|
194
|
-
immediate,
|
|
195
|
-
catalog,
|
|
196
|
-
name,
|
|
197
|
-
props
|
|
198
|
-
]);
|
|
140
|
+
}, [immediate, catalog, name, props]);
|
|
199
141
|
if (immediate !== null) return immediate;
|
|
200
|
-
return late !== null && late.props === props ? late.result : {
|
|
201
|
-
status: "pending"
|
|
202
|
-
};
|
|
142
|
+
return late !== null && late.props === props ? late.result : { status: "pending" };
|
|
203
143
|
}
|
|
204
|
-
__name(useValidatedProps, "useValidatedProps");
|
|
205
144
|
function useGenerativeUIState(part, options, fallbackTree) {
|
|
206
|
-
const item = useMemo(() => toGenerativeUIItem(part), [
|
|
207
|
-
part
|
|
208
|
-
]);
|
|
145
|
+
const item = useMemo(() => toGenerativeUIItem(part), [part]);
|
|
209
146
|
const name = item?.component ?? "";
|
|
210
|
-
const resolution = useResolvedComponent(
|
|
147
|
+
const resolution = useResolvedComponent(
|
|
148
|
+
name,
|
|
149
|
+
item?.version ?? null,
|
|
150
|
+
options.registry,
|
|
151
|
+
item === null ? void 0 : options.resolveComponent,
|
|
152
|
+
fallbackTree
|
|
153
|
+
);
|
|
211
154
|
const empty = useMemo(() => ({}), []);
|
|
212
|
-
const validation = useValidatedProps(
|
|
155
|
+
const validation = useValidatedProps(
|
|
156
|
+
item === null || name === GENUI_TREE_COMPONENT ? void 0 : options.catalog,
|
|
157
|
+
name,
|
|
158
|
+
item?.props ?? empty
|
|
159
|
+
);
|
|
213
160
|
if (item === null) return null;
|
|
214
|
-
if (resolution.status === "loading") return {
|
|
215
|
-
|
|
216
|
-
item
|
|
217
|
-
};
|
|
218
|
-
if (resolution.status === "unknown") return {
|
|
219
|
-
status: "problem",
|
|
220
|
-
reason: "unknown",
|
|
221
|
-
item
|
|
222
|
-
};
|
|
161
|
+
if (resolution.status === "loading") return { status: "loading", item };
|
|
162
|
+
if (resolution.status === "unknown") return { status: "problem", reason: "unknown", item };
|
|
223
163
|
if (resolution.status === "error") {
|
|
224
|
-
return {
|
|
225
|
-
status: "problem",
|
|
226
|
-
reason: "error",
|
|
227
|
-
item,
|
|
228
|
-
error: resolution.error
|
|
229
|
-
};
|
|
164
|
+
return { status: "problem", reason: "error", item, error: resolution.error };
|
|
230
165
|
}
|
|
231
|
-
if (validation.status === "pending") return {
|
|
232
|
-
status: "loading",
|
|
233
|
-
item
|
|
234
|
-
};
|
|
166
|
+
if (validation.status === "pending") return { status: "loading", item };
|
|
235
167
|
if (validation.status === "invalid") {
|
|
236
|
-
return {
|
|
237
|
-
status: "problem",
|
|
238
|
-
reason: "invalid",
|
|
239
|
-
item,
|
|
240
|
-
issues: validation.issues
|
|
241
|
-
};
|
|
168
|
+
return { status: "problem", reason: "invalid", item, issues: validation.issues };
|
|
242
169
|
}
|
|
243
|
-
return {
|
|
244
|
-
status: "ready",
|
|
245
|
-
item,
|
|
246
|
-
Component: resolution.Component,
|
|
247
|
-
props: validation.props
|
|
248
|
-
};
|
|
170
|
+
return { status: "ready", item, Component: resolution.Component, props: validation.props };
|
|
249
171
|
}
|
|
250
|
-
__name(useGenerativeUIState, "useGenerativeUIState");
|
|
251
172
|
|
|
252
173
|
// src/genui/generative-ui.tsx
|
|
253
|
-
|
|
174
|
+
import { jsx } from "react/jsx-runtime";
|
|
175
|
+
var TreeScopeContext = createContext2(null);
|
|
254
176
|
function renderFallback(fallback, problem) {
|
|
255
177
|
if (typeof fallback === "function") return fallback(problem);
|
|
256
178
|
return fallback ?? null;
|
|
257
179
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
static {
|
|
261
|
-
__name(this, "ItemBoundary");
|
|
262
|
-
}
|
|
263
|
-
state = {
|
|
264
|
-
error: void 0,
|
|
265
|
-
failed: false
|
|
266
|
-
};
|
|
180
|
+
var ItemBoundary = class extends Component {
|
|
181
|
+
state = { error: void 0, failed: false };
|
|
267
182
|
static getDerivedStateFromError(error) {
|
|
268
|
-
return {
|
|
269
|
-
error,
|
|
270
|
-
failed: true
|
|
271
|
-
};
|
|
183
|
+
return { error, failed: true };
|
|
272
184
|
}
|
|
273
185
|
componentDidCatch(error, _info) {
|
|
274
186
|
this.props.onError?.(error, this.props.item);
|
|
275
187
|
}
|
|
276
188
|
componentDidUpdate(previous) {
|
|
277
189
|
if (this.state.failed && previous.item !== this.props.item) {
|
|
278
|
-
this.setState({
|
|
279
|
-
error: void 0,
|
|
280
|
-
failed: false
|
|
281
|
-
});
|
|
190
|
+
this.setState({ error: void 0, failed: false });
|
|
282
191
|
}
|
|
283
192
|
}
|
|
284
193
|
render() {
|
|
@@ -293,143 +202,104 @@ var ItemBoundary = class ItemBoundary2 extends Component {
|
|
|
293
202
|
}
|
|
294
203
|
};
|
|
295
204
|
function nodeItem(node, id) {
|
|
296
|
-
return {
|
|
297
|
-
id,
|
|
298
|
-
component: node.type,
|
|
299
|
-
props: node.props ?? {},
|
|
300
|
-
version: null,
|
|
301
|
-
toolCallId: null
|
|
302
|
-
};
|
|
205
|
+
return { id, component: node.type, props: node.props ?? {}, version: null, toolCallId: null };
|
|
303
206
|
}
|
|
304
|
-
__name(nodeItem, "nodeItem");
|
|
305
207
|
function TreeNode({ node, id }) {
|
|
306
208
|
const scope = useContext2(TreeScopeContext);
|
|
307
|
-
const item = useMemo2(() => nodeItem(node, id), [
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
209
|
+
const item = useMemo2(() => nodeItem(node, id), [node, id]);
|
|
210
|
+
const resolution = useResolvedComponent(
|
|
211
|
+
node.type,
|
|
212
|
+
null,
|
|
213
|
+
scope?.options.registry ?? {},
|
|
214
|
+
scope?.options.resolveComponent
|
|
215
|
+
);
|
|
312
216
|
const validation = useValidatedProps(scope?.options.catalog, node.type, item.props);
|
|
313
217
|
if (scope === null) return null;
|
|
314
218
|
if (resolution.status === "loading" || validation.status === "pending") return scope.loading;
|
|
315
219
|
if (resolution.status === "unknown") {
|
|
316
|
-
return renderFallback(scope.fallback, {
|
|
317
|
-
reason: "unknown",
|
|
318
|
-
item
|
|
319
|
-
});
|
|
220
|
+
return renderFallback(scope.fallback, { reason: "unknown", item });
|
|
320
221
|
}
|
|
321
222
|
if (resolution.status === "error") {
|
|
322
|
-
return renderFallback(scope.fallback, {
|
|
323
|
-
reason: "error",
|
|
324
|
-
item,
|
|
325
|
-
error: resolution.error
|
|
326
|
-
});
|
|
223
|
+
return renderFallback(scope.fallback, { reason: "error", item, error: resolution.error });
|
|
327
224
|
}
|
|
328
225
|
if (validation.status === "invalid") {
|
|
329
|
-
return renderFallback(scope.fallback, {
|
|
330
|
-
reason: "invalid",
|
|
331
|
-
item,
|
|
332
|
-
issues: validation.issues
|
|
333
|
-
});
|
|
226
|
+
return renderFallback(scope.fallback, { reason: "invalid", item, issues: validation.issues });
|
|
334
227
|
}
|
|
335
228
|
const Renderer = resolution.Component;
|
|
336
229
|
const children = Array.isArray(node.children) ? node.children : [];
|
|
337
|
-
return /* @__PURE__ */
|
|
230
|
+
return /* @__PURE__ */ jsx(Renderer, { ...validation.props, children: children.length > 0 ? children.map((child, index) => {
|
|
338
231
|
const childId = `${id}.${index}`;
|
|
339
|
-
return /* @__PURE__ */
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
232
|
+
return /* @__PURE__ */ jsx(
|
|
233
|
+
ItemBoundary,
|
|
234
|
+
{
|
|
235
|
+
item: nodeItem(child, childId),
|
|
236
|
+
fallback: scope.fallback,
|
|
237
|
+
onError: scope.onError,
|
|
238
|
+
children: /* @__PURE__ */ jsx(TreeNode, { node: child, id: childId })
|
|
239
|
+
},
|
|
240
|
+
childId
|
|
241
|
+
);
|
|
242
|
+
}) : void 0 });
|
|
349
243
|
}
|
|
350
|
-
__name(TreeNode, "TreeNode");
|
|
351
244
|
function GenuiTree({ root }) {
|
|
352
245
|
if (root === void 0 || root === null || typeof root.type !== "string") return null;
|
|
353
|
-
return /* @__PURE__ */
|
|
354
|
-
node: root,
|
|
355
|
-
id: "root"
|
|
356
|
-
});
|
|
246
|
+
return /* @__PURE__ */ jsx(TreeNode, { node: root, id: "root" });
|
|
357
247
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
loading,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
return /* @__PURE__ */ React.createElement(TreeScopeContext.Provider, {
|
|
382
|
-
value: scope
|
|
383
|
-
}, children);
|
|
248
|
+
function GenerativeUIScope({
|
|
249
|
+
registry,
|
|
250
|
+
catalog,
|
|
251
|
+
resolveComponent,
|
|
252
|
+
fallback,
|
|
253
|
+
loading = null,
|
|
254
|
+
onError,
|
|
255
|
+
children
|
|
256
|
+
}) {
|
|
257
|
+
const scope = useMemo2(
|
|
258
|
+
() => ({
|
|
259
|
+
options: {
|
|
260
|
+
registry,
|
|
261
|
+
...catalog !== void 0 ? { catalog } : {},
|
|
262
|
+
...resolveComponent !== void 0 ? { resolveComponent } : {}
|
|
263
|
+
},
|
|
264
|
+
fallback,
|
|
265
|
+
loading,
|
|
266
|
+
onError
|
|
267
|
+
}),
|
|
268
|
+
[registry, catalog, resolveComponent, fallback, loading, onError]
|
|
269
|
+
);
|
|
270
|
+
return /* @__PURE__ */ jsx(TreeScopeContext.Provider, { value: scope, children });
|
|
384
271
|
}
|
|
385
|
-
|
|
386
|
-
|
|
272
|
+
var GenuiContext = sharedContext(
|
|
273
|
+
"@dudousxd/nestjs-agent-react:genui-provider"
|
|
274
|
+
);
|
|
387
275
|
function useGenuiProvider() {
|
|
388
276
|
return useContext2(GenuiContext);
|
|
389
277
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
fallback
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
}), [
|
|
415
|
-
registry,
|
|
416
|
-
catalog,
|
|
417
|
-
resolveComponent,
|
|
418
|
-
treeRenderer,
|
|
419
|
-
fallback,
|
|
420
|
-
loading,
|
|
421
|
-
onError
|
|
422
|
-
]);
|
|
423
|
-
const renderUi = useCallback((block) => /* @__PURE__ */ React.createElement(GenerativeUI, {
|
|
424
|
-
part: block
|
|
425
|
-
}), []);
|
|
426
|
-
return /* @__PURE__ */ React.createElement(GenuiContext.Provider, {
|
|
427
|
-
value
|
|
428
|
-
}, /* @__PURE__ */ React.createElement(AmbientRenderUiContext.Provider, {
|
|
429
|
-
value: renderUi
|
|
430
|
-
}, children));
|
|
278
|
+
function GenuiProvider({
|
|
279
|
+
registry,
|
|
280
|
+
catalog,
|
|
281
|
+
resolveComponent,
|
|
282
|
+
treeRenderer,
|
|
283
|
+
fallback,
|
|
284
|
+
loading,
|
|
285
|
+
onError,
|
|
286
|
+
children
|
|
287
|
+
}) {
|
|
288
|
+
const value = useMemo2(
|
|
289
|
+
() => ({
|
|
290
|
+
...registry !== void 0 ? { registry } : {},
|
|
291
|
+
...catalog !== void 0 ? { catalog } : {},
|
|
292
|
+
...resolveComponent !== void 0 ? { resolveComponent } : {},
|
|
293
|
+
...treeRenderer !== void 0 ? { treeRenderer } : {},
|
|
294
|
+
...fallback !== void 0 ? { fallback } : {},
|
|
295
|
+
...loading !== void 0 ? { loading } : {},
|
|
296
|
+
...onError !== void 0 ? { onError } : {}
|
|
297
|
+
}),
|
|
298
|
+
[registry, catalog, resolveComponent, treeRenderer, fallback, loading, onError]
|
|
299
|
+
);
|
|
300
|
+
const renderUi = useCallback((block) => /* @__PURE__ */ jsx(GenerativeUI, { part: block }), []);
|
|
301
|
+
return /* @__PURE__ */ jsx(GenuiContext.Provider, { value, children: /* @__PURE__ */ jsx(AmbientRenderUiContext.Provider, { value: renderUi, children }) });
|
|
431
302
|
}
|
|
432
|
-
__name(GenuiProvider, "GenuiProvider");
|
|
433
303
|
var NO_REGISTRY = {};
|
|
434
304
|
function useMergedOptions(own) {
|
|
435
305
|
const provided = useContext2(GenuiContext);
|
|
@@ -437,50 +307,45 @@ function useMergedOptions(own) {
|
|
|
437
307
|
const catalog = own.catalog ?? provided?.catalog;
|
|
438
308
|
const resolveComponent = own.resolveComponent ?? provided?.resolveComponent;
|
|
439
309
|
const treeRenderer = own.treeRenderer ?? provided?.treeRenderer;
|
|
440
|
-
return useMemo2(
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
catalog
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
treeRenderer
|
|
450
|
-
} : {}
|
|
451
|
-
}), [
|
|
452
|
-
registry,
|
|
453
|
-
catalog,
|
|
454
|
-
resolveComponent,
|
|
455
|
-
treeRenderer
|
|
456
|
-
]);
|
|
310
|
+
return useMemo2(
|
|
311
|
+
() => ({
|
|
312
|
+
registry,
|
|
313
|
+
...catalog !== void 0 ? { catalog } : {},
|
|
314
|
+
...resolveComponent !== void 0 ? { resolveComponent } : {},
|
|
315
|
+
...treeRenderer !== void 0 ? { treeRenderer } : {}
|
|
316
|
+
}),
|
|
317
|
+
[registry, catalog, resolveComponent, treeRenderer]
|
|
318
|
+
);
|
|
457
319
|
}
|
|
458
|
-
__name(useMergedOptions, "useMergedOptions");
|
|
459
320
|
function useGenerativeUI(part, options = {}) {
|
|
460
321
|
const merged = useMergedOptions(options);
|
|
461
322
|
return useGenerativeUIState(part, merged, merged.treeRenderer ?? GenuiTree);
|
|
462
323
|
}
|
|
463
|
-
|
|
464
|
-
|
|
324
|
+
function GenerativeUI({
|
|
325
|
+
part,
|
|
326
|
+
registry,
|
|
327
|
+
catalog,
|
|
328
|
+
resolveComponent,
|
|
329
|
+
treeRenderer,
|
|
330
|
+
fallback: ownFallback,
|
|
331
|
+
loading: ownLoading,
|
|
332
|
+
onError: ownOnError
|
|
333
|
+
}) {
|
|
465
334
|
const provided = useContext2(GenuiContext);
|
|
466
335
|
const fallback = ownFallback ?? provided?.fallback;
|
|
467
336
|
const loading = ownLoading ?? provided?.loading ?? null;
|
|
468
337
|
const onError = ownOnError ?? provided?.onError;
|
|
469
338
|
const options = useMergedOptions({
|
|
470
|
-
...registry !== void 0 ? {
|
|
471
|
-
|
|
472
|
-
} : {},
|
|
473
|
-
...
|
|
474
|
-
catalog
|
|
475
|
-
} : {},
|
|
476
|
-
...resolveComponent !== void 0 ? {
|
|
477
|
-
resolveComponent
|
|
478
|
-
} : {},
|
|
479
|
-
...treeRenderer !== void 0 ? {
|
|
480
|
-
treeRenderer
|
|
481
|
-
} : {}
|
|
339
|
+
...registry !== void 0 ? { registry } : {},
|
|
340
|
+
...catalog !== void 0 ? { catalog } : {},
|
|
341
|
+
...resolveComponent !== void 0 ? { resolveComponent } : {},
|
|
342
|
+
...treeRenderer !== void 0 ? { treeRenderer } : {}
|
|
482
343
|
});
|
|
483
|
-
const state = useGenerativeUIState(
|
|
344
|
+
const state = useGenerativeUIState(
|
|
345
|
+
part,
|
|
346
|
+
options,
|
|
347
|
+
options.treeRenderer ?? GenuiTree
|
|
348
|
+
);
|
|
484
349
|
if (state === null) return null;
|
|
485
350
|
if (state.status === "loading") return loading;
|
|
486
351
|
if (state.status === "problem") {
|
|
@@ -488,20 +353,17 @@ function GenerativeUI({ part, registry, catalog, resolveComponent, treeRenderer,
|
|
|
488
353
|
return renderFallback(fallback, problem);
|
|
489
354
|
}
|
|
490
355
|
const Renderer = state.Component;
|
|
491
|
-
return /* @__PURE__ */
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
onError
|
|
502
|
-
}, /* @__PURE__ */ React.createElement(Renderer, state.props)));
|
|
356
|
+
return /* @__PURE__ */ jsx(
|
|
357
|
+
GenerativeUIScope,
|
|
358
|
+
{
|
|
359
|
+
...options,
|
|
360
|
+
fallback,
|
|
361
|
+
loading,
|
|
362
|
+
...onError !== void 0 ? { onError } : {},
|
|
363
|
+
children: /* @__PURE__ */ jsx(ItemBoundary, { item: state.item, fallback, onError, children: /* @__PURE__ */ jsx(Renderer, { ...state.props }) })
|
|
364
|
+
}
|
|
365
|
+
);
|
|
503
366
|
}
|
|
504
|
-
__name(GenerativeUI, "GenerativeUI");
|
|
505
367
|
export {
|
|
506
368
|
GENUI_TREE_COMPONENT,
|
|
507
369
|
GenerativeUI,
|