@ash-cloud/ash-ui 0.2.2 → 0.2.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/index.cjs +75 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -3
- package/dist/index.d.ts +21 -3
- package/dist/index.js +76 -5
- package/dist/index.js.map +1 -1
- package/dist/styles-full.css +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -18,6 +18,10 @@ interface ConversationContextValue {
|
|
|
18
18
|
autoScroll: boolean;
|
|
19
19
|
/** Set auto-scroll state */
|
|
20
20
|
setAutoScroll: (value: boolean) => void;
|
|
21
|
+
/** Whether more messages exist above */
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
/** Whether older messages are currently being fetched */
|
|
24
|
+
isLoadingMore: boolean;
|
|
21
25
|
}
|
|
22
26
|
declare function useConversation(): ConversationContextValue;
|
|
23
27
|
interface ConversationProps {
|
|
@@ -29,8 +33,16 @@ interface ConversationProps {
|
|
|
29
33
|
autoScroll?: boolean;
|
|
30
34
|
/** Threshold in pixels to consider "at bottom" */
|
|
31
35
|
scrollThreshold?: number;
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
/** Called when user scrolls near the top to load older messages */
|
|
37
|
+
onLoadMore?: () => void;
|
|
38
|
+
/** Whether more messages exist above */
|
|
39
|
+
hasMore?: boolean;
|
|
40
|
+
/** Whether older messages are currently being fetched */
|
|
41
|
+
isLoadingMore?: boolean;
|
|
42
|
+
/** Pixels from top to trigger onLoadMore (default: 100) */
|
|
43
|
+
loadMoreThreshold?: number;
|
|
44
|
+
}
|
|
45
|
+
declare function Conversation({ children, className, autoScroll: initialAutoScroll, scrollThreshold, onLoadMore, hasMore, isLoadingMore, loadMoreThreshold, }: ConversationProps): react_jsx_runtime.JSX.Element;
|
|
34
46
|
interface ConversationContentProps {
|
|
35
47
|
/** Child elements */
|
|
36
48
|
children: ReactNode;
|
|
@@ -52,6 +64,11 @@ interface ConversationScrollButtonProps {
|
|
|
52
64
|
label?: string;
|
|
53
65
|
}
|
|
54
66
|
declare function ConversationScrollButton({ className, label, }: ConversationScrollButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
67
|
+
interface ConversationLoadMoreProps {
|
|
68
|
+
/** Additional class name */
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
declare function ConversationLoadMore({ className, }: ConversationLoadMoreProps): react_jsx_runtime.JSX.Element | null;
|
|
55
72
|
|
|
56
73
|
interface MessageContextValue {
|
|
57
74
|
/** Message role */
|
|
@@ -1050,6 +1067,7 @@ interface StreamEvent {
|
|
|
1050
1067
|
error?: string;
|
|
1051
1068
|
code?: string;
|
|
1052
1069
|
status?: string;
|
|
1070
|
+
message?: string;
|
|
1053
1071
|
result?: string;
|
|
1054
1072
|
totalCost?: number;
|
|
1055
1073
|
totalTokens?: number;
|
|
@@ -1563,4 +1581,4 @@ interface UseLongTextConversionReturn {
|
|
|
1563
1581
|
*/
|
|
1564
1582
|
declare function useLongTextConversion({ threshold, filenameTemplate, onConversion, }?: LongTextConversionOptions): UseLongTextConversionReturn;
|
|
1565
1583
|
|
|
1566
|
-
export { Message$1 as AIMessage, ActionIcon, type ActionIconProps, ActionType, type StreamEvent as AgentStreamEvent, Attachment, type AttachmentFile, AttachmentInfo, type AttachmentInfoProps, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, Attachments, type AttachmentsProps, type BeforeSendContext, type BeforeSendResult, type FileAttachment as ChatFileAttachment, type ChatMiddleware, type ChatRequestOptions, CodeBlock, type CodeBlockProps, Conversation, ConversationContent, type ConversationContentProps, ConversationEmptyState, type ConversationEmptyStateProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, type ConversionInfo, type CreateMessage, type CreateStreamFn, type CreateStreamOptions, EnvVarsPanel, type EnvVarsPanelProps, FileAttachment$2 as FileAttachment, FileBadgeCompact, type FileBadgeProps, type FileAttachment as HookFileAttachment, JsonDisplay, type JsonDisplayProps, LazyMarkdown, type LazyMarkdownProps, LoadingDots, type LoadingDotsProps, LoadingSpinner, type LoadingSpinnerProps, LogEntry, LogsPanel, type LogsPanelProps, type LongTextConversionOptions, MarkdownComponents, Mention, MentionProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageContent, type MessageContentProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageShimmer, type MessageShimmerProps, MessageTimestamp, type MessageTimestampProps, type MiddlewareRequest, type MiddlewareRequestResult, NormalizedEntry, OptionCards, type OptionCardsProps, ParsedOption, type QueuedMessage, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, RichContent, type RichContentProps, RichContentRenderer, Shimmer, ShimmerBlock, type ShimmerBlockProps, ShimmerLine, type ShimmerLineProps, type ShimmerProps, ShimmerText, type ShimmerTextProps, StatusIndicator, type StatusIndicatorProps, type StreamGenerator, Task, TaskContent, type TaskContentProps, TaskItem, type TaskItemProps, TaskList, type TaskListProps, type TaskProps, TaskTrigger, type TaskTriggerProps, type TextAttachment, ThinkingIndicator, type ThinkingIndicatorProps, TodoItem, TodoStatus, Tool, type ToolCallHandler, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolInvocation, ToolList, type ToolListProps, ToolOutput, type ToolOutputProps, type ToolProps, ToolStatus, type ToolVariant, type UseAgentChatOptions, type UseAgentChatReturn, type UseChatOptions, type UseChatReturn, type UseFileUploadOptions, type UseFileUploadReturn, type UseLongTextConversionReturn, type UseMessageQueueOptions, type UseMessageQueueReturn, type UseStopExecutionOptions, type UseStopExecutionReturn, applyEventMiddleware, applyRequestMiddleware, callMiddlewareComplete, callMiddlewareError, formatFileSize as formatFileSizeHook, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool };
|
|
1584
|
+
export { Message$1 as AIMessage, ActionIcon, type ActionIconProps, ActionType, type StreamEvent as AgentStreamEvent, Attachment, type AttachmentFile, AttachmentInfo, type AttachmentInfoProps, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, Attachments, type AttachmentsProps, type BeforeSendContext, type BeforeSendResult, type FileAttachment as ChatFileAttachment, type ChatMiddleware, type ChatRequestOptions, CodeBlock, type CodeBlockProps, Conversation, ConversationContent, type ConversationContentProps, ConversationEmptyState, type ConversationEmptyStateProps, ConversationLoadMore, type ConversationLoadMoreProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, type ConversionInfo, type CreateMessage, type CreateStreamFn, type CreateStreamOptions, EnvVarsPanel, type EnvVarsPanelProps, FileAttachment$2 as FileAttachment, FileBadgeCompact, type FileBadgeProps, type FileAttachment as HookFileAttachment, JsonDisplay, type JsonDisplayProps, LazyMarkdown, type LazyMarkdownProps, LoadingDots, type LoadingDotsProps, LoadingSpinner, type LoadingSpinnerProps, LogEntry, LogsPanel, type LogsPanelProps, type LongTextConversionOptions, MarkdownComponents, Mention, MentionProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageContent, type MessageContentProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageShimmer, type MessageShimmerProps, MessageTimestamp, type MessageTimestampProps, type MiddlewareRequest, type MiddlewareRequestResult, NormalizedEntry, OptionCards, type OptionCardsProps, ParsedOption, type QueuedMessage, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, RichContent, type RichContentProps, RichContentRenderer, Shimmer, ShimmerBlock, type ShimmerBlockProps, ShimmerLine, type ShimmerLineProps, type ShimmerProps, ShimmerText, type ShimmerTextProps, StatusIndicator, type StatusIndicatorProps, type StreamGenerator, Task, TaskContent, type TaskContentProps, TaskItem, type TaskItemProps, TaskList, type TaskListProps, type TaskProps, TaskTrigger, type TaskTriggerProps, type TextAttachment, ThinkingIndicator, type ThinkingIndicatorProps, TodoItem, TodoStatus, Tool, type ToolCallHandler, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolInvocation, ToolList, type ToolListProps, ToolOutput, type ToolOutputProps, type ToolProps, ToolStatus, type ToolVariant, type UseAgentChatOptions, type UseAgentChatReturn, type UseChatOptions, type UseChatReturn, type UseFileUploadOptions, type UseFileUploadReturn, type UseLongTextConversionReturn, type UseMessageQueueOptions, type UseMessageQueueReturn, type UseStopExecutionOptions, type UseStopExecutionReturn, applyEventMiddleware, applyRequestMiddleware, callMiddlewareComplete, callMiddlewareError, formatFileSize as formatFileSizeHook, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool };
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ interface ConversationContextValue {
|
|
|
18
18
|
autoScroll: boolean;
|
|
19
19
|
/** Set auto-scroll state */
|
|
20
20
|
setAutoScroll: (value: boolean) => void;
|
|
21
|
+
/** Whether more messages exist above */
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
/** Whether older messages are currently being fetched */
|
|
24
|
+
isLoadingMore: boolean;
|
|
21
25
|
}
|
|
22
26
|
declare function useConversation(): ConversationContextValue;
|
|
23
27
|
interface ConversationProps {
|
|
@@ -29,8 +33,16 @@ interface ConversationProps {
|
|
|
29
33
|
autoScroll?: boolean;
|
|
30
34
|
/** Threshold in pixels to consider "at bottom" */
|
|
31
35
|
scrollThreshold?: number;
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
/** Called when user scrolls near the top to load older messages */
|
|
37
|
+
onLoadMore?: () => void;
|
|
38
|
+
/** Whether more messages exist above */
|
|
39
|
+
hasMore?: boolean;
|
|
40
|
+
/** Whether older messages are currently being fetched */
|
|
41
|
+
isLoadingMore?: boolean;
|
|
42
|
+
/** Pixels from top to trigger onLoadMore (default: 100) */
|
|
43
|
+
loadMoreThreshold?: number;
|
|
44
|
+
}
|
|
45
|
+
declare function Conversation({ children, className, autoScroll: initialAutoScroll, scrollThreshold, onLoadMore, hasMore, isLoadingMore, loadMoreThreshold, }: ConversationProps): react_jsx_runtime.JSX.Element;
|
|
34
46
|
interface ConversationContentProps {
|
|
35
47
|
/** Child elements */
|
|
36
48
|
children: ReactNode;
|
|
@@ -52,6 +64,11 @@ interface ConversationScrollButtonProps {
|
|
|
52
64
|
label?: string;
|
|
53
65
|
}
|
|
54
66
|
declare function ConversationScrollButton({ className, label, }: ConversationScrollButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
67
|
+
interface ConversationLoadMoreProps {
|
|
68
|
+
/** Additional class name */
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
declare function ConversationLoadMore({ className, }: ConversationLoadMoreProps): react_jsx_runtime.JSX.Element | null;
|
|
55
72
|
|
|
56
73
|
interface MessageContextValue {
|
|
57
74
|
/** Message role */
|
|
@@ -1050,6 +1067,7 @@ interface StreamEvent {
|
|
|
1050
1067
|
error?: string;
|
|
1051
1068
|
code?: string;
|
|
1052
1069
|
status?: string;
|
|
1070
|
+
message?: string;
|
|
1053
1071
|
result?: string;
|
|
1054
1072
|
totalCost?: number;
|
|
1055
1073
|
totalTokens?: number;
|
|
@@ -1563,4 +1581,4 @@ interface UseLongTextConversionReturn {
|
|
|
1563
1581
|
*/
|
|
1564
1582
|
declare function useLongTextConversion({ threshold, filenameTemplate, onConversion, }?: LongTextConversionOptions): UseLongTextConversionReturn;
|
|
1565
1583
|
|
|
1566
|
-
export { Message$1 as AIMessage, ActionIcon, type ActionIconProps, ActionType, type StreamEvent as AgentStreamEvent, Attachment, type AttachmentFile, AttachmentInfo, type AttachmentInfoProps, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, Attachments, type AttachmentsProps, type BeforeSendContext, type BeforeSendResult, type FileAttachment as ChatFileAttachment, type ChatMiddleware, type ChatRequestOptions, CodeBlock, type CodeBlockProps, Conversation, ConversationContent, type ConversationContentProps, ConversationEmptyState, type ConversationEmptyStateProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, type ConversionInfo, type CreateMessage, type CreateStreamFn, type CreateStreamOptions, EnvVarsPanel, type EnvVarsPanelProps, FileAttachment$2 as FileAttachment, FileBadgeCompact, type FileBadgeProps, type FileAttachment as HookFileAttachment, JsonDisplay, type JsonDisplayProps, LazyMarkdown, type LazyMarkdownProps, LoadingDots, type LoadingDotsProps, LoadingSpinner, type LoadingSpinnerProps, LogEntry, LogsPanel, type LogsPanelProps, type LongTextConversionOptions, MarkdownComponents, Mention, MentionProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageContent, type MessageContentProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageShimmer, type MessageShimmerProps, MessageTimestamp, type MessageTimestampProps, type MiddlewareRequest, type MiddlewareRequestResult, NormalizedEntry, OptionCards, type OptionCardsProps, ParsedOption, type QueuedMessage, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, RichContent, type RichContentProps, RichContentRenderer, Shimmer, ShimmerBlock, type ShimmerBlockProps, ShimmerLine, type ShimmerLineProps, type ShimmerProps, ShimmerText, type ShimmerTextProps, StatusIndicator, type StatusIndicatorProps, type StreamGenerator, Task, TaskContent, type TaskContentProps, TaskItem, type TaskItemProps, TaskList, type TaskListProps, type TaskProps, TaskTrigger, type TaskTriggerProps, type TextAttachment, ThinkingIndicator, type ThinkingIndicatorProps, TodoItem, TodoStatus, Tool, type ToolCallHandler, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolInvocation, ToolList, type ToolListProps, ToolOutput, type ToolOutputProps, type ToolProps, ToolStatus, type ToolVariant, type UseAgentChatOptions, type UseAgentChatReturn, type UseChatOptions, type UseChatReturn, type UseFileUploadOptions, type UseFileUploadReturn, type UseLongTextConversionReturn, type UseMessageQueueOptions, type UseMessageQueueReturn, type UseStopExecutionOptions, type UseStopExecutionReturn, applyEventMiddleware, applyRequestMiddleware, callMiddlewareComplete, callMiddlewareError, formatFileSize as formatFileSizeHook, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool };
|
|
1584
|
+
export { Message$1 as AIMessage, ActionIcon, type ActionIconProps, ActionType, type StreamEvent as AgentStreamEvent, Attachment, type AttachmentFile, AttachmentInfo, type AttachmentInfoProps, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, Attachments, type AttachmentsProps, type BeforeSendContext, type BeforeSendResult, type FileAttachment as ChatFileAttachment, type ChatMiddleware, type ChatRequestOptions, CodeBlock, type CodeBlockProps, Conversation, ConversationContent, type ConversationContentProps, ConversationEmptyState, type ConversationEmptyStateProps, ConversationLoadMore, type ConversationLoadMoreProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, type ConversionInfo, type CreateMessage, type CreateStreamFn, type CreateStreamOptions, EnvVarsPanel, type EnvVarsPanelProps, FileAttachment$2 as FileAttachment, FileBadgeCompact, type FileBadgeProps, type FileAttachment as HookFileAttachment, JsonDisplay, type JsonDisplayProps, LazyMarkdown, type LazyMarkdownProps, LoadingDots, type LoadingDotsProps, LoadingSpinner, type LoadingSpinnerProps, LogEntry, LogsPanel, type LogsPanelProps, type LongTextConversionOptions, MarkdownComponents, Mention, MentionProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageContent, type MessageContentProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageShimmer, type MessageShimmerProps, MessageTimestamp, type MessageTimestampProps, type MiddlewareRequest, type MiddlewareRequestResult, NormalizedEntry, OptionCards, type OptionCardsProps, ParsedOption, type QueuedMessage, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, RichContent, type RichContentProps, RichContentRenderer, Shimmer, ShimmerBlock, type ShimmerBlockProps, ShimmerLine, type ShimmerLineProps, type ShimmerProps, ShimmerText, type ShimmerTextProps, StatusIndicator, type StatusIndicatorProps, type StreamGenerator, Task, TaskContent, type TaskContentProps, TaskItem, type TaskItemProps, TaskList, type TaskListProps, type TaskProps, TaskTrigger, type TaskTriggerProps, type TextAttachment, ThinkingIndicator, type ThinkingIndicatorProps, TodoItem, TodoStatus, Tool, type ToolCallHandler, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolInvocation, ToolList, type ToolListProps, ToolOutput, type ToolOutputProps, type ToolProps, ToolStatus, type ToolVariant, type UseAgentChatOptions, type UseAgentChatReturn, type UseChatOptions, type UseChatReturn, type UseFileUploadOptions, type UseFileUploadReturn, type UseLongTextConversionReturn, type UseMessageQueueOptions, type UseMessageQueueReturn, type UseStopExecutionOptions, type UseStopExecutionReturn, applyEventMiddleware, applyRequestMiddleware, callMiddlewareComplete, callMiddlewareError, formatFileSize as formatFileSizeHook, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, lazy, useContext, useRef, useState, useCallback, useEffect, useMemo, Suspense } from 'react';
|
|
1
|
+
import { createContext, lazy, useContext, useRef, useState, useCallback, useEffect, useLayoutEffect, useMemo, Suspense } from 'react';
|
|
2
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
// src/components/Conversation.tsx
|
|
@@ -421,11 +421,17 @@ function Conversation({
|
|
|
421
421
|
children,
|
|
422
422
|
className,
|
|
423
423
|
autoScroll: initialAutoScroll = true,
|
|
424
|
-
scrollThreshold = 100
|
|
424
|
+
scrollThreshold = 100,
|
|
425
|
+
onLoadMore,
|
|
426
|
+
hasMore = false,
|
|
427
|
+
isLoadingMore = false,
|
|
428
|
+
loadMoreThreshold = 100
|
|
425
429
|
}) {
|
|
426
430
|
const containerRef = useRef(null);
|
|
427
431
|
const [isScrolledUp, setIsScrolledUp] = useState(false);
|
|
428
432
|
const [autoScroll, setAutoScroll] = useState(initialAutoScroll);
|
|
433
|
+
const prevScrollHeightRef = useRef(0);
|
|
434
|
+
const wasLoadingMoreRef = useRef(false);
|
|
429
435
|
const scrollToBottom = useCallback((behavior = "smooth") => {
|
|
430
436
|
if (containerRef.current) {
|
|
431
437
|
containerRef.current.scrollTo({
|
|
@@ -443,7 +449,26 @@ function Conversation({
|
|
|
443
449
|
if (isAtBottom && !autoScroll) {
|
|
444
450
|
setAutoScroll(true);
|
|
445
451
|
}
|
|
446
|
-
|
|
452
|
+
if (scrollTop < loadMoreThreshold && hasMore && !isLoadingMore && onLoadMore) {
|
|
453
|
+
onLoadMore();
|
|
454
|
+
}
|
|
455
|
+
}, [scrollThreshold, autoScroll, loadMoreThreshold, hasMore, isLoadingMore, onLoadMore]);
|
|
456
|
+
useEffect(() => {
|
|
457
|
+
if (isLoadingMore && !wasLoadingMoreRef.current && containerRef.current) {
|
|
458
|
+
prevScrollHeightRef.current = containerRef.current.scrollHeight;
|
|
459
|
+
}
|
|
460
|
+
wasLoadingMoreRef.current = isLoadingMore;
|
|
461
|
+
}, [isLoadingMore]);
|
|
462
|
+
useLayoutEffect(() => {
|
|
463
|
+
if (!isLoadingMore && prevScrollHeightRef.current > 0 && containerRef.current) {
|
|
464
|
+
const newScrollHeight = containerRef.current.scrollHeight;
|
|
465
|
+
const scrollDelta = newScrollHeight - prevScrollHeightRef.current;
|
|
466
|
+
if (scrollDelta > 0) {
|
|
467
|
+
containerRef.current.scrollTop += scrollDelta;
|
|
468
|
+
}
|
|
469
|
+
prevScrollHeightRef.current = 0;
|
|
470
|
+
}
|
|
471
|
+
}, [isLoadingMore]);
|
|
447
472
|
useEffect(() => {
|
|
448
473
|
if (autoScroll && !isScrolledUp) {
|
|
449
474
|
scrollToBottom("instant");
|
|
@@ -454,7 +479,9 @@ function Conversation({
|
|
|
454
479
|
scrollToBottom,
|
|
455
480
|
isScrolledUp,
|
|
456
481
|
autoScroll,
|
|
457
|
-
setAutoScroll
|
|
482
|
+
setAutoScroll,
|
|
483
|
+
hasMore,
|
|
484
|
+
isLoadingMore
|
|
458
485
|
};
|
|
459
486
|
return /* @__PURE__ */ jsx(ConversationContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
460
487
|
"div",
|
|
@@ -552,6 +579,50 @@ function ConversationScrollButton({
|
|
|
552
579
|
}
|
|
553
580
|
);
|
|
554
581
|
}
|
|
582
|
+
function ConversationLoadMore({
|
|
583
|
+
className
|
|
584
|
+
}) {
|
|
585
|
+
const { hasMore, isLoadingMore } = useConversation();
|
|
586
|
+
if (!hasMore && !isLoadingMore) return null;
|
|
587
|
+
return /* @__PURE__ */ jsx(
|
|
588
|
+
"div",
|
|
589
|
+
{
|
|
590
|
+
className: cn(
|
|
591
|
+
"ash-conversation-load-more flex items-center justify-center py-3",
|
|
592
|
+
className
|
|
593
|
+
),
|
|
594
|
+
children: isLoadingMore && /* @__PURE__ */ jsxs(
|
|
595
|
+
"svg",
|
|
596
|
+
{
|
|
597
|
+
className: "w-5 h-5 animate-spin text-[var(--ash-text-muted,rgba(255,255,255,0.5))]",
|
|
598
|
+
fill: "none",
|
|
599
|
+
viewBox: "0 0 24 24",
|
|
600
|
+
children: [
|
|
601
|
+
/* @__PURE__ */ jsx(
|
|
602
|
+
"circle",
|
|
603
|
+
{
|
|
604
|
+
className: "opacity-25",
|
|
605
|
+
cx: "12",
|
|
606
|
+
cy: "12",
|
|
607
|
+
r: "10",
|
|
608
|
+
stroke: "currentColor",
|
|
609
|
+
strokeWidth: "4"
|
|
610
|
+
}
|
|
611
|
+
),
|
|
612
|
+
/* @__PURE__ */ jsx(
|
|
613
|
+
"path",
|
|
614
|
+
{
|
|
615
|
+
className: "opacity-75",
|
|
616
|
+
fill: "currentColor",
|
|
617
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
618
|
+
}
|
|
619
|
+
)
|
|
620
|
+
]
|
|
621
|
+
}
|
|
622
|
+
)
|
|
623
|
+
}
|
|
624
|
+
);
|
|
625
|
+
}
|
|
555
626
|
var ReactMarkdown = lazy(() => import('react-markdown'));
|
|
556
627
|
function LazyMarkdown({ children, fallback, components, className }) {
|
|
557
628
|
const [mounted, setMounted] = useState(false);
|
|
@@ -4307,6 +4378,6 @@ function useLongTextConversion({
|
|
|
4307
4378
|
};
|
|
4308
4379
|
}
|
|
4309
4380
|
|
|
4310
|
-
export { ActionIcon, AlertCircleIcon, AlertTriangleIcon, ArrowUpIcon, Attachment, AttachmentInfo, AttachmentPreview, AttachmentRemove, Attachments, BotIcon, BrainIcon, BugIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, ClipboardListIcon, ClockIcon, CodeBlock, CodeIcon, Conversation, ConversationContent, ConversationEmptyState, ConversationScrollButton, CopyIcon, DEFAULT_STYLE_CONFIG, EditIcon, EnvVarsPanel, ErrorIcon, FileBadgeCompact, FileIcon, FilePlusIcon, FolderSearchIcon, GlobeIcon, HomeIcon, InfoIcon, JsonDisplay, LazyMarkdown, ListChecksIcon, LoaderIcon, LoadingDots, LoadingSpinner, LogsPanel, Mention, Message, MessageAction, MessageActions, MessageAvatar, MessageContent, MessageResponse, MessageShimmer, MessageSquareIcon, MessageTimestamp, MicrophoneIcon, MoonIcon, OptionCards, PaperclipIcon, PlugIcon, Reasoning, ReasoningContent, ReasoningTrigger, RichContentRenderer, SearchIcon, SendIcon, Shimmer, ShimmerBlock, ShimmerLine, ShimmerText, SparklesIcon, SpinnerIcon, StatusIndicator, StopCircleIcon, SunIcon, Task, TaskContent, TaskItem, TaskList, TaskTrigger, TerminalIcon, ThinkingIndicator, Tool, ToolHeader, ToolIcon, ToolInput, ToolList, ToolOutput, UserIcon, XCircleIcon, XIcon, allKeyframesCss, applyEventMiddleware, applyRequestMiddleware, borderRadius, callMiddlewareComplete, callMiddlewareError, cn, colors, createToolCall, cssVars, extractTextContent, formatElapsedTime, formatFileSize, formatFileSize2 as formatFileSizeHook, formatTimestamp, formatToolName, generateToolSummary, getActionIcon, getActionLabel, inlineStyles, isAgentToolAction, isCommandRunAction, isErrorEntry, isFileEditAction, isFileReadAction, isFileWriteAction, isGenericToolAction, isGlobAction, isMcpToolAction, isSearchAction, isTodoWriteAction, isToolCallEntry, isWebFetchAction, isWebSearchAction, isWidgetEntry, keyframes, keyframesCss, mapToolToActionType, messageToNormalizedEntry, messagesToNormalizedEntries, normalizeToolResult, normalizedEntriesToMessages, normalizedEntryToMessage, parseCommandResult, parseMcpToolName, parseOptionsFromContent, shadows, spacing, tokensToCssVariables, transitions, truncate, typography, updateToolCallWithResult, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool, widget, zIndex };
|
|
4381
|
+
export { ActionIcon, AlertCircleIcon, AlertTriangleIcon, ArrowUpIcon, Attachment, AttachmentInfo, AttachmentPreview, AttachmentRemove, Attachments, BotIcon, BrainIcon, BugIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, ClipboardListIcon, ClockIcon, CodeBlock, CodeIcon, Conversation, ConversationContent, ConversationEmptyState, ConversationLoadMore, ConversationScrollButton, CopyIcon, DEFAULT_STYLE_CONFIG, EditIcon, EnvVarsPanel, ErrorIcon, FileBadgeCompact, FileIcon, FilePlusIcon, FolderSearchIcon, GlobeIcon, HomeIcon, InfoIcon, JsonDisplay, LazyMarkdown, ListChecksIcon, LoaderIcon, LoadingDots, LoadingSpinner, LogsPanel, Mention, Message, MessageAction, MessageActions, MessageAvatar, MessageContent, MessageResponse, MessageShimmer, MessageSquareIcon, MessageTimestamp, MicrophoneIcon, MoonIcon, OptionCards, PaperclipIcon, PlugIcon, Reasoning, ReasoningContent, ReasoningTrigger, RichContentRenderer, SearchIcon, SendIcon, Shimmer, ShimmerBlock, ShimmerLine, ShimmerText, SparklesIcon, SpinnerIcon, StatusIndicator, StopCircleIcon, SunIcon, Task, TaskContent, TaskItem, TaskList, TaskTrigger, TerminalIcon, ThinkingIndicator, Tool, ToolHeader, ToolIcon, ToolInput, ToolList, ToolOutput, UserIcon, XCircleIcon, XIcon, allKeyframesCss, applyEventMiddleware, applyRequestMiddleware, borderRadius, callMiddlewareComplete, callMiddlewareError, cn, colors, createToolCall, cssVars, extractTextContent, formatElapsedTime, formatFileSize, formatFileSize2 as formatFileSizeHook, formatTimestamp, formatToolName, generateToolSummary, getActionIcon, getActionLabel, inlineStyles, isAgentToolAction, isCommandRunAction, isErrorEntry, isFileEditAction, isFileReadAction, isFileWriteAction, isGenericToolAction, isGlobAction, isMcpToolAction, isSearchAction, isTodoWriteAction, isToolCallEntry, isWebFetchAction, isWebSearchAction, isWidgetEntry, keyframes, keyframesCss, mapToolToActionType, messageToNormalizedEntry, messagesToNormalizedEntries, normalizeToolResult, normalizedEntriesToMessages, normalizedEntryToMessage, parseCommandResult, parseMcpToolName, parseOptionsFromContent, shadows, spacing, tokensToCssVariables, transitions, truncate, typography, updateToolCallWithResult, useAgentChat, useAttachment, useChat, useConversation, useFileUpload, useLongTextConversion, useMessage, useMessageQueue, useReasoning, useStopExecution, useTask, useTool, widget, zIndex };
|
|
4311
4382
|
//# sourceMappingURL=index.js.map
|
|
4312
4383
|
//# sourceMappingURL=index.js.map
|