mirror of
https://github.com/open-webui/open-webui
synced 2025-06-04 03:37:35 +00:00
57 lines
1.1 KiB
Svelte
57 lines
1.1 KiB
Svelte
<script>
|
|
import { marked } from 'marked';
|
|
import { replaceTokens, processResponseContent } from '$lib/utils';
|
|
import { user } from '$lib/stores';
|
|
|
|
import markedExtension from '$lib/utils/marked/extension';
|
|
import markedKatexExtension from '$lib/utils/marked/katex-extension';
|
|
|
|
import MarkdownTokens from './Markdown/MarkdownTokens.svelte';
|
|
import { createEventDispatcher } from 'svelte';
|
|
|
|
const dispatch = createEventDispatcher();
|
|
|
|
export let id;
|
|
export let content;
|
|
export let model = null;
|
|
export let save = false;
|
|
|
|
export let sourceIds = [];
|
|
export let onSourceClick = () => {};
|
|
|
|
let tokens = [];
|
|
|
|
const options = {
|
|
throwOnError: false
|
|
};
|
|
|
|
marked.use(markedKatexExtension(options));
|
|
marked.use(markedExtension(options));
|
|
|
|
$: (async () => {
|
|
if (content) {
|
|
tokens = marked.lexer(
|
|
replaceTokens(processResponseContent(content), sourceIds, model?.name, $user?.name),
|
|
{
|
|
gfm: true
|
|
}
|
|
);
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
{#key id}
|
|
<MarkdownTokens
|
|
{tokens}
|
|
{id}
|
|
{save}
|
|
{onSourceClick}
|
|
on:update={(e) => {
|
|
dispatch('update', e.detail);
|
|
}}
|
|
on:code={(e) => {
|
|
dispatch('code', e.detail);
|
|
}}
|
|
/>
|
|
{/key}
|