remark-docx 0.1.2 → 0.1.4
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 +18 -18
- package/lib/index.d.ts +1 -1
- package/lib/index.js +91 -81
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +92 -63
- package/lib/index.mjs.map +1 -1
- package/lib/latex.d.ts +2 -2
- package/lib/models/mdast.d.ts +10 -10
- package/lib/plugin.d.ts +3 -3
- package/lib/transformer.d.ts +26 -8
- package/package.json +30 -22
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBrackets(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n indent: number;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport const mdastToDocx = (\n node: mdast.Root,\n {\n output = \"buffer\",\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> => {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n indent: 0,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output) {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n};\n\nconst convertNodes = (nodes: mdast.Content[], ctx: Context): DocxContent[] => {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n};\n\nconst buildParagraph = ({ children }: mdast.Paragraph, ctx: Context) => {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n indent:\n ctx.indent > 0\n ? {\n start: convertInchesToTwip(INDENT * ctx.indent),\n }\n : undefined,\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n};\n\nconst buildHeading = ({ children, depth }: mdast.Heading, ctx: Context) => {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak) => {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n};\n\nconst buildBlockquote = ({ children }: mdast.Blockquote, ctx: Context) => {\n return convertNodes(children, { ...ctx, indent: ctx.indent + 1 });\n};\n\nconst buildList = (\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) => {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n};\n\nconst buildListItem = (\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) => {\n return convertNodes(children, ctx);\n};\n\nconst buildTable = ({ children, align }: mdast.Table, ctx: Context) => {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n};\n\nconst buildTableRow = (\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) => {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n};\n\nconst buildTableCell = (\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) => {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n};\n\nconst buildHtml = ({ value }: mdast.HTML) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildCode = ({ value, lang: _lang, meta: _meta }: mdast.Code) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildMath = ({ value }: mdast.Math) => {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n};\n\nconst buildInlineMath = ({ value }: mdast.InlineMath) => {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n};\n\nconst buildText = (text: string, deco: Decoration) => {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n};\n\nconst buildBreak = (_: mdast.Break) => {\n return new docx.TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n { children, url, title: _title }: mdast.Link,\n ctx: Context\n) => {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildImage = (\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) => {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n};\n\nconst buildFootnote = ({ children }: mdast.Footnote, ctx: Context) => {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["docx","parseMath","convertInchesToTwip","Packer","__awaiter","visit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,WAAW,GAAG,CAAC,CAAQ,KAAW;AAC7C,IAAA,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC,CAAC;AAEc,SAAA,SAAS,CAAC,IAAS,EAAE,OAAe,EAAA;AAClD,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC;;ACDA,MAAM,iBAAiB,GAAG,CACxB,GAA+B,KACN;AACzB,IAAA,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC;AAChE,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,CACvB,GAA+B,KACN;AACzB,IAAA,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,CAAS,KAAmB,IAAIA,eAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,QAAQ,GAAG,CACf,CAAc,EACd,IAAoB,KACI;;IACxB,QAAQ,CAAC,CAAC,OAAO;AACf,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,SAAS,CAAC;AACf,QAAA,KAAK,IAAI;;AAEP,YAAA,OAAO,KAAK,CAAC;QACf,KAAK,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI;gBAAE,MAAM;AACjB,YAAA,OAAO,IAAIA,eAAI,CAAC,eAAe,CAAC;gBAC9B,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,gBAAA,WAAW,EAAE,QAAQ,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAClD,aAAA,CAAC,CAAC;AACJ,SAAA;QACD,KAAK,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI;gBAAE,MAAM;AACjB,YAAA,OAAO,IAAIA,eAAI,CAAC,aAAa,CAAC;gBAC5B,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,gBAAA,SAAS,EAAE,QAAQ,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAChD,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,KAAK,KAAK;;YAER,MAAM;AACR,QAAA,KAAK,SAAS;;YAEZ,MAAM;QACR,KAAK,KAAK,EAAE;;AAEV,YAAA,OAAO,IAAIA,eAAI,CAAC,OAAO,CAAC;AACtB,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,EAAE;YACZ,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAC1B,YAAA,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,gBAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACzB;AACA,gBAAA,OAAO,IAAIA,eAAI,CAAC,YAAY,CAAC;oBAC3B,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBACpC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACvC,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,MAAM;AACP,SAAA;QACD,KAAK,MAAM,EAAE;YACX,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAA,OAAO,IAAIA,eAAI,CAAC,WAAW,CAAC;oBAC1B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,iBAAA,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;AACjB,gBAAA,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACzB;AACA,gBAAA,OAAO,IAAIA,eAAI,CAAC,WAAW,CAAC;oBAC1B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBACnC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,MAAM;AACP,SAAA;AAGF,KAAA;AACD,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAmB,KAAoB;IACvD,MAAM,KAAK,GAAmB,EAAE,CAAC;AACjC,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACrB,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,CAAa,EACb,IAAoB,KACM;IAC1B,QAAQ,CAAC,CAAC,IAAI;AACZ,QAAA,KAAK,MAAM;YACT,MAAM;AACR,QAAA,KAAK,QAAQ;YACX,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,QAAA,KAAK,YAAY;YACf,MAAM;AACR,QAAA,KAAK,UAAU;YACb,MAAM;AACR,QAAA,KAAK,SAAS;YACZ,MAAM;AACR,QAAA,KAAK,OAAO;YACV,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE;;AAER,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,aAAA;AACH,QAAA,KAAK,aAAa,CAAC;AACnB,QAAA,KAAK,SAAS;YACZ,MAAM;AACR,QAAA,KAAK,UAAU;YACb,MAAM;AACR,QAAA,KAAK,YAAY;YACf,MAAM;AACR,QAAA,KAAK,aAAa;YAChB,MAAM;AACR,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,KAAK,MAAM;YACT,MAAM;AACR,QAAA;YACE,WAAW,CAAE,CAAC,CAAC;AAClB,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,KAAa,KAAsB;AAC5D,IAAA,MAAM,MAAM,GAAGC,+BAAS,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,MAAM,UAAU,GAAqB,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAA,IAAI,IAAI,GAAmB,UAAU,CAAC,CAAC,CAAE,CAAC;AAC1C,IAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE;;YAER,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAC9B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACnB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;;AClWD,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,GAAG,GAAG,CAAC;AACnB,MAAM,kBAAkB,GAA0B;AAChD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAED,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACpC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAEA,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAEF,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAEF,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAEF,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAEF,eAAI,CAAC,WAAW,CAAC,OAAO;AAChC,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAEA,eAAI,CAAC,aAAa,CAAC,KAAK;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,aAAA;AACF,SAAA;AACF,KAAA;CACF,CAAC;AAiDK,MAAM,WAAW,GAAG,CACzB,IAAgB,EAChB,EACE,MAAM,GAAG,QAAQ,EACjB,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAW,EACX,cAAc,EACd,QAAQ,EACR,MAAM,EACN,UAAU,GACL,EACP,MAAoB,KACJ;AAChB,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxC,QAAA,IAAI,EAAE,EAAE;QACR,MAAM;AACN,QAAA,MAAM,EAAE,CAAC;AACV,KAAA,CAAgB,CAAC;AAClB,IAAA,MAAM,GAAG,GAAG,IAAIF,eAAI,CAAC,QAAQ,CAAC;QAC5B,KAAK;QACL,OAAO;QACP,OAAO;QACP,QAAQ;QACR,WAAW;QACX,cAAc;QACd,QAAQ;QACR,MAAM;QACN,UAAU;AACV,QAAA,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/B,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,SAAS,EAAE,gBAAgB;AAC3B,oBAAA,MAAM,EAAE,kBAAkB;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,QAAQ,MAAM;AACZ,QAAA,KAAK,QAAQ;AACX,YAAA,OAAOG,WAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAA,KAAK,MAAM;AACT,YAAA,OAAOA,WAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAA;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAE,GAAY,KAAmB;IAC3E,MAAM,OAAO,GAAkB,EAAE,CAAC;AAElC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxC,MAAM;AACR,YAAA,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtC,MAAM;AACR,YAAA,KAAK,eAAe;gBAClB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAK,CAAC,CAAC,CAAC;gBACvC,MAAM;AACR,YAAA,KAAK,YAAY;gBACf,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5C,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAClC,YAAA,KAAK,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAClC,YAAA,KAAK,WAAW;AACd,gBAAA,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAClC,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,MAAM;AACR,YAAA,KAAK,MAAM;;gBAET,MAAM;AACR,YAAA,KAAK,MAAM;;gBAET,MAAM;AACR,YAAA,KAAK,YAAY;;gBAEf,MAAM;AACR,YAAA,KAAK,oBAAoB;;gBAEvB,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,MAAM;AACR,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,EAAE;AACb,gBAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAChC,OAAO,CAAC,IAAI,CACV,GAAG,YAAY,CAAC,QAAQ,EACnB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CACN,EAAA,EAAA,IAAI,kCAAO,GAAG,CAAC,IAAI,CAAA,EAAA,EAAE,CAAC,IAAI,GAAG,IAAI,EACjC,CAAA,EAAA,CAAA,CAAA,CACH,CAAC;gBACF,MAAM;AACP,aAAA;AACD,YAAA,KAAK,YAAY;;AAEf,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,UAAU,CAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3C,MAAM;AACR,YAAA,KAAK,eAAe;;gBAElB,MAAM;AACR,YAAA,KAAK,gBAAgB;;gBAEnB,MAAM;AACR,YAAA,KAAK,UAAU;gBACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM;AACR,YAAA,KAAK,mBAAmB;;gBAEtB,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjC,MAAM;AACR,YAAA,KAAK,YAAY;gBACf,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpC,MAAM;AACR,YAAA;gBACE,WAAW,CAAK,CAAC,CAAC;gBAClB,MAAM;AACT,SAAA;AACF,KAAA;AACD,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAmB,EAAE,GAAY,KAAI;AACrE,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,OAAO,IAAIH,eAAI,CAAC,SAAS,iBACvB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,EACrC,MAAM,EACJ,GAAG,CAAC,MAAM,GAAG,CAAC;AACZ,cAAE;gBACE,KAAK,EAAEE,wBAAmB,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAChD,aAAA;AACH,cAAE,SAAS,EACZ,GAAC,IAAI;SACL,IAAI,CAAC,OAAO;AACX,cAAE;AACE,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE,gBAAgB;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,iBAAA;AACF,aAAA;AACH,cAAE;AACE,gBAAA,MAAM,EAAE;oBACN,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,iBAAA;aACF,CAAC,GACR,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAiB,EAAE,GAAY,KAAI;AACxE,IAAA,IAAI,OAA0B,CAAC;AAC/B,IAAA,QAAQ,KAAK;AACX,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGF,eAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAClC,MAAM;AACR,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGA,eAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACtC,MAAM;AACR,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGA,eAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACtC,MAAM;AACR,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGA,eAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACtC,MAAM;AACR,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGA,eAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACtC,MAAM;AACR,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,GAAGA,eAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACtC,MAAM;AACT,KAAA;AACD,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;QACxB,OAAO;AACP,QAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AACtC,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,CAAsB,KAAI;AACpD,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;AACxB,QAAA,aAAa,EAAE,IAAI;AACpB,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAoB,EAAE,GAAY,KAAI;AACvE,IAAA,OAAO,YAAY,CAAC,QAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,GAAG,CAAE,EAAA,EAAA,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAG,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAc,EACjE,GAAY,KACV;AACF,IAAA,MAAM,IAAI,GAAa;AACrB,QAAA,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;QACxC,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACnC,QAAA,GAAG,CAAC,IAAI,CACN,GAAG,aAAa,CAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,GAAG,CAAA,EAAA,EACN,IAAI,EAAA,CAAA,CACJ,CACH,CAAC;AACF,QAAA,OAAO,GAAG,CAAC;KACZ,EAAE,EAAmB,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAkB,EAChE,GAAY,KACV;AACF,IAAA,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAe,EAAE,GAAY,KAAI;AACpE,IAAA,MAAM,UAAU,GAAqC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,GAAG,CAAC,CAAC,CAAC,KAAI;AACpE,QAAA,QAAQ,CAAC;AACP,YAAA,KAAK,MAAM;AACT,gBAAA,OAAOA,eAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,YAAA,KAAK,OAAO;AACV,gBAAA,OAAOA,eAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAClC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAOA,eAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACnC,YAAA;AACE,gBAAA,OAAOA,eAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,IAAIA,eAAI,CAAC,KAAK,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvB,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC3C,SAAC,CAAC;AACH,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,EAAE,QAAQ,EAAkB,EAC5B,GAAY,EACZ,UAA4C,KAC1C;AACF,IAAA,OAAO,IAAIA,eAAI,CAAC,QAAQ,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9B,YAAA,OAAO,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,CAAC,CAAC;AACjD,SAAC,CAAC;AACH,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,EAAE,QAAQ,EAAmB,EAC7B,GAAY,EACZ,KAAqC,KACnC;AACF,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;AACxB,QAAA,QAAQ,EAAE;YACR,IAAIA,eAAI,CAAC,SAAS,CAAC;AACjB,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtC,CAAC;AACH,SAAA;AACF,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAc,KAAI;;AAE1C,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjC,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAc,KAAI;;AAEpE,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;QACxB,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjC,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAc,KAAI;AAC1C,IAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAC1B,CAAC,IAAI,KACH,IAAIA,eAAI,CAAC,SAAS,CAAC;AACjB,QAAA,QAAQ,EAAE;YACR,IAAIA,eAAI,CAAC,IAAI,CAAC;AACZ,gBAAA,QAAQ,EAAE,IAAI;aACf,CAAC;AACH,SAAA;AACF,KAAA,CAAC,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAoB,KAAI;AACtD,IAAA,OAAO,IAAIA,eAAI,CAAC,IAAI,CAAC;AACnB,QAAA,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AACpD,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAgB,KAAI;AACnD,IAAA,OAAO,IAAIA,eAAI,CAAC,OAAO,CAAC;QACtB,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAc,KAAI;AACpC,IAAA,OAAO,IAAIA,eAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAc,EAC5C,GAAY,KACV;AACF,IAAA,OAAO,IAAIA,eAAI,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AACtC,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAe,EAC9C,MAAoB,KAClB;AACF,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,IAAA,SAAS,CAAC,GAAG,EAAE,2BAA2B,GAAG,CAAA,CAAE,CAAC,CAAC;IAEjD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;AACrC,IAAA,OAAO,IAAIA,eAAI,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,cAAc,EAAE;YACd,KAAK;YACL,MAAM;AACP,SAAA;AACF,KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAkB,EAAE,GAAY,KAAI;;AAEnE,IAAA,OAAO,IAAIA,eAAI,CAAC,SAAS,CAAC;AACxB,QAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AACtC,KAAA,CAAC,CAAC;AACL,CAAC;;AC/dD,MAAM,MAAM,GAAuB,UAAU,IAAI,GAAG,EAAE,EAAA;IACpD,IAAI,MAAM,GAAiB,EAAE,CAAC;AAE9B,IAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAI;QACvB,OAAO,WAAW,CAAC,IAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAChD,KAAC,CAAC;IAEF,OAAO,CAAO,IAAI,KAAII,eAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACpB,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpCC,oBAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,KAAI;AAC5B,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,QAAA,SAAS,CAAC,aAAa,EAAE,uCAAuC,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;AACF,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;YACxC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;AAC9B,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAkB,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,CAAA,CAAC;AACJ;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import {\n MathRun,\n MathSuperScript,\n MathSubScript,\n MathRadical,\n MathFraction,\n MathSum,\n} from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): MathRun => new MathRun(s);\n\nconst mapMacro = (n: latex.Macro, runs: MathRun[]): MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBrackets(args[0])) {\n return new MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: latex.Node[]): MathRun[] => {\n const group: MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (n: latex.Node, runs: MathRun[]): MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: MathRun[][] = [[]];\n let runs: MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import {\n convertInchesToTwip,\n Packer,\n Document,\n Paragraph,\n ParagraphChild,\n Table,\n TableRow,\n TableCell,\n TableOfContents,\n TextRun,\n ImageRun,\n ExternalHyperlink,\n Math,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n IImageOptions,\n ILevelsOptions,\n FootnoteReferenceRun,\n} from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: ILevelsOptions[] = [\n {\n level: 0,\n format: LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: AlignmentType.START,\n },\n {\n level: 1,\n format: LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<{\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n}>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n indent: number;\n list?: ListInfo;\n}>;\n\nexport interface DocxOptions\n extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n > {\n /**\n * Set output type of `VFile.result`. `buffer` is `Promise<Buffer>`. `blob` is `Promise<Blob>`.\n */\n output?: \"buffer\" | \"blob\";\n /**\n * **You must set** if your markdown includes images. See example for [browser](https://github.com/inokawa/remark-docx/blob/main/stories/playground.stories.tsx) and [Node.js](https://github.com/inokawa/remark-docx/blob/main/src/index.spec.ts).\n */\n imageResolver?: ImageResolver;\n}\n\ntype DocxChild = Paragraph | Table | TableOfContents;\ntype DocxContent = DocxChild | ParagraphChild;\n\nexport interface Footnotes {\n [key: string]: { children: Paragraph[] };\n}\n\n// type to define the return value of `convertNodes`\nexport interface ConvertNodesReturn {\n nodes: DocxContent[];\n footnotes: Footnotes;\n}\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n output = \"buffer\",\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: DocxOptions,\n images: ImageDataMap\n): Promise<any> => {\n const { nodes, footnotes } = convertNodes(node.children, {\n deco: {},\n images,\n indent: 0,\n });\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n footnotes,\n sections: [{ children: nodes as DocxChild[] }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output) {\n case \"buffer\":\n const bufOut = await Packer.toBuffer(doc);\n // feature detection instead of environment detection, but if Buffer exists\n // it's probably Node. If not, return the Uint8Array that JSZip returns\n // when it doesn't detect a Node environment.\n return typeof Buffer === \"function\" ? Buffer.from(bufOut) : bufOut;\n case \"blob\":\n return Packer.toBlob(doc);\n }\n};\n\nconst convertNodes = (\n nodes: mdast.Content[],\n ctx: Context\n): ConvertNodesReturn => {\n const results: DocxContent[] = [];\n let footnotes: Footnotes = {};\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n footnotes[node.identifier] = buildFootnoteDefinition(node, ctx);\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n const { nodes } = convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n });\n results.push(...nodes);\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // do we need context here?\n results.push(buildFootnoteReference(node));\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return {\n nodes: results,\n footnotes,\n };\n};\n\nconst buildParagraph = ({ children }: mdast.Paragraph, ctx: Context) => {\n const list = ctx.list;\n const { nodes } = convertNodes(children, ctx);\n return new Paragraph({\n children: nodes,\n indent:\n ctx.indent > 0\n ? {\n start: convertInchesToTwip(INDENT * ctx.indent),\n }\n : undefined,\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n};\n\nconst buildHeading = ({ children, depth }: mdast.Heading, ctx: Context) => {\n let heading: HeadingLevel;\n switch (depth) {\n case 1:\n heading = HeadingLevel.TITLE;\n break;\n case 2:\n heading = HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = HeadingLevel.HEADING_5;\n break;\n }\n const { nodes } = convertNodes(children, ctx);\n return new Paragraph({\n heading,\n children: nodes,\n });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak) => {\n return new Paragraph({\n thematicBreak: true,\n });\n};\n\nconst buildBlockquote = ({ children }: mdast.Blockquote, ctx: Context) => {\n const { nodes } = convertNodes(children, { ...ctx, indent: ctx.indent + 1 });\n return nodes;\n};\n\nconst buildList = (\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) => {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n};\n\nconst buildListItem = (\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) => {\n const { nodes } = convertNodes(children, ctx);\n return nodes;\n};\n\nconst buildTable = ({ children, align }: mdast.Table, ctx: Context) => {\n const cellAligns: AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return AlignmentType.LEFT;\n case \"right\":\n return AlignmentType.RIGHT;\n case \"center\":\n return AlignmentType.CENTER;\n default:\n return AlignmentType.LEFT;\n }\n });\n\n return new Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n};\n\nconst buildTableRow = (\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: AlignmentType[] | undefined\n) => {\n return new TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n};\n\nconst buildTableCell = (\n { children }: mdast.TableCell,\n ctx: Context,\n align: AlignmentType | undefined\n) => {\n const { nodes } = convertNodes(children, ctx);\n return new TableCell({\n children: [\n new Paragraph({\n alignment: align,\n children: nodes,\n }),\n ],\n });\n};\n\nconst buildHtml = ({ value }: mdast.HTML) => {\n // FIXME: transform to text for now\n return new Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildCode = ({ value, lang: _lang, meta: _meta }: mdast.Code) => {\n // FIXME: transform to text for now\n return new Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildMath = ({ value }: mdast.Math) => {\n return parseLatex(value).map(\n (runs) =>\n new Paragraph({\n children: [\n new Math({\n children: runs,\n }),\n ],\n })\n );\n};\n\nconst buildInlineMath = ({ value }: mdast.InlineMath) => {\n return new Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n};\n\nconst buildText = (text: string, deco: Decoration) => {\n return new TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n};\n\nconst buildBreak = (_: mdast.Break) => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n { children, url, title: _title }: mdast.Link,\n ctx: Context\n) => {\n const { nodes } = convertNodes(children, ctx);\n return new ExternalHyperlink({\n link: url,\n children: nodes,\n });\n};\n\nconst buildImage = (\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) => {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n};\n\nconst buildFootnote = ({ children }: mdast.Footnote, ctx: Context) => {\n // FIXME: transform to paragraph for now\n const { nodes } = convertNodes(children, ctx);\n return new Paragraph({\n children: nodes,\n });\n};\n\nconst buildFootnoteDefinition = (\n { children }: mdast.FootnoteDefinition,\n ctx: Context\n) => {\n return {\n children: children.map((node) => {\n const { nodes } = convertNodes([node], ctx);\n return nodes[0] as Paragraph;\n }),\n };\n};\n\nconst buildFootnoteReference = ({ identifier }: mdast.FootnoteReference) => {\n // do we need Context?\n return new FootnoteReferenceRun(parseInt(identifier));\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, DocxOptions, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type { DocxOptions };\n\nconst plugin: Plugin<[DocxOptions?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["MathRun","MathSuperScript","MathSubScript","MathSum","MathFraction","MathRadical","parseMath","LevelFormat","AlignmentType","convertInchesToTwip","__awaiter","Document","Packer","Paragraph","HeadingLevel","Table","TableRow","TableCell","Math","TextRun","ExternalHyperlink","ImageRun","FootnoteReferenceRun","visit"],"mappings":"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"}
|
package/lib/index.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import { visit } from 'unist-util-visit';
|
|
3
|
-
import
|
|
4
|
-
import { convertInchesToTwip, Packer } from 'docx';
|
|
3
|
+
import { MathRun, MathRadical, MathFraction, MathSum, MathSubScript, MathSuperScript, LevelFormat, AlignmentType, convertInchesToTwip, Document, Packer, Paragraph, HeadingLevel, Table, TableRow, TableCell, Math, TextRun, ExternalHyperlink, ImageRun, FootnoteReferenceRun } from 'docx';
|
|
5
4
|
import { parseMath } from '@unified-latex/unified-latex-util-parse';
|
|
6
5
|
|
|
7
6
|
const unreachable = (_) => {
|
|
@@ -18,7 +17,7 @@ const hasSquareBrackets = (arg) => {
|
|
|
18
17
|
const hasCurlyBrackets = (arg) => {
|
|
19
18
|
return !!arg && arg.openMark === "{" && arg.closeMark === "}";
|
|
20
19
|
};
|
|
21
|
-
const mapString = (s) => new
|
|
20
|
+
const mapString = (s) => new MathRun(s);
|
|
22
21
|
const mapMacro = (n, runs) => {
|
|
23
22
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
24
23
|
switch (n.content) {
|
|
@@ -228,7 +227,7 @@ const mapMacro = (n, runs) => {
|
|
|
228
227
|
const prev = runs.pop();
|
|
229
228
|
if (!prev)
|
|
230
229
|
break;
|
|
231
|
-
return new
|
|
230
|
+
return new MathSuperScript({
|
|
232
231
|
children: [prev],
|
|
233
232
|
superScript: mapGroup((_c = (_b = (_a = n.args) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : []),
|
|
234
233
|
});
|
|
@@ -237,7 +236,7 @@ const mapMacro = (n, runs) => {
|
|
|
237
236
|
const prev = runs.pop();
|
|
238
237
|
if (!prev)
|
|
239
238
|
break;
|
|
240
|
-
return new
|
|
239
|
+
return new MathSubScript({
|
|
241
240
|
children: [prev],
|
|
242
241
|
subScript: mapGroup((_f = (_e = (_d = n.args) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.content) !== null && _f !== void 0 ? _f : []),
|
|
243
242
|
});
|
|
@@ -250,7 +249,7 @@ const mapMacro = (n, runs) => {
|
|
|
250
249
|
break;
|
|
251
250
|
case "sum": {
|
|
252
251
|
// TODO: support superscript and subscript
|
|
253
|
-
return new
|
|
252
|
+
return new MathSum({
|
|
254
253
|
children: [],
|
|
255
254
|
});
|
|
256
255
|
}
|
|
@@ -263,7 +262,7 @@ const mapMacro = (n, runs) => {
|
|
|
263
262
|
if (args.length === 2 &&
|
|
264
263
|
hasCurlyBrackets(args[0]) &&
|
|
265
264
|
hasCurlyBrackets(args[1])) {
|
|
266
|
-
return new
|
|
265
|
+
return new MathFraction({
|
|
267
266
|
numerator: mapGroup(args[0].content),
|
|
268
267
|
denominator: mapGroup(args[1].content),
|
|
269
268
|
});
|
|
@@ -273,14 +272,14 @@ const mapMacro = (n, runs) => {
|
|
|
273
272
|
case "sqrt": {
|
|
274
273
|
const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
|
|
275
274
|
if (args.length === 1 && hasCurlyBrackets(args[0])) {
|
|
276
|
-
return new
|
|
275
|
+
return new MathRadical({
|
|
277
276
|
children: mapGroup(args[0].content),
|
|
278
277
|
});
|
|
279
278
|
}
|
|
280
279
|
if (args.length === 2 &&
|
|
281
280
|
hasSquareBrackets(args[0]) &&
|
|
282
281
|
hasCurlyBrackets(args[1])) {
|
|
283
|
-
return new
|
|
282
|
+
return new MathRadical({
|
|
284
283
|
children: mapGroup(args[1].content),
|
|
285
284
|
degree: mapGroup(args[0].content),
|
|
286
285
|
});
|
|
@@ -358,15 +357,15 @@ const INDENT = 0.5;
|
|
|
358
357
|
const DEFAULT_NUMBERINGS = [
|
|
359
358
|
{
|
|
360
359
|
level: 0,
|
|
361
|
-
format:
|
|
360
|
+
format: LevelFormat.DECIMAL,
|
|
362
361
|
text: "%1.",
|
|
363
|
-
alignment:
|
|
362
|
+
alignment: AlignmentType.START,
|
|
364
363
|
},
|
|
365
364
|
{
|
|
366
365
|
level: 1,
|
|
367
|
-
format:
|
|
366
|
+
format: LevelFormat.DECIMAL,
|
|
368
367
|
text: "%2.",
|
|
369
|
-
alignment:
|
|
368
|
+
alignment: AlignmentType.START,
|
|
370
369
|
style: {
|
|
371
370
|
paragraph: {
|
|
372
371
|
indent: { start: convertInchesToTwip(INDENT * 1) },
|
|
@@ -375,9 +374,9 @@ const DEFAULT_NUMBERINGS = [
|
|
|
375
374
|
},
|
|
376
375
|
{
|
|
377
376
|
level: 2,
|
|
378
|
-
format:
|
|
377
|
+
format: LevelFormat.DECIMAL,
|
|
379
378
|
text: "%3.",
|
|
380
|
-
alignment:
|
|
379
|
+
alignment: AlignmentType.START,
|
|
381
380
|
style: {
|
|
382
381
|
paragraph: {
|
|
383
382
|
indent: { start: convertInchesToTwip(INDENT * 2) },
|
|
@@ -386,9 +385,9 @@ const DEFAULT_NUMBERINGS = [
|
|
|
386
385
|
},
|
|
387
386
|
{
|
|
388
387
|
level: 3,
|
|
389
|
-
format:
|
|
388
|
+
format: LevelFormat.DECIMAL,
|
|
390
389
|
text: "%4.",
|
|
391
|
-
alignment:
|
|
390
|
+
alignment: AlignmentType.START,
|
|
392
391
|
style: {
|
|
393
392
|
paragraph: {
|
|
394
393
|
indent: { start: convertInchesToTwip(INDENT * 3) },
|
|
@@ -397,9 +396,9 @@ const DEFAULT_NUMBERINGS = [
|
|
|
397
396
|
},
|
|
398
397
|
{
|
|
399
398
|
level: 4,
|
|
400
|
-
format:
|
|
399
|
+
format: LevelFormat.DECIMAL,
|
|
401
400
|
text: "%5.",
|
|
402
|
-
alignment:
|
|
401
|
+
alignment: AlignmentType.START,
|
|
403
402
|
style: {
|
|
404
403
|
paragraph: {
|
|
405
404
|
indent: { start: convertInchesToTwip(INDENT * 4) },
|
|
@@ -408,9 +407,9 @@ const DEFAULT_NUMBERINGS = [
|
|
|
408
407
|
},
|
|
409
408
|
{
|
|
410
409
|
level: 5,
|
|
411
|
-
format:
|
|
410
|
+
format: LevelFormat.DECIMAL,
|
|
412
411
|
text: "%6.",
|
|
413
|
-
alignment:
|
|
412
|
+
alignment: AlignmentType.START,
|
|
414
413
|
style: {
|
|
415
414
|
paragraph: {
|
|
416
415
|
indent: { start: convertInchesToTwip(INDENT * 5) },
|
|
@@ -418,13 +417,13 @@ const DEFAULT_NUMBERINGS = [
|
|
|
418
417
|
},
|
|
419
418
|
},
|
|
420
419
|
];
|
|
421
|
-
const mdastToDocx = (node, { output = "buffer", title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) => {
|
|
422
|
-
const nodes = convertNodes(node.children, {
|
|
420
|
+
const mdastToDocx = (node, { output = "buffer", title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) => __awaiter(void 0, void 0, void 0, function* () {
|
|
421
|
+
const { nodes, footnotes } = convertNodes(node.children, {
|
|
423
422
|
deco: {},
|
|
424
423
|
images,
|
|
425
424
|
indent: 0,
|
|
426
425
|
});
|
|
427
|
-
const doc = new
|
|
426
|
+
const doc = new Document({
|
|
428
427
|
title,
|
|
429
428
|
subject,
|
|
430
429
|
creator,
|
|
@@ -434,6 +433,7 @@ const mdastToDocx = (node, { output = "buffer", title, subject, creator, keyword
|
|
|
434
433
|
revision,
|
|
435
434
|
styles,
|
|
436
435
|
background,
|
|
436
|
+
footnotes,
|
|
437
437
|
sections: [{ children: nodes }],
|
|
438
438
|
numbering: {
|
|
439
439
|
config: [
|
|
@@ -446,13 +446,18 @@ const mdastToDocx = (node, { output = "buffer", title, subject, creator, keyword
|
|
|
446
446
|
});
|
|
447
447
|
switch (output) {
|
|
448
448
|
case "buffer":
|
|
449
|
-
|
|
449
|
+
const bufOut = yield Packer.toBuffer(doc);
|
|
450
|
+
// feature detection instead of environment detection, but if Buffer exists
|
|
451
|
+
// it's probably Node. If not, return the Uint8Array that JSZip returns
|
|
452
|
+
// when it doesn't detect a Node environment.
|
|
453
|
+
return typeof Buffer === "function" ? Buffer.from(bufOut) : bufOut;
|
|
450
454
|
case "blob":
|
|
451
455
|
return Packer.toBlob(doc);
|
|
452
456
|
}
|
|
453
|
-
};
|
|
457
|
+
});
|
|
454
458
|
const convertNodes = (nodes, ctx) => {
|
|
455
459
|
const results = [];
|
|
460
|
+
let footnotes = {};
|
|
456
461
|
for (const node of nodes) {
|
|
457
462
|
switch (node.type) {
|
|
458
463
|
case "paragraph":
|
|
@@ -495,7 +500,7 @@ const convertNodes = (nodes, ctx) => {
|
|
|
495
500
|
// FIXME: unimplemented
|
|
496
501
|
break;
|
|
497
502
|
case "footnoteDefinition":
|
|
498
|
-
|
|
503
|
+
footnotes[node.identifier] = buildFootnoteDefinition(node, ctx);
|
|
499
504
|
break;
|
|
500
505
|
case "text":
|
|
501
506
|
results.push(buildText(node.value, ctx.deco));
|
|
@@ -504,7 +509,8 @@ const convertNodes = (nodes, ctx) => {
|
|
|
504
509
|
case "strong":
|
|
505
510
|
case "delete": {
|
|
506
511
|
const { type, children } = node;
|
|
507
|
-
|
|
512
|
+
const { nodes } = convertNodes(children, Object.assign(Object.assign({}, ctx), { deco: Object.assign(Object.assign({}, ctx.deco), { [type]: true }) }));
|
|
513
|
+
results.push(...nodes);
|
|
508
514
|
break;
|
|
509
515
|
}
|
|
510
516
|
case "inlineCode":
|
|
@@ -530,7 +536,8 @@ const convertNodes = (nodes, ctx) => {
|
|
|
530
536
|
results.push(buildFootnote(node, ctx));
|
|
531
537
|
break;
|
|
532
538
|
case "footnoteReference":
|
|
533
|
-
//
|
|
539
|
+
// do we need context here?
|
|
540
|
+
results.push(buildFootnoteReference(node));
|
|
534
541
|
break;
|
|
535
542
|
case "math":
|
|
536
543
|
results.push(...buildMath(node));
|
|
@@ -543,11 +550,15 @@ const convertNodes = (nodes, ctx) => {
|
|
|
543
550
|
break;
|
|
544
551
|
}
|
|
545
552
|
}
|
|
546
|
-
return
|
|
553
|
+
return {
|
|
554
|
+
nodes: results,
|
|
555
|
+
footnotes,
|
|
556
|
+
};
|
|
547
557
|
};
|
|
548
558
|
const buildParagraph = ({ children }, ctx) => {
|
|
549
559
|
const list = ctx.list;
|
|
550
|
-
|
|
560
|
+
const { nodes } = convertNodes(children, ctx);
|
|
561
|
+
return new Paragraph(Object.assign({ children: nodes, indent: ctx.indent > 0
|
|
551
562
|
? {
|
|
552
563
|
start: convertInchesToTwip(INDENT * ctx.indent),
|
|
553
564
|
}
|
|
@@ -569,36 +580,38 @@ const buildHeading = ({ children, depth }, ctx) => {
|
|
|
569
580
|
let heading;
|
|
570
581
|
switch (depth) {
|
|
571
582
|
case 1:
|
|
572
|
-
heading =
|
|
583
|
+
heading = HeadingLevel.TITLE;
|
|
573
584
|
break;
|
|
574
585
|
case 2:
|
|
575
|
-
heading =
|
|
586
|
+
heading = HeadingLevel.HEADING_1;
|
|
576
587
|
break;
|
|
577
588
|
case 3:
|
|
578
|
-
heading =
|
|
589
|
+
heading = HeadingLevel.HEADING_2;
|
|
579
590
|
break;
|
|
580
591
|
case 4:
|
|
581
|
-
heading =
|
|
592
|
+
heading = HeadingLevel.HEADING_3;
|
|
582
593
|
break;
|
|
583
594
|
case 5:
|
|
584
|
-
heading =
|
|
595
|
+
heading = HeadingLevel.HEADING_4;
|
|
585
596
|
break;
|
|
586
597
|
case 6:
|
|
587
|
-
heading =
|
|
598
|
+
heading = HeadingLevel.HEADING_5;
|
|
588
599
|
break;
|
|
589
600
|
}
|
|
590
|
-
|
|
601
|
+
const { nodes } = convertNodes(children, ctx);
|
|
602
|
+
return new Paragraph({
|
|
591
603
|
heading,
|
|
592
|
-
children:
|
|
604
|
+
children: nodes,
|
|
593
605
|
});
|
|
594
606
|
};
|
|
595
607
|
const buildThematicBreak = (_) => {
|
|
596
|
-
return new
|
|
608
|
+
return new Paragraph({
|
|
597
609
|
thematicBreak: true,
|
|
598
610
|
});
|
|
599
611
|
};
|
|
600
612
|
const buildBlockquote = ({ children }, ctx) => {
|
|
601
|
-
|
|
613
|
+
const { nodes } = convertNodes(children, Object.assign(Object.assign({}, ctx), { indent: ctx.indent + 1 }));
|
|
614
|
+
return nodes;
|
|
602
615
|
};
|
|
603
616
|
const buildList = ({ children, ordered, start: _start, spread: _spread }, ctx) => {
|
|
604
617
|
const list = {
|
|
@@ -611,72 +624,74 @@ const buildList = ({ children, ordered, start: _start, spread: _spread }, ctx) =
|
|
|
611
624
|
}, []);
|
|
612
625
|
};
|
|
613
626
|
const buildListItem = ({ children, checked: _checked, spread: _spread }, ctx) => {
|
|
614
|
-
|
|
627
|
+
const { nodes } = convertNodes(children, ctx);
|
|
628
|
+
return nodes;
|
|
615
629
|
};
|
|
616
630
|
const buildTable = ({ children, align }, ctx) => {
|
|
617
631
|
const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
|
|
618
632
|
switch (a) {
|
|
619
633
|
case "left":
|
|
620
|
-
return
|
|
634
|
+
return AlignmentType.LEFT;
|
|
621
635
|
case "right":
|
|
622
|
-
return
|
|
636
|
+
return AlignmentType.RIGHT;
|
|
623
637
|
case "center":
|
|
624
|
-
return
|
|
638
|
+
return AlignmentType.CENTER;
|
|
625
639
|
default:
|
|
626
|
-
return
|
|
640
|
+
return AlignmentType.LEFT;
|
|
627
641
|
}
|
|
628
642
|
});
|
|
629
|
-
return new
|
|
643
|
+
return new Table({
|
|
630
644
|
rows: children.map((r) => {
|
|
631
645
|
return buildTableRow(r, ctx, cellAligns);
|
|
632
646
|
}),
|
|
633
647
|
});
|
|
634
648
|
};
|
|
635
649
|
const buildTableRow = ({ children }, ctx, cellAligns) => {
|
|
636
|
-
return new
|
|
650
|
+
return new TableRow({
|
|
637
651
|
children: children.map((c, i) => {
|
|
638
652
|
return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
|
|
639
653
|
}),
|
|
640
654
|
});
|
|
641
655
|
};
|
|
642
656
|
const buildTableCell = ({ children }, ctx, align) => {
|
|
643
|
-
|
|
657
|
+
const { nodes } = convertNodes(children, ctx);
|
|
658
|
+
return new TableCell({
|
|
644
659
|
children: [
|
|
645
|
-
new
|
|
660
|
+
new Paragraph({
|
|
646
661
|
alignment: align,
|
|
647
|
-
children:
|
|
662
|
+
children: nodes,
|
|
648
663
|
}),
|
|
649
664
|
],
|
|
650
665
|
});
|
|
651
666
|
};
|
|
652
667
|
const buildHtml = ({ value }) => {
|
|
653
668
|
// FIXME: transform to text for now
|
|
654
|
-
return new
|
|
669
|
+
return new Paragraph({
|
|
655
670
|
children: [buildText(value, {})],
|
|
656
671
|
});
|
|
657
672
|
};
|
|
658
673
|
const buildCode = ({ value, lang: _lang, meta: _meta }) => {
|
|
659
674
|
// FIXME: transform to text for now
|
|
660
|
-
return new
|
|
675
|
+
return new Paragraph({
|
|
661
676
|
children: [buildText(value, {})],
|
|
662
677
|
});
|
|
663
678
|
};
|
|
664
679
|
const buildMath = ({ value }) => {
|
|
665
|
-
return parseLatex(value).map((runs) => new
|
|
680
|
+
return parseLatex(value).map((runs) => new Paragraph({
|
|
666
681
|
children: [
|
|
667
|
-
new
|
|
682
|
+
new Math({
|
|
668
683
|
children: runs,
|
|
669
684
|
}),
|
|
670
685
|
],
|
|
671
686
|
}));
|
|
672
687
|
};
|
|
673
688
|
const buildInlineMath = ({ value }) => {
|
|
674
|
-
return new
|
|
689
|
+
return new Math({
|
|
675
690
|
children: parseLatex(value).flatMap((runs) => runs),
|
|
676
691
|
});
|
|
677
692
|
};
|
|
678
693
|
const buildText = (text, deco) => {
|
|
679
|
-
return new
|
|
694
|
+
return new TextRun({
|
|
680
695
|
text,
|
|
681
696
|
bold: deco.strong,
|
|
682
697
|
italics: deco.emphasis,
|
|
@@ -684,19 +699,20 @@ const buildText = (text, deco) => {
|
|
|
684
699
|
});
|
|
685
700
|
};
|
|
686
701
|
const buildBreak = (_) => {
|
|
687
|
-
return new
|
|
702
|
+
return new TextRun({ text: "", break: 1 });
|
|
688
703
|
};
|
|
689
704
|
const buildLink = ({ children, url, title: _title }, ctx) => {
|
|
690
|
-
|
|
705
|
+
const { nodes } = convertNodes(children, ctx);
|
|
706
|
+
return new ExternalHyperlink({
|
|
691
707
|
link: url,
|
|
692
|
-
children:
|
|
708
|
+
children: nodes,
|
|
693
709
|
});
|
|
694
710
|
};
|
|
695
711
|
const buildImage = ({ url, title: _title, alt: _alt }, images) => {
|
|
696
712
|
const img = images[url];
|
|
697
713
|
invariant(img, `Fetch image was failed: ${url}`);
|
|
698
714
|
const { image, width, height } = img;
|
|
699
|
-
return new
|
|
715
|
+
return new ImageRun({
|
|
700
716
|
data: image,
|
|
701
717
|
transformation: {
|
|
702
718
|
width,
|
|
@@ -706,10 +722,23 @@ const buildImage = ({ url, title: _title, alt: _alt }, images) => {
|
|
|
706
722
|
};
|
|
707
723
|
const buildFootnote = ({ children }, ctx) => {
|
|
708
724
|
// FIXME: transform to paragraph for now
|
|
709
|
-
|
|
710
|
-
|
|
725
|
+
const { nodes } = convertNodes(children, ctx);
|
|
726
|
+
return new Paragraph({
|
|
727
|
+
children: nodes,
|
|
711
728
|
});
|
|
712
729
|
};
|
|
730
|
+
const buildFootnoteDefinition = ({ children }, ctx) => {
|
|
731
|
+
return {
|
|
732
|
+
children: children.map((node) => {
|
|
733
|
+
const { nodes } = convertNodes([node], ctx);
|
|
734
|
+
return nodes[0];
|
|
735
|
+
}),
|
|
736
|
+
};
|
|
737
|
+
};
|
|
738
|
+
const buildFootnoteReference = ({ identifier }) => {
|
|
739
|
+
// do we need Context?
|
|
740
|
+
return new FootnoteReferenceRun(parseInt(identifier));
|
|
741
|
+
};
|
|
713
742
|
|
|
714
743
|
const plugin = function (opts = {}) {
|
|
715
744
|
let images = {};
|