| <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} |
|
|