1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <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)
- );
- }
- })();
- </script>
- {#key id}
- <MarkdownTokens
- {tokens}
- {id}
- {save}
- {onSourceClick}
- on:update={(e) => {
- dispatch('update', e.detail);
- }}
- on:code={(e) => {
- dispatch('code', e.detail);
- }}
- />
- {/key}
|