remark-docx 0.3.21 → 0.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/index.cjs +3 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/mdast-util-to-docx.d.ts +7 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- Uses [docx](https://github.com/dolanmiu/docx) for compilation.
|
|
8
8
|
- Works in any environment (e.g. browser, Node.js).
|
|
9
9
|
- Provides reasonable default style and also tunable enough (WIP).
|
|
10
|
-
- Supports RTL.
|
|
10
|
+
- Supports advanced layouts (RTL, vertical, 2 columns).
|
|
11
11
|
- Has own plugin system. You can fully customize markdown to Word transformation.
|
|
12
12
|
|
|
13
13
|
### Supported [mdast](https://github.com/syntax-tree/mdast) nodes
|
package/lib/index.cjs
CHANGED
|
@@ -114,7 +114,7 @@ const docxParagraph = (options, ctx) => {
|
|
|
114
114
|
}
|
|
115
115
|
return new docx.Paragraph(options);
|
|
116
116
|
};
|
|
117
|
-
const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywords, description, styles, size, margin, orientation, spacing, direction, background, thematicBreak = "page", orderedListFormat, } = {}) => {
|
|
117
|
+
const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywords, description, styles, size, margin, orientation, columns, spacing, direction, background, thematicBreak = "page", orderedListFormat, } = {}) => {
|
|
118
118
|
const definition = mdastUtilDefinitions.definitions(node);
|
|
119
119
|
const ordered = createOrderedListRegistry();
|
|
120
120
|
const footnote = createFootnoteRegistry();
|
|
@@ -230,7 +230,9 @@ const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywor
|
|
|
230
230
|
{ text: "%6.", format: "DECIMAL" },
|
|
231
231
|
]);
|
|
232
232
|
const sectionProperties = {
|
|
233
|
+
column: columns ? { count: columns } : undefined,
|
|
233
234
|
page: {
|
|
235
|
+
textDirection: direction === "vertical" ? "tbRl" : undefined,
|
|
234
236
|
size: { width: pageWidth, height: pageHeight, orientation },
|
|
235
237
|
margin: {
|
|
236
238
|
top: marginTop,
|
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/mdast-util-to-docx.ts","../src/plugin.ts"],"sourcesContent":["import {\n Packer,\n Document,\n Paragraph,\n Table,\n TableRow,\n TableCell,\n TextRun,\n ExternalHyperlink,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n type ILevelsOptions,\n FootnoteReferenceRun,\n type IPropertiesOptions,\n sectionPageSizeDefaults,\n sectionMarginDefaults,\n type IRunOptions,\n type IParagraphOptions,\n PageBreak,\n type ISectionPropertiesOptions,\n type IIndentAttributesProperties,\n type IStylesOptions,\n type ITableOptions,\n} from \"docx\";\nimport type * as mdast from \"mdast\";\nimport { warnOnce } from \"./utils\";\nimport { definitions } from \"mdast-util-definitions\";\nimport deepmerge from \"deepmerge\";\nimport type {\n Context,\n DocxChild,\n DocxContent,\n FootnoteRegistry,\n ListContext,\n NodeBuilder,\n NodeBuilders,\n RemarkDocxPlugin,\n ThematicBreakType,\n Writeable,\n} from \"./types\";\n\nconst BULLET_LIST_REF = \"bullet\";\nconst ORDERED_LIST_REF = \"ordered\";\nconst COMPLETE_TASK_LIST_REF = \"task-complete\";\nconst INCOMPLETE_TASK_LIST_REF = \"task-incomplete\";\nconst HYPERLINK_STYLE_ID = \"Hyperlink\";\n\nconst calcIndent = (i: number): IIndentAttributesProperties => {\n const INDENT_UNIT = 10 * 40;\n return { hanging: INDENT_UNIT, left: INDENT_UNIT * (i + 1) };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n const idToInternalId = new Map<string, number>();\n const defs = new Map<number, Paragraph[]>();\n\n return {\n id: (id) => {\n let internalId = idToInternalId.get(id);\n if (internalId == null) {\n idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n }\n return internalId;\n },\n set: (id, def) => {\n defs.set(id, def);\n },\n toConfig: () => {\n return defs.entries().reduce(\n (acc, [key, def]) => {\n acc[key] = { children: def };\n return acc;\n },\n {} as {\n [key: string]: { children: Paragraph[] };\n },\n );\n },\n };\n};\n\ntype ListFormat = {\n format: keyof typeof LevelFormat;\n text: string;\n};\n\ntype OrderedListRegistry = {\n createId: () => string;\n getIds: () => string[];\n};\nconst createOrderedListRegistry = (): OrderedListRegistry => {\n let counter = 1;\n\n const ids: string[] = [];\n\n return {\n createId: () => {\n const id = `${ORDERED_LIST_REF}-${counter++}`;\n ids.push(id);\n return id;\n },\n getIds: () => {\n return ids;\n },\n };\n};\n\nconst composeBuilders = (\n pluginsBuilders: readonly NodeBuilders[],\n defaultBuilders: NodeBuilders,\n): NodeBuilders => {\n return pluginsBuilders.reduceRight<NodeBuilders>((acc, p) => {\n type Key = keyof typeof p;\n for (const [k, cur] of Object.entries(p)) {\n const prev = acc[k as Key];\n acc[k as Key] = (\n prev\n ? (n, c) => {\n const r = cur(n as any, c);\n if (r) {\n return r;\n }\n return prev(n as any, c);\n }\n : cur\n ) as NodeBuilder<any>;\n }\n return acc;\n }, defaultBuilders);\n};\n\nconst buildLevels = (formats: readonly ListFormat[]): ILevelsOptions[] => {\n return formats.map(({ format, text }, i) => {\n return {\n level: i,\n format: LevelFormat[format],\n text: text,\n alignment: AlignmentType.LEFT,\n style: {\n paragraph: {\n indent: calcIndent(i),\n },\n },\n };\n });\n};\n\nconst docxParagraph = (\n options: Writeable<IParagraphOptions>,\n ctx: Context,\n): Paragraph => {\n if (ctx.quote != null) {\n options.indent = calcIndent(ctx.quote + 1);\n }\n\n if (ctx.list) {\n const { level, meta } = ctx.list;\n if (meta.type === \"task\") {\n options.numbering = {\n reference: meta.checked\n ? COMPLETE_TASK_LIST_REF\n : INCOMPLETE_TASK_LIST_REF,\n level,\n };\n } else if (meta.type === \"ordered\") {\n options.numbering = {\n reference: meta.reference,\n level,\n };\n } else {\n options.numbering = {\n reference: BULLET_LIST_REF,\n level,\n };\n }\n }\n\n if (ctx.rtl) {\n options.bidirectional = true;\n }\n\n return new Paragraph(options);\n};\n\nexport interface DocxOptions extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"styles\"\n | \"background\"\n> {\n /**\n * Page size defined in twip (1 twip == 1/1440 inch).\n * @default A4 ({@link sectionPageSizeDefaults})\n */\n size?: { width?: number; height?: number };\n /**\n * Page margin defined in twip (1 twip == 1/1440 inch).\n * @default 1 inch ({@link sectionMarginDefaults})\n */\n margin?: { top?: number; left?: number; bottom?: number; right?: number };\n /**\n * Page orientation.\n * @default \"portrait\"\n */\n orientation?: \"portrait\" | \"landscape\";\n /**\n * Spacing after Paragraphs in twip (1 twip == 1/1440 inch).\n * @default 0\n */\n spacing?: number;\n /**\n * Direction of texts.\n * @default \"ltr\"\n */\n direction?: \"ltr\" | \"rtl\";\n /**\n * An option to override the text format of ordered list.\n * See https://docx.js.org/#/usage/numbering?id=level-options for more details.\n */\n orderedListFormat?: ListFormat[];\n /**\n * An option to select how thematicBreak works.\n *\n * - \"page\": Page Break\n * - \"section\": Section Break\n * - \"line\": Horizontal line\n * @default \"page\"\n */\n thematicBreak?: ThematicBreakType;\n /**\n * Plugins to customize how mdast nodes are compiled.\n */\n plugins?: RemarkDocxPlugin[];\n}\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n plugins = [],\n title,\n subject,\n creator,\n keywords,\n description,\n styles,\n size,\n margin,\n orientation,\n spacing,\n direction,\n background,\n thematicBreak = \"page\",\n orderedListFormat,\n }: DocxOptions = {},\n): Promise<ArrayBuffer> => {\n const definition = definitions(node);\n\n const ordered = createOrderedListRegistry();\n const footnote = createFootnoteRegistry();\n\n const pluginCtx = { root: node, definition };\n\n const builders = composeBuilders(\n await Promise.all(plugins.map((p) => p(pluginCtx))),\n {\n paragraph: buildParagraph,\n heading: buildHeading,\n thematicBreak: buildThematicBreak,\n blockquote: buildBlockquote,\n list: buildList,\n listItem: buildListItem,\n table: buildTable,\n tableRow: noop,\n tableCell: noop,\n html: fallbackText,\n code: fallbackText,\n definition: noop,\n footnoteDefinition: buildFootnoteDefinition,\n text: buildText,\n emphasis: buildEmphasis,\n strong: buildStrong,\n delete: buildDelete,\n inlineCode: buildInlineCode,\n break: buildBreak,\n link: buildLink,\n linkReference: buildLinkReference,\n // image: warnImage,\n // imageReference: warnImage,\n footnoteReference: buildFootnoteReference,\n math: fallbackText,\n inlineMath: fallbackText,\n },\n );\n\n const renderNode = (\n node: mdast.RootContent,\n c: Context,\n ): DocxContent[] | null => {\n const builder = builders[node.type];\n if (!builder) {\n warnOnce(`${node.type} node is not supported without plugins.`);\n return null;\n }\n const r = builder(node as any, c);\n if (r) {\n if (Array.isArray(r)) {\n return r;\n } else {\n return [r];\n }\n }\n return null;\n };\n\n let { WIDTH: pageWidth, HEIGHT: pageHeight } = sectionPageSizeDefaults;\n if (size) {\n if (size.width != null) {\n pageWidth = size.width;\n }\n if (size.height != null) {\n pageHeight = size.height;\n }\n }\n let {\n TOP: marginTop,\n LEFT: marginLeft,\n BOTTOM: marginBottom,\n RIGHT: marginRight,\n } = sectionMarginDefaults;\n if (margin) {\n if (margin.top != null) {\n marginTop = margin.top;\n }\n if (margin.left != null) {\n marginLeft = margin.left;\n }\n if (margin.bottom != null) {\n marginBottom = margin.bottom;\n }\n if (margin.right != null) {\n marginRight = margin.right;\n }\n }\n\n const ctx: Context = {\n render(nodes, c) {\n const results: DocxContent[] = [];\n for (const node of nodes) {\n const r = renderNode(node, c ?? this);\n if (r) {\n results.push(...r);\n }\n }\n return results;\n },\n width: pageWidth - marginLeft - marginRight,\n deco: {},\n thematicBreak,\n rtl: direction === \"rtl\",\n definition: definition,\n footnote,\n orderedId: ordered.createId,\n };\n\n const sections: DocxContent[][] = [[]];\n for (const n of node.children) {\n const r = renderNode(n, ctx);\n if (r) {\n if (!r.length) {\n // thematicBreak\n sections.push([]);\n } else {\n const lastSection = sections[sections.length - 1]!;\n lastSection.push(...r);\n }\n }\n }\n\n const orderedLevels = buildLevels(\n orderedListFormat ?? [\n { text: \"%1.\", format: \"DECIMAL\" },\n { text: \"%2.\", format: \"DECIMAL\" },\n { text: \"%3.\", format: \"DECIMAL\" },\n { text: \"%4.\", format: \"DECIMAL\" },\n { text: \"%5.\", format: \"DECIMAL\" },\n { text: \"%6.\", format: \"DECIMAL\" },\n ],\n );\n\n const sectionProperties: ISectionPropertiesOptions = {\n page: {\n size: { width: pageWidth, height: pageHeight, orientation },\n margin: {\n top: marginTop,\n left: marginLeft,\n bottom: marginBottom,\n right: marginRight,\n },\n },\n };\n\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n styles: deepmerge<IStylesOptions>(\n {\n default: {\n document: {\n paragraph: {\n spacing: spacing ? { after: spacing } : undefined,\n },\n },\n },\n },\n styles || {},\n ),\n background,\n sections: sections\n .filter((s) => s.length)\n .map((s) => ({\n properties: sectionProperties,\n children: s as DocxChild[],\n })),\n footnotes: footnote.toConfig(),\n numbering: {\n config: [\n {\n reference: BULLET_LIST_REF,\n levels: buildLevels([\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n ]),\n },\n ...ordered.getIds().map((ref) => ({\n reference: ref,\n levels: orderedLevels,\n })),\n {\n reference: COMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n ]),\n },\n {\n reference: INCOMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n ]),\n },\n ],\n },\n });\n\n // HACK: docx.js has no option to remove default numbering definitions from .docx. So do it here for now.\n // https://github.com/dolanmiu/docx/blob/master/src/file/numbering/numbering.ts\n const defaultBulletKey = \"default-bullet-numbering\";\n const _numbering = (doc as any).numbering;\n _numbering.abstractNumberingMap.delete(defaultBulletKey);\n _numbering.concreteNumberingMap.delete(defaultBulletKey);\n\n return Packer.toArrayBuffer(doc);\n};\n\nconst buildParagraph: NodeBuilder<\"paragraph\"> = ({ children }, ctx) => {\n return docxParagraph(\n {\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildHeading: NodeBuilder<\"heading\"> = ({ children, depth }, ctx) => {\n let level: keyof typeof HeadingLevel;\n switch (depth) {\n case 1:\n level = \"TITLE\";\n break;\n case 2:\n level = \"HEADING_1\";\n break;\n case 3:\n level = \"HEADING_2\";\n break;\n case 4:\n level = \"HEADING_3\";\n break;\n case 5:\n level = \"HEADING_4\";\n break;\n case 6:\n level = \"HEADING_5\";\n break;\n }\n return docxParagraph(\n {\n heading: HeadingLevel[level],\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildThematicBreak: NodeBuilder<\"thematicBreak\"> = (_, ctx) => {\n switch (ctx.thematicBreak) {\n case \"page\": {\n return new Paragraph({ children: [new PageBreak()] });\n }\n case \"section\": {\n // Returning empty array at toplevel means section insertion.\n return [];\n }\n case \"line\": {\n return new Paragraph({ thematicBreak: true });\n }\n }\n};\n\nconst buildBlockquote: NodeBuilder<\"blockquote\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n quote: ctx.quote == null ? 0 : ctx.quote + 1,\n });\n};\n\nconst buildList: NodeBuilder<\"list\"> = ({ children, ordered }, ctx) => {\n const parentList = ctx.list;\n\n let meta: ListContext[\"meta\"];\n if (ordered) {\n meta = {\n type: \"ordered\",\n reference:\n parentList && parentList.meta.type === \"ordered\"\n ? parentList.meta.reference\n : ctx.orderedId(),\n };\n } else {\n meta = { type: \"bullet\" };\n }\n\n return ctx.render(children, {\n ...ctx,\n list: {\n level: !parentList ? 0 : parentList.level + 1,\n meta,\n },\n });\n};\n\nconst buildListItem: NodeBuilder<\"listItem\"> = ({ children, checked }, ctx) => {\n let list = ctx.list;\n if (list) {\n // listItem must be the child of list\n if (checked != null) {\n list = {\n level: list.level,\n meta: {\n type: \"task\",\n checked,\n },\n };\n }\n }\n return ctx.render(children, {\n ...ctx,\n list,\n });\n};\n\nconst buildTable: NodeBuilder<\"table\"> = ({ children, align }, ctx) => {\n const textAlign = align?.map((a): keyof typeof AlignmentType => {\n switch (a) {\n case \"left\":\n return \"LEFT\";\n case \"right\":\n return \"RIGHT\";\n case \"center\":\n return \"CENTER\";\n default:\n return \"LEFT\";\n }\n });\n\n const columnLength = children[0]!.children.length;\n const columnWidth = ctx.width / columnLength;\n\n const options: Writeable<ITableOptions> = {\n columnWidths: Array.from({ length: columnLength }).map(() => columnWidth),\n rows: children.map((r) => {\n return new TableRow({\n children: r.children.map((c, i) => {\n return new TableCell({\n width: { size: columnWidth, type: \"dxa\" },\n children: [\n new Paragraph({\n alignment: AlignmentType[textAlign?.[i] ?? \"LEFT\"],\n children: ctx.render(c.children, {\n ...ctx,\n // https://github.com/dolanmiu/docx/blob/master/demo/22-right-to-left-text.ts\n rtl: undefined,\n }),\n }),\n ],\n });\n }),\n });\n }),\n };\n\n if (ctx.rtl) {\n options.visuallyRightToLeft = true;\n }\n\n return new Table(options);\n};\n\nconst buildText: NodeBuilder<\"text\"> = ({ value }, { deco, rtl }) => {\n const options: Writeable<IRunOptions> = {\n text: value,\n bold: deco.bold,\n italics: deco.italic,\n strike: deco.strike,\n };\n if (deco.inlineCode) {\n options.highlight = \"lightGray\";\n }\n if (deco.link) {\n // https://docx.js.org/#/usage/hyperlinks?id=styling-hyperlinks\n options.style = HYPERLINK_STYLE_ID;\n }\n if (rtl) {\n options.rightToLeft = true;\n }\n\n return new TextRun(options);\n};\n\nconst buildEmphasis: NodeBuilder<\"emphasis\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, italic: true },\n });\n};\n\nconst buildStrong: NodeBuilder<\"strong\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, bold: true },\n });\n};\n\nconst buildDelete: NodeBuilder<\"delete\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, strike: true },\n });\n};\n\nconst buildInlineCode: NodeBuilder<\"inlineCode\"> = ({ value }, ctx) => {\n return buildText(\n { type: \"text\", value },\n {\n ...ctx,\n deco: { ...ctx.deco, inlineCode: true },\n },\n );\n};\n\nconst buildBreak: NodeBuilder<\"break\"> = () => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink: NodeBuilder<\"link\"> = ({ children, url }, ctx) => {\n if (url.startsWith(\"#\")) {\n // TODO support anchor link\n return ctx.render(children);\n }\n return new ExternalHyperlink({\n link: url,\n children: ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, link: true },\n }),\n });\n};\n\nconst buildLinkReference: NodeBuilder<\"linkReference\"> = (\n { children, identifier },\n ctx,\n) => {\n const def = ctx.definition(identifier);\n if (def == null) {\n return ctx.render(children);\n }\n return buildLink({ type: \"link\", children, url: def.url }, ctx);\n};\n\nconst buildFootnoteDefinition: NodeBuilder<\"footnoteDefinition\"> = (\n { children, identifier },\n ctx,\n) => {\n const contents = ctx.render(children).filter((c) => c instanceof Paragraph);\n ctx.footnote.set(ctx.footnote.id(identifier), contents);\n return null;\n};\n\nconst buildFootnoteReference: NodeBuilder<\"footnoteReference\"> = (\n { identifier },\n ctx,\n) => {\n return new FootnoteReferenceRun(ctx.footnote.id(identifier));\n};\n\nconst noop = () => {\n return null;\n};\n\nconst fallbackText = (node: { type: string; value: string }, ctx: Context) => {\n warnOnce(\n `${node.type} node is not supported without plugins, falling back to text.`,\n );\n return buildText({ type: \"text\", value: node.value }, ctx);\n};\n","import type { Plugin } from \"unified\";\nimport type { Root } from \"mdast\";\nimport { mdastToDocx, type DocxOptions } from \"./mdast-util-to-docx\";\n\nexport type { DocxOptions };\n\ndeclare module \"unified\" {\n interface CompileResultMap {\n docx: Promise<ArrayBuffer>;\n }\n}\n\nconst plugin: Plugin<[DocxOptions?], Root, Promise<ArrayBuffer>> = function (\n opts,\n) {\n this.compiler = (node) => {\n return mdastToDocx(node as Root, opts);\n };\n};\nexport default plugin;\n"],"names":["LevelFormat","AlignmentType","Paragraph","definitions","warnOnce","sectionPageSizeDefaults","sectionMarginDefaults","Document","Packer","HeadingLevel","PageBreak","TableRow","TableCell","Table","TextRun","ExternalHyperlink","FootnoteReferenceRun"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/mdast-util-to-docx.ts","../src/plugin.ts"],"sourcesContent":["import {\n Packer,\n Document,\n Paragraph,\n Table,\n TableRow,\n TableCell,\n TextRun,\n ExternalHyperlink,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n type ILevelsOptions,\n FootnoteReferenceRun,\n type IPropertiesOptions,\n sectionPageSizeDefaults,\n sectionMarginDefaults,\n type IRunOptions,\n type IParagraphOptions,\n PageBreak,\n type ISectionPropertiesOptions,\n type IIndentAttributesProperties,\n type IStylesOptions,\n type ITableOptions,\n} from \"docx\";\nimport type * as mdast from \"mdast\";\nimport { warnOnce } from \"./utils\";\nimport { definitions } from \"mdast-util-definitions\";\nimport deepmerge from \"deepmerge\";\nimport type {\n Context,\n DocxChild,\n DocxContent,\n FootnoteRegistry,\n ListContext,\n NodeBuilder,\n NodeBuilders,\n RemarkDocxPlugin,\n ThematicBreakType,\n Writeable,\n} from \"./types\";\n\nconst BULLET_LIST_REF = \"bullet\";\nconst ORDERED_LIST_REF = \"ordered\";\nconst COMPLETE_TASK_LIST_REF = \"task-complete\";\nconst INCOMPLETE_TASK_LIST_REF = \"task-incomplete\";\nconst HYPERLINK_STYLE_ID = \"Hyperlink\";\n\nconst calcIndent = (i: number): IIndentAttributesProperties => {\n const INDENT_UNIT = 10 * 40;\n return { hanging: INDENT_UNIT, left: INDENT_UNIT * (i + 1) };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n const idToInternalId = new Map<string, number>();\n const defs = new Map<number, Paragraph[]>();\n\n return {\n id: (id) => {\n let internalId = idToInternalId.get(id);\n if (internalId == null) {\n idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n }\n return internalId;\n },\n set: (id, def) => {\n defs.set(id, def);\n },\n toConfig: () => {\n return defs.entries().reduce(\n (acc, [key, def]) => {\n acc[key] = { children: def };\n return acc;\n },\n {} as {\n [key: string]: { children: Paragraph[] };\n },\n );\n },\n };\n};\n\ntype ListFormat = {\n format: keyof typeof LevelFormat;\n text: string;\n};\n\ntype OrderedListRegistry = {\n createId: () => string;\n getIds: () => string[];\n};\nconst createOrderedListRegistry = (): OrderedListRegistry => {\n let counter = 1;\n\n const ids: string[] = [];\n\n return {\n createId: () => {\n const id = `${ORDERED_LIST_REF}-${counter++}`;\n ids.push(id);\n return id;\n },\n getIds: () => {\n return ids;\n },\n };\n};\n\nconst composeBuilders = (\n pluginsBuilders: readonly NodeBuilders[],\n defaultBuilders: NodeBuilders,\n): NodeBuilders => {\n return pluginsBuilders.reduceRight<NodeBuilders>((acc, p) => {\n type Key = keyof typeof p;\n for (const [k, cur] of Object.entries(p)) {\n const prev = acc[k as Key];\n acc[k as Key] = (\n prev\n ? (n, c) => {\n const r = cur(n as any, c);\n if (r) {\n return r;\n }\n return prev(n as any, c);\n }\n : cur\n ) as NodeBuilder<any>;\n }\n return acc;\n }, defaultBuilders);\n};\n\nconst buildLevels = (formats: readonly ListFormat[]): ILevelsOptions[] => {\n return formats.map(({ format, text }, i) => {\n return {\n level: i,\n format: LevelFormat[format],\n text: text,\n alignment: AlignmentType.LEFT,\n style: {\n paragraph: {\n indent: calcIndent(i),\n },\n },\n };\n });\n};\n\nconst docxParagraph = (\n options: Writeable<IParagraphOptions>,\n ctx: Context,\n): Paragraph => {\n if (ctx.quote != null) {\n options.indent = calcIndent(ctx.quote + 1);\n }\n\n if (ctx.list) {\n const { level, meta } = ctx.list;\n if (meta.type === \"task\") {\n options.numbering = {\n reference: meta.checked\n ? COMPLETE_TASK_LIST_REF\n : INCOMPLETE_TASK_LIST_REF,\n level,\n };\n } else if (meta.type === \"ordered\") {\n options.numbering = {\n reference: meta.reference,\n level,\n };\n } else {\n options.numbering = {\n reference: BULLET_LIST_REF,\n level,\n };\n }\n }\n\n if (ctx.rtl) {\n options.bidirectional = true;\n }\n\n return new Paragraph(options);\n};\n\nexport interface DocxOptions extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"styles\"\n | \"background\"\n> {\n /**\n * Page size defined in twip (1 twip == 1/1440 inch).\n * @default A4 ({@link sectionPageSizeDefaults})\n */\n size?: { width?: number; height?: number };\n /**\n * Page margin defined in twip (1 twip == 1/1440 inch).\n * @default 1 inch ({@link sectionMarginDefaults})\n */\n margin?: { top?: number; left?: number; bottom?: number; right?: number };\n /**\n * Page orientation.\n * @default \"portrait\"\n */\n orientation?: \"portrait\" | \"landscape\";\n /**\n * Number of page columns.\n * @default 1\n */\n columns?: number;\n /**\n * Spacing after Paragraphs in twip (1 twip == 1/1440 inch).\n * @default 0\n */\n spacing?: number;\n /**\n * Direction of texts.\n * @default \"ltr\"\n */\n direction?: \"ltr\" | \"rtl\" | \"vertical\";\n /**\n * An option to override the text format of ordered list.\n * See https://docx.js.org/#/usage/numbering?id=level-options for more details.\n */\n orderedListFormat?: ListFormat[];\n /**\n * An option to select how thematicBreak works.\n *\n * - \"page\": Page Break\n * - \"section\": Section Break\n * - \"line\": Horizontal line\n * @default \"page\"\n */\n thematicBreak?: ThematicBreakType;\n /**\n * Plugins to customize how mdast nodes are compiled.\n */\n plugins?: RemarkDocxPlugin[];\n}\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n plugins = [],\n title,\n subject,\n creator,\n keywords,\n description,\n styles,\n size,\n margin,\n orientation,\n columns,\n spacing,\n direction,\n background,\n thematicBreak = \"page\",\n orderedListFormat,\n }: DocxOptions = {},\n): Promise<ArrayBuffer> => {\n const definition = definitions(node);\n\n const ordered = createOrderedListRegistry();\n const footnote = createFootnoteRegistry();\n\n const pluginCtx = { root: node, definition };\n\n const builders = composeBuilders(\n await Promise.all(plugins.map((p) => p(pluginCtx))),\n {\n paragraph: buildParagraph,\n heading: buildHeading,\n thematicBreak: buildThematicBreak,\n blockquote: buildBlockquote,\n list: buildList,\n listItem: buildListItem,\n table: buildTable,\n tableRow: noop,\n tableCell: noop,\n html: fallbackText,\n code: fallbackText,\n definition: noop,\n footnoteDefinition: buildFootnoteDefinition,\n text: buildText,\n emphasis: buildEmphasis,\n strong: buildStrong,\n delete: buildDelete,\n inlineCode: buildInlineCode,\n break: buildBreak,\n link: buildLink,\n linkReference: buildLinkReference,\n // image: warnImage,\n // imageReference: warnImage,\n footnoteReference: buildFootnoteReference,\n math: fallbackText,\n inlineMath: fallbackText,\n },\n );\n\n const renderNode = (\n node: mdast.RootContent,\n c: Context,\n ): DocxContent[] | null => {\n const builder = builders[node.type];\n if (!builder) {\n warnOnce(`${node.type} node is not supported without plugins.`);\n return null;\n }\n const r = builder(node as any, c);\n if (r) {\n if (Array.isArray(r)) {\n return r;\n } else {\n return [r];\n }\n }\n return null;\n };\n\n let { WIDTH: pageWidth, HEIGHT: pageHeight } = sectionPageSizeDefaults;\n if (size) {\n if (size.width != null) {\n pageWidth = size.width;\n }\n if (size.height != null) {\n pageHeight = size.height;\n }\n }\n let {\n TOP: marginTop,\n LEFT: marginLeft,\n BOTTOM: marginBottom,\n RIGHT: marginRight,\n } = sectionMarginDefaults;\n if (margin) {\n if (margin.top != null) {\n marginTop = margin.top;\n }\n if (margin.left != null) {\n marginLeft = margin.left;\n }\n if (margin.bottom != null) {\n marginBottom = margin.bottom;\n }\n if (margin.right != null) {\n marginRight = margin.right;\n }\n }\n\n const ctx: Context = {\n render(nodes, c) {\n const results: DocxContent[] = [];\n for (const node of nodes) {\n const r = renderNode(node, c ?? this);\n if (r) {\n results.push(...r);\n }\n }\n return results;\n },\n width: pageWidth - marginLeft - marginRight,\n deco: {},\n thematicBreak,\n rtl: direction === \"rtl\",\n definition: definition,\n footnote,\n orderedId: ordered.createId,\n };\n\n const sections: DocxContent[][] = [[]];\n for (const n of node.children) {\n const r = renderNode(n, ctx);\n if (r) {\n if (!r.length) {\n // thematicBreak\n sections.push([]);\n } else {\n const lastSection = sections[sections.length - 1]!;\n lastSection.push(...r);\n }\n }\n }\n\n const orderedLevels = buildLevels(\n orderedListFormat ?? [\n { text: \"%1.\", format: \"DECIMAL\" },\n { text: \"%2.\", format: \"DECIMAL\" },\n { text: \"%3.\", format: \"DECIMAL\" },\n { text: \"%4.\", format: \"DECIMAL\" },\n { text: \"%5.\", format: \"DECIMAL\" },\n { text: \"%6.\", format: \"DECIMAL\" },\n ],\n );\n\n const sectionProperties: ISectionPropertiesOptions = {\n column: columns ? { count: columns } : undefined,\n page: {\n textDirection: direction === \"vertical\" ? \"tbRl\" : undefined,\n size: { width: pageWidth, height: pageHeight, orientation },\n margin: {\n top: marginTop,\n left: marginLeft,\n bottom: marginBottom,\n right: marginRight,\n },\n },\n };\n\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n styles: deepmerge<IStylesOptions>(\n {\n default: {\n document: {\n paragraph: {\n spacing: spacing ? { after: spacing } : undefined,\n },\n },\n },\n },\n styles || {},\n ),\n background,\n sections: sections\n .filter((s) => s.length)\n .map((s) => ({\n properties: sectionProperties,\n children: s as DocxChild[],\n })),\n footnotes: footnote.toConfig(),\n numbering: {\n config: [\n {\n reference: BULLET_LIST_REF,\n levels: buildLevels([\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n ]),\n },\n ...ordered.getIds().map((ref) => ({\n reference: ref,\n levels: orderedLevels,\n })),\n {\n reference: COMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n ]),\n },\n {\n reference: INCOMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n ]),\n },\n ],\n },\n });\n\n // HACK: docx.js has no option to remove default numbering definitions from .docx. So do it here for now.\n // https://github.com/dolanmiu/docx/blob/master/src/file/numbering/numbering.ts\n const defaultBulletKey = \"default-bullet-numbering\";\n const _numbering = (doc as any).numbering;\n _numbering.abstractNumberingMap.delete(defaultBulletKey);\n _numbering.concreteNumberingMap.delete(defaultBulletKey);\n\n return Packer.toArrayBuffer(doc);\n};\n\nconst buildParagraph: NodeBuilder<\"paragraph\"> = ({ children }, ctx) => {\n return docxParagraph(\n {\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildHeading: NodeBuilder<\"heading\"> = ({ children, depth }, ctx) => {\n let level: keyof typeof HeadingLevel;\n switch (depth) {\n case 1:\n level = \"TITLE\";\n break;\n case 2:\n level = \"HEADING_1\";\n break;\n case 3:\n level = \"HEADING_2\";\n break;\n case 4:\n level = \"HEADING_3\";\n break;\n case 5:\n level = \"HEADING_4\";\n break;\n case 6:\n level = \"HEADING_5\";\n break;\n }\n return docxParagraph(\n {\n heading: HeadingLevel[level],\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildThematicBreak: NodeBuilder<\"thematicBreak\"> = (_, ctx) => {\n switch (ctx.thematicBreak) {\n case \"page\": {\n return new Paragraph({ children: [new PageBreak()] });\n }\n case \"section\": {\n // Returning empty array at toplevel means section insertion.\n return [];\n }\n case \"line\": {\n return new Paragraph({ thematicBreak: true });\n }\n }\n};\n\nconst buildBlockquote: NodeBuilder<\"blockquote\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n quote: ctx.quote == null ? 0 : ctx.quote + 1,\n });\n};\n\nconst buildList: NodeBuilder<\"list\"> = ({ children, ordered }, ctx) => {\n const parentList = ctx.list;\n\n let meta: ListContext[\"meta\"];\n if (ordered) {\n meta = {\n type: \"ordered\",\n reference:\n parentList && parentList.meta.type === \"ordered\"\n ? parentList.meta.reference\n : ctx.orderedId(),\n };\n } else {\n meta = { type: \"bullet\" };\n }\n\n return ctx.render(children, {\n ...ctx,\n list: {\n level: !parentList ? 0 : parentList.level + 1,\n meta,\n },\n });\n};\n\nconst buildListItem: NodeBuilder<\"listItem\"> = ({ children, checked }, ctx) => {\n let list = ctx.list;\n if (list) {\n // listItem must be the child of list\n if (checked != null) {\n list = {\n level: list.level,\n meta: {\n type: \"task\",\n checked,\n },\n };\n }\n }\n return ctx.render(children, {\n ...ctx,\n list,\n });\n};\n\nconst buildTable: NodeBuilder<\"table\"> = ({ children, align }, ctx) => {\n const textAlign = align?.map((a): keyof typeof AlignmentType => {\n switch (a) {\n case \"left\":\n return \"LEFT\";\n case \"right\":\n return \"RIGHT\";\n case \"center\":\n return \"CENTER\";\n default:\n return \"LEFT\";\n }\n });\n\n const columnLength = children[0]!.children.length;\n const columnWidth = ctx.width / columnLength;\n\n const options: Writeable<ITableOptions> = {\n columnWidths: Array.from({ length: columnLength }).map(() => columnWidth),\n rows: children.map((r) => {\n return new TableRow({\n children: r.children.map((c, i) => {\n return new TableCell({\n width: { size: columnWidth, type: \"dxa\" },\n children: [\n new Paragraph({\n alignment: AlignmentType[textAlign?.[i] ?? \"LEFT\"],\n children: ctx.render(c.children, {\n ...ctx,\n // https://github.com/dolanmiu/docx/blob/master/demo/22-right-to-left-text.ts\n rtl: undefined,\n }),\n }),\n ],\n });\n }),\n });\n }),\n };\n\n if (ctx.rtl) {\n options.visuallyRightToLeft = true;\n }\n\n return new Table(options);\n};\n\nconst buildText: NodeBuilder<\"text\"> = ({ value }, { deco, rtl }) => {\n const options: Writeable<IRunOptions> = {\n text: value,\n bold: deco.bold,\n italics: deco.italic,\n strike: deco.strike,\n };\n if (deco.inlineCode) {\n options.highlight = \"lightGray\";\n }\n if (deco.link) {\n // https://docx.js.org/#/usage/hyperlinks?id=styling-hyperlinks\n options.style = HYPERLINK_STYLE_ID;\n }\n if (rtl) {\n options.rightToLeft = true;\n }\n\n return new TextRun(options);\n};\n\nconst buildEmphasis: NodeBuilder<\"emphasis\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, italic: true },\n });\n};\n\nconst buildStrong: NodeBuilder<\"strong\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, bold: true },\n });\n};\n\nconst buildDelete: NodeBuilder<\"delete\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, strike: true },\n });\n};\n\nconst buildInlineCode: NodeBuilder<\"inlineCode\"> = ({ value }, ctx) => {\n return buildText(\n { type: \"text\", value },\n {\n ...ctx,\n deco: { ...ctx.deco, inlineCode: true },\n },\n );\n};\n\nconst buildBreak: NodeBuilder<\"break\"> = () => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink: NodeBuilder<\"link\"> = ({ children, url }, ctx) => {\n if (url.startsWith(\"#\")) {\n // TODO support anchor link\n return ctx.render(children);\n }\n return new ExternalHyperlink({\n link: url,\n children: ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, link: true },\n }),\n });\n};\n\nconst buildLinkReference: NodeBuilder<\"linkReference\"> = (\n { children, identifier },\n ctx,\n) => {\n const def = ctx.definition(identifier);\n if (def == null) {\n return ctx.render(children);\n }\n return buildLink({ type: \"link\", children, url: def.url }, ctx);\n};\n\nconst buildFootnoteDefinition: NodeBuilder<\"footnoteDefinition\"> = (\n { children, identifier },\n ctx,\n) => {\n const contents = ctx.render(children).filter((c) => c instanceof Paragraph);\n ctx.footnote.set(ctx.footnote.id(identifier), contents);\n return null;\n};\n\nconst buildFootnoteReference: NodeBuilder<\"footnoteReference\"> = (\n { identifier },\n ctx,\n) => {\n return new FootnoteReferenceRun(ctx.footnote.id(identifier));\n};\n\nconst noop = () => {\n return null;\n};\n\nconst fallbackText = (node: { type: string; value: string }, ctx: Context) => {\n warnOnce(\n `${node.type} node is not supported without plugins, falling back to text.`,\n );\n return buildText({ type: \"text\", value: node.value }, ctx);\n};\n","import type { Plugin } from \"unified\";\nimport type { Root } from \"mdast\";\nimport { mdastToDocx, type DocxOptions } from \"./mdast-util-to-docx\";\n\nexport type { DocxOptions };\n\ndeclare module \"unified\" {\n interface CompileResultMap {\n docx: Promise<ArrayBuffer>;\n }\n}\n\nconst plugin: Plugin<[DocxOptions?], Root, Promise<ArrayBuffer>> = function (\n opts,\n) {\n this.compiler = (node) => {\n return mdastToDocx(node as Root, opts);\n };\n};\nexport default plugin;\n"],"names":["LevelFormat","AlignmentType","Paragraph","definitions","warnOnce","sectionPageSizeDefaults","sectionMarginDefaults","Document","Packer","HeadingLevel","PageBreak","TableRow","TableCell","Table","TextRun","ExternalHyperlink","FootnoteReferenceRun"],"mappings":";;;;;;;AA0CA,MAAM,eAAe,GAAG,QAAQ;AAChC,MAAM,gBAAgB,GAAG,SAAS;AAClC,MAAM,sBAAsB,GAAG,eAAe;AAC9C,MAAM,wBAAwB,GAAG,iBAAiB;AAClD,MAAM,kBAAkB,GAAG,WAAW;AAEtC,MAAM,UAAU,GAAG,CAAC,CAAS,KAAiC;AAC5D,IAAA,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE;AAC3B,IAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9D,CAAC;AAED,MAAM,sBAAsB,GAAG,MAAuB;AACpD,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB;AAChD,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB;IAE3C,OAAO;AACL,QAAA,EAAE,EAAE,CAAC,EAAE,KAAI;YACT,IAAI,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE;YAChE;AACA,YAAA,OAAO,UAAU;QACnB,CAAC;AACD,QAAA,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,KAAI;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC;QACnB,CAAC;QACD,QAAQ,EAAE,MAAK;AACb,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC5B,gBAAA,OAAO,GAAG;YACZ,CAAC,EACD,EAEC,CACF;QACH,CAAC;KACF;AACH,CAAC;AAWD,MAAM,yBAAyB,GAAG,MAA0B;IAC1D,IAAI,OAAO,GAAG,CAAC;IAEf,MAAM,GAAG,GAAa,EAAE;IAExB,OAAO;QACL,QAAQ,EAAE,MAAK;YACb,MAAM,EAAE,GAAG,CAAA,EAAG,gBAAgB,IAAI,OAAO,EAAE,EAAE;AAC7C,YAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACZ,YAAA,OAAO,EAAE;QACX,CAAC;QACD,MAAM,EAAE,MAAK;AACX,YAAA,OAAO,GAAG;QACZ,CAAC;KACF;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,eAAwC,EACxC,eAA6B,KACb;IAChB,OAAO,eAAe,CAAC,WAAW,CAAe,CAAC,GAAG,EAAE,CAAC,KAAI;AAE1D,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAQ,CAAC;AAC1B,YAAA,GAAG,CAAC,CAAQ,CAAC,IACX;AACE,kBAAE,CAAC,CAAC,EAAE,CAAC,KAAI;oBACP,MAAM,CAAC,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAC,CAAC;oBAC1B,IAAI,CAAC,EAAE;AACL,wBAAA,OAAO,CAAC;oBACV;AACA,oBAAA,OAAO,IAAI,CAAC,CAAQ,EAAE,CAAC,CAAC;gBAC1B;kBACA,GAAG,CACY;QACvB;AACA,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,eAAe,CAAC;AACrB,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,OAA8B,KAAsB;AACvE,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAI;QACzC,OAAO;AACL,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAEA,gBAAW,CAAC,MAAM,CAAC;AAC3B,YAAA,IAAI,EAAE,IAAI;YACV,SAAS,EAAEC,kBAAa,CAAC,IAAI;AAC7B,YAAA,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE;AACT,oBAAA,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACtB,iBAAA;AACF,aAAA;SACF;AACH,IAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,CACpB,OAAqC,EACrC,GAAY,KACC;AACb,IAAA,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE;QACrB,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5C;AAEA,IAAA,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI;AAChC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,OAAO,CAAC,SAAS,GAAG;gBAClB,SAAS,EAAE,IAAI,CAAC;AACd,sBAAE;AACF,sBAAE,wBAAwB;gBAC5B,KAAK;aACN;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAClC,OAAO,CAAC,SAAS,GAAG;gBAClB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK;aACN;QACH;aAAO;YACL,OAAO,CAAC,SAAS,GAAG;AAClB,gBAAA,SAAS,EAAE,eAAe;gBAC1B,KAAK;aACN;QACH;IACF;AAEA,IAAA,IAAI,GAAG,CAAC,GAAG,EAAE;AACX,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI;IAC9B;AAEA,IAAA,OAAO,IAAIC,cAAS,CAAC,OAAO,CAAC;AAC/B,CAAC;AA8DM,MAAM,WAAW,GAAG,OACzB,IAAgB,EAChB,EACE,OAAO,GAAG,EAAE,EACZ,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAW,EACX,MAAM,EACN,IAAI,EACJ,MAAM,EACN,WAAW,EACX,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,GAAG,MAAM,EACtB,iBAAiB,GAAA,GACF,EAAE,KACK;AACxB,IAAA,MAAM,UAAU,GAAGC,gCAAW,CAAC,IAAI,CAAC;AAEpC,IAAA,MAAM,OAAO,GAAG,yBAAyB,EAAE;AAC3C,IAAA,MAAM,QAAQ,GAAG,sBAAsB,EAAE;IAEzC,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAE5C,MAAM,QAAQ,GAAG,eAAe,CAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACnD;AACE,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,aAAa,EAAE,kBAAkB;AACjC,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,kBAAkB,EAAE,uBAAuB;AAC3C,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE,kBAAkB;;;AAGjC,QAAA,iBAAiB,EAAE,sBAAsB;AACzC,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,UAAU,EAAE,YAAY;AACzB,KAAA,CACF;AAED,IAAA,MAAM,UAAU,GAAG,CACjB,IAAuB,EACvB,CAAU,KACc;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAAC,cAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,uCAAA,CAAyC,CAAC;AAC/D,YAAA,OAAO,IAAI;QACb;QACA,MAAM,CAAC,GAAG,OAAO,CAAC,IAAW,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE;AACL,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,gBAAA,OAAO,CAAC;YACV;iBAAO;gBACL,OAAO,CAAC,CAAC,CAAC;YACZ;QACF;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAGC,4BAAuB;IACtE,IAAI,IAAI,EAAE;AACR,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,SAAS,GAAG,IAAI,CAAC,KAAK;QACxB;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACvB,YAAA,UAAU,GAAG,IAAI,CAAC,MAAM;QAC1B;IACF;AACA,IAAA,IAAI,EACF,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,GACnB,GAAGC,0BAAqB;IACzB,IAAI,MAAM,EAAE;AACV,QAAA,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,SAAS,GAAG,MAAM,CAAC,GAAG;QACxB;AACA,QAAA,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;AACvB,YAAA,UAAU,GAAG,MAAM,CAAC,IAAI;QAC1B;AACA,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE;AACzB,YAAA,YAAY,GAAG,MAAM,CAAC,MAAM;QAC9B;AACA,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;AACxB,YAAA,WAAW,GAAG,MAAM,CAAC,KAAK;QAC5B;IACF;AAEA,IAAA,MAAM,GAAG,GAAY;QACnB,MAAM,CAAC,KAAK,EAAE,CAAC,EAAA;YACb,MAAM,OAAO,GAAkB,EAAE;AACjC,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gBAAA,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,MAAA,GAAD,CAAC,GAAI,IAAI,CAAC;gBACrC,IAAI,CAAC,EAAE;AACL,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB;YACF;AACA,YAAA,OAAO,OAAO;QAChB,CAAC;AACD,QAAA,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW;AAC3C,QAAA,IAAI,EAAE,EAAE;QACR,aAAa;QACb,GAAG,EAAE,SAAS,KAAK,KAAK;AACxB,QAAA,UAAU,EAAE,UAAU;QACtB,QAAQ;QACR,SAAS,EAAE,OAAO,CAAC,QAAQ;KAC5B;AAED,IAAA,MAAM,QAAQ,GAAoB,CAAC,EAAE,CAAC;AACtC,IAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;QAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5B,IAAI,CAAC,EAAE;AACL,YAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;;AAEb,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB;iBAAO;gBACL,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE;AAClD,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB;QACF;IACF;IAEA,MAAM,aAAa,GAAG,WAAW,CAC/B,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,MAAA,GAAjB,iBAAiB,GAAI;AACnB,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AACnC,KAAA,CACF;AAED,IAAA,MAAM,iBAAiB,GAA8B;AACnD,QAAA,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS;AAChD,QAAA,IAAI,EAAE;YACJ,aAAa,EAAE,SAAS,KAAK,UAAU,GAAG,MAAM,GAAG,SAAS;YAC5D,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE;AAC3D,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,KAAK,EAAE,WAAW;AACnB,aAAA;AACF,SAAA;KACF;AAED,IAAA,MAAM,GAAG,GAAG,IAAIC,aAAQ,CAAC;QACvB,KAAK;QACL,OAAO;QACP,OAAO;QACP,QAAQ;QACR,WAAW;QACX,MAAM,EAAE,SAAS,CACf;AACE,YAAA,OAAO,EAAE;AACP,gBAAA,QAAQ,EAAE;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS;AAClD,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,EACD,MAAM,IAAI,EAAE,CACb;QACD,UAAU;AACV,QAAA,QAAQ,EAAE;aACP,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;AACtB,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACX,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,QAAQ,EAAE,CAAgB;AAC3B,SAAA,CAAC,CAAC;AACL,QAAA,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE;AAC9B,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,SAAS,EAAE,eAAe;oBAC1B,MAAM,EAAE,WAAW,CAAC;AAClB,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;qBACrC,CAAC;AACH,iBAAA;AACD,gBAAA,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAChC,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,MAAM,EAAE,aAAa;AACtB,iBAAA,CAAC,CAAC;AACH,gBAAA;AACE,oBAAA,SAAS,EAAE,sBAAsB;oBACjC,MAAM,EAAE,WAAW,CAAC;AAClB,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;qBACrC,CAAC;AACH,iBAAA;AACD,gBAAA;AACE,oBAAA,SAAS,EAAE,wBAAwB;oBACnC,MAAM,EAAE,WAAW,CAAC;AAClB,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpC,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;qBACrC,CAAC;AACH,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC;;;IAIF,MAAM,gBAAgB,GAAG,0BAA0B;AACnD,IAAA,MAAM,UAAU,GAAI,GAAW,CAAC,SAAS;AACzC,IAAA,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACxD,IAAA,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAExD,IAAA,OAAOC,WAAM,CAAC,aAAa,CAAC,GAAG,CAAC;AAClC,CAAC;AAED,MAAM,cAAc,GAA6B,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAI;AACrE,IAAA,OAAO,aAAa,CAClB;AACE,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,EACD,GAAG,CACJ;AACH,CAAC;AAED,MAAM,YAAY,GAA2B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,KAAI;AACxE,IAAA,IAAI,KAAgC;IACpC,QAAQ,KAAK;AACX,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,OAAO;YACf;AACF,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,WAAW;YACnB;AACF,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,WAAW;YACnB;AACF,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,WAAW;YACnB;AACF,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,WAAW;YACnB;AACF,QAAA,KAAK,CAAC;YACJ,KAAK,GAAG,WAAW;YACnB;;AAEJ,IAAA,OAAO,aAAa,CAClB;AACE,QAAA,OAAO,EAAEC,iBAAY,CAAC,KAAK,CAAC;AAC5B,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC/B,EACD,GAAG,CACJ;AACH,CAAC;AAED,MAAM,kBAAkB,GAAiC,CAAC,CAAC,EAAE,GAAG,KAAI;AAClE,IAAA,QAAQ,GAAG,CAAC,aAAa;QACvB,KAAK,MAAM,EAAE;AACX,YAAA,OAAO,IAAIP,cAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAIQ,cAAS,EAAE,CAAC,EAAE,CAAC;QACvD;QACA,KAAK,SAAS,EAAE;;AAEd,YAAA,OAAO,EAAE;QACX;QACA,KAAK,MAAM,EAAE;YACX,OAAO,IAAIR,cAAS,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC/C;;AAEJ,CAAC;AAED,MAAM,eAAe,GAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAI;AACvE,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;AACN,QAAA,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC;AAC7C,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAwB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,KAAI;AACpE,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI;AAE3B,IAAA,IAAI,IAAyB;IAC7B,IAAI,OAAO,EAAE;AACX,QAAA,IAAI,GAAG;AACL,YAAA,IAAI,EAAE,SAAS;YACf,SAAS,EACP,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK;AACrC,kBAAE,UAAU,CAAC,IAAI,CAAC;AAClB,kBAAE,GAAG,CAAC,SAAS,EAAE;SACtB;IACH;SAAO;AACL,QAAA,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B;AAEA,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;AACN,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;YAC7C,IAAI;AACL,SAAA;AACF,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAA4B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,KAAI;AAC5E,IAAA,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI;IACnB,IAAI,IAAI,EAAE;;AAER,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,IAAI,GAAG;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,IAAI,EAAE;AACJ,oBAAA,IAAI,EAAE,MAAM;oBACZ,OAAO;AACR,iBAAA;aACF;QACH;IACF;AACA,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;QACN,IAAI;AACL,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAyB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,KAAI;AACpE,IAAA,MAAM,SAAS,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,GAAG,CAAC,CAAC,CAAC,KAAgC;QAC7D,QAAQ,CAAC;AACP,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,MAAM;;AAEnB,IAAA,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,MAAM;AACjD,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,GAAG,YAAY;AAE5C,IAAA,MAAM,OAAO,GAA6B;AACxC,QAAA,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC;QACzE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvB,OAAO,IAAIS,aAAQ,CAAC;AAClB,gBAAA,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;oBAChC,OAAO,IAAIC,cAAS,CAAC;wBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,wBAAA,QAAQ,EAAE;AACR,4BAAA,IAAIV,cAAS,CAAC;AACZ,gCAAA,SAAS,EAAED,kBAAa,CAAC,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC;gCAClD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC/B,oCAAA,GAAG,GAAG;;AAEN,oCAAA,GAAG,EAAE,SAAS;iCACf,CAAC;6BACH,CAAC;AACH,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACH,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;KACH;AAED,IAAA,IAAI,GAAG,CAAC,GAAG,EAAE;AACX,QAAA,OAAO,CAAC,mBAAmB,GAAG,IAAI;IACpC;AAEA,IAAA,OAAO,IAAIY,UAAK,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,SAAS,GAAwB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAI;AAClE,IAAA,MAAM,OAAO,GAA2B;AACtC,QAAA,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB;AACD,IAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,OAAO,CAAC,SAAS,GAAG,WAAW;IACjC;AACA,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE;;AAEb,QAAA,OAAO,CAAC,KAAK,GAAG,kBAAkB;IACpC;IACA,IAAI,GAAG,EAAE;AACP,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI;IAC5B;AAEA,IAAA,OAAO,IAAIC,YAAO,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,aAAa,GAA4B,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAI;AACnE,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;QACN,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACpC,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAI;AAC/D,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;QACN,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAI;AAC/D,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,GAAG,GAAG;QACN,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACpC,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAA8B,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAI;IACpE,OAAO,SAAS,CACd,EAAgB,KAAK,EAAE,EACvB;AACE,QAAA,GAAG,GAAG;QACN,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;AACxC,KAAA,CACF;AACH,CAAC;AAED,MAAM,UAAU,GAAyB,MAAK;AAC5C,IAAA,OAAO,IAAIA,YAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,SAAS,GAAwB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,KAAI;AAChE,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;AAEvB,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7B;IACA,OAAO,IAAIC,sBAAiB,CAAC;AAC3B,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC7B,YAAA,GAAG,GAAG;YACN,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;SAClC,CAAC;AACH,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAiC,CACvD,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB,GAAG,KACD;IACF,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACtC,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7B;AACA,IAAA,OAAO,SAAS,CAAC,EAAgB,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;AACjE,CAAC;AAED,MAAM,uBAAuB,GAAsC,CACjE,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB,GAAG,KACD;IACF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAYb,cAAS,CAAC;AAC3E,IAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;AACvD,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,sBAAsB,GAAqC,CAC/D,EAAE,UAAU,EAAE,EACd,GAAG,KACD;AACF,IAAA,OAAO,IAAIc,yBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,IAAI,GAAG,MAAK;AAChB,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAAqC,EAAE,GAAY,KAAI;AAC3E,IAAAZ,cAAQ,CACN,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,6DAAA,CAA+D,CAC5E;AACD,IAAA,OAAO,SAAS,CAAC,EAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC;AAC5D,CAAC;;ACruBD,MAAM,MAAM,GAAuD,UACjE,IAAI,EAAA;AAEJ,IAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAI;AACvB,QAAA,OAAO,WAAW,CAAC,IAAY,EAAE,IAAI,CAAC;AACxC,IAAA,CAAC;AACH;;;;"}
|
package/lib/index.js
CHANGED
|
@@ -112,7 +112,7 @@ const docxParagraph = (options, ctx) => {
|
|
|
112
112
|
}
|
|
113
113
|
return new Paragraph(options);
|
|
114
114
|
};
|
|
115
|
-
const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywords, description, styles, size, margin, orientation, spacing, direction, background, thematicBreak = "page", orderedListFormat, } = {}) => {
|
|
115
|
+
const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywords, description, styles, size, margin, orientation, columns, spacing, direction, background, thematicBreak = "page", orderedListFormat, } = {}) => {
|
|
116
116
|
const definition = definitions(node);
|
|
117
117
|
const ordered = createOrderedListRegistry();
|
|
118
118
|
const footnote = createFootnoteRegistry();
|
|
@@ -228,7 +228,9 @@ const mdastToDocx = async (node, { plugins = [], title, subject, creator, keywor
|
|
|
228
228
|
{ text: "%6.", format: "DECIMAL" },
|
|
229
229
|
]);
|
|
230
230
|
const sectionProperties = {
|
|
231
|
+
column: columns ? { count: columns } : undefined,
|
|
231
232
|
page: {
|
|
233
|
+
textDirection: direction === "vertical" ? "tbRl" : undefined,
|
|
232
234
|
size: { width: pageWidth, height: pageHeight, orientation },
|
|
233
235
|
margin: {
|
|
234
236
|
top: marginTop,
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/mdast-util-to-docx.ts","../src/plugin.ts"],"sourcesContent":["import {\n Packer,\n Document,\n Paragraph,\n Table,\n TableRow,\n TableCell,\n TextRun,\n ExternalHyperlink,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n type ILevelsOptions,\n FootnoteReferenceRun,\n type IPropertiesOptions,\n sectionPageSizeDefaults,\n sectionMarginDefaults,\n type IRunOptions,\n type IParagraphOptions,\n PageBreak,\n type ISectionPropertiesOptions,\n type IIndentAttributesProperties,\n type IStylesOptions,\n type ITableOptions,\n} from \"docx\";\nimport type * as mdast from \"mdast\";\nimport { warnOnce } from \"./utils\";\nimport { definitions } from \"mdast-util-definitions\";\nimport deepmerge from \"deepmerge\";\nimport type {\n Context,\n DocxChild,\n DocxContent,\n FootnoteRegistry,\n ListContext,\n NodeBuilder,\n NodeBuilders,\n RemarkDocxPlugin,\n ThematicBreakType,\n Writeable,\n} from \"./types\";\n\nconst BULLET_LIST_REF = \"bullet\";\nconst ORDERED_LIST_REF = \"ordered\";\nconst COMPLETE_TASK_LIST_REF = \"task-complete\";\nconst INCOMPLETE_TASK_LIST_REF = \"task-incomplete\";\nconst HYPERLINK_STYLE_ID = \"Hyperlink\";\n\nconst calcIndent = (i: number): IIndentAttributesProperties => {\n const INDENT_UNIT = 10 * 40;\n return { hanging: INDENT_UNIT, left: INDENT_UNIT * (i + 1) };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n const idToInternalId = new Map<string, number>();\n const defs = new Map<number, Paragraph[]>();\n\n return {\n id: (id) => {\n let internalId = idToInternalId.get(id);\n if (internalId == null) {\n idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n }\n return internalId;\n },\n set: (id, def) => {\n defs.set(id, def);\n },\n toConfig: () => {\n return defs.entries().reduce(\n (acc, [key, def]) => {\n acc[key] = { children: def };\n return acc;\n },\n {} as {\n [key: string]: { children: Paragraph[] };\n },\n );\n },\n };\n};\n\ntype ListFormat = {\n format: keyof typeof LevelFormat;\n text: string;\n};\n\ntype OrderedListRegistry = {\n createId: () => string;\n getIds: () => string[];\n};\nconst createOrderedListRegistry = (): OrderedListRegistry => {\n let counter = 1;\n\n const ids: string[] = [];\n\n return {\n createId: () => {\n const id = `${ORDERED_LIST_REF}-${counter++}`;\n ids.push(id);\n return id;\n },\n getIds: () => {\n return ids;\n },\n };\n};\n\nconst composeBuilders = (\n pluginsBuilders: readonly NodeBuilders[],\n defaultBuilders: NodeBuilders,\n): NodeBuilders => {\n return pluginsBuilders.reduceRight<NodeBuilders>((acc, p) => {\n type Key = keyof typeof p;\n for (const [k, cur] of Object.entries(p)) {\n const prev = acc[k as Key];\n acc[k as Key] = (\n prev\n ? (n, c) => {\n const r = cur(n as any, c);\n if (r) {\n return r;\n }\n return prev(n as any, c);\n }\n : cur\n ) as NodeBuilder<any>;\n }\n return acc;\n }, defaultBuilders);\n};\n\nconst buildLevels = (formats: readonly ListFormat[]): ILevelsOptions[] => {\n return formats.map(({ format, text }, i) => {\n return {\n level: i,\n format: LevelFormat[format],\n text: text,\n alignment: AlignmentType.LEFT,\n style: {\n paragraph: {\n indent: calcIndent(i),\n },\n },\n };\n });\n};\n\nconst docxParagraph = (\n options: Writeable<IParagraphOptions>,\n ctx: Context,\n): Paragraph => {\n if (ctx.quote != null) {\n options.indent = calcIndent(ctx.quote + 1);\n }\n\n if (ctx.list) {\n const { level, meta } = ctx.list;\n if (meta.type === \"task\") {\n options.numbering = {\n reference: meta.checked\n ? COMPLETE_TASK_LIST_REF\n : INCOMPLETE_TASK_LIST_REF,\n level,\n };\n } else if (meta.type === \"ordered\") {\n options.numbering = {\n reference: meta.reference,\n level,\n };\n } else {\n options.numbering = {\n reference: BULLET_LIST_REF,\n level,\n };\n }\n }\n\n if (ctx.rtl) {\n options.bidirectional = true;\n }\n\n return new Paragraph(options);\n};\n\nexport interface DocxOptions extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"styles\"\n | \"background\"\n> {\n /**\n * Page size defined in twip (1 twip == 1/1440 inch).\n * @default A4 ({@link sectionPageSizeDefaults})\n */\n size?: { width?: number; height?: number };\n /**\n * Page margin defined in twip (1 twip == 1/1440 inch).\n * @default 1 inch ({@link sectionMarginDefaults})\n */\n margin?: { top?: number; left?: number; bottom?: number; right?: number };\n /**\n * Page orientation.\n * @default \"portrait\"\n */\n orientation?: \"portrait\" | \"landscape\";\n /**\n * Spacing after Paragraphs in twip (1 twip == 1/1440 inch).\n * @default 0\n */\n spacing?: number;\n /**\n * Direction of texts.\n * @default \"ltr\"\n */\n direction?: \"ltr\" | \"rtl\";\n /**\n * An option to override the text format of ordered list.\n * See https://docx.js.org/#/usage/numbering?id=level-options for more details.\n */\n orderedListFormat?: ListFormat[];\n /**\n * An option to select how thematicBreak works.\n *\n * - \"page\": Page Break\n * - \"section\": Section Break\n * - \"line\": Horizontal line\n * @default \"page\"\n */\n thematicBreak?: ThematicBreakType;\n /**\n * Plugins to customize how mdast nodes are compiled.\n */\n plugins?: RemarkDocxPlugin[];\n}\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n plugins = [],\n title,\n subject,\n creator,\n keywords,\n description,\n styles,\n size,\n margin,\n orientation,\n spacing,\n direction,\n background,\n thematicBreak = \"page\",\n orderedListFormat,\n }: DocxOptions = {},\n): Promise<ArrayBuffer> => {\n const definition = definitions(node);\n\n const ordered = createOrderedListRegistry();\n const footnote = createFootnoteRegistry();\n\n const pluginCtx = { root: node, definition };\n\n const builders = composeBuilders(\n await Promise.all(plugins.map((p) => p(pluginCtx))),\n {\n paragraph: buildParagraph,\n heading: buildHeading,\n thematicBreak: buildThematicBreak,\n blockquote: buildBlockquote,\n list: buildList,\n listItem: buildListItem,\n table: buildTable,\n tableRow: noop,\n tableCell: noop,\n html: fallbackText,\n code: fallbackText,\n definition: noop,\n footnoteDefinition: buildFootnoteDefinition,\n text: buildText,\n emphasis: buildEmphasis,\n strong: buildStrong,\n delete: buildDelete,\n inlineCode: buildInlineCode,\n break: buildBreak,\n link: buildLink,\n linkReference: buildLinkReference,\n // image: warnImage,\n // imageReference: warnImage,\n footnoteReference: buildFootnoteReference,\n math: fallbackText,\n inlineMath: fallbackText,\n },\n );\n\n const renderNode = (\n node: mdast.RootContent,\n c: Context,\n ): DocxContent[] | null => {\n const builder = builders[node.type];\n if (!builder) {\n warnOnce(`${node.type} node is not supported without plugins.`);\n return null;\n }\n const r = builder(node as any, c);\n if (r) {\n if (Array.isArray(r)) {\n return r;\n } else {\n return [r];\n }\n }\n return null;\n };\n\n let { WIDTH: pageWidth, HEIGHT: pageHeight } = sectionPageSizeDefaults;\n if (size) {\n if (size.width != null) {\n pageWidth = size.width;\n }\n if (size.height != null) {\n pageHeight = size.height;\n }\n }\n let {\n TOP: marginTop,\n LEFT: marginLeft,\n BOTTOM: marginBottom,\n RIGHT: marginRight,\n } = sectionMarginDefaults;\n if (margin) {\n if (margin.top != null) {\n marginTop = margin.top;\n }\n if (margin.left != null) {\n marginLeft = margin.left;\n }\n if (margin.bottom != null) {\n marginBottom = margin.bottom;\n }\n if (margin.right != null) {\n marginRight = margin.right;\n }\n }\n\n const ctx: Context = {\n render(nodes, c) {\n const results: DocxContent[] = [];\n for (const node of nodes) {\n const r = renderNode(node, c ?? this);\n if (r) {\n results.push(...r);\n }\n }\n return results;\n },\n width: pageWidth - marginLeft - marginRight,\n deco: {},\n thematicBreak,\n rtl: direction === \"rtl\",\n definition: definition,\n footnote,\n orderedId: ordered.createId,\n };\n\n const sections: DocxContent[][] = [[]];\n for (const n of node.children) {\n const r = renderNode(n, ctx);\n if (r) {\n if (!r.length) {\n // thematicBreak\n sections.push([]);\n } else {\n const lastSection = sections[sections.length - 1]!;\n lastSection.push(...r);\n }\n }\n }\n\n const orderedLevels = buildLevels(\n orderedListFormat ?? [\n { text: \"%1.\", format: \"DECIMAL\" },\n { text: \"%2.\", format: \"DECIMAL\" },\n { text: \"%3.\", format: \"DECIMAL\" },\n { text: \"%4.\", format: \"DECIMAL\" },\n { text: \"%5.\", format: \"DECIMAL\" },\n { text: \"%6.\", format: \"DECIMAL\" },\n ],\n );\n\n const sectionProperties: ISectionPropertiesOptions = {\n page: {\n size: { width: pageWidth, height: pageHeight, orientation },\n margin: {\n top: marginTop,\n left: marginLeft,\n bottom: marginBottom,\n right: marginRight,\n },\n },\n };\n\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n styles: deepmerge<IStylesOptions>(\n {\n default: {\n document: {\n paragraph: {\n spacing: spacing ? { after: spacing } : undefined,\n },\n },\n },\n },\n styles || {},\n ),\n background,\n sections: sections\n .filter((s) => s.length)\n .map((s) => ({\n properties: sectionProperties,\n children: s as DocxChild[],\n })),\n footnotes: footnote.toConfig(),\n numbering: {\n config: [\n {\n reference: BULLET_LIST_REF,\n levels: buildLevels([\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n ]),\n },\n ...ordered.getIds().map((ref) => ({\n reference: ref,\n levels: orderedLevels,\n })),\n {\n reference: COMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n ]),\n },\n {\n reference: INCOMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n ]),\n },\n ],\n },\n });\n\n // HACK: docx.js has no option to remove default numbering definitions from .docx. So do it here for now.\n // https://github.com/dolanmiu/docx/blob/master/src/file/numbering/numbering.ts\n const defaultBulletKey = \"default-bullet-numbering\";\n const _numbering = (doc as any).numbering;\n _numbering.abstractNumberingMap.delete(defaultBulletKey);\n _numbering.concreteNumberingMap.delete(defaultBulletKey);\n\n return Packer.toArrayBuffer(doc);\n};\n\nconst buildParagraph: NodeBuilder<\"paragraph\"> = ({ children }, ctx) => {\n return docxParagraph(\n {\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildHeading: NodeBuilder<\"heading\"> = ({ children, depth }, ctx) => {\n let level: keyof typeof HeadingLevel;\n switch (depth) {\n case 1:\n level = \"TITLE\";\n break;\n case 2:\n level = \"HEADING_1\";\n break;\n case 3:\n level = \"HEADING_2\";\n break;\n case 4:\n level = \"HEADING_3\";\n break;\n case 5:\n level = \"HEADING_4\";\n break;\n case 6:\n level = \"HEADING_5\";\n break;\n }\n return docxParagraph(\n {\n heading: HeadingLevel[level],\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildThematicBreak: NodeBuilder<\"thematicBreak\"> = (_, ctx) => {\n switch (ctx.thematicBreak) {\n case \"page\": {\n return new Paragraph({ children: [new PageBreak()] });\n }\n case \"section\": {\n // Returning empty array at toplevel means section insertion.\n return [];\n }\n case \"line\": {\n return new Paragraph({ thematicBreak: true });\n }\n }\n};\n\nconst buildBlockquote: NodeBuilder<\"blockquote\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n quote: ctx.quote == null ? 0 : ctx.quote + 1,\n });\n};\n\nconst buildList: NodeBuilder<\"list\"> = ({ children, ordered }, ctx) => {\n const parentList = ctx.list;\n\n let meta: ListContext[\"meta\"];\n if (ordered) {\n meta = {\n type: \"ordered\",\n reference:\n parentList && parentList.meta.type === \"ordered\"\n ? parentList.meta.reference\n : ctx.orderedId(),\n };\n } else {\n meta = { type: \"bullet\" };\n }\n\n return ctx.render(children, {\n ...ctx,\n list: {\n level: !parentList ? 0 : parentList.level + 1,\n meta,\n },\n });\n};\n\nconst buildListItem: NodeBuilder<\"listItem\"> = ({ children, checked }, ctx) => {\n let list = ctx.list;\n if (list) {\n // listItem must be the child of list\n if (checked != null) {\n list = {\n level: list.level,\n meta: {\n type: \"task\",\n checked,\n },\n };\n }\n }\n return ctx.render(children, {\n ...ctx,\n list,\n });\n};\n\nconst buildTable: NodeBuilder<\"table\"> = ({ children, align }, ctx) => {\n const textAlign = align?.map((a): keyof typeof AlignmentType => {\n switch (a) {\n case \"left\":\n return \"LEFT\";\n case \"right\":\n return \"RIGHT\";\n case \"center\":\n return \"CENTER\";\n default:\n return \"LEFT\";\n }\n });\n\n const columnLength = children[0]!.children.length;\n const columnWidth = ctx.width / columnLength;\n\n const options: Writeable<ITableOptions> = {\n columnWidths: Array.from({ length: columnLength }).map(() => columnWidth),\n rows: children.map((r) => {\n return new TableRow({\n children: r.children.map((c, i) => {\n return new TableCell({\n width: { size: columnWidth, type: \"dxa\" },\n children: [\n new Paragraph({\n alignment: AlignmentType[textAlign?.[i] ?? \"LEFT\"],\n children: ctx.render(c.children, {\n ...ctx,\n // https://github.com/dolanmiu/docx/blob/master/demo/22-right-to-left-text.ts\n rtl: undefined,\n }),\n }),\n ],\n });\n }),\n });\n }),\n };\n\n if (ctx.rtl) {\n options.visuallyRightToLeft = true;\n }\n\n return new Table(options);\n};\n\nconst buildText: NodeBuilder<\"text\"> = ({ value }, { deco, rtl }) => {\n const options: Writeable<IRunOptions> = {\n text: value,\n bold: deco.bold,\n italics: deco.italic,\n strike: deco.strike,\n };\n if (deco.inlineCode) {\n options.highlight = \"lightGray\";\n }\n if (deco.link) {\n // https://docx.js.org/#/usage/hyperlinks?id=styling-hyperlinks\n options.style = HYPERLINK_STYLE_ID;\n }\n if (rtl) {\n options.rightToLeft = true;\n }\n\n return new TextRun(options);\n};\n\nconst buildEmphasis: NodeBuilder<\"emphasis\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, italic: true },\n });\n};\n\nconst buildStrong: NodeBuilder<\"strong\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, bold: true },\n });\n};\n\nconst buildDelete: NodeBuilder<\"delete\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, strike: true },\n });\n};\n\nconst buildInlineCode: NodeBuilder<\"inlineCode\"> = ({ value }, ctx) => {\n return buildText(\n { type: \"text\", value },\n {\n ...ctx,\n deco: { ...ctx.deco, inlineCode: true },\n },\n );\n};\n\nconst buildBreak: NodeBuilder<\"break\"> = () => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink: NodeBuilder<\"link\"> = ({ children, url }, ctx) => {\n if (url.startsWith(\"#\")) {\n // TODO support anchor link\n return ctx.render(children);\n }\n return new ExternalHyperlink({\n link: url,\n children: ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, link: true },\n }),\n });\n};\n\nconst buildLinkReference: NodeBuilder<\"linkReference\"> = (\n { children, identifier },\n ctx,\n) => {\n const def = ctx.definition(identifier);\n if (def == null) {\n return ctx.render(children);\n }\n return buildLink({ type: \"link\", children, url: def.url }, ctx);\n};\n\nconst buildFootnoteDefinition: NodeBuilder<\"footnoteDefinition\"> = (\n { children, identifier },\n ctx,\n) => {\n const contents = ctx.render(children).filter((c) => c instanceof Paragraph);\n ctx.footnote.set(ctx.footnote.id(identifier), contents);\n return null;\n};\n\nconst buildFootnoteReference: NodeBuilder<\"footnoteReference\"> = (\n { identifier },\n ctx,\n) => {\n return new FootnoteReferenceRun(ctx.footnote.id(identifier));\n};\n\nconst noop = () => {\n return null;\n};\n\nconst fallbackText = (node: { type: string; value: string }, ctx: Context) => {\n warnOnce(\n `${node.type} node is not supported without plugins, falling back to text.`,\n );\n return buildText({ type: \"text\", value: node.value }, ctx);\n};\n","import type { Plugin } from \"unified\";\nimport type { Root } from \"mdast\";\nimport { mdastToDocx, type DocxOptions } from \"./mdast-util-to-docx\";\n\nexport type { DocxOptions };\n\ndeclare module \"unified\" {\n interface CompileResultMap {\n docx: Promise<ArrayBuffer>;\n }\n}\n\nconst plugin: Plugin<[DocxOptions?], Root, Promise<ArrayBuffer>> = function (\n opts,\n) {\n this.compiler = (node) => {\n return mdastToDocx(node as Root, opts);\n };\n};\nexport default plugin;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/mdast-util-to-docx.ts","../src/plugin.ts"],"sourcesContent":["import {\n Packer,\n Document,\n Paragraph,\n Table,\n TableRow,\n TableCell,\n TextRun,\n ExternalHyperlink,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n type ILevelsOptions,\n FootnoteReferenceRun,\n type IPropertiesOptions,\n sectionPageSizeDefaults,\n sectionMarginDefaults,\n type IRunOptions,\n type IParagraphOptions,\n PageBreak,\n type ISectionPropertiesOptions,\n type IIndentAttributesProperties,\n type IStylesOptions,\n type ITableOptions,\n} from \"docx\";\nimport type * as mdast from \"mdast\";\nimport { warnOnce } from \"./utils\";\nimport { definitions } from \"mdast-util-definitions\";\nimport deepmerge from \"deepmerge\";\nimport type {\n Context,\n DocxChild,\n DocxContent,\n FootnoteRegistry,\n ListContext,\n NodeBuilder,\n NodeBuilders,\n RemarkDocxPlugin,\n ThematicBreakType,\n Writeable,\n} from \"./types\";\n\nconst BULLET_LIST_REF = \"bullet\";\nconst ORDERED_LIST_REF = \"ordered\";\nconst COMPLETE_TASK_LIST_REF = \"task-complete\";\nconst INCOMPLETE_TASK_LIST_REF = \"task-incomplete\";\nconst HYPERLINK_STYLE_ID = \"Hyperlink\";\n\nconst calcIndent = (i: number): IIndentAttributesProperties => {\n const INDENT_UNIT = 10 * 40;\n return { hanging: INDENT_UNIT, left: INDENT_UNIT * (i + 1) };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n const idToInternalId = new Map<string, number>();\n const defs = new Map<number, Paragraph[]>();\n\n return {\n id: (id) => {\n let internalId = idToInternalId.get(id);\n if (internalId == null) {\n idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n }\n return internalId;\n },\n set: (id, def) => {\n defs.set(id, def);\n },\n toConfig: () => {\n return defs.entries().reduce(\n (acc, [key, def]) => {\n acc[key] = { children: def };\n return acc;\n },\n {} as {\n [key: string]: { children: Paragraph[] };\n },\n );\n },\n };\n};\n\ntype ListFormat = {\n format: keyof typeof LevelFormat;\n text: string;\n};\n\ntype OrderedListRegistry = {\n createId: () => string;\n getIds: () => string[];\n};\nconst createOrderedListRegistry = (): OrderedListRegistry => {\n let counter = 1;\n\n const ids: string[] = [];\n\n return {\n createId: () => {\n const id = `${ORDERED_LIST_REF}-${counter++}`;\n ids.push(id);\n return id;\n },\n getIds: () => {\n return ids;\n },\n };\n};\n\nconst composeBuilders = (\n pluginsBuilders: readonly NodeBuilders[],\n defaultBuilders: NodeBuilders,\n): NodeBuilders => {\n return pluginsBuilders.reduceRight<NodeBuilders>((acc, p) => {\n type Key = keyof typeof p;\n for (const [k, cur] of Object.entries(p)) {\n const prev = acc[k as Key];\n acc[k as Key] = (\n prev\n ? (n, c) => {\n const r = cur(n as any, c);\n if (r) {\n return r;\n }\n return prev(n as any, c);\n }\n : cur\n ) as NodeBuilder<any>;\n }\n return acc;\n }, defaultBuilders);\n};\n\nconst buildLevels = (formats: readonly ListFormat[]): ILevelsOptions[] => {\n return formats.map(({ format, text }, i) => {\n return {\n level: i,\n format: LevelFormat[format],\n text: text,\n alignment: AlignmentType.LEFT,\n style: {\n paragraph: {\n indent: calcIndent(i),\n },\n },\n };\n });\n};\n\nconst docxParagraph = (\n options: Writeable<IParagraphOptions>,\n ctx: Context,\n): Paragraph => {\n if (ctx.quote != null) {\n options.indent = calcIndent(ctx.quote + 1);\n }\n\n if (ctx.list) {\n const { level, meta } = ctx.list;\n if (meta.type === \"task\") {\n options.numbering = {\n reference: meta.checked\n ? COMPLETE_TASK_LIST_REF\n : INCOMPLETE_TASK_LIST_REF,\n level,\n };\n } else if (meta.type === \"ordered\") {\n options.numbering = {\n reference: meta.reference,\n level,\n };\n } else {\n options.numbering = {\n reference: BULLET_LIST_REF,\n level,\n };\n }\n }\n\n if (ctx.rtl) {\n options.bidirectional = true;\n }\n\n return new Paragraph(options);\n};\n\nexport interface DocxOptions extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"styles\"\n | \"background\"\n> {\n /**\n * Page size defined in twip (1 twip == 1/1440 inch).\n * @default A4 ({@link sectionPageSizeDefaults})\n */\n size?: { width?: number; height?: number };\n /**\n * Page margin defined in twip (1 twip == 1/1440 inch).\n * @default 1 inch ({@link sectionMarginDefaults})\n */\n margin?: { top?: number; left?: number; bottom?: number; right?: number };\n /**\n * Page orientation.\n * @default \"portrait\"\n */\n orientation?: \"portrait\" | \"landscape\";\n /**\n * Number of page columns.\n * @default 1\n */\n columns?: number;\n /**\n * Spacing after Paragraphs in twip (1 twip == 1/1440 inch).\n * @default 0\n */\n spacing?: number;\n /**\n * Direction of texts.\n * @default \"ltr\"\n */\n direction?: \"ltr\" | \"rtl\" | \"vertical\";\n /**\n * An option to override the text format of ordered list.\n * See https://docx.js.org/#/usage/numbering?id=level-options for more details.\n */\n orderedListFormat?: ListFormat[];\n /**\n * An option to select how thematicBreak works.\n *\n * - \"page\": Page Break\n * - \"section\": Section Break\n * - \"line\": Horizontal line\n * @default \"page\"\n */\n thematicBreak?: ThematicBreakType;\n /**\n * Plugins to customize how mdast nodes are compiled.\n */\n plugins?: RemarkDocxPlugin[];\n}\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n plugins = [],\n title,\n subject,\n creator,\n keywords,\n description,\n styles,\n size,\n margin,\n orientation,\n columns,\n spacing,\n direction,\n background,\n thematicBreak = \"page\",\n orderedListFormat,\n }: DocxOptions = {},\n): Promise<ArrayBuffer> => {\n const definition = definitions(node);\n\n const ordered = createOrderedListRegistry();\n const footnote = createFootnoteRegistry();\n\n const pluginCtx = { root: node, definition };\n\n const builders = composeBuilders(\n await Promise.all(plugins.map((p) => p(pluginCtx))),\n {\n paragraph: buildParagraph,\n heading: buildHeading,\n thematicBreak: buildThematicBreak,\n blockquote: buildBlockquote,\n list: buildList,\n listItem: buildListItem,\n table: buildTable,\n tableRow: noop,\n tableCell: noop,\n html: fallbackText,\n code: fallbackText,\n definition: noop,\n footnoteDefinition: buildFootnoteDefinition,\n text: buildText,\n emphasis: buildEmphasis,\n strong: buildStrong,\n delete: buildDelete,\n inlineCode: buildInlineCode,\n break: buildBreak,\n link: buildLink,\n linkReference: buildLinkReference,\n // image: warnImage,\n // imageReference: warnImage,\n footnoteReference: buildFootnoteReference,\n math: fallbackText,\n inlineMath: fallbackText,\n },\n );\n\n const renderNode = (\n node: mdast.RootContent,\n c: Context,\n ): DocxContent[] | null => {\n const builder = builders[node.type];\n if (!builder) {\n warnOnce(`${node.type} node is not supported without plugins.`);\n return null;\n }\n const r = builder(node as any, c);\n if (r) {\n if (Array.isArray(r)) {\n return r;\n } else {\n return [r];\n }\n }\n return null;\n };\n\n let { WIDTH: pageWidth, HEIGHT: pageHeight } = sectionPageSizeDefaults;\n if (size) {\n if (size.width != null) {\n pageWidth = size.width;\n }\n if (size.height != null) {\n pageHeight = size.height;\n }\n }\n let {\n TOP: marginTop,\n LEFT: marginLeft,\n BOTTOM: marginBottom,\n RIGHT: marginRight,\n } = sectionMarginDefaults;\n if (margin) {\n if (margin.top != null) {\n marginTop = margin.top;\n }\n if (margin.left != null) {\n marginLeft = margin.left;\n }\n if (margin.bottom != null) {\n marginBottom = margin.bottom;\n }\n if (margin.right != null) {\n marginRight = margin.right;\n }\n }\n\n const ctx: Context = {\n render(nodes, c) {\n const results: DocxContent[] = [];\n for (const node of nodes) {\n const r = renderNode(node, c ?? this);\n if (r) {\n results.push(...r);\n }\n }\n return results;\n },\n width: pageWidth - marginLeft - marginRight,\n deco: {},\n thematicBreak,\n rtl: direction === \"rtl\",\n definition: definition,\n footnote,\n orderedId: ordered.createId,\n };\n\n const sections: DocxContent[][] = [[]];\n for (const n of node.children) {\n const r = renderNode(n, ctx);\n if (r) {\n if (!r.length) {\n // thematicBreak\n sections.push([]);\n } else {\n const lastSection = sections[sections.length - 1]!;\n lastSection.push(...r);\n }\n }\n }\n\n const orderedLevels = buildLevels(\n orderedListFormat ?? [\n { text: \"%1.\", format: \"DECIMAL\" },\n { text: \"%2.\", format: \"DECIMAL\" },\n { text: \"%3.\", format: \"DECIMAL\" },\n { text: \"%4.\", format: \"DECIMAL\" },\n { text: \"%5.\", format: \"DECIMAL\" },\n { text: \"%6.\", format: \"DECIMAL\" },\n ],\n );\n\n const sectionProperties: ISectionPropertiesOptions = {\n column: columns ? { count: columns } : undefined,\n page: {\n textDirection: direction === \"vertical\" ? \"tbRl\" : undefined,\n size: { width: pageWidth, height: pageHeight, orientation },\n margin: {\n top: marginTop,\n left: marginLeft,\n bottom: marginBottom,\n right: marginRight,\n },\n },\n };\n\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n styles: deepmerge<IStylesOptions>(\n {\n default: {\n document: {\n paragraph: {\n spacing: spacing ? { after: spacing } : undefined,\n },\n },\n },\n },\n styles || {},\n ),\n background,\n sections: sections\n .filter((s) => s.length)\n .map((s) => ({\n properties: sectionProperties,\n children: s as DocxChild[],\n })),\n footnotes: footnote.toConfig(),\n numbering: {\n config: [\n {\n reference: BULLET_LIST_REF,\n levels: buildLevels([\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n { text: \"\\u25CF\", format: \"BULLET\" },\n { text: \"\\u25CB\", format: \"BULLET\" },\n { text: \"\\u25A0\", format: \"BULLET\" },\n ]),\n },\n ...ordered.getIds().map((ref) => ({\n reference: ref,\n levels: orderedLevels,\n })),\n {\n reference: COMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n { text: \"\\u2611\", format: \"BULLET\" },\n ]),\n },\n {\n reference: INCOMPLETE_TASK_LIST_REF,\n levels: buildLevels([\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n { text: \"\\u2610\", format: \"BULLET\" },\n ]),\n },\n ],\n },\n });\n\n // HACK: docx.js has no option to remove default numbering definitions from .docx. So do it here for now.\n // https://github.com/dolanmiu/docx/blob/master/src/file/numbering/numbering.ts\n const defaultBulletKey = \"default-bullet-numbering\";\n const _numbering = (doc as any).numbering;\n _numbering.abstractNumberingMap.delete(defaultBulletKey);\n _numbering.concreteNumberingMap.delete(defaultBulletKey);\n\n return Packer.toArrayBuffer(doc);\n};\n\nconst buildParagraph: NodeBuilder<\"paragraph\"> = ({ children }, ctx) => {\n return docxParagraph(\n {\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildHeading: NodeBuilder<\"heading\"> = ({ children, depth }, ctx) => {\n let level: keyof typeof HeadingLevel;\n switch (depth) {\n case 1:\n level = \"TITLE\";\n break;\n case 2:\n level = \"HEADING_1\";\n break;\n case 3:\n level = \"HEADING_2\";\n break;\n case 4:\n level = \"HEADING_3\";\n break;\n case 5:\n level = \"HEADING_4\";\n break;\n case 6:\n level = \"HEADING_5\";\n break;\n }\n return docxParagraph(\n {\n heading: HeadingLevel[level],\n children: ctx.render(children),\n },\n ctx,\n );\n};\n\nconst buildThematicBreak: NodeBuilder<\"thematicBreak\"> = (_, ctx) => {\n switch (ctx.thematicBreak) {\n case \"page\": {\n return new Paragraph({ children: [new PageBreak()] });\n }\n case \"section\": {\n // Returning empty array at toplevel means section insertion.\n return [];\n }\n case \"line\": {\n return new Paragraph({ thematicBreak: true });\n }\n }\n};\n\nconst buildBlockquote: NodeBuilder<\"blockquote\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n quote: ctx.quote == null ? 0 : ctx.quote + 1,\n });\n};\n\nconst buildList: NodeBuilder<\"list\"> = ({ children, ordered }, ctx) => {\n const parentList = ctx.list;\n\n let meta: ListContext[\"meta\"];\n if (ordered) {\n meta = {\n type: \"ordered\",\n reference:\n parentList && parentList.meta.type === \"ordered\"\n ? parentList.meta.reference\n : ctx.orderedId(),\n };\n } else {\n meta = { type: \"bullet\" };\n }\n\n return ctx.render(children, {\n ...ctx,\n list: {\n level: !parentList ? 0 : parentList.level + 1,\n meta,\n },\n });\n};\n\nconst buildListItem: NodeBuilder<\"listItem\"> = ({ children, checked }, ctx) => {\n let list = ctx.list;\n if (list) {\n // listItem must be the child of list\n if (checked != null) {\n list = {\n level: list.level,\n meta: {\n type: \"task\",\n checked,\n },\n };\n }\n }\n return ctx.render(children, {\n ...ctx,\n list,\n });\n};\n\nconst buildTable: NodeBuilder<\"table\"> = ({ children, align }, ctx) => {\n const textAlign = align?.map((a): keyof typeof AlignmentType => {\n switch (a) {\n case \"left\":\n return \"LEFT\";\n case \"right\":\n return \"RIGHT\";\n case \"center\":\n return \"CENTER\";\n default:\n return \"LEFT\";\n }\n });\n\n const columnLength = children[0]!.children.length;\n const columnWidth = ctx.width / columnLength;\n\n const options: Writeable<ITableOptions> = {\n columnWidths: Array.from({ length: columnLength }).map(() => columnWidth),\n rows: children.map((r) => {\n return new TableRow({\n children: r.children.map((c, i) => {\n return new TableCell({\n width: { size: columnWidth, type: \"dxa\" },\n children: [\n new Paragraph({\n alignment: AlignmentType[textAlign?.[i] ?? \"LEFT\"],\n children: ctx.render(c.children, {\n ...ctx,\n // https://github.com/dolanmiu/docx/blob/master/demo/22-right-to-left-text.ts\n rtl: undefined,\n }),\n }),\n ],\n });\n }),\n });\n }),\n };\n\n if (ctx.rtl) {\n options.visuallyRightToLeft = true;\n }\n\n return new Table(options);\n};\n\nconst buildText: NodeBuilder<\"text\"> = ({ value }, { deco, rtl }) => {\n const options: Writeable<IRunOptions> = {\n text: value,\n bold: deco.bold,\n italics: deco.italic,\n strike: deco.strike,\n };\n if (deco.inlineCode) {\n options.highlight = \"lightGray\";\n }\n if (deco.link) {\n // https://docx.js.org/#/usage/hyperlinks?id=styling-hyperlinks\n options.style = HYPERLINK_STYLE_ID;\n }\n if (rtl) {\n options.rightToLeft = true;\n }\n\n return new TextRun(options);\n};\n\nconst buildEmphasis: NodeBuilder<\"emphasis\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, italic: true },\n });\n};\n\nconst buildStrong: NodeBuilder<\"strong\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, bold: true },\n });\n};\n\nconst buildDelete: NodeBuilder<\"delete\"> = ({ children }, ctx) => {\n return ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, strike: true },\n });\n};\n\nconst buildInlineCode: NodeBuilder<\"inlineCode\"> = ({ value }, ctx) => {\n return buildText(\n { type: \"text\", value },\n {\n ...ctx,\n deco: { ...ctx.deco, inlineCode: true },\n },\n );\n};\n\nconst buildBreak: NodeBuilder<\"break\"> = () => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink: NodeBuilder<\"link\"> = ({ children, url }, ctx) => {\n if (url.startsWith(\"#\")) {\n // TODO support anchor link\n return ctx.render(children);\n }\n return new ExternalHyperlink({\n link: url,\n children: ctx.render(children, {\n ...ctx,\n deco: { ...ctx.deco, link: true },\n }),\n });\n};\n\nconst buildLinkReference: NodeBuilder<\"linkReference\"> = (\n { children, identifier },\n ctx,\n) => {\n const def = ctx.definition(identifier);\n if (def == null) {\n return ctx.render(children);\n }\n return buildLink({ type: \"link\", children, url: def.url }, ctx);\n};\n\nconst buildFootnoteDefinition: NodeBuilder<\"footnoteDefinition\"> = (\n { children, identifier },\n ctx,\n) => {\n const contents = ctx.render(children).filter((c) => c instanceof Paragraph);\n ctx.footnote.set(ctx.footnote.id(identifier), contents);\n return null;\n};\n\nconst buildFootnoteReference: NodeBuilder<\"footnoteReference\"> = (\n { identifier },\n ctx,\n) => {\n return new FootnoteReferenceRun(ctx.footnote.id(identifier));\n};\n\nconst noop = () => {\n return null;\n};\n\nconst fallbackText = (node: { type: string; value: string }, ctx: Context) => {\n warnOnce(\n `${node.type} node is not supported without plugins, falling back to text.`,\n );\n return buildText({ type: \"text\", value: node.value }, ctx);\n};\n","import type { Plugin } from \"unified\";\nimport type { Root } from \"mdast\";\nimport { mdastToDocx, type DocxOptions } from \"./mdast-util-to-docx\";\n\nexport type { DocxOptions };\n\ndeclare module \"unified\" {\n interface CompileResultMap {\n docx: Promise<ArrayBuffer>;\n }\n}\n\nconst plugin: Plugin<[DocxOptions?], Root, Promise<ArrayBuffer>> = function (\n opts,\n) {\n this.compiler = (node) => {\n return mdastToDocx(node as Root, opts);\n };\n};\nexport default plugin;\n"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,11 @@ export interface DocxOptions extends Pick<IPropertiesOptions, "title" | "subject
|
|
|
29
29
|
* @default "portrait"
|
|
30
30
|
*/
|
|
31
31
|
orientation?: "portrait" | "landscape";
|
|
32
|
+
/**
|
|
33
|
+
* Number of page columns.
|
|
34
|
+
* @default 1
|
|
35
|
+
*/
|
|
36
|
+
columns?: number;
|
|
32
37
|
/**
|
|
33
38
|
* Spacing after Paragraphs in twip (1 twip == 1/1440 inch).
|
|
34
39
|
* @default 0
|
|
@@ -38,7 +43,7 @@ export interface DocxOptions extends Pick<IPropertiesOptions, "title" | "subject
|
|
|
38
43
|
* Direction of texts.
|
|
39
44
|
* @default "ltr"
|
|
40
45
|
*/
|
|
41
|
-
direction?: "ltr" | "rtl";
|
|
46
|
+
direction?: "ltr" | "rtl" | "vertical";
|
|
42
47
|
/**
|
|
43
48
|
* An option to override the text format of ordered list.
|
|
44
49
|
* See https://docx.js.org/#/usage/numbering?id=level-options for more details.
|
|
@@ -58,5 +63,5 @@ export interface DocxOptions extends Pick<IPropertiesOptions, "title" | "subject
|
|
|
58
63
|
*/
|
|
59
64
|
plugins?: RemarkDocxPlugin[];
|
|
60
65
|
}
|
|
61
|
-
export declare const mdastToDocx: (node: mdast.Root, { plugins, title, subject, creator, keywords, description, styles, size, margin, orientation, spacing, direction, background, thematicBreak, orderedListFormat, }?: DocxOptions) => Promise<ArrayBuffer>;
|
|
66
|
+
export declare const mdastToDocx: (node: mdast.Root, { plugins, title, subject, creator, keywords, description, styles, size, margin, orientation, columns, spacing, direction, background, thematicBreak, orderedListFormat, }?: DocxOptions) => Promise<ArrayBuffer>;
|
|
62
67
|
export {};
|