blob: 76bf13ad0639c35e5f091043214ba4a7613e1c7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<script>
import { messages } from '$lib/store';
import MessageRun from './MessageRun.svelte';
export let channel = null;
$: messageList = channel !== null ? $messages.inChannel(channel) : [];
function *chunkBy(xs, fn) {
let chunk;
let key;
for (let x of xs) {
let newKey = fn(x);
if (key !== newKey) {
if (chunk !== undefined) {
yield [key, chunk];
}
chunk = [x];
key = newKey;
} else {
chunk.push(x);
}
}
if (chunk !== undefined) {
yield [key, chunk];
}
}
</script>
<div class="container">
{#each chunkBy(messageList, msg => msg.sender) as [sender, messages]}
<div>
<MessageRun {sender} {messages} />
</div>
{/each}
</div>
<style>
.container {
overflow: auto;
}
</style>
|