UNPKG

remark-docx

Version:

remark plugin to compile markdown to docx (Microsoft Word, Office Open XML).

2 lines 7.39 kB
const e=require("./chunk-CMqjfN_6.cjs"),t=require("./utils-D_YAYv4R.cjs");let n=require("docx"),r=require("mdast-util-definitions"),i=require("deepmerge");i=e.t(i,1);var a=`bullet`,o=`ordered`,s=`task-complete`,c=`task-incomplete`,l=`Hyperlink`,u=e=>({hanging:400,left:400*(e+1)}),ee=()=>{let e=new Map,t=new Map;return{id:t=>{let n=e.get(t);return n??e.set(t,n=e.size+1),n},set:(e,n)=>{t.set(e,n)},toConfig:()=>t.entries().reduce((e,[t,n])=>(e[t]={children:n},e),{})}},te=()=>{let e=1,t=[];return{createId:()=>{let n=`${o}-${e++}`;return t.push(n),n},getIds:()=>t}},d=(e,t)=>e.reduceRight((e,t)=>{for(let[n,r]of Object.entries(t)){let t=e[n];e[n]=t?(e,n)=>r(e,n)||t(e,n):r}return e},t),f=e=>e.map(({format:e,text:t},r)=>({level:r,format:n.LevelFormat[e],text:t,alignment:n.AlignmentType.LEFT,style:{paragraph:{indent:u(r)}}})),p=(e,t)=>{if(t.quote!=null&&(e.indent=u(t.quote+1)),t.list){let{level:n,meta:r}=t.list;r.type===`task`?e.numbering={reference:r.checked?s:c,level:n}:r.type===`ordered`?e.numbering={reference:r.reference,level:n}:e.numbering={reference:a,level:n}}return t.rtl&&(e.bidirectional=!0),new n.Paragraph(e)},m=async(e,{plugins:o=[],title:l,subject:u,creator:p,keywords:m,description:k,styles:ue,size:A,margin:j,orientation:M,columns:N,spacing:P,direction:F,background:I,thematicBreak:L=`page`,orderedListFormat:R}={})=>{let z=(0,r.definitions)(e),B=te(),V=ee(),H=new Map,de={root:e,images:H,definition:z},fe=d(await Promise.all(o.map(e=>e(de))),{paragraph:h,heading:ne,thematicBreak:re,blockquote:ie,list:ae,listItem:oe,table:g,tableRow:D,tableCell:D,html:O,code:le,definition:D,footnoteDefinition:T,text:_,emphasis:v,strong:y,delete:se,inlineCode:ce,break:b,link:x,linkReference:S,image:C,imageReference:w,footnoteReference:E,math:O,inlineMath:O}),U=(e,n)=>{let r=fe[e.type];if(!r)return t.n(`${e.type} node is not supported without plugins.`),null;let i=r(e,n);return i?Array.isArray(i)?i:[i]:null},{WIDTH:W,HEIGHT:G}=n.sectionPageSizeDefaults;A&&(A.width!=null&&(W=A.width),A.height!=null&&(G=A.height));let{TOP:K,LEFT:q,BOTTOM:J,RIGHT:Y}=n.sectionMarginDefaults;j&&(j.top!=null&&(K=j.top),j.left!=null&&(q=j.left),j.bottom!=null&&(J=j.bottom),j.right!=null&&(Y=j.right));let pe={render(e,t){let n=[];for(let r of e){let e=U(r,t??this);e&&n.push(...e)}return n},width:W-q-Y,style:{},thematicBreak:L,rtl:F===`rtl`,definition:z,images:H,footnote:V,orderedId:B.createId},X=[[]];for(let t of e.children){let e=U(t,pe);e&&(e.length?X[X.length-1].push(...e):X.push([]))}let me=f(R??[{text:`%1.`,format:`DECIMAL`},{text:`%2.`,format:`DECIMAL`},{text:`%3.`,format:`DECIMAL`},{text:`%4.`,format:`DECIMAL`},{text:`%5.`,format:`DECIMAL`},{text:`%6.`,format:`DECIMAL`}]),he={column:N?{count:N}:void 0,page:{textDirection:F===`vertical`?`tbRl`:void 0,size:{width:W,height:G,orientation:M},margin:{top:K,left:q,bottom:J,right:Y}}},Z=new n.Document({title:l,subject:u,creator:p,keywords:m,description:k,styles:(0,i.default)({default:{document:{paragraph:{spacing:P?{after:P}:void 0}}}},ue||{}),background:I,sections:X.filter(e=>e.length).map(e=>({properties:he,children:e})),footnotes:V.toConfig(),numbering:{config:[{reference:a,levels:f([{text:`●`,format:`BULLET`},{text:`○`,format:`BULLET`},{text:`■`,format:`BULLET`},{text:`●`,format:`BULLET`},{text:`○`,format:`BULLET`},{text:`■`,format:`BULLET`}])},...B.getIds().map(e=>({reference:e,levels:me})),{reference:s,levels:f([{text:`☑`,format:`BULLET`},{text:`☑`,format:`BULLET`},{text:`☑`,format:`BULLET`},{text:`☑`,format:`BULLET`},{text:`☑`,format:`BULLET`},{text:`☑`,format:`BULLET`}])},{reference:c,levels:f([{text:`☐`,format:`BULLET`},{text:`☐`,format:`BULLET`},{text:`☐`,format:`BULLET`},{text:`☐`,format:`BULLET`},{text:`☐`,format:`BULLET`},{text:`☐`,format:`BULLET`}])}]}}),Q=`default-bullet-numbering`,$=Z.numbering;return $.abstractNumberingMap.delete(Q),$.concreteNumberingMap.delete(Q),n.Packer.toArrayBuffer(Z)},h=({children:e},t)=>p({children:t.render(e)},t),ne=({children:e,depth:t},r)=>{let i;switch(t){case 1:i=`TITLE`;break;case 2:i=`HEADING_1`;break;case 3:i=`HEADING_2`;break;case 4:i=`HEADING_3`;break;case 5:i=`HEADING_4`;break;case 6:i=`HEADING_5`;break}return p({heading:n.HeadingLevel[i],outlineLevel:t-1,children:r.render(e)},r)},re=(e,t)=>{switch(t.thematicBreak){case`page`:return new n.Paragraph({children:[new n.PageBreak]});case`section`:return[];case`line`:return new n.Paragraph({thematicBreak:!0})}},ie=({children:e},t)=>t.render(e,{...t,quote:t.quote==null?0:t.quote+1}),ae=({children:e,ordered:t},n)=>{let r=n.list,i;return i=t?{type:`ordered`,reference:r&&r.meta.type===`ordered`?r.meta.reference:n.orderedId()}:{type:`bullet`},n.render(e,{...n,list:{level:r?r.level+1:0,meta:i}})},oe=({children:e,checked:t},n)=>{let r=n.list;return r&&t!=null&&(r={level:r.level,meta:{type:`task`,checked:t}}),n.render(e,{...n,list:r})},g=({children:e,align:t},r)=>{let i=t?.map(e=>{switch(e){case`left`:return`LEFT`;case`right`:return`RIGHT`;case`center`:return`CENTER`;default:return`LEFT`}}),a=e[0].children.length,o=r.width/a,s={columnWidths:Array.from({length:a}).map(()=>o),rows:e.map(e=>new n.TableRow({children:e.children.map((e,t)=>new n.TableCell({width:{size:o,type:`dxa`},children:[new n.Paragraph({alignment:n.AlignmentType[i?.[t]??`LEFT`],children:r.render(e.children,{...r,rtl:void 0})})]}))}))};return r.rtl&&(s.visuallyRightToLeft=!0),new n.Table(s)},_=({value:e},{style:t,rtl:r})=>{let i={text:e,bold:t.bold,italics:t.italic,strike:t.strike};return t.inlineCode&&(i.highlight=`lightGray`),t.link&&(i.style=l),r&&(i.rightToLeft=!0),new n.TextRun(i)},v=({children:e},t)=>t.render(e,{...t,style:{...t.style,italic:!0}}),y=({children:e},t)=>t.render(e,{...t,style:{...t.style,bold:!0}}),se=({children:e},t)=>t.render(e,{...t,style:{...t.style,strike:!0}}),ce=({value:e},t)=>_({type:`text`,value:e},{...t,style:{...t.style,inlineCode:!0}}),b=()=>new n.TextRun({text:``,break:1}),x=({children:e,url:t},r)=>t.startsWith(`#`)?r.render(e):new n.ExternalHyperlink({link:t,children:r.render(e,{...r,style:{...r.style,link:!0}})}),S=({children:e,identifier:t},n)=>{let r=n.definition(t);return r==null?n.render(e):x({type:`link`,children:e,url:r.url},n)},C=(e,t)=>{let r=t.images.get(e.url);if(!r)return null;let{width:i,height:a}=r,o=t.width/1440*96;if(i>o){let e=o/i;i*=e,a*=e}let s=e.alt||e.title?{name:``,description:e.alt??void 0,title:e.title??void 0}:void 0;if(r.type===`svg`){let{type:e,data:t,fallback:o}=r;return new n.ImageRun({type:e,data:t,transformation:{width:i,height:a},fallback:{type:`png`,data:o},altText:s})}let{type:c,data:l}=r;return new n.ImageRun({type:c,data:l,transformation:{width:i,height:a},altText:s})},w=(e,t)=>{let n=t.definition(e.identifier);return n==null?null:C({type:`image`,url:n.url,alt:e.alt,title:n.title},t)},T=({children:e,identifier:t},r)=>{let i=r.render(e).filter(e=>e instanceof n.Paragraph);return r.footnote.set(r.footnote.id(t),i),null},E=({identifier:e},t)=>new n.FootnoteReferenceRun(t.footnote.id(e)),D=()=>null,O=(e,n)=>(t.n(`${e.type} node is not supported without plugins, falling back to text.`),_({type:`text`,value:e.value},n)),le=(e,r)=>(t.n(`${e.type} node is not supported without plugins, falling back to text.`),p({children:e.value.split(/\r?\n/).map((e,t)=>new n.TextRun({text:e,break:t===0?void 0:1}))},r)),k=function(e){this.compiler=t=>m(t,e)};module.exports=k; //# sourceMappingURL=index.cjs.map