{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/preview/supports/md-preview/index.vue"],"sourcesContent":["<script lang='ts' setup>\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} from '../../utils/utils'\n\nconst props = withDefaults(\n    defineProps<PreviewProps>(),\n    {\n      url: () => null,\n      file: () => null,\n    },\n)\n\nconst markdownHtml = ref()\n\nwatch(\n    () => props.file,\n    (val) => {\n      if (val) {\n        const md = markdownit({\n          // Enable HTML tags in source\n          html: true,\n\n          // Use '/' to close single tags (<br />).\n          // This is only for full CommonMark compatibility.\n          xhtmlOut: false,\n\n          // Convert '\\n' in paragraphs into <br>\n          breaks: false,\n\n          // CSS language prefix for fenced blocks. Can be\n          // useful for external highlighters.\n          langPrefix: 'language-',\n\n          // Autoconvert URL-like text to links\n          linkify: true,\n\n          // Enable some language-neutral replacement + quotes beautification\n          // For the full list of replacements, see https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs\n          typographer: true,\n\n          // Double + single quotes replacement pairs, when typographer enabled,\n          // and smartquotes on. Could be either a String or an Array.\n          //\n          // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n          // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n          quotes: '“”‘’',\n\n          // Highlighter function. Should return escaped HTML,\n          // or '' if the source string is not changed and should be escaped externally.\n          // If result starts with <pre... internal wrapper is skipped.\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\n            return `<pre><code class=\"hljs\">${md!.utils!.escapeHtml(str)}</code></pre>`\n          },\n        }).use(markdownItFootnote).use(markdownItContainer)\n        getFileRenderByFile(val).then((render) => {\n          markdownHtml.value = md.render(render)\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</style>\n"],"names":["props","__props","markdownHtml","ref","watch","val","md","markdownit","str","lang","hljs","markdownItFootnote","markdownItContainer","getFileRenderByFile","render"],"mappings":";;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAQRC,IAAeC;AAErB,WAAAC;AAAA,MACI,MAAMJ,EAAM;AAAA,MACZ,CAACK,MAAQ;AACP,YAAIA,GAAK;AACP,gBAAMC,IAAKC,EAAW;AAAA;AAAA,YAEpB,MAAM;AAAA;AAAA;AAAA,YAIN,UAAU;AAAA;AAAA,YAGV,QAAQ;AAAA;AAAA;AAAA,YAIR,YAAY;AAAA;AAAA,YAGZ,SAAS;AAAA;AAAA;AAAA,YAIT,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOb,QAAQ;AAAA;AAAA;AAAA;AAAA,YAKR,UAAUC,GAAKC,GAAM;AACnB,kBAAIA,KAAQC,EAAK,YAAYD,CAAI;AAC3B,oBAAA;AACK,yBAAA,2BACHC,EAAK,UAAUF,GAAK,EAAC,UAAUC,GAAM,gBAAgB,GAAA,CAAK,EAAE,KAChE;AAAA,wBACW;AAAA,gBACb;AAGF,qBAAO,2BAA2BH,EAAI,MAAO,WAAWE,CAAG,CAAC;AAAA,YAC9D;AAAA,UACD,CAAA,EAAE,IAAIG,CAAkB,EAAE,IAAIC,CAAmB;AAClD,UAAAC,EAAoBR,CAAG,EAAE,KAAK,CAACS,MAAW;AAC3B,YAAAZ,EAAA,QAAQI,EAAG,OAAOQ,CAAM;AAAA,UAAA,CACtC;AAAA,QACH;AAAA,MACF;AAAA,MACA,EAAC,WAAW,GAAI;AAAA,IAAA;;;;;"}