We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 473d971 commit 114b6e8Copy full SHA for 114b6e8
1 file changed
src/lib/components/chat/Messages/Markdown.svelte
@@ -62,6 +62,18 @@
62
let pendingUpdate = null;
63
let lastContent = '';
64
let lastParsedContent = '';
65
+ let lastTokens = [];
66
+
67
+ // Keep the same object for unchanged blocks so the keyed each skips re-rendering them
68
+ const reconcileTokens = (next) => {
69
+ for (let i = 0; i < next.length; i++) {
70
+ if (lastTokens[i] && lastTokens[i].raw === next[i].raw) {
71
+ next[i] = lastTokens[i];
72
+ }
73
74
+ lastTokens = next;
75
+ return next;
76
+ };
77
78
const parseTokens = () => {
79
if (content === lastContent) return;
@@ -71,7 +83,7 @@
83
if (processed === lastParsedContent) return;
84
lastParsedContent = processed;
85
- tokens = marked.lexer(processed);
86
+ tokens = reconcileTokens(marked.lexer(processed));
87
};
88
89
const updateHandler = (content) => {
0 commit comments