dsh-conversation-navigator 0.1.7 → 0.1.9
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/lib/client.js +94 -60
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -5,7 +5,7 @@ window.__ModuleLoader__.load({
|
|
|
5
5
|
var exports = module.exports;
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
7
|
const React = require("react");
|
|
8
|
-
const { Button, IconCloseOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
8
|
+
const { Button, Tooltip, IconCloseOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
9
9
|
|
|
10
10
|
/* ---------- custom icons (DSH outline style, unique to this panel) ---------- */
|
|
11
11
|
function ToggleIcon() {
|
|
@@ -38,8 +38,8 @@ window.__ModuleLoader__.load({
|
|
|
38
38
|
stroke: "currentColor", strokeWidth: 1.3, strokeLinecap: "round", strokeLinejoin: "round",
|
|
39
39
|
"aria-hidden": true,
|
|
40
40
|
},
|
|
41
|
-
React.createElement("path", { d: "M7
|
|
42
|
-
React.createElement("path", { d: "
|
|
41
|
+
React.createElement("path", { d: "M7 2l5 3-5 3-5-3 5-3z" }),
|
|
42
|
+
React.createElement("path", { d: "M2 5v3l5 3 5-3V5" }),
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
45
|
function JumpLatestIcon() {
|
|
@@ -55,10 +55,13 @@ window.__ModuleLoader__.load({
|
|
|
55
55
|
function CollapseAllIcon() {
|
|
56
56
|
return React.createElement("svg", {
|
|
57
57
|
viewBox: "0 0 14 14", width: 14, height: 14, fill: "none",
|
|
58
|
-
stroke: "currentColor", strokeWidth: 1.
|
|
58
|
+
stroke: "currentColor", strokeWidth: 1.2, strokeLinecap: "round",
|
|
59
59
|
"aria-hidden": true,
|
|
60
60
|
},
|
|
61
|
-
React.createElement("
|
|
61
|
+
React.createElement("line", { x1: 2.5, y1: 2, x2: 11.5, y2: 2 }),
|
|
62
|
+
React.createElement("line", { x1: 2.5, y1: 5, x2: 11.5, y2: 5 }),
|
|
63
|
+
React.createElement("line", { x1: 2.5, y1: 8, x2: 11.5, y2: 8 }),
|
|
64
|
+
React.createElement("line", { x1: 2.5, y1: 11, x2: 11.5, y2: 11 }),
|
|
62
65
|
);
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -441,14 +444,19 @@ window.__ModuleLoader__.load({
|
|
|
441
444
|
setState({ activeKey: null, expanded: {} });
|
|
442
445
|
}
|
|
443
446
|
}, [props.sessionId]);
|
|
444
|
-
return React.createElement(
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
447
|
+
return React.createElement(Tooltip, {
|
|
448
|
+
label: snap.open ? "收起会话导航" : "打开会话导航",
|
|
449
|
+
side: "bottom",
|
|
450
|
+
delayMs: 500,
|
|
451
|
+
},
|
|
452
|
+
React.createElement(Button, {
|
|
453
|
+
variant: snap.open ? "primary" : "ghost",
|
|
454
|
+
size: "sm",
|
|
455
|
+
icon: React.createElement(ToggleIcon),
|
|
456
|
+
"aria-pressed": snap.open,
|
|
457
|
+
onClick: () => setState({ open: !snap.open }),
|
|
458
|
+
}, "导航"),
|
|
459
|
+
);
|
|
452
460
|
}
|
|
453
461
|
|
|
454
462
|
/* ---------- floating navigator panel ---------- */
|
|
@@ -586,34 +594,49 @@ window.__ModuleLoader__.load({
|
|
|
586
594
|
React.createElement("div", { className: "cnvnav-head" },
|
|
587
595
|
React.createElement("span", { className: "cnvnav-title" }, "会话导航"),
|
|
588
596
|
React.createElement("span", { className: "cnvnav-count" }, String(count) + " 条"),
|
|
589
|
-
React.createElement(
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
+
React.createElement(Tooltip, {
|
|
598
|
+
label: "收起面板",
|
|
599
|
+
side: "bottom",
|
|
600
|
+
delayMs: 500,
|
|
601
|
+
},
|
|
602
|
+
React.createElement(Button, {
|
|
603
|
+
variant: "ghost",
|
|
604
|
+
size: "sm",
|
|
605
|
+
className: "cnvnav-close",
|
|
606
|
+
icon: React.createElement(IconCloseOutline16, { size: 14 }),
|
|
607
|
+
onClick: () => setState({ open: false }),
|
|
608
|
+
}),
|
|
609
|
+
),
|
|
597
610
|
),
|
|
598
611
|
React.createElement("div", { className: "cnvnav-topbar" },
|
|
599
|
-
React.createElement(
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
612
|
+
React.createElement(Tooltip, {
|
|
613
|
+
label: "加载更早的一批轮次",
|
|
614
|
+
side: "bottom",
|
|
615
|
+
delayMs: 500,
|
|
616
|
+
},
|
|
617
|
+
React.createElement(Button, {
|
|
618
|
+
variant: "ghost",
|
|
619
|
+
size: "sm",
|
|
620
|
+
className: "cnvnav-bar-btn",
|
|
621
|
+
icon: React.createElement(LoadEarlierIcon),
|
|
622
|
+
disabled: !snap.hasMore || snap.loadingOlder,
|
|
623
|
+
onClick: () => loadOlderPage(),
|
|
624
|
+
}, "加载更早"),
|
|
625
|
+
),
|
|
626
|
+
React.createElement(Tooltip, {
|
|
627
|
+
label: "加载全部历史轮次",
|
|
628
|
+
side: "bottom",
|
|
629
|
+
delayMs: 500,
|
|
630
|
+
},
|
|
631
|
+
React.createElement(Button, {
|
|
632
|
+
variant: "ghost",
|
|
633
|
+
size: "sm",
|
|
634
|
+
className: "cnvnav-bar-btn",
|
|
635
|
+
icon: React.createElement(LoadAllIcon),
|
|
636
|
+
disabled: !snap.hasMore || snap.loadingOlder || snap.loadingAll,
|
|
637
|
+
onClick: () => loadAllPages(),
|
|
638
|
+
}, "加载全部"),
|
|
639
|
+
),
|
|
617
640
|
),
|
|
618
641
|
React.createElement("div", {
|
|
619
642
|
ref: (el) => { listEl = el; },
|
|
@@ -624,27 +647,38 @@ window.__ModuleLoader__.load({
|
|
|
624
647
|
: groupNodes,
|
|
625
648
|
),
|
|
626
649
|
React.createElement("div", { className: "cnvnav-footer" },
|
|
627
|
-
React.createElement(
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
650
|
+
React.createElement(Tooltip, {
|
|
651
|
+
label: "回到对话最新位置",
|
|
652
|
+
side: "top",
|
|
653
|
+
delayMs: 500,
|
|
654
|
+
},
|
|
655
|
+
React.createElement(Button, {
|
|
656
|
+
variant: "ghost",
|
|
657
|
+
size: "sm",
|
|
658
|
+
className: "cnvnav-bar-btn",
|
|
659
|
+
icon: React.createElement(JumpLatestIcon),
|
|
660
|
+
onClick: () => {
|
|
661
|
+
const gs = snap.outline !== null ? snap.outline.groups : [];
|
|
662
|
+
if (gs.length === 0) return;
|
|
663
|
+
const lastGroup = gs[gs.length - 1];
|
|
664
|
+
const lastItem = lastGroup.items[lastGroup.items.length - 1];
|
|
665
|
+
if (lastItem !== undefined) jumpTo(lastItem.key);
|
|
666
|
+
},
|
|
667
|
+
}, "回到最新"),
|
|
668
|
+
),
|
|
669
|
+
React.createElement(Tooltip, {
|
|
670
|
+
label: "折叠所有已展开的轮次",
|
|
671
|
+
side: "top",
|
|
672
|
+
delayMs: 500,
|
|
673
|
+
},
|
|
674
|
+
React.createElement(Button, {
|
|
675
|
+
variant: "ghost",
|
|
676
|
+
size: "sm",
|
|
677
|
+
className: "cnvnav-bar-btn",
|
|
678
|
+
icon: React.createElement(CollapseAllIcon),
|
|
679
|
+
onClick: () => setState({ expanded: {} }),
|
|
680
|
+
}, "全部折叠"),
|
|
681
|
+
),
|
|
648
682
|
),
|
|
649
683
|
);
|
|
650
684
|
}
|