{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/preview/supports/md-preview/index.vue"],"sourcesContent":["<script lang='ts' setup>\nimport {ref, watch} from 'vue'\nimport markdownit from 'markdown-it'\nimport markdownItFootnote from 'markdown-it-footnote'\nimport markdownItContainer from 'markdown-it-container'\nimport hljs from 'highlight.js'\nimport type {PreviewProps} from '../../preview.interface'\nimport {getFileRenderByFile, getFileRenderByUrl} from '../../utils/utils'\n\nconst props = withDefaults(\n  defineProps<PreviewProps>(),\n  {\n    url: () => null,\n    file: () => null,\n  },\n)\n\nconst emit = defineEmits<{\n  rendered: []\n  error: [error: Error]\n}>()\n\nconst markdownHtml = ref()\n\nfunction createMarkdownRenderer() {\n  const md = markdownit({\n    html: true,\n    xhtmlOut: false,\n    breaks: false,\n    langPrefix: 'language-',\n    linkify: true,\n    typographer: true,\n    quotes: '\\u201C\\u201D\\u2018\\u2019',\n    highlight(str, lang) {\n      if (lang && hljs.getLanguage(lang)) {\n        try {\n          return `<pre><code class=\"hljs\">${\n            hljs.highlight(str, {language: lang, ignoreIllegals: true}).value\n          }</code></pre>`\n        } catch (__) {\n        }\n      }\n      // Use md.utils.escapeHtml instead of this.utils.escapeHtml.\n      return `<pre><code class=\"hljs\">${md.utils.escapeHtml(str)}</code></pre>`\n    },\n  })\n  return md.use(markdownItFootnote).use(markdownItContainer)\n}\n\nfunction renderMarkdown(content: string | ArrayBuffer): void {\n  const md = createMarkdownRenderer()\n  markdownHtml.value = md.render(content as string)\n  emit('rendered')\n}\n\nwatch(\n  () => props.file,\n  (file) => {\n    if (file) {\n      getFileRenderByFile(file).then((render) => {\n        renderMarkdown(render)\n      }).catch((e: Error) => {\n        emit('error', e)\n      })\n    }\n  },\n  {immediate: true},\n)\n\nwatch(\n  () => props.url,\n  (url) => {\n    if (url && !props.file) {\n      getFileRenderByUrl(url).then((render) => {\n        renderMarkdown(render)\n      }).catch((e: Error) => {\n        emit('error', e)\n      })\n    }\n  },\n  {immediate: true},\n)\n</script>\n\n<template>\n  <div class=\"md-preview hljs\">\n    <div v-html=\"markdownHtml\"/>\n  </div>\n</template>\n\n<style scoped lang='scss'>\n@import 'highlight.js/styles/github-dark-dimmed.css';\n@import './index.css';\n\n.md-preview {\n  min-height: 100vh;\n  padding: 24px 48px;\n  background-color: #22272e;\n  color: #adbac7;\n  overflow: auto;\n}\n</style>"],"names":["props","__props","emit","__emit","markdownHtml","ref","createMarkdownRenderer","md","markdownit","str","lang","hljs","markdownItFootnote","markdownItContainer","renderMarkdown","content","watch","file","getFileRenderByFile","render","url","getFileRenderByUrl","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2"],"mappings":";;;;;;;;;;;;;;;AASA,UAAMA,IAAQC,GAQRC,IAAOC,GAKPC,IAAeC,EAAA;AAErB,aAASC,IAAyB;AAChC,YAAMC,IAAKC,EAAW;AAAA,QACpB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,UAAUC,GAAKC,GAAM;AACnB,cAAIA,KAAQC,EAAK,YAAYD,CAAI;AAC/B,gBAAI;AACF,qBAAO,2BACLC,EAAK,UAAUF,GAAK,EAAC,UAAUC,GAAM,gBAAgB,GAAA,CAAK,EAAE,KAC9D;AAAA,YACF,QAAa;AAAA,YACb;AAGF,iBAAO,2BAA2BH,EAAG,MAAM,WAAWE,CAAG,CAAC;AAAA,QAC5D;AAAA,MAAA,CACD;AACD,aAAOF,EAAG,IAAIK,CAAkB,EAAE,IAAIC,CAAmB;AAAA,IAC3D;AAEA,aAASC,EAAeC,GAAqC;AAC3D,YAAMR,IAAKD,EAAA;AACX,MAAAF,EAAa,QAAQG,EAAG,OAAOQ,CAAiB,GAChDb,EAAK,UAAU;AAAA,IACjB;AAEA,WAAAc;AAAA,MACE,MAAMhB,EAAM;AAAA,MACZ,CAACiB,MAAS;AACR,QAAIA,KACFC,EAAoBD,CAAI,EAAE,KAAK,CAACE,MAAW;AACzC,UAAAL,EAAeK,CAAM;AAAA,QACvB,CAAC,EAAE,MAAM,CAAC,MAAa;AACrB,UAAAjB,EAAK,SAAS,CAAC;AAAA,QACjB,CAAC;AAAA,MAEL;AAAA,MACA,EAAC,WAAW,GAAA;AAAA,IAAI,GAGlBc;AAAA,MACE,MAAMhB,EAAM;AAAA,MACZ,CAACoB,MAAQ;AACP,QAAIA,KAAO,CAACpB,EAAM,QAChBqB,EAAmBD,CAAG,EAAE,KAAK,CAACD,MAAW;AACvC,UAAAL,EAAeK,CAAM;AAAA,QACvB,CAAC,EAAE,MAAM,CAAC,MAAa;AACrB,UAAAjB,EAAK,SAAS,CAAC;AAAA,QACjB,CAAC;AAAA,MAEL;AAAA,MACA,EAAC,WAAW,GAAA;AAAA,IAAI,cAKhBoB,EAAA,GAAAC,EAEM,OAFNC,GAEM;AAAA,MADJC,EAA4B,OAAA,EAAvB,WAAQrB,EAAA,SAAY,MAAA,GAAAsB,CAAA;AAAA,IAAA;;;"}