UNPKG

@mdast2docx/image

Version:

MDAST to DOCX plugin for resolving and embedding images. Supports base64, URLs, and custom resolvers for seamless DOCX image integration.

2 lines (1 loc) 2.41 kB
"use strict";var f=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var I=(n,t)=>{for(var a in t)f(n,a,{get:t[a],enumerable:!0})},C=(n,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of x(t))!S.call(n,e)&&e!==a&&f(n,e,{get:()=>t[e],enumerable:!(r=b(t,e))||r.enumerable});return n};var E=n=>C(f({},"__esModule",{value:!0}),n);var M={};I(M,{handleSvg:()=>H});module.exports=E(M);var P=n=>new Promise((t,a)=>{let r=new Blob([n],{type:"image/svg+xml"}),e=new FileReader;e.onloadend=()=>t(e.result),e.onerror=a,e.readAsDataURL(r)}),$=(n,t)=>new Promise((a,r)=>{let e=document.createElement("div");e.innerHTML=n,e.style="width:100%;height:100%;position:absolute;",t.appendChild(e);let o=e.querySelector("svg");if(!o||o.nodeType!==1)return r(new Error("No or invalid <svg> found"));requestAnimationFrame(()=>{try{let i=o.getBBox(),l=parseFloat(getComputedStyle(o).width)||0,u=parseFloat(getComputedStyle(o).height)||0,s=4,m=i.x-s,g=i.y-s,c=i.width+s*2,d=i.height+s*2,p=l>0?Math.min(c,l):c,w=u>0?Math.min(d,u):d,v=o.cloneNode(!0);v.setAttribute("viewBox",`${m} ${g} ${c} ${d}`),v.setAttribute("width",`${p}`),v.setAttribute("height",`${w}`),v.removeAttribute("style");let y=new XMLSerializer().serializeToString(v);e.remove(),a({svg:y,scale:Math.min(c/l,d/u,1)})}catch(i){e.remove(),r(i)}})}),h,D=n=>(h||(h=document.createElement("div"),h.style=`height:${n.maxH}in;width:${n.maxW}in;position:absolute;left:-2500vw;`,document.body.appendChild(h),n.dpi=parseFloat(getComputedStyle(h).width)/n.maxW),h),H=async(n,t)=>{var r;let a=n.value;try{let e=new Image,o=D(t);o.appendChild(e);let i=/(?:^|\n)\s*gantt\s*/.test((r=n.data)==null?void 0:r.mermaid),l=i?{svg:a,scale:1}:await $(a,o),u=await P(l.svg);e.src=u,await new Promise(w=>e.onload=w),i&&(t.scale*=2);let s=e.width*t.scale,m=e.height*t.scale,g=document.createElement("canvas"),c=g.getContext("2d");if(!c)throw new Error("Canvas context not available");g.width=s,g.height=m,c.drawImage(e,0,0,s,m);let d=g.toDataURL(`image/${t.fallbackImageType}`);e.remove();let p=Math.min(t.maxW*t.dpi/s,t.maxH*t.dpi/m,1)*l.scale;return{type:t.fallbackImageType,data:d,transformation:{width:s*p,height:m*p}}}catch(e){return console.error("Error resolving SVG image: ",e),{type:"png",data:Buffer.from([]),transformation:{width:100,height:100}}}};0&&(module.exports={handleSvg});