{"version":3,"file":"index.mjs","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/mdast-to-docx.ts","../src/src/plugin.ts"],"sourcesContent":["/**\n * @internal\n */\nexport const unreachable = (_: never): never => {\n  throw new Error(\"unreachable\");\n};\n\n/**\n * @internal\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\n/**\n * @internal\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  CheckBox,\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\";\nimport { visit } from \"unist-util-visit\";\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  checked?: boolean;\n}>;\n\ntype Definition = Record<string, string>;\ntype FootnoteDefinition = Readonly<{ children: Paragraph[] }>;\n\ntype FootnoteRegistry = {\n  ref: (id: string) => number;\n  def: (id: string, def: FootnoteDefinition) => void;\n  footnotes: () => {\n    [key: string]: FootnoteDefinition;\n  };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n  const idToInternalId = new Map<string, number>();\n  const defs = new Map<number, FootnoteDefinition>();\n\n  const getId = (id: string): number => {\n    let internalId = idToInternalId.get(id);\n    if (internalId == null) {\n      idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n    }\n    return internalId;\n  };\n\n  return {\n    ref: (id) => {\n      return getId(id);\n    },\n    def: (id, def) => {\n      const internalId = getId(id);\n      defs.set(internalId, def);\n    },\n    footnotes: () => {\n      return defs.entries().reduce(\n        (acc, [key, def]) => {\n          acc[key] = def;\n          return acc;\n        },\n        {} as {\n          [key: string]: FootnoteDefinition;\n        },\n      );\n    },\n  };\n};\n\ntype Context = Readonly<{\n  deco: Decoration;\n  images: Readonly<ImageDataMap>;\n  indent: number;\n  list?: ListInfo;\n  def: Readonly<Definition>;\n  footnote: FootnoteRegistry;\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 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 definition: Definition = {};\n  visit(node, \"definition\", (node) => {\n    definition[node.identifier] = node.url;\n  });\n\n  const footnote = createFootnoteRegistry();\n  const nodes = convertNodes(node.children, {\n    deco: {},\n    images,\n    indent: 0,\n    def: definition,\n    footnote,\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: footnote.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 = (nodes: mdast.Content[], ctx: Context): DocxContent[] => {\n  const results: DocxContent[] = [];\n  for (const node of nodes) {\n    switch (node.type) {\n      case \"paragraph\": {\n        results.push(buildParagraph(node, ctx));\n        break;\n      }\n      case \"heading\": {\n        results.push(buildHeading(node, ctx));\n        break;\n      }\n      case \"thematicBreak\":\n        results.push(buildThematicBreak(node));\n        break;\n      case \"blockquote\": {\n        results.push(...buildBlockquote(node, ctx));\n        break;\n      }\n      case \"list\": {\n        results.push(...buildList(node, ctx));\n        break;\n      }\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        // noop\n        break;\n      case \"footnoteDefinition\": {\n        registerFootnoteDefinition(node, ctx);\n        break;\n      }\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      }\n      case \"image\":\n        results.push(buildImage(node, ctx.images));\n        break;\n      case \"linkReference\":\n        results.push(...buildLinkReference(node, ctx));\n        break;\n      case \"imageReference\": {\n        const image = buildImageReference(node, ctx);\n        if (image) {\n          results.push(image);\n        }\n        break;\n      }\n      case \"footnote\": {\n        // inline footnote was removed in mdast v5\n        break;\n      }\n      case \"footnoteReference\":\n        results.push(buildFootnoteReference(node, ctx));\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 = (\n  { children }: mdast.Paragraph,\n  ctx: Context,\n): DocxContent => {\n  const list = ctx.list;\n  const nodes = convertNodes(children, ctx);\n\n  if (list && list.checked != null) {\n    nodes.unshift(\n      new CheckBox({\n        checked: list.checked,\n        checkedState: { value: \"2611\" },\n        uncheckedState: { value: \"2610\" },\n      }),\n    );\n  }\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 = (\n  { children, depth }: mdast.Heading,\n  ctx: Context,\n): DocxContent => {\n  let headingLevel: HeadingLevel;\n  switch (depth) {\n    case 1:\n      headingLevel = HeadingLevel.TITLE;\n      break;\n    case 2:\n      headingLevel = HeadingLevel.HEADING_1;\n      break;\n    case 3:\n      headingLevel = HeadingLevel.HEADING_2;\n      break;\n    case 4:\n      headingLevel = HeadingLevel.HEADING_3;\n      break;\n    case 5:\n      headingLevel = HeadingLevel.HEADING_4;\n      break;\n    case 6:\n      headingLevel = HeadingLevel.HEADING_5;\n      break;\n  }\n  const nodes = convertNodes(children, ctx);\n  return new Paragraph({\n    heading: headingLevel,\n    children: nodes,\n  });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak): DocxContent => {\n  return new Paragraph({\n    thematicBreak: true,\n  });\n};\n\nconst buildBlockquote = (\n  { children }: mdast.Blockquote,\n  ctx: Context,\n): DocxContent[] => {\n  return convertNodes(children, {\n    ...ctx,\n    indent: ctx.indent + 1,\n  });\n};\n\nconst buildList = (\n  { children, ordered, start: _start, spread: _spread }: mdast.List,\n  ctx: Context,\n): DocxContent[] => {\n  const list: ListInfo = {\n    level: ctx.list ? ctx.list.level + 1 : 0,\n    ordered: !!ordered,\n  };\n  return children.flatMap((item) => {\n    return buildListItem(item, {\n      ...ctx,\n      list,\n    });\n  });\n};\n\nconst buildListItem = (\n  { children, checked, spread: _spread }: mdast.ListItem,\n  ctx: Context,\n): DocxContent[] => {\n  return convertNodes(children, {\n    ...ctx,\n    ...(ctx.list && { list: { ...ctx.list, checked: checked ?? undefined } }),\n  });\n};\n\nconst buildTable = (\n  { children, align }: mdast.Table,\n  ctx: Context,\n): DocxContent => {\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): TableRow => {\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): TableCell => {\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): DocxContent => {\n  // FIXME: transform to text for now\n  return new Paragraph({\n    children: [buildText(value, {})],\n  });\n};\n\nconst buildCode = ({\n  value,\n  lang: _lang,\n  meta: _meta,\n}: mdast.Code): DocxContent => {\n  // FIXME: transform to text for now\n  return new Paragraph({\n    children: [buildText(value, {})],\n  });\n};\n\nconst buildMath = ({ value }: mdast.Math): DocxContent[] => {\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): DocxContent => {\n  return new Math({\n    children: parseLatex(value).flatMap((runs) => runs),\n  });\n};\n\nconst buildText = (text: string, deco: Decoration): DocxContent => {\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): DocxContent => {\n  return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n  { children, url }: Pick<mdast.Link, \"children\" | \"url\">,\n  ctx: Context,\n): DocxContent => {\n  const nodes = convertNodes(children, ctx);\n  return new ExternalHyperlink({\n    link: url,\n    children: nodes,\n  });\n};\n\nconst buildImage = (\n  { url }: Pick<mdast.Image, \"url\">,\n  images: ImageDataMap,\n): DocxContent => {\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 buildLinkReference = (\n  { children, identifier }: mdast.LinkReference,\n  ctx: Context,\n): DocxContent[] => {\n  const def = ctx.def[identifier];\n  if (def == null) {\n    return convertNodes(children, ctx);\n  }\n  return [buildLink({ children, url: def }, ctx)];\n};\n\nconst buildImageReference = (\n  { identifier }: mdast.ImageReference,\n  ctx: Context,\n): DocxContent | undefined => {\n  const def = ctx.def[identifier];\n  if (def == null) {\n    return;\n  }\n  return buildImage({ url: def }, ctx.images);\n};\n\nconst registerFootnoteDefinition = (\n  { children, identifier }: mdast.FootnoteDefinition,\n  ctx: Context,\n): void => {\n  const definition: FootnoteDefinition = {\n    children: children.map((node) => {\n      // Convert each node and extract the first result as a paragraph\n      const nodes = convertNodes([node], ctx);\n      if (nodes[0] instanceof Paragraph) {\n        return nodes[0] as Paragraph;\n      }\n      // For non-paragraph content, wrap in a paragraph\n      return new Paragraph({ children: nodes });\n    }),\n  };\n  ctx.footnote.def(identifier, definition);\n};\n\nconst buildFootnoteReference = (\n  { identifier }: mdast.FootnoteReference,\n  ctx: Context,\n): DocxContent => {\n  return new FootnoteReferenceRun(ctx.footnote.ref(identifier));\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport {\n  mdastToDocx,\n  DocxOptions,\n  ImageDataMap,\n  ImageData,\n} from \"./mdast-to-docx\";\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 | mdast.Definition)[] = [];\n    visit(node as mdast.Root, \"image\", (node) => {\n      imageList.push(node);\n    });\n    const defs = new Map<string, mdast.Definition>();\n    visit(node as mdast.Root, \"definition\", (node) => {\n      defs.set(node.identifier, node);\n    });\n    visit(node as mdast.Root, \"imageReference\", (node) => {\n      const maybeImage = defs.get(node.identifier)!;\n      if (maybeImage) {\n        imageList.push(maybeImage);\n      }\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 resolved = new Set<string>();\n    const promises: Promise<{ img: ImageData; url: string }>[] = [];\n    imageList.forEach(({ url }) => {\n      if (!resolved.has(url)) {\n        resolved.add(url);\n        promises.push(\n          (async () => {\n            const img = await imageResolver(url);\n            return { img, url };\n          })(),\n        );\n      }\n    });\n    images = (await Promise.all(promises)).reduce((acc, { img, url }) => {\n      acc[url] = img;\n      return acc;\n    }, {} as ImageDataMap);\n    return node;\n  };\n};\nexport default plugin;\n"],"names":[],"mappings":"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"}