markstream-vue
Version:
Vue 3 Markdown renderer optimized for large docs: progressive Mermaid, streaming diff code blocks, and fast real-time preview.
2 lines (1 loc) • 2.35 kB
JavaScript
;var g=(f,a,r)=>new Promise((m,l)=>{var u=t=>{try{c(r.next(t))}catch(_){l(_)}},h=t=>{try{c(r.throw(t))}catch(_){l(_)}},c=t=>t.done?m(t.value):Promise.resolve(t.value).then(u,h);c((r=r.apply(f,a)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),d=require("./exports-BD7Y_TjZ.cjs"),w={key:0,class:"math-loading-overlay"},x=e.defineComponent({__name:"MathBlockNode",props:{node:{}},setup(f){const a=f;let r=null;const m=e.ref(null),l=e.ref(null);let u=!1,h=0,c=!1,t=null;const _=d.useViewportPriority();let o=null;const s=e.ref(!0);function R(){return g(this,null,function*(){if(!a.node.content||!l.value||c)return;if(!u)try{!o&&m.value&&(o=_(m.value)),yield o==null?void 0:o.whenVisible}catch(n){}t&&(t.abort(),t=null);const i=++h,v=new AbortController;t=v,d.renderKaTeXWithBackpressure(a.node.content,!0,{timeout:3e3,waitTimeout:2e3,maxRetries:1,signal:v.signal}).then(n=>{c||i!==h||l.value&&(l.value.innerHTML=n,u=!0,s.value=!1)}).catch(n=>g(null,null,function*(){if(c||i!==h||!l.value)return;const k=(n==null?void 0:n.code)||(n==null?void 0:n.name),T=k==="WORKER_INIT_ERROR"||(n==null?void 0:n.fallbackToRenderer),B=k===d.WORKER_BUSY_CODE||k==="WORKER_TIMEOUT";if((T||B)&&(r||(r=yield d.getKatex()),r)){try{const E=r.renderToString(a.node.content,{throwOnError:a.node.loading,displayMode:!0});l.value.innerHTML=E,u=!0,s.value=!1,d.setKaTeXCache(a.node.content,!0,E)}catch(E){}return}u||(s.value=!0),a.node.loading||(s.value=!1,l.value.textContent=a.node.raw)}))})}return e.watch(()=>a.node.content,()=>{R()}),e.onMounted(()=>{R()}),e.onBeforeUnmount(()=>{var i;c=!0,t&&(t.abort(),t=null),(i=o==null?void 0:o.destroy)==null||i.call(o),o=null}),(i,v)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerEl",ref:m,class:"math-block text-center overflow-x-auto relative min-h-[40px]"},[e.createVNode(e.Transition,{name:"math-fade"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",w,[...v[0]||(v[0]=[e.createElementVNode("div",{class:"math-loading-spinner"},null,-1)])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",{ref_key:"mathBlockElement",ref:l,class:e.normalizeClass({"math-rendering":s.value})},null,2)],512))}}),p=d._export_sfc(x,[["__scopeId","data-v-2e076ab9"]]);p.install=f=>{f.component(p.__name,p)};exports.default=p;