{#if onLoadMore}
{/if} {#if allVisibleMessages.length === 0}

No messages yet

Be the first to send a message!

{:else if virtualizer && enableVirtualization}
{#each virtualItems as virtualRow (virtualRow.key)} {@const message = allVisibleMessages[virtualRow.index]} {@const previousMessage = virtualRow.index > 0 ? allVisibleMessages[virtualRow.index - 1] : null} {@const isGrouped = shouldGroup(message, previousMessage)} {@const showDateSeparator = needsDateSeparator( message, previousMessage, )}
{#if showDateSeparator}
{formatDateSeparator(message.timestamp)}
{/if} onReact?.(message.eventId, emoji)} onToggleReaction={( emoji: string, reactionEventId: string | null, ) => onToggleReaction?.(message.eventId, emoji, reactionEventId)} onEdit={() => onEdit?.(message)} onDelete={() => onDelete?.(message.eventId)} onReply={() => onReply?.(message)} onScrollToMessage={scrollToMessage} replyPreview={message.replyTo ? getReplyPreview(message.replyTo) : null} />
{/each}
{:else}
{#each allVisibleMessages as message, i (message.eventId)} {@const previousMessage = i > 0 ? allVisibleMessages[i - 1] : null} {@const isGrouped = shouldGroup(message, previousMessage)} {@const showDateSeparator = needsDateSeparator( message, previousMessage, )} {#if showDateSeparator}
{formatDateSeparator(message.timestamp)}
{/if} onReact?.(message.eventId, emoji)} onToggleReaction={(emoji: string, reactionEventId: string | null) => onToggleReaction?.(message.eventId, emoji, reactionEventId)} onEdit={() => onEdit?.(message)} onDelete={() => onDelete?.(message.eventId)} onReply={() => onReply?.(message)} onScrollToMessage={scrollToMessage} replyPreview={message.replyTo ? getReplyPreview(message.replyTo) : null} /> {/each}
{/if}
{#if !shouldAutoScroll && allVisibleMessages.length > 0} {/if}