| <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 { disableSingleTilde } from '$lib/utils/marked/strikethrough-extension'; | |
| import { mentionExtension } from '$lib/utils/marked/mention-extension'; | |
| import MarkdownTokens from './Markdown/MarkdownTokens.svelte'; | |
| import footnoteExtension from '$lib/utils/marked/footnote-extension'; | |
| import citationExtension from '$lib/utils/marked/citation-extension'; | |
| export let id = ''; | |
| export let content; | |
| export let done = true; | |
| export let model = null; | |
| export let save = false; | |
| export let preview = false; | |
| export let paragraphTag = 'p'; | |
| export let editCodeBlock = true; | |
| export let topPadding = false; | |
| export let sourceIds = []; | |
| export let onSave = () => {}; | |
| export let onUpdate = () => {}; | |
| export let onPreview = () => {}; | |
| export let onSourceClick = () => {}; | |
| export let onTaskClick = () => {}; | |
| let tokens = []; | |
| const options = { | |
| throwOnError: false, | |
| breaks: true | |
| }; | |
| marked.use(markedKatexExtension(options)); | |
| marked.use(markedExtension(options)); | |
| marked.use(citationExtension(options)); | |
| marked.use(footnoteExtension(options)); | |
| marked.use(disableSingleTilde); | |
| marked.use({ | |
| extensions: [ | |
| mentionExtension({ triggerChar: '@' }), | |
| mentionExtension({ triggerChar: '#' }), | |
| mentionExtension({ triggerChar: '$' }) | |
| ] | |
| }); | |
| $: (async () => { | |
| if (content) { | |
| tokens = marked.lexer( | |
| replaceTokens(processResponseContent(content), model?.name, $user?.name) | |
| ); | |
| } | |
| })(); | |
| </script> | |
| {#key id} | |
| <MarkdownTokens | |
| {tokens} | |
| {id} | |
| {done} | |
| {save} | |
| {preview} | |
| {paragraphTag} | |
| {editCodeBlock} | |
| {sourceIds} | |
| {topPadding} | |
| {onTaskClick} | |
| {onSourceClick} | |
| {onSave} | |
| {onUpdate} | |
| {onPreview} | |
| /> | |
| {/key} | |