remark-docx
Version:
remark plugin to compile markdown to docx (Microsoft Word, Office Open XML).
2 lines • 1.64 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../utils-D_YAYv4R.cjs");let t=require("unist-util-visit"),n=require("image-size");var r=async e=>(await fetch(e)).arrayBuffer(),i=async({buffer:e,width:t,height:n})=>{let r=new Blob([e],{type:`image/svg+xml`}),i=URL.createObjectURL(r);try{let e=new Image;e.src=i,await e.decode();let r=window.devicePixelRatio,a=document.createElement(`canvas`),o=t*r,s=n*r;return a.width=o,a.height=s,a.getContext(`2d`).drawImage(e,0,0,o,s),new Promise(e=>{a.toBlob(t=>{t.arrayBuffer().then(e)},`image/png`)})}finally{URL.revokeObjectURL(i)}},a=({load:a=r,fallbackSvg:o=i}={})=>{let s=new Map;return async({root:r,definition:i,images:c})=>{let l=[];if((0,t.visit)(r,`image`,e=>{l.push(e)}),(0,t.visit)(r,`imageReference`,e=>{let t=i(e.identifier);t&&l.push(t)}),l.length!==0){let t=new Map;l.forEach(({url:r})=>{if(!c.has(r)){if(s.has(r)){c.set(r,s.get(r));return}t.has(r)||t.set(r,(async()=>{let t;try{t=await a(r)}catch(t){e.n(`Failed to load image: ${r} ${t}`);return}let{width:i,height:l,type:u}=(0,n.imageSize)(new Uint8Array(t));if(!e.t(u)){e.n(`Not supported image type: ${u}`);return}if(u===`svg`)try{let e=await o({buffer:t,width:i,height:l}),n={type:u,width:i,height:l,data:t,fallback:e};c.set(r,n),s.set(r,n)}catch(t){e.n(`Failed to create fallback image: ${r} ${t}`);return}else{let e={type:u,width:i,height:l,data:t};c.set(r,e),s.set(r,e)}})())}}),await Promise.all(t.values())}if(s.size>100){let e=s.size-100;for(let t of s.keys())if(s.delete(t),e--,e<=0)break}return{}}};exports.browserSvgToPng=i,exports.imagePlugin=a;
//# sourceMappingURL=index.cjs.map