0.0.6 โ€ข Published 5 months ago

@mdast2docx/table v0.0.6

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
5 months ago

@m2d/table

test codecov Version Downloads Bundle Size

A plugin that converts Markdown tables into rich, styled Word tables with full alignment, border, and header support.


๐Ÿ“ฆ Installation

npm install @m2d/table
pnpm add @m2d/table
yarn add @m2d/table

๐Ÿš€ Overview

The @m2d/table plugin for mdast2docx renders Markdown tables into Word-compatible tables with customizable layout, alignment, and cell styling using the docx library.

Automatically handles header rows, borders, shading, cell alignments, and padding โ€” all configurable.


โœจ Features

  • Transforms Markdown tables into docx.Table elements
  • Auto-detects column alignment from MDAST (left, center, right)
  • Customizable:
    • Table width and border styles
    • Cell padding and shading
    • Header row formatting
    • Horizontal and vertical alignment
  • Graceful fallback to defaults if MDAST alignment is missing

๐Ÿ› ๏ธ Usage

import { toDocx } from "@m2d/core";
import { tablePlugin } from "@m2d/table";

const plugins = [tablePlugin()];

const buffer = await toDocx(mdastTree, {
  plugins,
});

โš™๏ธ Options

The tablePlugin accepts an optional configuration object:

tablePlugin({
  tableProps: { ... },
  rowProps: { ... },
  cellProps: { ... },
  firstRowProps: { ... },
  firstRowCellProps: { ... },
  alignments: {
    defaultHorizontalAlign: AlignmentType.CENTER,
    defaultVerticalAlign: VerticalAlign.CENTER,
    preferMdData: true,
  },
});

All options override the following sensible defaults:

Default Table Style

PropertyDefault Value
Table Width100% (percentage)
Border StyleSINGLE, size 1
Cell Padding2โ€“4mm margins (top/bottom/left/right)
Header RowBold with shaded background #b79c2f
Vertical AlignmentCENTER
Horizontal AlignmentBased on Markdown or CENTER fallback

๐Ÿงช Example

Markdown Input

| Name  | Age |      City |
| :---: | :-: | --------: |
| Alice | 24  |  New York |
|  Bob  | 30  | San Diego |

Output DOCX

  • The first row is treated as a header, with custom shading.
  • Column alignment is preserved: center, center, right.

๐Ÿ” Internals

  • Leverages docx.Table, docx.TableRow, docx.TableCell, and docx.Paragraph
  • Dynamically maps Markdown alignment via MDAST.align[]
  • Uses @m2d/coreโ€™s block plugin API
  • Prevents re-processing of transformed nodes by setting node.type = ""

โš ๏ธ Limitations

  • Does not support row/column spans
  • MDAST source must conform to GFM tables
  • Table styling is fixed to plugin options; no per-cell customization via Markdown yet

โญ Support Us

If you find this useful:


๐Ÿงพ License

MIT ยฉ Mayank Chaudhari