@md2docx/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.32 kB
JavaScript
import{BorderStyle as I,ShadingType as C,WidthType as O,AlignmentType as E,VerticalAlignTable 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:(l,t,z,H,T)=>{var a;if(t.type!=="table")return[];let{Table:b,TableRow:P,TableCell:g,Paragraph:c}=l,{tableProps:f,firstRowProps:u,firstRowCellProps:m,rowProps:w,cellProps:y,alignments:o}={...V,...s},n=(a=t.align)==null?void 0:a.map(i=>{switch(i){case"left":return l.AlignmentType.LEFT;case"right":return l.AlignmentType.RIGHT;case"center":return l.AlignmentType.CENTER;default:return}}),d=(i,p)=>new P({...w,...p===0?u:{},children:i.children.map((A,h)=>new g({verticalAlign:o.defaultVerticalAlign,...y,...p===0?m:{},children:[new c({children:T(A),alignment:o.preferMdData?n==null?void 0:n[h]:o.defaultHorizontalAlign})]}))}),R=t.children.map(d);return t.type="",[new b({...f,rows:R})]}});export{V as defaultTableOptions,N as tablePlugin};