UNPKG

@oiij/markdown-it

Version:

A Vue Composable for markdown-it

36 lines (34 loc) 1.04 kB
import DOMPurify from "dompurify"; import markdownIt from "markdown-it"; import { isReactive, isRef, ref, toValue, watch, watchEffect } from "vue"; //#region src/index.ts function useMarkdownIt(templateRef, defaultValue, options) { const { manual = false, domPurify = true, ..._options } = options ?? {}; const value = ref(isRef(defaultValue) ? toValue(defaultValue.value) : isReactive(defaultValue) ? toValue(defaultValue) : defaultValue); if (isRef(defaultValue)) watchEffect(() => { value.value = toValue(defaultValue.value); }); const html = ref(""); const md = markdownIt({ ..._options }); function render(value$1) { const mdValue = md.render(value$1); html.value = domPurify ? DOMPurify.sanitize(mdValue) : mdValue; if (templateRef && templateRef.value) templateRef.value.innerHTML = html.value; return html.value; } if (!manual) { render(value.value ?? ""); watch(value, (v) => { render(v ?? ""); }); } return { value, html, templateRef, md, render }; } //#endregion export { useMarkdownIt };