UNPKG

@oiij/markdown-it

Version:

A Vue Composable for markdown-it

68 lines (65 loc) 2.26 kB
//#region rolldown:runtime var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { key = keys[i]; if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); //#endregion const dompurify = __toESM(require("dompurify")); const markdown_it = __toESM(require("markdown-it")); const vue = __toESM(require("vue")); //#region src/index.ts function useMarkdownIt(defaultValue, options) { const { manual = false, domPurify = true,..._options } = options ?? {}; const value = (0, vue.ref)((0, vue.isRef)(defaultValue) ? (0, vue.toValue)(defaultValue.value) : (0, vue.isReactive)(defaultValue) ? (0, vue.toValue)(defaultValue) : defaultValue); if ((0, vue.isRef)(defaultValue)) (0, vue.watchEffect)(() => { value.value = (0, vue.toValue)(defaultValue.value); }); const html = (0, vue.ref)(""); const domRef = (0, vue.ref)(); const md = (0, markdown_it.default)({ ..._options }); function render(value$1) { const mdValue = md.render(value$1); html.value = domPurify ? dompurify.default.sanitize(mdValue) : mdValue; if (domRef.value) domRef.value.innerHTML = html.value; else { const unWatch = (0, vue.watch)(domRef, (v) => { if (v) { v.innerHTML = html.value; unWatch(); } }); } return html.value; } if (!manual) { render(value.value ?? ""); (0, vue.watch)(value, (v) => { render(v ?? ""); }); } return { value, html, domRef, md, render }; } //#endregion exports.useMarkdownIt = useMarkdownIt;