diff --git a/app/client/lib/markdown.ts b/app/client/lib/markdown.ts new file mode 100644 index 00000000..49365b08 --- /dev/null +++ b/app/client/lib/markdown.ts @@ -0,0 +1,11 @@ +import { sanitizeHTML } from 'app/client/ui/sanitizeHTML'; +import { BindableValue, DomElementMethod, subscribeElem } from 'grainjs'; +import { marked } from 'marked'; + +export function markdown(markdownObs: BindableValue): DomElementMethod { + return elem => subscribeElem(elem, markdownObs, value => setMarkdownValue(elem, value)); +} + +function setMarkdownValue(elem: Element, markdownValue: string): void { + elem.innerHTML = sanitizeHTML(marked(markdownValue)); +}