Skip to content

Commit 886fca0

Browse files
committed
fix: register marked extensions once via module script
Move marked.use() calls from instance script to <script context="module"> so extensions are registered once when the module is first imported, rather than re-stacking on every Markdown component mount.
1 parent ce3d507 commit 886fca0

1 file changed

Lines changed: 27 additions & 24 deletions

File tree

src/lib/components/chat/Messages/Markdown.svelte

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,37 @@
1-
<script>
1+
<script context="module">
22
import { marked } from 'marked';
3-
import { replaceTokens, processResponseContent } from '$lib/utils';
4-
import { user } from '$lib/stores';
53
6-
import markedExtension from '$lib/utils/marked/extension';
74
import markedKatexExtension from '$lib/utils/marked/katex-extension';
5+
import markedExtension from '$lib/utils/marked/extension';
6+
import citationExtension from '$lib/utils/marked/citation-extension';
7+
import footnoteExtension from '$lib/utils/marked/footnote-extension';
88
import { disableSingleTilde } from '$lib/utils/marked/strikethrough-extension';
99
import { mentionExtension } from '$lib/utils/marked/mention-extension';
1010
11+
const options = {
12+
throwOnError: false,
13+
breaks: true
14+
};
15+
16+
marked.use(markedKatexExtension(options));
17+
marked.use(markedExtension(options));
18+
marked.use(citationExtension(options));
19+
marked.use(footnoteExtension(options));
20+
marked.use(disableSingleTilde);
21+
marked.use({
22+
extensions: [
23+
mentionExtension({ triggerChar: '@' }),
24+
mentionExtension({ triggerChar: '#' }),
25+
mentionExtension({ triggerChar: '$' })
26+
]
27+
});
28+
</script>
29+
30+
<script>
31+
import { replaceTokens, processResponseContent } from '$lib/utils';
32+
import { user } from '$lib/stores';
33+
1134
import MarkdownTokens from './Markdown/MarkdownTokens.svelte';
12-
import footnoteExtension from '$lib/utils/marked/footnote-extension';
13-
import citationExtension from '$lib/utils/marked/citation-extension';
1435
1536
export let id = '';
1637
export let content;
@@ -35,24 +56,6 @@
3556
3657
let tokens = [];
3758
38-
const options = {
39-
throwOnError: false,
40-
breaks: true
41-
};
42-
43-
marked.use(markedKatexExtension(options));
44-
marked.use(markedExtension(options));
45-
marked.use(citationExtension(options));
46-
marked.use(footnoteExtension(options));
47-
marked.use(disableSingleTilde);
48-
marked.use({
49-
extensions: [
50-
mentionExtension({ triggerChar: '@' }),
51-
mentionExtension({ triggerChar: '#' }),
52-
mentionExtension({ triggerChar: '$' })
53-
]
54-
});
55-
5659
$: (async () => {
5760
if (content) {
5861
tokens = marked.lexer(

0 commit comments

Comments
 (0)