react-ai-renderer 0.1.2 → 0.1.4
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/dist/{MermaidRenderer-a25ae84f.js → MermaidRenderer-62cbf217.js} +1 -1
- package/dist/{MermaidRenderer-d8836800.js → MermaidRenderer-680adac3.js} +1 -1
- package/dist/{index-415b51ad.js → index-543584d8.js} +237 -135
- package/dist/{index-bb96fdaf.js → index-58ab9759.js} +237 -135
- package/dist/index.d.ts +30 -9
- package/dist/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/MermaidRenderer-0ef71453.js +0 -170
- package/dist/MermaidRenderer-0ef71453.js.map +0 -1
- package/dist/MermaidRenderer-13e4a89a.js +0 -172
- package/dist/MermaidRenderer-13e4a89a.js.map +0 -1
- package/dist/MermaidRenderer-321bfe50.js +0 -170
- package/dist/MermaidRenderer-321bfe50.js.map +0 -1
- package/dist/MermaidRenderer-325a9dee.js +0 -170
- package/dist/MermaidRenderer-325a9dee.js.map +0 -1
- package/dist/MermaidRenderer-4bae11d6.js +0 -170
- package/dist/MermaidRenderer-4bae11d6.js.map +0 -1
- package/dist/MermaidRenderer-6237d7da.js +0 -170
- package/dist/MermaidRenderer-6237d7da.js.map +0 -1
- package/dist/MermaidRenderer-653a4dab.js +0 -172
- package/dist/MermaidRenderer-653a4dab.js.map +0 -1
- package/dist/MermaidRenderer-67edae8e.js +0 -172
- package/dist/MermaidRenderer-67edae8e.js.map +0 -1
- package/dist/MermaidRenderer-6f071d8e.js +0 -170
- package/dist/MermaidRenderer-6f071d8e.js.map +0 -1
- package/dist/MermaidRenderer-75832c15.js +0 -172
- package/dist/MermaidRenderer-75832c15.js.map +0 -1
- package/dist/MermaidRenderer-7cb138d1.js +0 -170
- package/dist/MermaidRenderer-7cb138d1.js.map +0 -1
- package/dist/MermaidRenderer-8a8fb725.js +0 -172
- package/dist/MermaidRenderer-8a8fb725.js.map +0 -1
- package/dist/MermaidRenderer-91a0a7d8.js +0 -170
- package/dist/MermaidRenderer-91a0a7d8.js.map +0 -1
- package/dist/MermaidRenderer-9ff856f3.js +0 -172
- package/dist/MermaidRenderer-9ff856f3.js.map +0 -1
- package/dist/MermaidRenderer-a25ae84f.js.map +0 -1
- package/dist/MermaidRenderer-c3014102.js +0 -172
- package/dist/MermaidRenderer-c3014102.js.map +0 -1
- package/dist/MermaidRenderer-c664aa66.js +0 -170
- package/dist/MermaidRenderer-c664aa66.js.map +0 -1
- package/dist/MermaidRenderer-d1518f28.js +0 -172
- package/dist/MermaidRenderer-d1518f28.js.map +0 -1
- package/dist/MermaidRenderer-d7545a7e.js +0 -172
- package/dist/MermaidRenderer-d7545a7e.js.map +0 -1
- package/dist/MermaidRenderer-d8836800.js.map +0 -1
- package/dist/MermaidRenderer-d9c8351a.js +0 -172
- package/dist/MermaidRenderer-d9c8351a.js.map +0 -1
- package/dist/MermaidRenderer-dc0ac92e.js +0 -170
- package/dist/MermaidRenderer-dc0ac92e.js.map +0 -1
- package/dist/MermaidRenderer-e549ab85.js +0 -172
- package/dist/MermaidRenderer-e549ab85.js.map +0 -1
- package/dist/MermaidRenderer-e5d81a6f.js +0 -172
- package/dist/MermaidRenderer-e5d81a6f.js.map +0 -1
- package/dist/MermaidRenderer-e82f36e4.js +0 -172
- package/dist/MermaidRenderer-e82f36e4.js.map +0 -1
- package/dist/MermaidRenderer-f04366c1.js +0 -170
- package/dist/MermaidRenderer-f04366c1.js.map +0 -1
- package/dist/MermaidRenderer-f6473da3.js +0 -170
- package/dist/MermaidRenderer-f6473da3.js.map +0 -1
- package/dist/MermaidRenderer-f82d0d11.js +0 -170
- package/dist/MermaidRenderer-f82d0d11.js.map +0 -1
- package/dist/index-02f4473f.js +0 -1313
- package/dist/index-02f4473f.js.map +0 -1
- package/dist/index-172582eb.js +0 -1294
- package/dist/index-172582eb.js.map +0 -1
- package/dist/index-1d051ba8.js +0 -1286
- package/dist/index-1d051ba8.js.map +0 -1
- package/dist/index-283b43ef.js +0 -1285
- package/dist/index-283b43ef.js.map +0 -1
- package/dist/index-2d979ad5.js +0 -1314
- package/dist/index-2d979ad5.js.map +0 -1
- package/dist/index-349401d2.js +0 -1288
- package/dist/index-349401d2.js.map +0 -1
- package/dist/index-398258c5.js +0 -1314
- package/dist/index-398258c5.js.map +0 -1
- package/dist/index-3cf82be4.js +0 -1287
- package/dist/index-3cf82be4.js.map +0 -1
- package/dist/index-3de28f18.js +0 -1319
- package/dist/index-3de28f18.js.map +0 -1
- package/dist/index-415b51ad.js.map +0 -1
- package/dist/index-4592abf8.js +0 -1311
- package/dist/index-4592abf8.js.map +0 -1
- package/dist/index-4edeb553.js +0 -1313
- package/dist/index-4edeb553.js.map +0 -1
- package/dist/index-534d3bce.js +0 -1312
- package/dist/index-534d3bce.js.map +0 -1
- package/dist/index-6ceb7256.js +0 -1287
- package/dist/index-6ceb7256.js.map +0 -1
- package/dist/index-7e8dc866.js +0 -1304
- package/dist/index-7e8dc866.js.map +0 -1
- package/dist/index-896de550.js +0 -1313
- package/dist/index-896de550.js.map +0 -1
- package/dist/index-8dbf398a.js +0 -1313
- package/dist/index-8dbf398a.js.map +0 -1
- package/dist/index-922bbd30.js +0 -1339
- package/dist/index-922bbd30.js.map +0 -1
- package/dist/index-a5a2c748.js +0 -1288
- package/dist/index-a5a2c748.js.map +0 -1
- package/dist/index-abed2ed7.js +0 -1286
- package/dist/index-abed2ed7.js.map +0 -1
- package/dist/index-ae31bd04.js +0 -1312
- package/dist/index-ae31bd04.js.map +0 -1
- package/dist/index-b0cab34f.js +0 -1287
- package/dist/index-b0cab34f.js.map +0 -1
- package/dist/index-bb96fdaf.js.map +0 -1
- package/dist/index-c0acef6b.js +0 -1330
- package/dist/index-c0acef6b.js.map +0 -1
- package/dist/index-c6ab333d.js +0 -1293
- package/dist/index-c6ab333d.js.map +0 -1
- package/dist/index-d4f12a68.js +0 -1287
- package/dist/index-d4f12a68.js.map +0 -1
- package/dist/index-e07ca144.js +0 -1320
- package/dist/index-e07ca144.js.map +0 -1
- package/dist/index-fdaa9757.js +0 -1313
- package/dist/index-fdaa9757.js.map +0 -1
- package/dist/index.es.js.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -475,18 +475,6 @@ function __generator(thisArg, body) {
|
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
function __values(o) {
|
|
479
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
480
|
-
if (m) return m.call(o);
|
|
481
|
-
if (o && typeof o.length === "number") return {
|
|
482
|
-
next: function () {
|
|
483
|
-
if (o && i >= o.length) o = void 0;
|
|
484
|
-
return { value: o && o[i++], done: !o };
|
|
485
|
-
}
|
|
486
|
-
};
|
|
487
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
488
|
-
}
|
|
489
|
-
|
|
490
478
|
function __read(o, n) {
|
|
491
479
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
492
480
|
if (!m) return o;
|
|
@@ -569,7 +557,7 @@ var CodeHighlight = function (_a) {
|
|
|
569
557
|
if (language === "mermaid") {
|
|
570
558
|
// 动态导入 MermaidRenderer 组件
|
|
571
559
|
var MermaidRenderer = /*#__PURE__*/React.lazy(function () {
|
|
572
|
-
return Promise.resolve().then(function () { return require('./MermaidRenderer-
|
|
560
|
+
return Promise.resolve().then(function () { return require('./MermaidRenderer-62cbf217.js'); }).catch(function () {
|
|
573
561
|
return {
|
|
574
562
|
default: function () {
|
|
575
563
|
return /*#__PURE__*/runtime.jsx("div", {});
|
|
@@ -637,39 +625,71 @@ var CodeHighlight = function (_a) {
|
|
|
637
625
|
var Think = function (_a) {
|
|
638
626
|
var content = _a.content,
|
|
639
627
|
children = _a.children;
|
|
628
|
+
var _b = __read(React.useState(true), 2),
|
|
629
|
+
isExpanded = _b[0],
|
|
630
|
+
setIsExpanded = _b[1];
|
|
640
631
|
var thinkContent = content || children;
|
|
641
632
|
if (!thinkContent) {
|
|
642
633
|
return /*#__PURE__*/runtime.jsx("div", {});
|
|
643
634
|
}
|
|
644
|
-
return /*#__PURE__*/runtime.
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
635
|
+
return /*#__PURE__*/runtime.jsxs("div", {
|
|
636
|
+
className: "funq-think border rounded-lg p-3 mb-3 bg-blue-50 border-blue-200",
|
|
637
|
+
children: [/*#__PURE__*/runtime.jsxs("div", {
|
|
638
|
+
className: "flex items-center justify-between cursor-pointer",
|
|
639
|
+
onClick: function () {
|
|
640
|
+
return setIsExpanded(!isExpanded);
|
|
641
|
+
},
|
|
642
|
+
children: [/*#__PURE__*/runtime.jsxs("div", {
|
|
643
|
+
className: "flex items-center gap-2",
|
|
644
|
+
children: [/*#__PURE__*/runtime.jsx("div", {
|
|
645
|
+
className: "w-4 h-4 rounded-full bg-blue-500 flex items-center justify-center",
|
|
646
|
+
children: /*#__PURE__*/runtime.jsx("svg", {
|
|
647
|
+
className: "w-3 h-3 text-white",
|
|
648
|
+
fill: "none",
|
|
649
|
+
stroke: "currentColor",
|
|
650
|
+
viewBox: "0 0 24 24",
|
|
651
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
652
|
+
strokeLinecap: "round",
|
|
653
|
+
strokeLinejoin: "round",
|
|
654
|
+
strokeWidth: "2",
|
|
655
|
+
d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
|
|
656
|
+
})
|
|
657
|
+
})
|
|
658
|
+
}), /*#__PURE__*/runtime.jsx("span", {
|
|
659
|
+
className: "font-medium text-sm",
|
|
660
|
+
children: "AI \u601D\u8003\u8FC7\u7A0B"
|
|
661
|
+
})]
|
|
662
|
+
}), /*#__PURE__*/runtime.jsx("div", {
|
|
663
|
+
className: "w-4 h-4 text-muted-foreground",
|
|
664
|
+
children: isExpanded ? /*#__PURE__*/runtime.jsx("svg", {
|
|
665
|
+
fill: "none",
|
|
666
|
+
stroke: "currentColor",
|
|
667
|
+
viewBox: "0 0 24 24",
|
|
668
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
669
|
+
strokeLinecap: "round",
|
|
670
|
+
strokeLinejoin: "round",
|
|
671
|
+
strokeWidth: "2",
|
|
672
|
+
d: "M5 15l7-7 7 7"
|
|
673
|
+
})
|
|
674
|
+
}) : /*#__PURE__*/runtime.jsx("svg", {
|
|
675
|
+
fill: "none",
|
|
676
|
+
stroke: "currentColor",
|
|
677
|
+
viewBox: "0 0 24 24",
|
|
678
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
679
|
+
strokeLinecap: "round",
|
|
680
|
+
strokeLinejoin: "round",
|
|
681
|
+
strokeWidth: "2",
|
|
682
|
+
d: "M19 9l-7 7-7-7"
|
|
683
|
+
})
|
|
684
|
+
})
|
|
671
685
|
})]
|
|
672
|
-
})
|
|
686
|
+
}), isExpanded && /*#__PURE__*/runtime.jsx("div", {
|
|
687
|
+
className: "mt-3 pt-3 border-t border-blue-200",
|
|
688
|
+
children: /*#__PURE__*/runtime.jsx("blockquote", {
|
|
689
|
+
className: "text-sm text-blue-800 bg-blue-100 p-2 rounded",
|
|
690
|
+
children: typeof thinkContent === 'string' ? decodeURIComponent(thinkContent) : thinkContent
|
|
691
|
+
})
|
|
692
|
+
})]
|
|
673
693
|
});
|
|
674
694
|
};
|
|
675
695
|
|
|
@@ -810,7 +830,8 @@ var PreComponent = function (props) {
|
|
|
810
830
|
});
|
|
811
831
|
};
|
|
812
832
|
var BuiltInComponents = {
|
|
813
|
-
|
|
833
|
+
_THINK: Think,
|
|
834
|
+
// _TOOL_CALL: ToolCall,
|
|
814
835
|
pre: PreComponent,
|
|
815
836
|
code: CodeComponent,
|
|
816
837
|
p: PComponent,
|
|
@@ -856,7 +877,7 @@ function MdxLayout(_a) {
|
|
|
856
877
|
|
|
857
878
|
var THINK_BEGIN_TAG = '<think>';
|
|
858
879
|
var THINK_END_TAG = '</think>';
|
|
859
|
-
var CUSTOMER_THINK_COMPONENT_DISPLAY = '
|
|
880
|
+
var CUSTOMER_THINK_COMPONENT_DISPLAY = '_THINK';
|
|
860
881
|
function fixMDXContent(content) {
|
|
861
882
|
// 替换中文括号为英文括号
|
|
862
883
|
return content.replace(/\\\[/g, '$$').replace(/\\\]/g, '$$')
|
|
@@ -933,12 +954,11 @@ function formatProps(props) {
|
|
|
933
954
|
}
|
|
934
955
|
function renderMdx(mdxContent, scope, registeredComponents) {
|
|
935
956
|
return __awaiter(this, void 0, void 0, function () {
|
|
936
|
-
var componentTagRegex, usedComponents, match,
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
switch (_b.label) {
|
|
957
|
+
var componentTagRegex, usedComponents, match, vf, XComponent;
|
|
958
|
+
return __generator(this, function (_a) {
|
|
959
|
+
switch (_a.label) {
|
|
940
960
|
case 0:
|
|
941
|
-
|
|
961
|
+
_a.trys.push([0, 3,, 4]);
|
|
942
962
|
renderTimer && clearTimeout(renderTimer);
|
|
943
963
|
componentTagRegex = /<([A-Z][a-zA-Z]*)\b/g;
|
|
944
964
|
usedComponents = new Set();
|
|
@@ -946,25 +966,6 @@ function renderMdx(mdxContent, scope, registeredComponents) {
|
|
|
946
966
|
while ((match = componentTagRegex.exec(mdxContent)) !== null) {
|
|
947
967
|
usedComponents.add(match[1]);
|
|
948
968
|
}
|
|
949
|
-
_registeredComponents = new Set(Object.keys(registeredComponents));
|
|
950
|
-
try {
|
|
951
|
-
for (usedComponents_1 = __values(usedComponents), usedComponents_1_1 = usedComponents_1.next(); !usedComponents_1_1.done; usedComponents_1_1 = usedComponents_1.next()) {
|
|
952
|
-
component = usedComponents_1_1.value;
|
|
953
|
-
if (!_registeredComponents.has(component)) {
|
|
954
|
-
throw new Error("Component ".concat(component, " is used but not registered in the components object."));
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
} catch (e_2_1) {
|
|
958
|
-
e_2 = {
|
|
959
|
-
error: e_2_1
|
|
960
|
-
};
|
|
961
|
-
} finally {
|
|
962
|
-
try {
|
|
963
|
-
if (usedComponents_1_1 && !usedComponents_1_1.done && (_a = usedComponents_1.return)) _a.call(usedComponents_1);
|
|
964
|
-
} finally {
|
|
965
|
-
if (e_2) throw e_2.error;
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
969
|
return [4 /*yield*/, mdx.compile(mdxContent, {
|
|
969
970
|
outputFormat: "function-body",
|
|
970
971
|
remarkPlugins: [[RemarkMath, {
|
|
@@ -977,29 +978,27 @@ function renderMdx(mdxContent, scope, registeredComponents) {
|
|
|
977
978
|
}]]
|
|
978
979
|
})];
|
|
979
980
|
case 1:
|
|
980
|
-
vf =
|
|
981
|
+
vf = _a.sent();
|
|
981
982
|
return [4 /*yield*/, mdx.run(vf, __assign(__assign(__assign({}, runtime__namespace), scope), {
|
|
982
983
|
Fragment: MdxLayout
|
|
983
984
|
}))];
|
|
984
985
|
case 2:
|
|
985
|
-
XComponent =
|
|
986
|
+
XComponent = _a.sent().default;
|
|
986
987
|
return [2 /*return*/, /*#__PURE__*/React__namespace.createElement(XComponent, {
|
|
987
988
|
components: registeredComponents,
|
|
988
989
|
scope: scope
|
|
989
990
|
})];
|
|
990
991
|
case 3:
|
|
991
|
-
|
|
992
|
+
_a.sent();
|
|
992
993
|
return [2 /*return*/, new Promise(function (resolve) {
|
|
993
994
|
renderTimer = setTimeout(function () {
|
|
994
|
-
console.log(e_1, 'e');
|
|
995
|
-
console.log(mdxContent, 'mdxContent');
|
|
996
995
|
resolve(/*#__PURE__*/React__namespace.createElement('div', {
|
|
997
996
|
style: {
|
|
998
997
|
backgroundColor: 'transparent'
|
|
999
998
|
}
|
|
1000
999
|
}, mdxContent));
|
|
1001
1000
|
clearTimeout(renderTimer); // 清理定时器
|
|
1002
|
-
},
|
|
1001
|
+
}, 2000); // 1秒延迟
|
|
1003
1002
|
})];
|
|
1004
1003
|
case 4:
|
|
1005
1004
|
return [2 /*return*/];
|
|
@@ -1156,11 +1155,12 @@ function ReactAIRenderer(_a) {
|
|
|
1156
1155
|
var content = _a.content,
|
|
1157
1156
|
_b = _a.scope,
|
|
1158
1157
|
scope = _b === void 0 ? {} : _b,
|
|
1159
|
-
|
|
1158
|
+
_c = _a.components,
|
|
1159
|
+
components = _c === void 0 ? {} : _c,
|
|
1160
1160
|
children = _a.children,
|
|
1161
|
-
|
|
1162
|
-
componentHandlers =
|
|
1163
|
-
content = content || children;
|
|
1161
|
+
_d = _a.componentHandlers,
|
|
1162
|
+
componentHandlers = _d === void 0 ? [] : _d;
|
|
1163
|
+
content = content || children || '';
|
|
1164
1164
|
var allComponents = __assign(__assign({}, BuiltInComponents), components);
|
|
1165
1165
|
// 修复:确保 components 是一个对象后再使用 Object.entries
|
|
1166
1166
|
var allComponentHandlers = __spreadArray(__spreadArray([], __read(components ? Object.entries(components).filter(function (_a) {
|
|
@@ -1180,11 +1180,11 @@ function ReactAIRenderer(_a) {
|
|
|
1180
1180
|
selfClosing: selfClosing
|
|
1181
1181
|
};
|
|
1182
1182
|
}) : []), false), __read(componentHandlers), false);
|
|
1183
|
-
var
|
|
1184
|
-
component =
|
|
1185
|
-
setComponent =
|
|
1183
|
+
var _e = __read(React.useState(null), 2),
|
|
1184
|
+
component = _e[0],
|
|
1185
|
+
setComponent = _e[1];
|
|
1186
1186
|
var parser = new MDXStreamingParser(allComponentHandlers);
|
|
1187
|
-
var mdxContent = content;
|
|
1187
|
+
var mdxContent = content || '';
|
|
1188
1188
|
React.useEffect(function () {
|
|
1189
1189
|
var parseMDX = function () {
|
|
1190
1190
|
return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -1246,64 +1246,167 @@ function ReactAIRenderer(_a) {
|
|
|
1246
1246
|
}
|
|
1247
1247
|
|
|
1248
1248
|
var ToolCall = function (_a) {
|
|
1249
|
-
var
|
|
1250
|
-
args = _a.args,
|
|
1249
|
+
var toolCall = _a.toolCall,
|
|
1251
1250
|
children = _a.children;
|
|
1251
|
+
var _b = __read(React.useState(false), 2),
|
|
1252
|
+
isExpanded = _b[0],
|
|
1253
|
+
setIsExpanded = _b[1];
|
|
1254
|
+
var getStateIcon = function () {
|
|
1255
|
+
switch (toolCall.state) {
|
|
1256
|
+
case 'loading':
|
|
1257
|
+
return /*#__PURE__*/runtime.jsx("div", {
|
|
1258
|
+
className: "w-4 h-4 animate-spin border-2 border-blue-500 border-t-transparent rounded-full"
|
|
1259
|
+
});
|
|
1260
|
+
case 'done':
|
|
1261
|
+
return /*#__PURE__*/runtime.jsx("div", {
|
|
1262
|
+
className: "w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",
|
|
1263
|
+
children: /*#__PURE__*/runtime.jsx("svg", {
|
|
1264
|
+
className: "w-3 h-3 text-white",
|
|
1265
|
+
fill: "none",
|
|
1266
|
+
stroke: "currentColor",
|
|
1267
|
+
viewBox: "0 0 24 24",
|
|
1268
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
1269
|
+
strokeLinecap: "round",
|
|
1270
|
+
strokeLinejoin: "round",
|
|
1271
|
+
strokeWidth: "2",
|
|
1272
|
+
d: "M5 13l4 4L19 7"
|
|
1273
|
+
})
|
|
1274
|
+
})
|
|
1275
|
+
});
|
|
1276
|
+
case 'error':
|
|
1277
|
+
return /*#__PURE__*/runtime.jsx("div", {
|
|
1278
|
+
className: "w-4 h-4 rounded-full bg-red-500 flex items-center justify-center",
|
|
1279
|
+
children: /*#__PURE__*/runtime.jsx("svg", {
|
|
1280
|
+
className: "w-3 h-3 text-white",
|
|
1281
|
+
fill: "none",
|
|
1282
|
+
stroke: "currentColor",
|
|
1283
|
+
viewBox: "0 0 24 24",
|
|
1284
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
1285
|
+
strokeLinecap: "round",
|
|
1286
|
+
strokeLinejoin: "round",
|
|
1287
|
+
strokeWidth: "2",
|
|
1288
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
1289
|
+
})
|
|
1290
|
+
})
|
|
1291
|
+
});
|
|
1292
|
+
default:
|
|
1293
|
+
return /*#__PURE__*/runtime.jsx("div", {
|
|
1294
|
+
className: "w-4 h-4 animate-spin border-2 border-blue-500 border-t-transparent rounded-full"
|
|
1295
|
+
});
|
|
1296
|
+
}
|
|
1297
|
+
};
|
|
1298
|
+
var getStateText = function () {
|
|
1299
|
+
switch (toolCall.state) {
|
|
1300
|
+
case 'loading':
|
|
1301
|
+
return '执行中...';
|
|
1302
|
+
case 'done':
|
|
1303
|
+
return '执行完成';
|
|
1304
|
+
case 'error':
|
|
1305
|
+
return '执行出错';
|
|
1306
|
+
default:
|
|
1307
|
+
return '执行中...';
|
|
1308
|
+
}
|
|
1309
|
+
};
|
|
1310
|
+
var getStateClass = function () {
|
|
1311
|
+
switch (toolCall.state) {
|
|
1312
|
+
case 'loading':
|
|
1313
|
+
return 'bg-blue-50 border-blue-200';
|
|
1314
|
+
case 'done':
|
|
1315
|
+
return 'bg-green-50 border-green-200';
|
|
1316
|
+
case 'error':
|
|
1317
|
+
return 'bg-red-50 border-red-200';
|
|
1318
|
+
default:
|
|
1319
|
+
return 'bg-blue-50 border-blue-200';
|
|
1320
|
+
}
|
|
1321
|
+
};
|
|
1322
|
+
// 解析工具调用结果,如果是JSON字符串则格式化显示
|
|
1323
|
+
var formatResult = function (result) {
|
|
1324
|
+
if (!result) return result;
|
|
1325
|
+
try {
|
|
1326
|
+
// 尝试解析为JSON
|
|
1327
|
+
var parsed = JSON.parse(result);
|
|
1328
|
+
return JSON.stringify(parsed, null, 2);
|
|
1329
|
+
} catch (e) {
|
|
1330
|
+
// 如果不是有效的JSON,直接返回原始字符串
|
|
1331
|
+
return result;
|
|
1332
|
+
}
|
|
1333
|
+
};
|
|
1252
1334
|
return /*#__PURE__*/runtime.jsxs("div", {
|
|
1253
|
-
|
|
1254
|
-
border: '1px solid #e0e0e0',
|
|
1255
|
-
borderRadius: '4px',
|
|
1256
|
-
margin: '8px 0',
|
|
1257
|
-
backgroundColor: '#fafafa'
|
|
1258
|
-
},
|
|
1335
|
+
className: "funq-tool-call border rounded-lg p-3 mb-3 ".concat(getStateClass()),
|
|
1259
1336
|
children: [/*#__PURE__*/runtime.jsxs("div", {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
borderBottom: '1px solid #e0e0e0',
|
|
1264
|
-
fontWeight: 'bold',
|
|
1265
|
-
display: 'flex',
|
|
1266
|
-
alignItems: 'center'
|
|
1337
|
+
className: "flex items-center justify-between cursor-pointer",
|
|
1338
|
+
onClick: function () {
|
|
1339
|
+
return setIsExpanded(!isExpanded);
|
|
1267
1340
|
},
|
|
1268
|
-
children: [/*#__PURE__*/runtime.
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1341
|
+
children: [/*#__PURE__*/runtime.jsxs("div", {
|
|
1342
|
+
className: "flex items-center gap-2",
|
|
1343
|
+
children: [getStateIcon(), /*#__PURE__*/runtime.jsxs("span", {
|
|
1344
|
+
className: "font-medium text-sm",
|
|
1345
|
+
children: ["\u5DE5\u5177\u8C03\u7528: ", toolCall.toolCallName]
|
|
1346
|
+
}), /*#__PURE__*/runtime.jsx("span", {
|
|
1347
|
+
className: "text-xs text-muted-foreground",
|
|
1348
|
+
children: getStateText()
|
|
1349
|
+
})]
|
|
1350
|
+
}), /*#__PURE__*/runtime.jsxs("div", {
|
|
1351
|
+
className: "flex items-center gap-2",
|
|
1352
|
+
children: [toolCall.startTime && /*#__PURE__*/runtime.jsxs("span", {
|
|
1353
|
+
className: "text-xs text-muted-foreground",
|
|
1354
|
+
children: ["\u5F00\u59CB: ", new Date(toolCall.startTime).toLocaleTimeString()]
|
|
1355
|
+
}), toolCall.endTime && toolCall.executionTime && /*#__PURE__*/runtime.jsxs("span", {
|
|
1356
|
+
className: "text-xs text-muted-foreground",
|
|
1357
|
+
children: ["\u8017\u65F6: ", toolCall.executionTime, "ms"]
|
|
1358
|
+
}), /*#__PURE__*/runtime.jsx("div", {
|
|
1359
|
+
className: "w-4 h-4 text-muted-foreground",
|
|
1360
|
+
children: isExpanded ? /*#__PURE__*/runtime.jsx("svg", {
|
|
1361
|
+
fill: "none",
|
|
1362
|
+
stroke: "currentColor",
|
|
1363
|
+
viewBox: "0 0 24 24",
|
|
1364
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
1365
|
+
strokeLinecap: "round",
|
|
1366
|
+
strokeLinejoin: "round",
|
|
1367
|
+
strokeWidth: "2",
|
|
1368
|
+
d: "M5 15l7-7 7 7"
|
|
1369
|
+
})
|
|
1370
|
+
}) : /*#__PURE__*/runtime.jsx("svg", {
|
|
1371
|
+
fill: "none",
|
|
1372
|
+
stroke: "currentColor",
|
|
1373
|
+
viewBox: "0 0 24 24",
|
|
1374
|
+
children: /*#__PURE__*/runtime.jsx("path", {
|
|
1375
|
+
strokeLinecap: "round",
|
|
1376
|
+
strokeLinejoin: "round",
|
|
1377
|
+
strokeWidth: "2",
|
|
1378
|
+
d: "M19 9l-7 7-7-7"
|
|
1379
|
+
})
|
|
1380
|
+
})
|
|
1381
|
+
})]
|
|
1275
1382
|
})]
|
|
1276
|
-
}),
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
marginBottom: '4px'
|
|
1304
|
-
},
|
|
1305
|
-
children: "\u7ED3\u679C:"
|
|
1306
|
-
}), /*#__PURE__*/runtime.jsx("div", {
|
|
1383
|
+
}), isExpanded && /*#__PURE__*/runtime.jsxs("div", {
|
|
1384
|
+
className: "mt-3 pt-3 border-t border-border",
|
|
1385
|
+
children: [toolCall.toolCallArgs && /*#__PURE__*/runtime.jsxs("div", {
|
|
1386
|
+
className: "mb-3",
|
|
1387
|
+
children: [/*#__PURE__*/runtime.jsx("h4", {
|
|
1388
|
+
className: "text-sm font-medium mb-1",
|
|
1389
|
+
children: "\u53C2\u6570:"
|
|
1390
|
+
}), /*#__PURE__*/runtime.jsx("pre", {
|
|
1391
|
+
className: "text-xs bg-muted p-2 rounded overflow-x-auto break-words whitespace-pre-wrap",
|
|
1392
|
+
children: toolCall.toolCallArgs
|
|
1393
|
+
})]
|
|
1394
|
+
}), (toolCall.delta || toolCall.state === 'error') && /*#__PURE__*/runtime.jsxs("div", {
|
|
1395
|
+
children: [/*#__PURE__*/runtime.jsx("h4", {
|
|
1396
|
+
className: "text-sm font-medium mb-1",
|
|
1397
|
+
children: "\u7ED3\u679C:"
|
|
1398
|
+
}), /*#__PURE__*/runtime.jsx("div", {
|
|
1399
|
+
className: "text-sm p-2 rounded ".concat(toolCall.state === 'error' ? 'bg-red-100 text-red-800' : 'bg-muted'),
|
|
1400
|
+
children: toolCall.state === 'error' ? /*#__PURE__*/runtime.jsx("pre", {
|
|
1401
|
+
className: "whitespace-pre-wrap break-words overflow-x-auto",
|
|
1402
|
+
children: formatResult(toolCall.delta) || '工具执行出错'
|
|
1403
|
+
}) : /*#__PURE__*/runtime.jsx("pre", {
|
|
1404
|
+
className: "whitespace-pre-wrap break-words overflow-x-auto",
|
|
1405
|
+
children: formatResult(toolCall.delta)
|
|
1406
|
+
})
|
|
1407
|
+
})]
|
|
1408
|
+
}), children && /*#__PURE__*/runtime.jsx("div", {
|
|
1409
|
+
className: "mt-2",
|
|
1307
1410
|
children: children
|
|
1308
1411
|
})]
|
|
1309
1412
|
})]
|
|
@@ -1319,4 +1422,3 @@ exports.ToolCall = ToolCall;
|
|
|
1319
1422
|
exports.__awaiter = __awaiter;
|
|
1320
1423
|
exports.__generator = __generator;
|
|
1321
1424
|
exports.__read = __read;
|
|
1322
|
-
//# sourceMappingURL=index-bb96fdaf.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
|
|
3
3
|
interface ComponentData$1 {
|
|
4
4
|
type: "text" | "component";
|
|
@@ -34,19 +34,40 @@ interface ReactMarkdownProps {
|
|
|
34
34
|
scope?: any;
|
|
35
35
|
[key: string]: any;
|
|
36
36
|
}
|
|
37
|
+
interface ReactAIRendererProps {
|
|
38
|
+
/** 要渲染的 Markdown/MDX 内容 */
|
|
39
|
+
content?: string;
|
|
40
|
+
/** 作用域对象,用于传递变量和函数给组件 */
|
|
41
|
+
scope?: Record<string, any>;
|
|
42
|
+
/** 自定义组件映射 */
|
|
43
|
+
components?: Record<string, React.ComponentType<any>>;
|
|
44
|
+
/** 子元素,作为 content 的替代方案 */
|
|
45
|
+
children?: string;
|
|
46
|
+
/** 组件处理器数组 */
|
|
47
|
+
componentHandlers?: ComponentHandler[];
|
|
48
|
+
/** 其他传递给组件的属性 */
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}
|
|
37
51
|
|
|
38
52
|
interface ThinkProps {
|
|
39
53
|
content: string;
|
|
40
|
-
children?: React
|
|
54
|
+
children?: React.ReactNode;
|
|
41
55
|
}
|
|
42
|
-
declare const Think: React
|
|
56
|
+
declare const Think: React.FC<ThinkProps>;
|
|
43
57
|
|
|
44
58
|
interface ToolCallProps {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
toolCall: {
|
|
60
|
+
toolCallName: string;
|
|
61
|
+
state: 'loading' | 'done' | 'error' | string;
|
|
62
|
+
startTime?: number;
|
|
63
|
+
endTime?: number;
|
|
64
|
+
executionTime?: number;
|
|
65
|
+
toolCallArgs?: string;
|
|
66
|
+
delta?: string;
|
|
67
|
+
};
|
|
68
|
+
children?: React.ReactNode;
|
|
48
69
|
}
|
|
49
|
-
declare const ToolCall: React
|
|
70
|
+
declare const ToolCall: React.FC<ToolCallProps>;
|
|
50
71
|
|
|
51
72
|
interface ComponentData {
|
|
52
73
|
type: "text" | "component";
|
|
@@ -68,6 +89,6 @@ declare class MDXStreamingParser {
|
|
|
68
89
|
reset(): void;
|
|
69
90
|
}
|
|
70
91
|
|
|
71
|
-
declare function ReactAIRenderer({ content, scope, components, children, componentHandlers }:
|
|
92
|
+
declare function ReactAIRenderer({ content, scope, components, children, componentHandlers }: ReactAIRendererProps): React.JSX.Element;
|
|
72
93
|
|
|
73
|
-
export { ComponentData$1 as ComponentData, ComponentHandler, MDXStreamingParser, ParseResult, ParserState, ReactMarkdownProps, Think, ThinkProps, ToolCall, ToolCallProps, ReactAIRenderer as default };
|
|
94
|
+
export { ComponentData$1 as ComponentData, ComponentHandler, MDXStreamingParser, ParseResult, ParserState, ReactAIRendererProps, ReactMarkdownProps, Think, ThinkProps, ToolCall, ToolCallProps, ReactAIRenderer as default };
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { M as MDXStreamingParser, T as Think, c as ToolCall, R as default } from './index-
|
|
1
|
+
export { M as MDXStreamingParser, T as Think, c as ToolCall, R as default } from './index-543584d8.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import 'remark-math';
|
package/dist/index.js
CHANGED