@janniks/vue3-katex
Version:
Vue 3 plugin for KaTeX
2 lines (1 loc) • 1.88 kB
JavaScript
import e from"katex";import o from"katex/dist/contrib/auto-render.js";import r from"deepmerge";import{toRefs as t,ref as a,inject as n,computed as l,openBlock as i,createBlock as u,resolveDynamicComponent as d,unref as v}from"vue";var s={name:"KatexElement"},p=Object.assign(s,{props:{expression:{type:String,default:"",required:!0},displayMode:{type:Boolean,default:void 0},throwOnError:{type:Boolean,default:void 0},errorColor:{type:String,default:void 0},macros:{type:Object,default:void 0},colorIsTextColor:{type:Boolean,default:void 0},maxSize:{type:Number,default:void 0},maxExpand:{type:Number,default:void 0},allowedProtocols:{type:Array,default:void 0},strict:{type:[Boolean,String,Function],default:void 0}},setup:function(o){var s=t(o),p=s.displayMode,c=s.expression,f=s.throwOnError,m=s.errorColor,x=s.macros,y=s.colorIsTextColor,g=s.maxSize,O=s.maxExpand,E=s.allowedProtocols,b=s.strict,S=a({});S.value=n("$katexOptions");var k=l((function(){return r(S.value,function(e){var o={};for(var r of Object.keys(e))void 0!==e[r]&&(o[r]=e[r]);return o}({displayMode:p.value,throwOnError:f.value,errorColor:m.value,macros:x.value,colorIsTextColor:y.value,maxSize:g.value,maxExpand:O.value,allowedProtocols:E.value,strict:b.value}))})),w=l((function(){return p.value?"div":"span"})),C=l((function(){return e.renderToString(c.value,k.value)}));return function(e,o){return i(),u(d(v(w)),{innerHTML:v(C)},null,8,["innerHTML"])}}});function c(t,a){var n=a&&a.globalOptions||{},l=function(t){return{name:"katex",directive:function(a,n){var l=n.value&&n.value.options||{},i=r(t,l);if(n.arg&&"auto"===n.arg)o(a,i);else{var u=n.value.expression||n.value,d={};"display"===n.arg&&(d.displayMode=!0);var v=r(i,d);e.render(u,a,v)}}}}(n);t.directive(l.name,l.directive),t.component(p.name,p),t.provide("$katexOptions",n)}p.__file="src/components/KatexElement.vue";export{c as default};