@mastra/playground-ui 40.0.0-alpha.3 → 40.0.0-alpha.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/CHANGELOG.md +43 -0
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/MessageScroller.cjs.js +538 -0
- package/dist/components/MessageScroller.cjs.js.map +1 -0
- package/dist/components/MessageScroller.d.ts +2 -0
- package/dist/components/MessageScroller.es.js +505 -0
- package/dist/components/MessageScroller.es.js.map +1 -0
- package/dist/components/Tabs.cjs.js +1 -1
- package/dist/components/Tabs.es.js +1 -1
- package/dist/components/ThreadRail.cjs.js +432 -0
- package/dist/components/ThreadRail.cjs.js.map +1 -0
- package/dist/components/ThreadRail.d.ts +2 -0
- package/dist/components/ThreadRail.es.js +407 -0
- package/dist/components/ThreadRail.es.js.map +1 -0
- package/dist/components/Tree.cjs.js +2 -2
- package/dist/components/Tree.cjs.js.map +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Tree.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +64 -42
- package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +65 -43
- package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/ee/signals/components/signal-details-page.cjs.js +1 -1
- package/dist/ee/signals/components/signal-details-page.es.js +1 -1
- package/dist/hooks/use-isomorphic-layout-effect.cjs.js +29 -0
- package/dist/hooks/use-isomorphic-layout-effect.cjs.js.map +1 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +2 -0
- package/dist/hooks/use-isomorphic-layout-effect.es.js +6 -0
- package/dist/hooks/use-isomorphic-layout-effect.es.js.map +1 -0
- package/dist/hooks/use-measured-auto-height.cjs.js +75 -0
- package/dist/hooks/use-measured-auto-height.cjs.js.map +1 -0
- package/dist/hooks/use-measured-auto-height.d.ts +2 -0
- package/dist/hooks/use-measured-auto-height.es.js +52 -0
- package/dist/hooks/use-measured-auto-height.es.js.map +1 -0
- package/dist/message-scroller-hooks-CdsHnth6.js +62 -0
- package/dist/message-scroller-hooks-CdsHnth6.js.map +1 -0
- package/dist/message-scroller-hooks-DdXqrmC2.cjs +98 -0
- package/dist/message-scroller-hooks-DdXqrmC2.cjs.map +1 -0
- package/dist/src/ds/components/MessageScroller/index.d.ts +2 -0
- package/dist/src/ds/components/MessageScroller/message-scroller-context.d.ts +38 -0
- package/dist/src/ds/components/MessageScroller/message-scroller-hooks.d.ts +26 -0
- package/dist/src/ds/components/MessageScroller/message-scroller.d.ts +44 -0
- package/dist/src/ds/components/Tabs/tabs-tab.d.ts +2 -1
- package/dist/src/ds/components/ThreadRail/index.d.ts +2 -0
- package/dist/src/ds/components/ThreadRail/thread-rail-turns.d.ts +11 -0
- package/dist/src/ds/components/ThreadRail/thread-rail.d.ts +12 -0
- package/dist/src/hooks/use-isomorphic-layout-effect.d.ts +2 -0
- package/dist/src/hooks/use-measured-auto-height.d.ts +8 -0
- package/dist/style.css +249 -5
- package/dist/{tabs-tab-CaZnZdY8.js → tabs-tab-1KGOybMG.js} +27 -17
- package/dist/tabs-tab-1KGOybMG.js.map +1 -0
- package/dist/{tabs-tab-BeUPTvaP.cjs → tabs-tab-DkeS2Iv0.cjs} +27 -17
- package/dist/tabs-tab-DkeS2Iv0.cjs.map +1 -0
- package/package.json +7 -7
- package/dist/tabs-tab-BeUPTvaP.cjs.map +0 -1
- package/dist/tabs-tab-CaZnZdY8.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-scroller-hooks-CdsHnth6.js","sources":["../src/ds/components/MessageScroller/message-scroller-context.ts","../src/ds/components/MessageScroller/message-scroller-hooks.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type MessageScrollerDefaultScrollPosition = 'start' | 'end' | 'last-anchor';\nexport type MessageScrollerButtonDirection = 'start' | 'end';\nexport type MessageScrollerScrollAlign = 'start' | 'center' | 'end' | 'nearest';\n\nexport type MessageScrollerScrollOptions = {\n align?: MessageScrollerScrollAlign;\n behavior?: ScrollBehavior;\n scrollMargin?: number;\n};\n\nexport type MessageScrollerScrollable = {\n start: boolean;\n end: boolean;\n};\n\nexport type MessageScrollerVisibility = {\n currentAnchorId: string | undefined;\n visibleMessageIds: string[];\n};\n\nexport type MessageScrollerActionsContextValue = {\n registerItem: (messageId: string, element: HTMLElement, scrollAnchor: boolean) => () => void;\n scrollToEnd: (options?: MessageScrollerScrollOptions) => boolean;\n scrollToMessage: (messageId: string, options?: MessageScrollerScrollOptions) => boolean;\n scrollToStart: (options?: MessageScrollerScrollOptions) => boolean;\n setContentElement: (element: HTMLDivElement | null) => void;\n setRootElement: (element: HTMLDivElement | null) => void;\n setViewportElement: (element: HTMLDivElement | null) => void;\n syncAfterScroll: () => void;\n};\n\nexport const DEFAULT_SCROLLABLE: MessageScrollerScrollable = { start: false, end: false };\nexport const DEFAULT_VISIBILITY: MessageScrollerVisibility = { currentAnchorId: undefined, visibleMessageIds: [] };\nexport const DEFAULT_SCROLL_EDGE_THRESHOLD = 8;\nexport const DEFAULT_SCROLL_MARGIN = 0;\nexport const DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = 64;\n\nexport const MessageScrollerActionsContext = React.createContext<MessageScrollerActionsContextValue | null>(null);\nexport const MessageScrollerScrollableContext = React.createContext<MessageScrollerScrollable | null>(null);\nexport const MessageScrollerVisibilityContext = React.createContext<MessageScrollerVisibility | null>(null);\n\nconst useRequiredContext = <TValue>(context: React.Context<TValue | null>, hookName: string) => {\n const value = React.useContext(context);\n if (!value) throw new Error(`${hookName} must be used within MessageScrollerProvider.`);\n return value;\n};\n\nexport const useRequiredMessageScrollerActionsContext = (hookName: string) =>\n useRequiredContext(MessageScrollerActionsContext, hookName);\n\nexport const useRequiredMessageScrollerScrollableContext = (hookName: string) =>\n useRequiredContext(MessageScrollerScrollableContext, hookName);\n\nexport const useRequiredMessageScrollerVisibilityContext = (hookName: string) =>\n useRequiredContext(MessageScrollerVisibilityContext, hookName);\n","import * as React from 'react';\n\nimport {\n MessageScrollerActionsContext,\n MessageScrollerScrollableContext,\n MessageScrollerVisibilityContext,\n useRequiredMessageScrollerActionsContext,\n useRequiredMessageScrollerScrollableContext,\n useRequiredMessageScrollerVisibilityContext,\n} from './message-scroller-context';\n\nexport const useMessageScroller = () => {\n const { scrollToEnd, scrollToMessage, scrollToStart } =\n useRequiredMessageScrollerActionsContext('useMessageScroller');\n return React.useMemo(\n () => ({ scrollToEnd, scrollToMessage, scrollToStart }),\n [scrollToEnd, scrollToMessage, scrollToStart],\n );\n};\n\nexport const useOptionalMessageScroller = () => {\n const context = React.useContext(MessageScrollerActionsContext);\n return React.useMemo(() => {\n if (!context) return undefined;\n return {\n scrollToEnd: context.scrollToEnd,\n scrollToMessage: context.scrollToMessage,\n scrollToStart: context.scrollToStart,\n };\n }, [context]);\n};\n\nexport const useMessageScrollerScrollable = () => {\n const { start, end } = useRequiredMessageScrollerScrollableContext('useMessageScrollerScrollable');\n return React.useMemo(() => ({ start, end }), [end, start]);\n};\n\nexport const useOptionalMessageScrollerScrollable = () => {\n const context = React.useContext(MessageScrollerScrollableContext);\n return React.useMemo(() => (context ? { start: context.start, end: context.end } : undefined), [context]);\n};\n\nexport const useMessageScrollerVisibility = () => {\n const { currentAnchorId, visibleMessageIds } =\n useRequiredMessageScrollerVisibilityContext('useMessageScrollerVisibility');\n return React.useMemo(() => ({ currentAnchorId, visibleMessageIds }), [currentAnchorId, visibleMessageIds]);\n};\n\nexport const useOptionalMessageScrollerVisibility = () => {\n const context = React.useContext(MessageScrollerVisibilityContext);\n return React.useMemo(\n () =>\n context\n ? {\n currentAnchorId: context.currentAnchorId,\n visibleMessageIds: context.visibleMessageIds,\n }\n : undefined,\n [context],\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const React = require('react');
|
|
4
|
+
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
|
|
7
|
+
if (e) {
|
|
8
|
+
for (const k in e) {
|
|
9
|
+
if (k !== 'default') {
|
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: () => e[k]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
23
|
+
|
|
24
|
+
const DEFAULT_SCROLLABLE = { start: false, end: false };
|
|
25
|
+
const DEFAULT_VISIBILITY = { currentAnchorId: void 0, visibleMessageIds: [] };
|
|
26
|
+
const DEFAULT_SCROLL_EDGE_THRESHOLD = 8;
|
|
27
|
+
const DEFAULT_SCROLL_MARGIN = 0;
|
|
28
|
+
const DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = 64;
|
|
29
|
+
const MessageScrollerActionsContext = React__namespace.createContext(null);
|
|
30
|
+
const MessageScrollerScrollableContext = React__namespace.createContext(null);
|
|
31
|
+
const MessageScrollerVisibilityContext = React__namespace.createContext(null);
|
|
32
|
+
const useRequiredContext = (context, hookName) => {
|
|
33
|
+
const value = React__namespace.useContext(context);
|
|
34
|
+
if (!value) throw new Error(`${hookName} must be used within MessageScrollerProvider.`);
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
const useRequiredMessageScrollerActionsContext = (hookName) => useRequiredContext(MessageScrollerActionsContext, hookName);
|
|
38
|
+
const useRequiredMessageScrollerScrollableContext = (hookName) => useRequiredContext(MessageScrollerScrollableContext, hookName);
|
|
39
|
+
const useRequiredMessageScrollerVisibilityContext = (hookName) => useRequiredContext(MessageScrollerVisibilityContext, hookName);
|
|
40
|
+
|
|
41
|
+
const useMessageScroller = () => {
|
|
42
|
+
const { scrollToEnd, scrollToMessage, scrollToStart } = useRequiredMessageScrollerActionsContext("useMessageScroller");
|
|
43
|
+
return React__namespace.useMemo(
|
|
44
|
+
() => ({ scrollToEnd, scrollToMessage, scrollToStart }),
|
|
45
|
+
[scrollToEnd, scrollToMessage, scrollToStart]
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
const useOptionalMessageScroller = () => {
|
|
49
|
+
const context = React__namespace.useContext(MessageScrollerActionsContext);
|
|
50
|
+
return React__namespace.useMemo(() => {
|
|
51
|
+
if (!context) return void 0;
|
|
52
|
+
return {
|
|
53
|
+
scrollToEnd: context.scrollToEnd,
|
|
54
|
+
scrollToMessage: context.scrollToMessage,
|
|
55
|
+
scrollToStart: context.scrollToStart
|
|
56
|
+
};
|
|
57
|
+
}, [context]);
|
|
58
|
+
};
|
|
59
|
+
const useMessageScrollerScrollable = () => {
|
|
60
|
+
const { start, end } = useRequiredMessageScrollerScrollableContext("useMessageScrollerScrollable");
|
|
61
|
+
return React__namespace.useMemo(() => ({ start, end }), [end, start]);
|
|
62
|
+
};
|
|
63
|
+
const useOptionalMessageScrollerScrollable = () => {
|
|
64
|
+
const context = React__namespace.useContext(MessageScrollerScrollableContext);
|
|
65
|
+
return React__namespace.useMemo(() => context ? { start: context.start, end: context.end } : void 0, [context]);
|
|
66
|
+
};
|
|
67
|
+
const useMessageScrollerVisibility = () => {
|
|
68
|
+
const { currentAnchorId, visibleMessageIds } = useRequiredMessageScrollerVisibilityContext("useMessageScrollerVisibility");
|
|
69
|
+
return React__namespace.useMemo(() => ({ currentAnchorId, visibleMessageIds }), [currentAnchorId, visibleMessageIds]);
|
|
70
|
+
};
|
|
71
|
+
const useOptionalMessageScrollerVisibility = () => {
|
|
72
|
+
const context = React__namespace.useContext(MessageScrollerVisibilityContext);
|
|
73
|
+
return React__namespace.useMemo(
|
|
74
|
+
() => context ? {
|
|
75
|
+
currentAnchorId: context.currentAnchorId,
|
|
76
|
+
visibleMessageIds: context.visibleMessageIds
|
|
77
|
+
} : void 0,
|
|
78
|
+
[context]
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
exports.DEFAULT_SCROLLABLE = DEFAULT_SCROLLABLE;
|
|
83
|
+
exports.DEFAULT_SCROLL_EDGE_THRESHOLD = DEFAULT_SCROLL_EDGE_THRESHOLD;
|
|
84
|
+
exports.DEFAULT_SCROLL_MARGIN = DEFAULT_SCROLL_MARGIN;
|
|
85
|
+
exports.DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK;
|
|
86
|
+
exports.DEFAULT_VISIBILITY = DEFAULT_VISIBILITY;
|
|
87
|
+
exports.MessageScrollerActionsContext = MessageScrollerActionsContext;
|
|
88
|
+
exports.MessageScrollerScrollableContext = MessageScrollerScrollableContext;
|
|
89
|
+
exports.MessageScrollerVisibilityContext = MessageScrollerVisibilityContext;
|
|
90
|
+
exports.useMessageScroller = useMessageScroller;
|
|
91
|
+
exports.useMessageScrollerScrollable = useMessageScrollerScrollable;
|
|
92
|
+
exports.useMessageScrollerVisibility = useMessageScrollerVisibility;
|
|
93
|
+
exports.useOptionalMessageScroller = useOptionalMessageScroller;
|
|
94
|
+
exports.useOptionalMessageScrollerScrollable = useOptionalMessageScrollerScrollable;
|
|
95
|
+
exports.useOptionalMessageScrollerVisibility = useOptionalMessageScrollerVisibility;
|
|
96
|
+
exports.useRequiredMessageScrollerActionsContext = useRequiredMessageScrollerActionsContext;
|
|
97
|
+
exports.useRequiredMessageScrollerScrollableContext = useRequiredMessageScrollerScrollableContext;
|
|
98
|
+
//# sourceMappingURL=message-scroller-hooks-DdXqrmC2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-scroller-hooks-DdXqrmC2.cjs","sources":["../src/ds/components/MessageScroller/message-scroller-context.ts","../src/ds/components/MessageScroller/message-scroller-hooks.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type MessageScrollerDefaultScrollPosition = 'start' | 'end' | 'last-anchor';\nexport type MessageScrollerButtonDirection = 'start' | 'end';\nexport type MessageScrollerScrollAlign = 'start' | 'center' | 'end' | 'nearest';\n\nexport type MessageScrollerScrollOptions = {\n align?: MessageScrollerScrollAlign;\n behavior?: ScrollBehavior;\n scrollMargin?: number;\n};\n\nexport type MessageScrollerScrollable = {\n start: boolean;\n end: boolean;\n};\n\nexport type MessageScrollerVisibility = {\n currentAnchorId: string | undefined;\n visibleMessageIds: string[];\n};\n\nexport type MessageScrollerActionsContextValue = {\n registerItem: (messageId: string, element: HTMLElement, scrollAnchor: boolean) => () => void;\n scrollToEnd: (options?: MessageScrollerScrollOptions) => boolean;\n scrollToMessage: (messageId: string, options?: MessageScrollerScrollOptions) => boolean;\n scrollToStart: (options?: MessageScrollerScrollOptions) => boolean;\n setContentElement: (element: HTMLDivElement | null) => void;\n setRootElement: (element: HTMLDivElement | null) => void;\n setViewportElement: (element: HTMLDivElement | null) => void;\n syncAfterScroll: () => void;\n};\n\nexport const DEFAULT_SCROLLABLE: MessageScrollerScrollable = { start: false, end: false };\nexport const DEFAULT_VISIBILITY: MessageScrollerVisibility = { currentAnchorId: undefined, visibleMessageIds: [] };\nexport const DEFAULT_SCROLL_EDGE_THRESHOLD = 8;\nexport const DEFAULT_SCROLL_MARGIN = 0;\nexport const DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = 64;\n\nexport const MessageScrollerActionsContext = React.createContext<MessageScrollerActionsContextValue | null>(null);\nexport const MessageScrollerScrollableContext = React.createContext<MessageScrollerScrollable | null>(null);\nexport const MessageScrollerVisibilityContext = React.createContext<MessageScrollerVisibility | null>(null);\n\nconst useRequiredContext = <TValue>(context: React.Context<TValue | null>, hookName: string) => {\n const value = React.useContext(context);\n if (!value) throw new Error(`${hookName} must be used within MessageScrollerProvider.`);\n return value;\n};\n\nexport const useRequiredMessageScrollerActionsContext = (hookName: string) =>\n useRequiredContext(MessageScrollerActionsContext, hookName);\n\nexport const useRequiredMessageScrollerScrollableContext = (hookName: string) =>\n useRequiredContext(MessageScrollerScrollableContext, hookName);\n\nexport const useRequiredMessageScrollerVisibilityContext = (hookName: string) =>\n useRequiredContext(MessageScrollerVisibilityContext, hookName);\n","import * as React from 'react';\n\nimport {\n MessageScrollerActionsContext,\n MessageScrollerScrollableContext,\n MessageScrollerVisibilityContext,\n useRequiredMessageScrollerActionsContext,\n useRequiredMessageScrollerScrollableContext,\n useRequiredMessageScrollerVisibilityContext,\n} from './message-scroller-context';\n\nexport const useMessageScroller = () => {\n const { scrollToEnd, scrollToMessage, scrollToStart } =\n useRequiredMessageScrollerActionsContext('useMessageScroller');\n return React.useMemo(\n () => ({ scrollToEnd, scrollToMessage, scrollToStart }),\n [scrollToEnd, scrollToMessage, scrollToStart],\n );\n};\n\nexport const useOptionalMessageScroller = () => {\n const context = React.useContext(MessageScrollerActionsContext);\n return React.useMemo(() => {\n if (!context) return undefined;\n return {\n scrollToEnd: context.scrollToEnd,\n scrollToMessage: context.scrollToMessage,\n scrollToStart: context.scrollToStart,\n };\n }, [context]);\n};\n\nexport const useMessageScrollerScrollable = () => {\n const { start, end } = useRequiredMessageScrollerScrollableContext('useMessageScrollerScrollable');\n return React.useMemo(() => ({ start, end }), [end, start]);\n};\n\nexport const useOptionalMessageScrollerScrollable = () => {\n const context = React.useContext(MessageScrollerScrollableContext);\n return React.useMemo(() => (context ? { start: context.start, end: context.end } : undefined), [context]);\n};\n\nexport const useMessageScrollerVisibility = () => {\n const { currentAnchorId, visibleMessageIds } =\n useRequiredMessageScrollerVisibilityContext('useMessageScrollerVisibility');\n return React.useMemo(() => ({ currentAnchorId, visibleMessageIds }), [currentAnchorId, visibleMessageIds]);\n};\n\nexport const useOptionalMessageScrollerVisibility = () => {\n const context = React.useContext(MessageScrollerVisibilityContext);\n return React.useMemo(\n () =>\n context\n ? {\n currentAnchorId: context.currentAnchorId,\n visibleMessageIds: context.visibleMessageIds,\n }\n : undefined,\n [context],\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type MessageScrollerDefaultScrollPosition = 'start' | 'end' | 'last-anchor';
|
|
3
|
+
export type MessageScrollerButtonDirection = 'start' | 'end';
|
|
4
|
+
export type MessageScrollerScrollAlign = 'start' | 'center' | 'end' | 'nearest';
|
|
5
|
+
export type MessageScrollerScrollOptions = {
|
|
6
|
+
align?: MessageScrollerScrollAlign;
|
|
7
|
+
behavior?: ScrollBehavior;
|
|
8
|
+
scrollMargin?: number;
|
|
9
|
+
};
|
|
10
|
+
export type MessageScrollerScrollable = {
|
|
11
|
+
start: boolean;
|
|
12
|
+
end: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type MessageScrollerVisibility = {
|
|
15
|
+
currentAnchorId: string | undefined;
|
|
16
|
+
visibleMessageIds: string[];
|
|
17
|
+
};
|
|
18
|
+
export type MessageScrollerActionsContextValue = {
|
|
19
|
+
registerItem: (messageId: string, element: HTMLElement, scrollAnchor: boolean) => () => void;
|
|
20
|
+
scrollToEnd: (options?: MessageScrollerScrollOptions) => boolean;
|
|
21
|
+
scrollToMessage: (messageId: string, options?: MessageScrollerScrollOptions) => boolean;
|
|
22
|
+
scrollToStart: (options?: MessageScrollerScrollOptions) => boolean;
|
|
23
|
+
setContentElement: (element: HTMLDivElement | null) => void;
|
|
24
|
+
setRootElement: (element: HTMLDivElement | null) => void;
|
|
25
|
+
setViewportElement: (element: HTMLDivElement | null) => void;
|
|
26
|
+
syncAfterScroll: () => void;
|
|
27
|
+
};
|
|
28
|
+
export declare const DEFAULT_SCROLLABLE: MessageScrollerScrollable;
|
|
29
|
+
export declare const DEFAULT_VISIBILITY: MessageScrollerVisibility;
|
|
30
|
+
export declare const DEFAULT_SCROLL_EDGE_THRESHOLD = 8;
|
|
31
|
+
export declare const DEFAULT_SCROLL_MARGIN = 0;
|
|
32
|
+
export declare const DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = 64;
|
|
33
|
+
export declare const MessageScrollerActionsContext: React.Context<MessageScrollerActionsContextValue | null>;
|
|
34
|
+
export declare const MessageScrollerScrollableContext: React.Context<MessageScrollerScrollable | null>;
|
|
35
|
+
export declare const MessageScrollerVisibilityContext: React.Context<MessageScrollerVisibility | null>;
|
|
36
|
+
export declare const useRequiredMessageScrollerActionsContext: (hookName: string) => MessageScrollerActionsContextValue;
|
|
37
|
+
export declare const useRequiredMessageScrollerScrollableContext: (hookName: string) => MessageScrollerScrollable;
|
|
38
|
+
export declare const useRequiredMessageScrollerVisibilityContext: (hookName: string) => MessageScrollerVisibility;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const useMessageScroller: () => {
|
|
2
|
+
scrollToEnd: (options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
3
|
+
scrollToMessage: (messageId: string, options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
4
|
+
scrollToStart: (options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const useOptionalMessageScroller: () => {
|
|
7
|
+
scrollToEnd: (options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
8
|
+
scrollToMessage: (messageId: string, options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
9
|
+
scrollToStart: (options?: import('./message-scroller-context').MessageScrollerScrollOptions) => boolean;
|
|
10
|
+
} | undefined;
|
|
11
|
+
export declare const useMessageScrollerScrollable: () => {
|
|
12
|
+
start: boolean;
|
|
13
|
+
end: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare const useOptionalMessageScrollerScrollable: () => {
|
|
16
|
+
start: boolean;
|
|
17
|
+
end: boolean;
|
|
18
|
+
} | undefined;
|
|
19
|
+
export declare const useMessageScrollerVisibility: () => {
|
|
20
|
+
currentAnchorId: string | undefined;
|
|
21
|
+
visibleMessageIds: string[];
|
|
22
|
+
};
|
|
23
|
+
export declare const useOptionalMessageScrollerVisibility: () => {
|
|
24
|
+
currentAnchorId: string | undefined;
|
|
25
|
+
visibleMessageIds: string[];
|
|
26
|
+
} | undefined;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MessageScrollerButtonDirection, MessageScrollerDefaultScrollPosition } from './message-scroller-context';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export type { MessageScrollerButtonDirection, MessageScrollerDefaultScrollPosition, MessageScrollerScrollAlign, MessageScrollerScrollOptions, MessageScrollerScrollable, MessageScrollerVisibility, } from './message-scroller-context';
|
|
4
|
+
export interface MessageScrollerProviderProps {
|
|
5
|
+
autoScroll?: boolean;
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
defaultScrollPosition?: MessageScrollerDefaultScrollPosition;
|
|
8
|
+
scrollEdgeThreshold?: number;
|
|
9
|
+
scrollMargin?: number;
|
|
10
|
+
scrollPreviousItemPeek?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function MessageScrollerProvider({ autoScroll, children, defaultScrollPosition, scrollEdgeThreshold, scrollMargin, scrollPreviousItemPeek, }: MessageScrollerProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export type MessageScrollerProps = React.HTMLAttributes<HTMLDivElement>;
|
|
14
|
+
export declare const MessageScroller: React.ForwardRefExoticComponent<MessageScrollerProps & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
export type MessageScrollerViewportProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
16
|
+
preserveScrollOnPrepend?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare const MessageScrollerViewport: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
19
|
+
preserveScrollOnPrepend?: boolean;
|
|
20
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export type MessageScrollerContentProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
22
|
+
spacerClassName?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const MessageScrollerContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
25
|
+
spacerClassName?: string;
|
|
26
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
export type MessageScrollerItemProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
28
|
+
messageId?: string;
|
|
29
|
+
scrollAnchor?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export declare const MessageScrollerItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
32
|
+
messageId?: string;
|
|
33
|
+
scrollAnchor?: boolean;
|
|
34
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
export type MessageScrollerButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> & {
|
|
36
|
+
behavior?: ScrollBehavior;
|
|
37
|
+
children?: React.ReactNode;
|
|
38
|
+
direction?: MessageScrollerButtonDirection;
|
|
39
|
+
};
|
|
40
|
+
export declare const MessageScrollerButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
|
|
41
|
+
behavior?: ScrollBehavior;
|
|
42
|
+
children?: React.ReactNode;
|
|
43
|
+
direction?: MessageScrollerButtonDirection;
|
|
44
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -4,6 +4,7 @@ export type TabProps = {
|
|
|
4
4
|
onClick?: () => void;
|
|
5
5
|
onClose?: () => void;
|
|
6
6
|
disabled?: boolean;
|
|
7
|
+
disabledTooltip?: React.ReactNode;
|
|
7
8
|
className?: string;
|
|
8
9
|
};
|
|
9
|
-
export declare const Tab: ({ children, value, onClick, onClose, disabled, className }: TabProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const Tab: ({ children, value, onClick, onClose, disabled, disabledTooltip, className }: TabProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MastraDBMessage } from '@mastra/core/agent/message-list';
|
|
2
|
+
export interface ThreadRailTurn {
|
|
3
|
+
key: string;
|
|
4
|
+
messageId: string;
|
|
5
|
+
prompt: string;
|
|
6
|
+
reply?: string;
|
|
7
|
+
files: string[];
|
|
8
|
+
hiddenFileCount: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const getClientMessageKey: (message: MastraDBMessage) => string;
|
|
11
|
+
export declare const buildThreadRailTurns: (messages: MastraDBMessage[]) => ThreadRailTurn[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ThreadRailTurn } from './thread-rail-turns';
|
|
2
|
+
export interface ThreadRailProps {
|
|
3
|
+
turns: ThreadRailTurn[];
|
|
4
|
+
currentAnchorId?: string;
|
|
5
|
+
visibleMessageIds?: string[];
|
|
6
|
+
label?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
maxHeight?: string;
|
|
9
|
+
scrollAreaClassName?: string;
|
|
10
|
+
onSelect?: (turn: ThreadRailTurn) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function ThreadRail({ turns, currentAnchorId, visibleMessageIds, label, className, maxHeight, scrollAreaClassName, onSelect, }: ThreadRailProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface UseMeasuredAutoHeightResult<TElement extends HTMLElement> {
|
|
3
|
+
ref: React.RefCallback<TElement>;
|
|
4
|
+
height: number | null;
|
|
5
|
+
heightStyle: React.CSSProperties;
|
|
6
|
+
measure: () => number | null;
|
|
7
|
+
}
|
|
8
|
+
export declare function useMeasuredAutoHeight<TElement extends HTMLElement = HTMLDivElement>(): UseMeasuredAutoHeightResult<TElement>;
|