UNPKG

vue-showdown

Version:

Use showdown as a vue component

10 lines (9 loc) 1.8 kB
/*! * vue-showdown - Use showdown as a vue component * * @version v4.2.0 * @link https://vue-showdown.js.org * @license MIT * @copyright 2018-2023 meteorlxy */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("showdown"),require("vue")):"function"==typeof define&&define.amd?define(["exports","showdown","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueShowdown={},e.showdown,e.Vue)}(this,(function(e,t,o){"use strict";const n=o.defineComponent({name:"VueShowdown",props:{markdown:{type:String,required:!1,default:null},tag:{type:String,required:!1,default:"div"},flavor:{type:String,required:!1,default:null},options:{type:Object,required:!1,default:()=>({})},extensions:{type:Array,required:!1,default:null},vueTemplate:{type:Boolean,required:!1,default:!1},vueTemplateComponents:{type:Object,required:!1,default:()=>({})},vueTemplateData:{type:Object,required:!1,default:()=>({})}},setup(e,{slots:n}){const u=o.computed((()=>{const o=new t.Converter({extensions:e.extensions??void 0});return null!==e.flavor&&o.setFlavor(e.flavor),Object.entries(e.options).forEach((([e,t])=>{o.setOption(e,t)})),o})),r=o.computed((()=>{if(null!==e.markdown)return e.markdown;const t=n.default?.()[0];return t?.type===o.Text?t.children:""})),l=o.computed((()=>u.value.makeHtml(r.value)));return()=>e.vueTemplate?o.h({components:e.vueTemplateComponents,setup:()=>e.vueTemplateData,template:`<${e.tag}>${l.value}</${e.tag}>`}):o.h(e.tag,{innerHTML:l.value})}}),u={install(e,{flavor:o=null,options:u={}}={}){null!==o&&t.setFlavor(o),Object.entries(u).forEach((([e,o])=>{t.setOption(e,o)})),e.component("VueShowdown",n)}};"undefined"!=typeof window&&(window.VueShowdown=n,window.VueShowdownPlugin=u),e.showdown=t,e.VueShowdown=n,e.VueShowdownPlugin=u}));