@mdast2docx/table
Version:
Plugin to convert Markdown tables (MDAST) to DOCX with support for rich formatting and seamless integration into mdast2docx.
2 lines (1 loc) • 1.37 kB
JavaScript
import{BorderStyle as I,ShadingType as C,WidthType as O,AlignmentType as E,VerticalAlign as D,convertMillimetersToTwip as r}from"docx";var e={style:I.SINGLE,color:"auto",size:1},V={tableProps:{width:{size:100,type:O.PERCENTAGE},margins:{top:r(2),right:r(4),bottom:r(2),left:r(4)},borders:{top:e,right:e,bottom:e,left:e,insideHorizontal:e,insideVertical:e}},rowProps:{},cellProps:{},firstRowProps:{tableHeader:!0},firstRowCellProps:{shading:{type:C.SOLID,fill:"b79c2f"}},alignments:{defaultVerticalAlign:D.CENTER,defaultHorizontalAlign:E.CENTER,preferMdData:!0}},N=s=>({block:async(l,t,z,H,P)=>{var a;if(t.type!=="table")return[];let{Table:c,TableRow:g,TableCell:T,Paragraph:b}=l,{tableProps:f,firstRowProps:u,firstRowCellProps:w,rowProps:y,cellProps:m,alignments:o}={...V,...s},i=(a=t.align)==null?void 0:a.map(n=>{switch(n){case"left":return l.AlignmentType.LEFT;case"right":return l.AlignmentType.RIGHT;case"center":return l.AlignmentType.CENTER;default:return}}),d=async(n,p)=>new g({...y,...p===0?u:{},children:await Promise.all(n.children.map(async(A,h)=>new T({verticalAlign:o.defaultVerticalAlign,...m,...p===0?w:{},children:[new b({children:await P(A),alignment:o.preferMdData?i==null?void 0:i[h]:o.defaultHorizontalAlign})]})))}),R=await Promise.all(t.children.map(d));return t.type="",[new c({...f,rows:R})]}});export{V as defaultTableOptions,N as tablePlugin};