@willwang-io/react-djot 0.1.5 → 0.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/renderNode.tsx","../src/Djot.tsx"],"names":["isValidElement","cloneElement","createElement","Fragment","parse","jsx"],"mappings":"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","file":"index.cjs","sourcesContent":["import { cloneElement, createElement, Fragment, isValidElement } from \"react\";\nimport type React from \"react\";\nimport type {\n DjotBaseNode,\n DjotBlockQuoteNode,\n DjotBlockquoteNode,\n DjotCaptionNode,\n DjotCellNode,\n DjotCodeBlockNode,\n DjotCodeNode,\n DjotComponentPropsMap,\n DjotComponents,\n DjotDeleteNode,\n DjotDivNode,\n DjotDoubleQuotedNode,\n DjotDisplayMathNode,\n DjotDocNode,\n DjotFootnoteReferenceNode,\n DjotHardBreakNode,\n DjotHeadingNode,\n DjotHighlightedNode,\n DjotImageNode,\n DjotInlineMathNode,\n DjotInsertNode,\n DjotLinkNode,\n DjotMarkNode,\n DjotNode,\n DjotOrderedListNode,\n DjotParentNode,\n DjotRowNode,\n DjotSectionNode,\n DjotSoftBreakNode,\n DjotSmartPunctuationNode,\n DjotSmartPunctuationType,\n DjotSingleQuotedNode,\n DjotStrNode,\n DjotSubscriptNode,\n DjotSuperscriptNode,\n DjotSupeNode,\n DjotTableAlignment,\n DjotTableNode,\n DjotVerbatimNode\n} from \"./types\";\n\nexport interface RenderNodeOptions {\n components?: DjotComponents | undefined;\n footnoteState?: FootnoteState | undefined;\n key?: React.Key;\n}\n\ntype ComponentKey = keyof DjotComponentPropsMap;\n\ninterface FootnoteState {\n firstRefIdByLabel: Map<string, string>;\n indexByLabel: Map<string, number>;\n order: string[];\n refCountByLabel: Map<string, number>;\n}\n\nfunction isParentNode(node: DjotBaseNode): node is DjotParentNode {\n return Array.isArray((node as DjotParentNode).children);\n}\n\nfunction isSoftBreakNode(node: DjotNode): node is DjotSoftBreakNode {\n return node.tag === \"soft_break\" || node.tag === \"softbreak\";\n}\n\nfunction isHardBreakNode(node: DjotNode): node is DjotHardBreakNode {\n return node.tag === \"hard_break\" || node.tag === \"hardbreak\";\n}\n\nfunction pickComponent(\n components: DjotComponents | undefined,\n primary: ComponentKey,\n alias?: ComponentKey\n): React.ElementType | undefined {\n if (!components) {\n return undefined;\n }\n\n return (components[primary] ?? (alias ? components[alias] : undefined)) as\n | React.ElementType\n | undefined;\n}\n\nfunction renderChildren(\n children: DjotNode[],\n components?: DjotComponents,\n footnoteState?: FootnoteState\n): React.ReactNode[] {\n return children.map((child, index) =>\n renderNode(child, {\n components,\n footnoteState,\n key: index\n })\n );\n}\n\nfunction collectFootnoteReferences(nodes: DjotNode[], indexByLabel: Map<string, number>, order: string[]): void {\n for (const node of nodes) {\n if (node.tag === \"footnote_reference\") {\n const label = node.text;\n if (!indexByLabel.has(label)) {\n const index = order.length + 1;\n indexByLabel.set(label, index);\n order.push(label);\n }\n continue;\n }\n\n if (isParentNode(node)) {\n collectFootnoteReferences(node.children, indexByLabel, order);\n }\n }\n}\n\nfunction createFootnoteState(node: DjotDocNode): FootnoteState {\n const indexByLabel = new Map<string, number>();\n const order: string[] = [];\n\n collectFootnoteReferences(node.children, indexByLabel, order);\n\n return {\n firstRefIdByLabel: new Map<string, string>(),\n indexByLabel,\n order,\n refCountByLabel: new Map<string, number>()\n };\n}\n\nfunction ensureFootnoteIndex(label: string, footnoteState: FootnoteState): number {\n const existing = footnoteState.indexByLabel.get(label);\n if (existing) {\n return existing;\n }\n\n const index = footnoteState.order.length + 1;\n footnoteState.indexByLabel.set(label, index);\n footnoteState.order.push(label);\n return index;\n}\n\nfunction appendBacklink(\n nodes: React.ReactNode[],\n backlink: React.ReactNode\n): React.ReactNode[] {\n if (nodes.length === 0) {\n return [backlink];\n }\n\n const next = nodes.slice();\n const lastIndex = next.length - 1;\n const last = next[lastIndex];\n\n if (isValidElement<{ children?: React.ReactNode }>(last)) {\n next[lastIndex] = cloneElement(last, undefined, last.props.children, backlink);\n return next;\n }\n\n next.push(backlink);\n return next;\n}\n\nfunction toSmartPunctuation(type: DjotSmartPunctuationType, fallback: string): string {\n switch (type) {\n case \"left_double_quote\":\n return \"\\u201c\";\n case \"right_double_quote\":\n return \"\\u201d\";\n case \"left_single_quote\":\n return \"\\u2018\";\n case \"right_single_quote\":\n return \"\\u2019\";\n case \"em_dash\":\n return \"\\u2014\";\n case \"en_dash\":\n return \"\\u2013\";\n case \"ellipses\":\n return \"\\u2026\";\n default:\n return fallback;\n }\n}\n\nfunction toAltText(nodes: DjotNode[]): string {\n let output = \"\";\n\n for (const node of nodes) {\n switch (node.tag) {\n case \"str\":\n case \"code\":\n case \"verbatim\":\n case \"inline_math\":\n case \"display_math\":\n case \"code_block\":\n output += node.text;\n break;\n case \"smart_punctuation\":\n output += toSmartPunctuation(node.type, node.text);\n break;\n case \"double_quoted\":\n output += `\\u201c${toAltText(node.children)}\\u201d`;\n break;\n case \"single_quoted\":\n output += `\\u2018${toAltText(node.children)}\\u2019`;\n break;\n case \"soft_break\":\n case \"softbreak\":\n output += \" \";\n break;\n case \"hard_break\":\n case \"hardbreak\":\n output += \"\\n\";\n break;\n default:\n if (isParentNode(node)) {\n output += toAltText(node.children);\n }\n break;\n }\n }\n\n return output.trim();\n}\n\nfunction clampHeadingLevel(level: number): 1 | 2 | 3 | 4 | 5 | 6 {\n if (level <= 1) {\n return 1;\n }\n\n if (level >= 6) {\n return 6;\n }\n\n return level as 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nfunction withKey<T extends Record<string, unknown>>(props: T, key?: React.Key): T & { key?: React.Key } {\n if (key === undefined) {\n return props;\n }\n\n return {\n ...props,\n key\n };\n}\n\nfunction toDomPropsFromAttributes(attributes: Record<string, string> | undefined): Record<string, unknown> {\n if (!attributes) {\n return {};\n }\n\n const props: Record<string, unknown> = {};\n for (const [name, value] of Object.entries(attributes)) {\n if (name === \"class\") {\n props.className = value;\n } else {\n props[name] = value;\n }\n }\n\n return props;\n}\n\nfunction textAlignForCell(align: DjotTableAlignment): React.CSSProperties[\"textAlign\"] | undefined {\n if (align === \"left\") {\n return \"left\";\n }\n\n if (align === \"right\") {\n return \"right\";\n }\n\n if (align === \"center\") {\n return \"center\";\n }\n\n return undefined;\n}\n\nfunction renderWithOverride(\n override: React.ElementType | undefined,\n fallback: React.ElementType,\n domProps: Record<string, unknown>,\n customProps: Record<string, unknown>,\n key?: React.Key,\n children?: React.ReactNode\n): React.ReactNode {\n const Component = override ?? fallback;\n const props =\n typeof Component === \"string\"\n ? withKey(domProps, key)\n : withKey(\n {\n ...domProps,\n ...customProps\n },\n key\n );\n\n return createElement(Component, props, children);\n}\n\nfunction renderDoc(\n node: DjotDocNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const footnoteState = createFootnoteState(node);\n const children = renderChildren(node.children, components, footnoteState);\n const endnotes = renderEndnotes(node, components, footnoteState);\n const allChildren = endnotes ? [...children, endnotes] : children;\n const Component = pickComponent(components, \"doc\");\n\n if (Component) {\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), allChildren);\n }\n\n return createElement(Component, withKey({ node }, key), allChildren);\n }\n\n return createElement(Fragment, withKey({}, key), allChildren);\n}\n\nfunction renderSection(\n node: DjotSectionNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, \"section\");\n\n if (Component) {\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), children);\n }\n\n return createElement(\n Component,\n withKey(\n {\n node\n },\n key\n ),\n children\n );\n }\n\n return createElement(Fragment, withKey({}, key), children);\n}\n\nfunction renderDiv(\n node: DjotDivNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"div\"),\n \"div\",\n toDomPropsFromAttributes(node.attributes),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderTable(\n node: DjotTableNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"table\"),\n \"table\",\n toDomPropsFromAttributes(node.attributes),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderCaption(\n node: DjotCaptionNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, \"caption\");\n\n if (!Component && children.length === 0) {\n return null;\n }\n\n return renderWithOverride(\n Component,\n \"caption\",\n toDomPropsFromAttributes(node.attributes),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderRow(\n node: DjotRowNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"row\"),\n \"tr\",\n toDomPropsFromAttributes(node.attributes),\n {\n head: node.head,\n node\n },\n key,\n children\n );\n}\n\nfunction renderCell(\n node: DjotCellNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const textAlign = textAlignForCell(node.align);\n const domProps = {\n ...toDomPropsFromAttributes(node.attributes),\n style: textAlign ? { textAlign } : undefined\n };\n\n return renderWithOverride(\n pickComponent(components, \"cell\"),\n node.head ? \"th\" : \"td\",\n domProps,\n {\n align: node.align,\n head: node.head,\n node\n },\n key,\n children\n );\n}\n\nfunction renderHeading(\n node: DjotHeadingNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const level = clampHeadingLevel(node.level);\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"heading\"),\n `h${level}`,\n {},\n {\n level,\n node\n },\n key,\n children\n );\n}\n\nfunction renderMark(\n node: DjotMarkNode | DjotHighlightedNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"mark\" | \"highlighted\",\n alias: \"mark\" | \"highlighted\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"mark\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderSuperscript(\n node: DjotSuperscriptNode | DjotSupeNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"superscript\" | \"supe\",\n alias: \"superscript\" | \"supe\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"sup\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderSubscript(\n node: DjotSubscriptNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"subscript\"),\n \"sub\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderInsert(\n node: DjotInsertNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"insert\"),\n \"ins\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderDelete(\n node: DjotDeleteNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"delete\"),\n \"del\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderFootnoteReference(\n node: DjotFootnoteReferenceNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const label = node.text;\n const index = footnoteState ? ensureFootnoteIndex(label, footnoteState) : 1;\n const refCount = (footnoteState?.refCountByLabel.get(label) ?? 0) + 1;\n\n if (footnoteState) {\n footnoteState.refCountByLabel.set(label, refCount);\n }\n\n const id = refCount === 1 ? `fnref${index}` : `fnref${index}-${refCount}`;\n if (footnoteState && !footnoteState.firstRefIdByLabel.has(label)) {\n footnoteState.firstRefIdByLabel.set(label, id);\n }\n\n const href = `#fn${index}`;\n const children = createElement(\"sup\", null, index);\n return renderWithOverride(\n pickComponent(components, \"footnote_reference\"),\n \"a\",\n {\n href,\n id,\n role: \"doc-noteref\"\n },\n {\n index,\n label,\n node\n },\n key,\n children\n );\n}\n\nfunction renderEndnotes(\n node: DjotDocNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState\n): React.ReactNode {\n if (footnoteState.order.length === 0) {\n return null;\n }\n\n const items = footnoteState.order.map((label, itemIndex) => {\n const index = itemIndex + 1;\n const footnoteNode = node.footnotes?.[label] ?? {\n children: [],\n label,\n tag: \"footnote\"\n };\n\n const footnoteChildren = renderChildren(footnoteNode.children, components, footnoteState);\n const backlink = createElement(\n \"a\",\n {\n href: `#${footnoteState.firstRefIdByLabel.get(label) ?? `fnref${index}`}`,\n role: \"doc-backlink\"\n },\n \"\\u21a9\\ufe0e\"\n );\n\n const content = appendBacklink(footnoteChildren, backlink);\n\n return renderWithOverride(\n pickComponent(components, \"footnote\"),\n \"li\",\n {\n id: `fn${index}`,\n key: label\n },\n {\n index,\n label,\n node: footnoteNode\n },\n label,\n content\n );\n });\n\n const ol = createElement(\"ol\", null, items);\n const sectionChildren = [createElement(\"hr\", { key: \"hr\" }), createElement(Fragment, { key: \"ol\" }, ol)];\n return renderWithOverride(\n pickComponent(components, \"endnotes\"),\n \"section\",\n {\n role: \"doc-endnotes\"\n },\n {\n node,\n order: footnoteState.order\n },\n \"endnotes\",\n sectionChildren\n );\n}\n\nfunction renderQuoted(\n node: DjotDoubleQuotedNode | DjotSingleQuotedNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"double_quoted\" | \"single_quoted\",\n alias: \"double_quoted\" | \"single_quoted\",\n openQuote: string,\n closeQuote: string\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, primary, alias);\n\n if (!Component) {\n return createElement(Fragment, withKey({}, key), openQuote, children, closeQuote);\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), openQuote, children, closeQuote);\n }\n\n return createElement(\n Component,\n withKey(\n {\n node\n },\n key\n ),\n openQuote,\n children,\n closeQuote\n );\n}\n\nfunction renderSmartPunctuation(\n node: DjotSmartPunctuationNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = toSmartPunctuation(node.type, node.text);\n const Component = pickComponent(components, \"smart_punctuation\");\n\n if (!Component) {\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n kind: node.type,\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderInlineMath(\n node: DjotInlineMathNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, \"inline_math\"),\n \"span\",\n {\n className: \"math inline\"\n },\n {\n node,\n value\n },\n key,\n `\\\\(${value}\\\\)`\n );\n}\n\nfunction renderDisplayMath(\n node: DjotDisplayMathNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, \"display_math\"),\n \"span\",\n {\n className: \"math display\"\n },\n {\n node,\n value\n },\n key,\n `\\\\[${value}\\\\]`\n );\n}\n\nfunction renderCode(\n node: DjotCodeNode | DjotVerbatimNode,\n components: DjotComponents | undefined,\n key: React.Key | undefined,\n primary: \"code\" | \"verbatim\",\n alias: \"code\" | \"verbatim\"\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"code\",\n {},\n {\n node,\n value\n },\n key,\n value\n );\n}\n\nfunction renderCodeBlock(\n node: DjotCodeBlockNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const language = node.lang;\n const fallbackChildren = createElement(\n \"code\",\n {\n className: language ? `language-${language}` : undefined\n },\n value\n );\n\n return renderWithOverride(\n pickComponent(components, \"code_block\"),\n \"pre\",\n {},\n {\n language,\n node,\n value\n },\n key,\n fallbackChildren\n );\n}\n\nfunction renderLink(\n node: DjotLinkNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const href = node.destination;\n return renderWithOverride(\n pickComponent(components, \"link\"),\n \"a\",\n {\n href\n },\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderImage(\n node: DjotImageNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const alt = toAltText(node.children) || undefined;\n const src = node.destination;\n return renderWithOverride(\n pickComponent(components, \"image\"),\n \"img\",\n {\n alt,\n src\n },\n {\n alt,\n node\n },\n key\n );\n}\n\nfunction renderOrderedList(\n node: DjotOrderedListNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"ordered_list\"),\n \"ol\",\n {\n start: node.start\n },\n {\n node,\n start: node.start\n },\n key,\n children\n );\n}\n\nfunction renderBlockQuote(\n node: DjotBlockquoteNode | DjotBlockQuoteNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"blockquote\" | \"block_quote\",\n alias: \"blockquote\" | \"block_quote\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"blockquote\",\n {},\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderStr(\n node: DjotStrNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const Component = pickComponent(components, \"str\");\n\n if (!Component) {\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderSoftBreak(\n node: DjotSoftBreakNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const Component = pickComponent(components, \"soft_break\", \"softbreak\");\n\n if (!Component) {\n return \"\\n\";\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), \"\\n\");\n }\n\n return createElement(\n Component,\n withKey(\n {\n node\n },\n key\n ),\n \"\\n\"\n );\n}\n\nfunction renderHardBreak(\n node: DjotHardBreakNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n return renderWithOverride(\n pickComponent(components, \"hard_break\", \"hardbreak\"),\n \"br\",\n {},\n {\n node\n },\n key\n );\n}\n\nexport function renderNode(node: DjotNode, options: RenderNodeOptions = {}): React.ReactNode {\n const { components, footnoteState, key } = options;\n const children = isParentNode(node) ? renderChildren(node.children, components, footnoteState) : undefined;\n\n switch (node.tag) {\n case \"doc\":\n return renderDoc(node, components, key);\n case \"section\":\n return renderSection(node, components, footnoteState, key);\n case \"div\":\n return renderDiv(node, components, footnoteState, key);\n case \"table\":\n return renderTable(node, components, footnoteState, key);\n case \"caption\":\n return renderCaption(node, components, footnoteState, key);\n case \"row\":\n return renderRow(node, components, footnoteState, key);\n case \"cell\":\n return renderCell(node, components, footnoteState, key);\n case \"para\":\n return renderWithOverride(\n pickComponent(components, \"para\"),\n \"p\",\n {},\n {\n node\n },\n key,\n children\n );\n case \"heading\":\n return renderHeading(node, components, footnoteState, key);\n case \"emph\":\n return renderWithOverride(\n pickComponent(components, \"emph\"),\n \"em\",\n {},\n {\n node\n },\n key,\n children\n );\n case \"strong\":\n return renderWithOverride(\n pickComponent(components, \"strong\"),\n \"strong\",\n {},\n {\n node\n },\n key,\n children\n );\n case \"mark\":\n return renderMark(node, components, footnoteState, key, \"mark\", \"highlighted\");\n case \"highlighted\":\n return renderMark(node, components, footnoteState, key, \"highlighted\", \"mark\");\n case \"superscript\":\n return renderSuperscript(node, components, footnoteState, key, \"superscript\", \"supe\");\n case \"supe\":\n return renderSuperscript(node, components, footnoteState, key, \"supe\", \"superscript\");\n case \"subscript\":\n return renderSubscript(node, components, footnoteState, key);\n case \"insert\":\n return renderInsert(node, components, footnoteState, key);\n case \"delete\":\n return renderDelete(node, components, footnoteState, key);\n case \"footnote_reference\":\n return renderFootnoteReference(node, components, footnoteState, key);\n case \"footnote\":\n return renderWithOverride(\n pickComponent(components, \"footnote\"),\n \"li\",\n {},\n {\n index: 0,\n label: node.label,\n node\n },\n key,\n children\n );\n case \"double_quoted\":\n return renderQuoted(\n node,\n components,\n footnoteState,\n key,\n \"double_quoted\",\n \"single_quoted\",\n \"\\u201c\",\n \"\\u201d\"\n );\n case \"single_quoted\":\n return renderQuoted(\n node,\n components,\n footnoteState,\n key,\n \"single_quoted\",\n \"double_quoted\",\n \"\\u2018\",\n \"\\u2019\"\n );\n case \"smart_punctuation\":\n return renderSmartPunctuation(node, components, key);\n case \"inline_math\":\n return renderInlineMath(node, components, key);\n case \"display_math\":\n return renderDisplayMath(node, components, key);\n case \"code\":\n return renderCode(node, components, key, \"code\", \"verbatim\");\n case \"verbatim\":\n return renderCode(node, components, key, \"verbatim\", \"code\");\n case \"code_block\":\n return renderCodeBlock(node, components, key);\n case \"link\":\n return renderLink(node, components, footnoteState, key);\n case \"image\":\n return renderImage(node, components, key);\n case \"bullet_list\":\n return renderWithOverride(\n pickComponent(components, \"bullet_list\"),\n \"ul\",\n {},\n {\n node\n },\n key,\n children\n );\n case \"ordered_list\":\n return renderOrderedList(node, components, footnoteState, key);\n case \"list_item\":\n return renderWithOverride(\n pickComponent(components, \"list_item\"),\n \"li\",\n {},\n {\n node\n },\n key,\n children\n );\n case \"blockquote\":\n return renderBlockQuote(node, components, footnoteState, key, \"blockquote\", \"block_quote\");\n case \"block_quote\":\n return renderBlockQuote(node, components, footnoteState, key, \"block_quote\", \"blockquote\");\n case \"thematic_break\":\n return renderWithOverride(\n pickComponent(components, \"thematic_break\"),\n \"hr\",\n {},\n {\n node\n },\n key\n );\n case \"str\":\n return renderStr(node, components, key);\n default:\n if (isSoftBreakNode(node)) {\n return renderSoftBreak(node, components, key);\n }\n\n if (isHardBreakNode(node)) {\n return renderHardBreak(node, components, key);\n }\n\n return null;\n }\n}\n","import { parse } from \"@djot/djot\";\nimport { Fragment } from \"react\";\nimport type React from \"react\";\nimport { renderNode } from \"./renderNode\";\nimport type { DjotNode, DjotProps } from \"./types\";\n\nexport function Djot({ children, components }: DjotProps): React.ReactElement | null {\n const source = children ?? \"\";\n\n if (source.length === 0) {\n return null;\n }\n\n const ast = parse(source) as DjotNode;\n return <Fragment>{renderNode(ast, { components })}</Fragment>;\n}\n\nexport default Djot;\n"]}
1
+ {"version":3,"sources":["../src/renderNode.footnotes.ts","../src/renderNode.utils.ts","../src/renderNode.rawHtml.tsx","../src/renderNode.tsx","../src/Djot.tsx"],"names":["isValidElement","cloneElement","isParentNode","createElement","Fragment","contentChildren","parse","jsx"],"mappings":"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","file":"index.cjs","sourcesContent":["import { cloneElement, isValidElement } from \"react\";\nimport type React from \"react\";\nimport type {\n DjotBaseNode,\n DjotDocNode,\n DjotImageNode,\n DjotLinkNode,\n DjotNode,\n DjotParentNode,\n DjotReferenceNode\n} from \"./types\";\n\nexport interface FootnoteState {\n autoReferencesByLabel: Record<string, DjotReferenceNode>;\n firstRefIdByLabel: Map<string, string>;\n indexByLabel: Map<string, number>;\n order: string[];\n referencesByLabel: Record<string, DjotReferenceNode>;\n refCountByLabel: Map<string, number>;\n}\n\nfunction isParentNode(node: DjotBaseNode): node is DjotParentNode {\n return Array.isArray((node as DjotParentNode).children);\n}\n\nfunction collectFootnoteReferences(nodes: DjotNode[], indexByLabel: Map<string, number>, order: string[]): void {\n for (const node of nodes) {\n if (node.tag === \"footnote_reference\") {\n const label = node.text;\n if (!indexByLabel.has(label)) {\n const index = order.length + 1;\n indexByLabel.set(label, index);\n order.push(label);\n }\n continue;\n }\n\n if (isParentNode(node)) {\n collectFootnoteReferences(node.children, indexByLabel, order);\n }\n }\n}\n\nexport function createFootnoteState(node: DjotDocNode): FootnoteState {\n const indexByLabel = new Map<string, number>();\n const order: string[] = [];\n\n collectFootnoteReferences(node.children, indexByLabel, order);\n\n return {\n autoReferencesByLabel: node.autoReferences ?? {},\n firstRefIdByLabel: new Map<string, string>(),\n indexByLabel,\n order,\n referencesByLabel: node.references ?? {},\n refCountByLabel: new Map<string, number>()\n };\n}\n\nexport function resolveReferenceNode(\n node: Pick<DjotLinkNode, \"reference\"> | Pick<DjotImageNode, \"reference\">,\n footnoteState: FootnoteState | undefined\n): DjotReferenceNode | undefined {\n if (!node.reference || !footnoteState) {\n return undefined;\n }\n\n return footnoteState.referencesByLabel[node.reference] ?? footnoteState.autoReferencesByLabel[node.reference];\n}\n\nexport function resolveReferenceDestination(\n node: Pick<DjotLinkNode, \"destination\" | \"reference\"> | Pick<DjotImageNode, \"destination\" | \"reference\">,\n footnoteState: FootnoteState | undefined\n): string | undefined {\n if (node.destination) {\n return node.destination;\n }\n\n return resolveReferenceNode(node, footnoteState)?.destination;\n}\n\nexport function ensureFootnoteIndex(label: string, footnoteState: FootnoteState): number {\n const existing = footnoteState.indexByLabel.get(label);\n if (existing) {\n return existing;\n }\n\n const index = footnoteState.order.length + 1;\n footnoteState.indexByLabel.set(label, index);\n footnoteState.order.push(label);\n return index;\n}\n\nexport function appendBacklink(nodes: React.ReactNode[], backlink: React.ReactNode): React.ReactNode[] {\n if (nodes.length === 0) {\n return [backlink];\n }\n\n const next = nodes.slice();\n const lastIndex = next.length - 1;\n const last = next[lastIndex];\n\n if (isValidElement<{ children?: React.ReactNode }>(last)) {\n next[lastIndex] = cloneElement(last, undefined, last.props.children, backlink);\n return next;\n }\n\n next.push(backlink);\n return next;\n}\n","import type React from \"react\";\nimport type {\n DjotBaseNode,\n DjotNode,\n DjotOrderedListStyle,\n DjotParentNode,\n DjotSmartPunctuationType,\n DjotTableAlignment\n} from \"./types\";\n\nfunction isParentNode(node: DjotBaseNode): node is DjotParentNode {\n return Array.isArray((node as DjotParentNode).children);\n}\n\nexport function toSmartPunctuation(type: DjotSmartPunctuationType, fallback: string): string {\n switch (type) {\n case \"left_double_quote\":\n return \"\\u201c\";\n case \"right_double_quote\":\n return \"\\u201d\";\n case \"left_single_quote\":\n return \"\\u2018\";\n case \"right_single_quote\":\n return \"\\u2019\";\n case \"em_dash\":\n return \"\\u2014\";\n case \"en_dash\":\n return \"\\u2013\";\n case \"ellipses\":\n return \"\\u2026\";\n default:\n return fallback;\n }\n}\n\nexport function toAltText(nodes: DjotNode[]): string {\n let output = \"\";\n\n for (const node of nodes) {\n switch (node.tag) {\n case \"str\":\n case \"code\":\n case \"verbatim\":\n case \"inline_math\":\n case \"display_math\":\n case \"code_block\":\n case \"raw_block\":\n case \"raw_inline\":\n case \"symb\":\n case \"url\":\n case \"email\":\n output += node.tag === \"symb\" ? `:${node.alias}:` : node.text;\n break;\n case \"non_breaking_space\":\n output += \"\\u00a0\";\n break;\n case \"smart_punctuation\":\n output += toSmartPunctuation(node.type, node.text);\n break;\n case \"double_quoted\":\n output += `\\u201c${toAltText(node.children)}\\u201d`;\n break;\n case \"single_quoted\":\n output += `\\u2018${toAltText(node.children)}\\u2019`;\n break;\n case \"soft_break\":\n case \"softbreak\":\n output += \" \";\n break;\n case \"hard_break\":\n case \"hardbreak\":\n output += \"\\n\";\n break;\n default:\n if (isParentNode(node)) {\n output += toAltText(node.children);\n }\n break;\n }\n }\n\n return output.trim();\n}\n\nexport function clampHeadingLevel(level: number): 1 | 2 | 3 | 4 | 5 | 6 {\n if (level <= 1) {\n return 1;\n }\n\n if (level >= 6) {\n return 6;\n }\n\n return level as 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport function withKey<T extends Record<string, unknown>>(props: T, key?: React.Key): T & { key?: React.Key } {\n if (key === undefined) {\n return props;\n }\n\n return {\n ...props,\n key\n };\n}\n\nexport function toDomPropsFromAttributes(attributes: Record<string, string> | undefined): Record<string, unknown> {\n if (!attributes) {\n return {};\n }\n\n const props: Record<string, unknown> = {};\n for (const [name, value] of Object.entries(attributes)) {\n if (name === \"class\") {\n props.className = value;\n } else {\n props[name] = value;\n }\n }\n\n return props;\n}\n\nexport function toDomPropsFromNode(node: DjotBaseNode): Record<string, unknown> {\n return {\n ...toDomPropsFromAttributes(node.autoAttributes),\n ...toDomPropsFromAttributes(node.attributes)\n };\n}\n\nfunction joinClassNames(...values: Array<string | undefined>): string | undefined {\n const classes = values.filter((value): value is string => Boolean(value && value.length > 0));\n return classes.length > 0 ? classes.join(\" \") : undefined;\n}\n\nfunction toStyleObject(value: unknown): React.CSSProperties | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n\n return value as React.CSSProperties;\n}\n\nexport function mergeDomProps(node: DjotBaseNode, extra: Record<string, unknown> = {}): Record<string, unknown> {\n const nodeProps = toDomPropsFromNode(node);\n const merged: Record<string, unknown> = {\n ...extra,\n ...nodeProps\n };\n\n const className = joinClassNames(\n typeof extra.className === \"string\" ? extra.className : undefined,\n typeof nodeProps.className === \"string\" ? nodeProps.className : undefined\n );\n\n if (className) {\n merged.className = className;\n }\n\n const extraStyle = toStyleObject(extra.style);\n const nodeStyle = toStyleObject(nodeProps.style);\n if (extraStyle || nodeStyle) {\n merged.style = {\n ...(extraStyle ?? {}),\n ...(nodeStyle ?? {})\n };\n }\n\n return merged;\n}\n\nexport function textAlignForCell(align: DjotTableAlignment): React.CSSProperties[\"textAlign\"] | undefined {\n if (align === \"left\") {\n return \"left\";\n }\n\n if (align === \"right\") {\n return \"right\";\n }\n\n if (align === \"center\") {\n return \"center\";\n }\n\n return undefined;\n}\n\nexport function toOrderedListType(style: DjotOrderedListStyle | undefined): string | undefined {\n if (!style || /1/.test(style)) {\n return undefined;\n }\n\n const type = style.replace(/[().]/g, \"\");\n return type.length > 0 ? type : undefined;\n}\n","import { createElement } from \"react\";\nimport type React from \"react\";\nimport { withKey } from \"./renderNode.utils\";\n\ninterface RawHtmlAttribute {\n name: string;\n value: string;\n}\n\ninterface RawHtmlElementNode {\n attributes: RawHtmlAttribute[];\n children: RawHtmlNode[];\n tagName: string;\n type: \"element\";\n}\n\ninterface RawHtmlTextNode {\n text: string;\n type: \"text\";\n}\n\ntype RawHtmlNode = RawHtmlElementNode | RawHtmlTextNode;\n\nconst RAW_HTML_ATTR_PATTERN =\n /([^\\s\"'=<>`/]+)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s\"'=<>`]+)))?/g;\nconst RAW_HTML_TOKEN_PATTERN = /<!--[\\s\\S]*?-->|<\\/?[A-Za-z][^>]*>|[^<]+|</g;\n\nconst RAW_HTML_BLOCKED_TAGS = new Set([\n \"base\",\n \"embed\",\n \"form\",\n \"iframe\",\n \"meta\",\n \"object\",\n \"script\"\n]);\n\nconst RAW_HTML_BOOLEAN_ATTRS = new Set([\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"defer\",\n \"disabled\",\n \"hidden\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"selected\"\n]);\n\nconst RAW_HTML_UNSAFE_PROTOCOL = /^\\s*(?:javascript:|vbscript:|data:)/i;\nconst RAW_HTML_URL_ATTRS = new Set([\n \"action\",\n \"formaction\",\n \"href\",\n \"poster\",\n \"src\",\n \"xlink:href\"\n]);\n\nconst RAW_HTML_VOID_TAGS = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n]);\n\nfunction decodeHtmlEntities(value: string): string {\n return value.replace(/&(#x?[0-9a-fA-F]+|[a-zA-Z]+);/g, (_match, entity: string) => {\n if (entity.startsWith(\"#x\") || entity.startsWith(\"#X\")) {\n const codePoint = Number.parseInt(entity.slice(2), 16);\n if (!Number.isNaN(codePoint)) {\n return String.fromCodePoint(codePoint);\n }\n return _match;\n }\n\n if (entity.startsWith(\"#\")) {\n const codePoint = Number.parseInt(entity.slice(1), 10);\n if (!Number.isNaN(codePoint)) {\n return String.fromCodePoint(codePoint);\n }\n return _match;\n }\n\n switch (entity) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"nbsp\":\n return \"\\u00a0\";\n case \"quot\":\n return '\"';\n default:\n return _match;\n }\n });\n}\n\nfunction parseRawHtmlAttributes(source: string): RawHtmlAttribute[] {\n const attributes: RawHtmlAttribute[] = [];\n\n for (const match of source.matchAll(RAW_HTML_ATTR_PATTERN)) {\n const name = match[1]?.toLowerCase();\n if (!name) {\n continue;\n }\n\n const rawValue = match[2] ?? match[3] ?? match[4] ?? \"\";\n const value = decodeHtmlEntities(rawValue);\n attributes.push({ name, value });\n }\n\n return attributes;\n}\n\nfunction parseRawHtmlFragment(source: string): RawHtmlNode[] {\n const root: RawHtmlElementNode = {\n attributes: [],\n children: [],\n tagName: \"#root\",\n type: \"element\"\n };\n\n const stack: RawHtmlElementNode[] = [root];\n\n for (const match of source.matchAll(RAW_HTML_TOKEN_PATTERN)) {\n const token = match[0];\n\n if (token.startsWith(\"<!--\")) {\n continue;\n }\n\n if (token === \"<\") {\n stack[stack.length - 1]?.children.push({ text: \"<\", type: \"text\" });\n continue;\n }\n\n const closingTag = /^<\\/\\s*([A-Za-z][\\w:-]*)\\s*>$/.exec(token);\n if (closingTag) {\n const closingTagName = closingTag[1];\n if (!closingTagName) {\n continue;\n }\n\n const tagName = closingTagName.toLowerCase();\n\n for (let index = stack.length - 1; index > 0; index -= 1) {\n if (stack[index]?.tagName === tagName) {\n stack.length = index;\n break;\n }\n }\n\n continue;\n }\n\n const openingTag = /^<\\s*([A-Za-z][\\w:-]*)([\\s\\S]*?)>$/.exec(token);\n if (openingTag) {\n const openingTagName = openingTag[1];\n if (!openingTagName) {\n continue;\n }\n\n const tagName = openingTagName.toLowerCase();\n const rawAttributes = openingTag[2] ?? \"\";\n const selfClosing = /\\/\\s*$/.test(rawAttributes) || RAW_HTML_VOID_TAGS.has(tagName);\n const attrSource = selfClosing ? rawAttributes.replace(/\\/\\s*$/, \"\") : rawAttributes;\n\n const element: RawHtmlElementNode = {\n attributes: parseRawHtmlAttributes(attrSource),\n children: [],\n tagName,\n type: \"element\"\n };\n\n stack[stack.length - 1]?.children.push(element);\n\n if (!selfClosing) {\n stack.push(element);\n }\n\n continue;\n }\n\n stack[stack.length - 1]?.children.push({\n text: decodeHtmlEntities(token),\n type: \"text\"\n });\n }\n\n return root.children;\n}\n\nfunction toCamelCaseCssProperty(name: string): string {\n return name\n .trim()\n .replace(/^-+/, \"\")\n .replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nfunction parseStyleAttribute(value: string): React.CSSProperties | undefined {\n const style: Record<string, string> = {};\n\n for (const declaration of value.split(\";\")) {\n const separatorIndex = declaration.indexOf(\":\");\n\n if (separatorIndex === -1) {\n continue;\n }\n\n const property = toCamelCaseCssProperty(declaration.slice(0, separatorIndex));\n const propertyValue = declaration.slice(separatorIndex + 1).trim();\n\n if (!property || !propertyValue) {\n continue;\n }\n\n style[property] = propertyValue;\n }\n\n if (Object.keys(style).length === 0) {\n return undefined;\n }\n\n return style as React.CSSProperties;\n}\n\nfunction toRawHtmlDomProps(attributes: RawHtmlAttribute[]): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n\n for (const { name, value } of attributes) {\n if (name.startsWith(\"on\")) {\n continue;\n }\n\n if (RAW_HTML_URL_ATTRS.has(name) && RAW_HTML_UNSAFE_PROTOCOL.test(value)) {\n continue;\n }\n\n if (name === \"class\") {\n props.className = value;\n continue;\n }\n\n if (name === \"for\") {\n props.htmlFor = value;\n continue;\n }\n\n if (name === \"style\") {\n const style = parseStyleAttribute(value);\n if (style) {\n props.style = style;\n }\n continue;\n }\n\n if (RAW_HTML_BOOLEAN_ATTRS.has(name) && value.length === 0) {\n props[name] = true;\n continue;\n }\n\n props[name] = value;\n }\n\n return props;\n}\n\nfunction renderRawHtmlNode(node: RawHtmlNode, key: string): React.ReactNode | null {\n if (node.type === \"text\") {\n return node.text;\n }\n\n if (RAW_HTML_BLOCKED_TAGS.has(node.tagName)) {\n return null;\n }\n\n const children = renderRawHtmlNodes(node.children, key);\n return createElement(\n node.tagName,\n withKey(toRawHtmlDomProps(node.attributes), key),\n children.length > 0 ? children : undefined\n );\n}\n\nfunction renderRawHtmlNodes(nodes: RawHtmlNode[], keyPrefix: string): React.ReactNode[] {\n const rendered: React.ReactNode[] = [];\n\n for (const [index, node] of nodes.entries()) {\n const next = renderRawHtmlNode(node, `${keyPrefix}-${index}`);\n if (next !== null) {\n rendered.push(next);\n }\n }\n\n return rendered;\n}\n\nexport function rawHtmlChildren(value: string, keyPrefix: string): React.ReactNode[] {\n return renderRawHtmlNodes(parseRawHtmlFragment(value), keyPrefix);\n}\n","import { createElement, Fragment } from \"react\";\nimport type React from \"react\";\nimport type {\n DjotBaseNode,\n DjotBlockQuoteNode,\n DjotBlockquoteNode,\n DjotBulletListNode,\n DjotCaptionNode,\n DjotCellNode,\n DjotCodeBlockNode,\n DjotCodeNode,\n DjotComponentPropsMap,\n DjotComponents,\n DjotDeleteNode,\n DjotDefinitionListItemNode,\n DjotDefinitionListNode,\n DjotDefinitionNode,\n DjotDivNode,\n DjotDoubleQuotedNode,\n DjotDisplayMathNode,\n DjotDocNode,\n DjotEmailNode,\n DjotFootnoteReferenceNode,\n DjotHardBreakNode,\n DjotHeadingNode,\n DjotHighlightedNode,\n DjotImageNode,\n DjotInlineMathNode,\n DjotInsertNode,\n DjotLinkNode,\n DjotListItemNode,\n DjotMarkNode,\n DjotNonBreakingSpaceNode,\n DjotNode,\n DjotOrderedListNode,\n DjotParentNode,\n DjotTaskListItemNode,\n DjotTaskListNode,\n DjotRawBlockNode,\n DjotRawInlineNode,\n DjotRowNode,\n DjotSectionNode,\n DjotSoftBreakNode,\n DjotSmartPunctuationNode,\n DjotSingleQuotedNode,\n DjotStrNode,\n DjotSubscriptNode,\n DjotSymbNode,\n DjotSuperscriptNode,\n DjotSupeNode,\n DjotTableNode,\n DjotTermNode,\n DjotUrlNode,\n DjotVerbatimNode\n} from \"./types\";\nimport {\n appendBacklink,\n createFootnoteState,\n ensureFootnoteIndex,\n resolveReferenceDestination,\n resolveReferenceNode,\n type FootnoteState\n} from \"./renderNode.footnotes\";\nimport { rawHtmlChildren } from \"./renderNode.rawHtml\";\nimport {\n clampHeadingLevel,\n mergeDomProps,\n textAlignForCell,\n toAltText,\n toOrderedListType,\n toSmartPunctuation,\n toDomPropsFromNode,\n withKey\n} from \"./renderNode.utils\";\n\nexport interface RenderNodeOptions {\n components?: DjotComponents | undefined;\n footnoteState?: FootnoteState | undefined;\n key?: React.Key;\n listTight?: boolean | undefined;\n}\n\ntype ComponentKey = keyof DjotComponentPropsMap;\n\nfunction isParentNode(node: DjotBaseNode): node is DjotParentNode {\n return Array.isArray((node as DjotParentNode).children);\n}\n\nfunction isSoftBreakNode(node: DjotNode): node is DjotSoftBreakNode {\n return node.tag === \"soft_break\" || node.tag === \"softbreak\";\n}\n\nfunction isHardBreakNode(node: DjotNode): node is DjotHardBreakNode {\n return node.tag === \"hard_break\" || node.tag === \"hardbreak\";\n}\n\nfunction pickComponent(\n components: DjotComponents | undefined,\n primary: ComponentKey,\n alias?: ComponentKey\n): React.ElementType | undefined {\n if (!components) {\n return undefined;\n }\n\n return (components[primary] ?? (alias ? components[alias] : undefined)) as\n | React.ElementType\n | undefined;\n}\n\nfunction renderChildren(\n children: DjotNode[],\n components?: DjotComponents,\n footnoteState?: FootnoteState,\n listTight?: boolean\n): React.ReactNode[] {\n return children.map((child, index) =>\n renderNode(child, {\n components,\n footnoteState,\n key: index,\n listTight\n })\n );\n}\n\nfunction renderWithOverride(\n override: React.ElementType | undefined,\n fallback: React.ElementType,\n domProps: Record<string, unknown>,\n customProps: Record<string, unknown>,\n key?: React.Key,\n children?: React.ReactNode\n): React.ReactNode {\n const Component = override ?? fallback;\n const props =\n typeof Component === \"string\"\n ? withKey(domProps, key)\n : withKey(\n {\n ...domProps,\n ...customProps\n },\n key\n );\n\n return createElement(Component, props, children);\n}\n\nfunction renderDoc(\n node: DjotDocNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const footnoteState = createFootnoteState(node);\n const children = renderChildren(node.children, components, footnoteState);\n const endnotes = renderEndnotes(node, components, footnoteState);\n const allChildren = endnotes ? [...children, endnotes] : children;\n const Component = pickComponent(components, \"doc\");\n\n if (Component) {\n const domProps = mergeDomProps(node);\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), allChildren);\n }\n\n return createElement(Component, withKey({ ...domProps, node }, key), allChildren);\n }\n\n return createElement(Fragment, withKey({}, key), allChildren);\n}\n\nfunction renderSection(\n node: DjotSectionNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"section\"),\n \"section\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderDiv(\n node: DjotDivNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"div\"),\n \"div\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderTable(\n node: DjotTableNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const captionChildren: React.ReactNode[] = [];\n const headRows: React.ReactNode[] = [];\n const bodyRows: React.ReactNode[] = [];\n const otherChildren: React.ReactNode[] = [];\n\n for (const [index, child] of node.children.entries()) {\n const rendered = renderNode(child, {\n components,\n footnoteState,\n key: index\n });\n\n if (child.tag === \"caption\") {\n captionChildren.push(rendered);\n continue;\n }\n\n if (child.tag === \"row\") {\n if (child.head && bodyRows.length === 0) {\n headRows.push(rendered);\n } else {\n bodyRows.push(rendered);\n }\n continue;\n }\n\n otherChildren.push(rendered);\n }\n\n const children: React.ReactNode[] = [...captionChildren];\n\n if (headRows.length > 0) {\n children.push(createElement(\"thead\", { key: \"thead\" }, headRows));\n }\n\n if (bodyRows.length > 0) {\n children.push(createElement(\"tbody\", { key: \"tbody\" }, bodyRows));\n }\n\n if (otherChildren.length > 0) {\n children.push(...otherChildren);\n }\n\n return renderWithOverride(\n pickComponent(components, \"table\"),\n \"table\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderCaption(\n node: DjotCaptionNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, \"caption\");\n\n if (!Component && children.length === 0) {\n return null;\n }\n\n return renderWithOverride(\n Component,\n \"caption\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderRow(\n node: DjotRowNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"row\"),\n \"tr\",\n mergeDomProps(node),\n {\n head: node.head,\n node\n },\n key,\n children\n );\n}\n\nfunction renderCell(\n node: DjotCellNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const textAlign = textAlignForCell(node.align);\n const domProps = mergeDomProps(node, {\n style: textAlign ? { textAlign } : undefined\n });\n\n return renderWithOverride(\n pickComponent(components, \"cell\"),\n node.head ? \"th\" : \"td\",\n domProps,\n {\n align: node.align,\n head: node.head,\n node\n },\n key,\n children\n );\n}\n\nfunction renderHeading(\n node: DjotHeadingNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const level = clampHeadingLevel(node.level);\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"heading\"),\n `h${level}`,\n mergeDomProps(node),\n {\n level,\n node\n },\n key,\n children\n );\n}\n\nfunction renderMark(\n node: DjotMarkNode | DjotHighlightedNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"mark\" | \"highlighted\",\n alias: \"mark\" | \"highlighted\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"mark\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderSuperscript(\n node: DjotSuperscriptNode | DjotSupeNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"superscript\" | \"supe\",\n alias: \"superscript\" | \"supe\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"sup\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderSubscript(\n node: DjotSubscriptNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"subscript\"),\n \"sub\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderInsert(\n node: DjotInsertNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"insert\"),\n \"ins\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderDelete(\n node: DjotDeleteNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"delete\"),\n \"del\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderFootnoteReference(\n node: DjotFootnoteReferenceNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const label = node.text;\n const index = footnoteState ? ensureFootnoteIndex(label, footnoteState) : 1;\n const refCount = (footnoteState?.refCountByLabel.get(label) ?? 0) + 1;\n\n if (footnoteState) {\n footnoteState.refCountByLabel.set(label, refCount);\n }\n\n const id = refCount === 1 ? `fnref${index}` : `fnref${index}-${refCount}`;\n if (footnoteState && !footnoteState.firstRefIdByLabel.has(label)) {\n footnoteState.firstRefIdByLabel.set(label, id);\n }\n\n const href = `#fn${index}`;\n const children = createElement(\"sup\", null, index);\n return renderWithOverride(\n pickComponent(components, \"footnote_reference\"),\n \"a\",\n mergeDomProps(node, {\n href,\n id,\n role: \"doc-noteref\"\n }),\n {\n index,\n label,\n node\n },\n key,\n children\n );\n}\n\nfunction renderEndnotes(\n node: DjotDocNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState\n): React.ReactNode {\n if (footnoteState.order.length === 0) {\n return null;\n }\n\n const items = footnoteState.order.map((label, itemIndex) => {\n const index = itemIndex + 1;\n const footnoteNode = node.footnotes?.[label] ?? {\n children: [],\n label,\n tag: \"footnote\"\n };\n\n const footnoteChildren = renderChildren(footnoteNode.children, components, footnoteState);\n const backlink = createElement(\n \"a\",\n {\n href: `#${footnoteState.firstRefIdByLabel.get(label) ?? `fnref${index}`}`,\n role: \"doc-backlink\"\n },\n \"\\u21a9\\ufe0e\"\n );\n\n const content = appendBacklink(footnoteChildren, backlink);\n\n return renderWithOverride(\n pickComponent(components, \"footnote\"),\n \"li\",\n mergeDomProps(footnoteNode, {\n id: `fn${index}`,\n key: label\n }),\n {\n index,\n label,\n node: footnoteNode\n },\n label,\n content\n );\n });\n\n const ol = createElement(\"ol\", null, items);\n const sectionChildren = [createElement(\"hr\", { key: \"hr\" }), createElement(Fragment, { key: \"ol\" }, ol)];\n return renderWithOverride(\n pickComponent(components, \"endnotes\"),\n \"section\",\n {\n role: \"doc-endnotes\"\n },\n {\n node,\n order: footnoteState.order\n },\n \"endnotes\",\n sectionChildren\n );\n}\n\nfunction renderQuoted(\n node: DjotDoubleQuotedNode | DjotSingleQuotedNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"double_quoted\" | \"single_quoted\",\n alias: \"double_quoted\" | \"single_quoted\",\n openQuote: string,\n closeQuote: string\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, primary, alias);\n const domProps = mergeDomProps(node);\n\n if (!Component) {\n return createElement(Fragment, withKey({}, key), openQuote, children, closeQuote);\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), openQuote, children, closeQuote);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n node\n },\n key\n ),\n openQuote,\n children,\n closeQuote\n );\n}\n\nfunction renderSmartPunctuation(\n node: DjotSmartPunctuationNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = toSmartPunctuation(node.type, node.text);\n const Component = pickComponent(components, \"smart_punctuation\");\n const domProps = mergeDomProps(node);\n\n if (!Component) {\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n kind: node.type,\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderInlineMath(\n node: DjotInlineMathNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, \"inline_math\"),\n \"span\",\n mergeDomProps(node, {\n className: \"math inline\"\n }),\n {\n node,\n value\n },\n key,\n `\\\\(${value}\\\\)`\n );\n}\n\nfunction renderDisplayMath(\n node: DjotDisplayMathNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, \"display_math\"),\n \"span\",\n mergeDomProps(node, {\n className: \"math display\"\n }),\n {\n node,\n value\n },\n key,\n `\\\\[${value}\\\\]`\n );\n}\n\nfunction renderCode(\n node: DjotCodeNode | DjotVerbatimNode,\n components: DjotComponents | undefined,\n key: React.Key | undefined,\n primary: \"code\" | \"verbatim\",\n alias: \"code\" | \"verbatim\"\n): React.ReactNode {\n const value = node.text;\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"code\",\n mergeDomProps(node),\n {\n node,\n value\n },\n key,\n value\n );\n}\n\nfunction renderCodeBlock(\n node: DjotCodeBlockNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const language = node.lang;\n const fallbackChildren = createElement(\n \"code\",\n {\n className: language ? `language-${language}` : undefined\n },\n value\n );\n\n return renderWithOverride(\n pickComponent(components, \"code_block\"),\n \"pre\",\n mergeDomProps(node),\n {\n language,\n node,\n value\n },\n key,\n fallbackChildren\n );\n}\n\nfunction renderRawBlock(\n node: DjotRawBlockNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const format = node.format;\n const value = node.text;\n const htmlChildren = format === \"html\" ? rawHtmlChildren(value, `raw-block-${String(key ?? \"node\")}`) : undefined;\n const Component = pickComponent(components, \"raw_block\");\n const domProps = mergeDomProps(node);\n\n if (!Component) {\n if (format !== \"html\") {\n return null;\n }\n\n return createElement(Fragment, withKey({}, key), htmlChildren);\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), htmlChildren ?? value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n format,\n node,\n value\n },\n key\n ),\n htmlChildren ?? value\n );\n}\n\nfunction renderRawInline(\n node: DjotRawInlineNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const format = node.format;\n const value = node.text;\n const htmlChildren = format === \"html\" ? rawHtmlChildren(value, `raw-inline-${String(key ?? \"node\")}`) : undefined;\n const Component = pickComponent(components, \"raw_inline\");\n const domProps = mergeDomProps(node);\n\n if (!Component) {\n if (format !== \"html\") {\n return null;\n }\n\n return createElement(Fragment, withKey({}, key), htmlChildren);\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), htmlChildren ?? value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n format,\n node,\n value\n },\n key\n ),\n htmlChildren ?? value\n );\n}\n\nfunction renderUrl(\n node: DjotUrlNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const href = value;\n return renderWithOverride(\n pickComponent(components, \"url\"),\n \"a\",\n mergeDomProps(node, {\n href\n }),\n {\n href,\n node,\n value\n },\n key,\n value\n );\n}\n\nfunction renderEmail(\n node: DjotEmailNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const href = `mailto:${value}`;\n return renderWithOverride(\n pickComponent(components, \"email\"),\n \"a\",\n mergeDomProps(node, {\n href\n }),\n {\n href,\n node,\n value\n },\n key,\n value\n );\n}\n\nfunction renderSymb(\n node: DjotSymbNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const alias = node.alias;\n const value = `:${alias}:`;\n const Component = pickComponent(components, \"symb\");\n\n if (!Component) {\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(mergeDomProps(node), key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...mergeDomProps(node),\n alias,\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderLink(\n node: DjotLinkNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const referenceNode = resolveReferenceNode(node, footnoteState);\n const referenceProps = referenceNode ? toDomPropsFromNode(referenceNode) : {};\n const href = resolveReferenceDestination(node, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"link\"),\n \"a\",\n mergeDomProps(node, {\n href,\n ...referenceProps\n }),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderImage(\n node: DjotImageNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const alt = toAltText(node.children) || undefined;\n const referenceNode = resolveReferenceNode(node, footnoteState);\n const referenceProps = referenceNode ? toDomPropsFromNode(referenceNode) : {};\n const src = resolveReferenceDestination(node, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"image\"),\n \"img\",\n mergeDomProps(node, {\n alt,\n src,\n ...referenceProps\n }),\n {\n alt,\n node\n },\n key\n );\n}\n\nfunction renderOrderedList(\n node: DjotOrderedListNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const tight = node.tight ?? false;\n const children = renderChildren(node.children, components, footnoteState, tight);\n const start = node.start !== undefined && node.start !== 1 ? node.start : undefined;\n const type = toOrderedListType(node.style);\n return renderWithOverride(\n pickComponent(components, \"ordered_list\"),\n \"ol\",\n mergeDomProps(node, {\n start,\n type\n }),\n {\n node,\n start,\n tight\n },\n key,\n children\n );\n}\n\nfunction renderDefinitionList(\n node: DjotDefinitionListNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"definition_list\"),\n \"dl\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderDefinitionListItem(\n node: DjotDefinitionListItemNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n const Component = pickComponent(components, \"definition_list_item\");\n const domProps = mergeDomProps(node);\n\n if (Component) {\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), children);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n node\n },\n key\n ),\n children\n );\n }\n\n return createElement(Fragment, withKey({}, key), children);\n}\n\nfunction renderBulletList(\n node: DjotBulletListNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const tight = node.tight ?? false;\n const children = renderChildren(node.children, components, footnoteState, tight);\n return renderWithOverride(\n pickComponent(components, \"bullet_list\"),\n \"ul\",\n mergeDomProps(node),\n {\n node,\n tight\n },\n key,\n children\n );\n}\n\nfunction renderListItem(\n node: DjotListItemNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n listTight: boolean | undefined,\n key?: React.Key\n): React.ReactNode {\n const override = pickComponent(components, \"list_item\");\n\n if (override) {\n const domProps = mergeDomProps(node);\n const contentChildren = renderChildren(node.children, components, footnoteState);\n if (typeof override === \"string\") {\n return createElement(override, withKey(domProps, key), contentChildren);\n }\n return createElement(\n override,\n withKey({ ...domProps, node, tight: listTight }, key),\n contentChildren\n );\n }\n\n const firstChild = node.children[0];\n const inlineSource =\n listTight === true && node.children.length === 1 && firstChild?.tag === \"para\"\n ? (firstChild as DjotParentNode).children\n : node.children;\n const contentChildren = renderChildren(inlineSource, components, footnoteState);\n\n return createElement(\"li\", withKey(mergeDomProps(node), key), contentChildren);\n}\n\nfunction renderTerm(\n node: DjotTermNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"term\"),\n \"dt\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderDefinition(\n node: DjotDefinitionNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, \"definition\"),\n \"dd\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderTaskList(\n node: DjotTaskListNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key?: React.Key\n): React.ReactNode {\n const tight = node.tight ?? false;\n const children = renderChildren(node.children, components, footnoteState, tight);\n return renderWithOverride(\n pickComponent(components, \"task_list\"),\n \"ul\",\n mergeDomProps(node, { className: \"task-list\" }),\n { node, tight },\n key,\n children\n );\n}\n\nfunction renderTaskListItem(\n node: DjotTaskListItemNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n listTight: boolean | undefined,\n key?: React.Key\n): React.ReactNode {\n const override = pickComponent(components, \"task_list_item\");\n\n if (override) {\n const domProps = mergeDomProps(node);\n const contentChildren = renderChildren(node.children, components, footnoteState);\n if (typeof override === \"string\") {\n return createElement(override, withKey(domProps, key), contentChildren);\n }\n return createElement(\n override,\n withKey({ ...domProps, node, checkbox: node.checkbox, tight: listTight }, key),\n contentChildren\n );\n }\n\n // In tight task lists, paragraph wrappers are suppressed to keep text inline\n // with the checkbox. Loose task lists preserve paragraph wrappers.\n const firstChild = node.children[0];\n const inlineSource =\n listTight === true && node.children.length === 1 && firstChild?.tag === \"para\"\n ? (firstChild as DjotParentNode).children\n : node.children;\n const contentChildren = renderChildren(inlineSource, components, footnoteState);\n\n const checkboxEl = createElement(\"input\", {\n key: \"checkbox\",\n type: \"checkbox\",\n disabled: true,\n checked: node.checkbox === \"checked\"\n });\n return createElement(\"li\", withKey(mergeDomProps(node), key), [checkboxEl, contentChildren]);\n}\n\nfunction renderBlockQuote(\n node: DjotBlockquoteNode | DjotBlockQuoteNode,\n components: DjotComponents | undefined,\n footnoteState: FootnoteState | undefined,\n key: React.Key | undefined,\n primary: \"blockquote\" | \"block_quote\",\n alias: \"blockquote\" | \"block_quote\"\n): React.ReactNode {\n const children = renderChildren(node.children, components, footnoteState);\n return renderWithOverride(\n pickComponent(components, primary, alias),\n \"blockquote\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n}\n\nfunction renderStr(\n node: DjotStrNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = node.text;\n const Component = pickComponent(components, \"str\");\n const domProps = mergeDomProps(node);\n const hasNodeDomProps = Object.keys(domProps).length > 0;\n\n if (!Component) {\n if (hasNodeDomProps) {\n return createElement(\"span\", withKey(domProps, key), value);\n }\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderNonBreakingSpace(\n node: DjotNonBreakingSpaceNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const value = \"\\u00a0\";\n const Component = pickComponent(components, \"non_breaking_space\");\n const domProps = mergeDomProps(node);\n const hasNodeDomProps = Object.keys(domProps).length > 0;\n\n if (!Component) {\n if (hasNodeDomProps) {\n return createElement(\"span\", withKey(domProps, key), value);\n }\n return value;\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), value);\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n node,\n value\n },\n key\n ),\n value\n );\n}\n\nfunction renderSoftBreak(\n node: DjotSoftBreakNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const Component = pickComponent(components, \"soft_break\", \"softbreak\");\n const domProps = mergeDomProps(node);\n\n if (!Component) {\n return \"\\n\";\n }\n\n if (typeof Component === \"string\") {\n return createElement(Component, withKey(domProps, key), \"\\n\");\n }\n\n return createElement(\n Component,\n withKey(\n {\n ...domProps,\n node\n },\n key\n ),\n \"\\n\"\n );\n}\n\nfunction renderHardBreak(\n node: DjotHardBreakNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n return renderWithOverride(\n pickComponent(components, \"hard_break\", \"hardbreak\"),\n \"br\",\n mergeDomProps(node),\n {\n node\n },\n key\n );\n}\n\nexport function renderNode(node: DjotNode, options: RenderNodeOptions = {}): React.ReactNode {\n const { components, footnoteState, key, listTight } = options;\n const children = isParentNode(node)\n ? renderChildren(node.children, components, footnoteState, listTight)\n : undefined;\n\n switch (node.tag) {\n case \"doc\":\n return renderDoc(node, components, key);\n case \"section\":\n return renderSection(node, components, footnoteState, key);\n case \"div\":\n return renderDiv(node, components, footnoteState, key);\n case \"table\":\n return renderTable(node, components, footnoteState, key);\n case \"caption\":\n return renderCaption(node, components, footnoteState, key);\n case \"row\":\n return renderRow(node, components, footnoteState, key);\n case \"cell\":\n return renderCell(node, components, footnoteState, key);\n case \"para\":\n return renderWithOverride(\n pickComponent(components, \"para\"),\n \"p\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n case \"heading\":\n return renderHeading(node, components, footnoteState, key);\n case \"emph\":\n return renderWithOverride(\n pickComponent(components, \"emph\"),\n \"em\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n case \"strong\":\n return renderWithOverride(\n pickComponent(components, \"strong\"),\n \"strong\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n case \"mark\":\n return renderMark(node, components, footnoteState, key, \"mark\", \"highlighted\");\n case \"highlighted\":\n return renderMark(node, components, footnoteState, key, \"highlighted\", \"mark\");\n case \"superscript\":\n return renderSuperscript(node, components, footnoteState, key, \"superscript\", \"supe\");\n case \"supe\":\n return renderSuperscript(node, components, footnoteState, key, \"supe\", \"superscript\");\n case \"subscript\":\n return renderSubscript(node, components, footnoteState, key);\n case \"insert\":\n return renderInsert(node, components, footnoteState, key);\n case \"delete\":\n return renderDelete(node, components, footnoteState, key);\n case \"span\":\n return renderWithOverride(\n pickComponent(components, \"span\"),\n \"span\",\n mergeDomProps(node),\n {\n node\n },\n key,\n children\n );\n case \"footnote_reference\":\n return renderFootnoteReference(node, components, footnoteState, key);\n case \"footnote\":\n return renderWithOverride(\n pickComponent(components, \"footnote\"),\n \"li\",\n mergeDomProps(node),\n {\n index: 0,\n label: node.label,\n node\n },\n key,\n children\n );\n case \"double_quoted\":\n return renderQuoted(\n node,\n components,\n footnoteState,\n key,\n \"double_quoted\",\n \"single_quoted\",\n \"\\u201c\",\n \"\\u201d\"\n );\n case \"single_quoted\":\n return renderQuoted(\n node,\n components,\n footnoteState,\n key,\n \"single_quoted\",\n \"double_quoted\",\n \"\\u2018\",\n \"\\u2019\"\n );\n case \"smart_punctuation\":\n return renderSmartPunctuation(node, components, key);\n case \"symb\":\n return renderSymb(node, components, key);\n case \"inline_math\":\n return renderInlineMath(node, components, key);\n case \"display_math\":\n return renderDisplayMath(node, components, key);\n case \"code\":\n return renderCode(node, components, key, \"code\", \"verbatim\");\n case \"verbatim\":\n return renderCode(node, components, key, \"verbatim\", \"code\");\n case \"code_block\":\n return renderCodeBlock(node, components, key);\n case \"raw_block\":\n return renderRawBlock(node, components, key);\n case \"raw_inline\":\n return renderRawInline(node, components, key);\n case \"url\":\n return renderUrl(node, components, key);\n case \"email\":\n return renderEmail(node, components, key);\n case \"link\":\n return renderLink(node, components, footnoteState, key);\n case \"image\":\n return renderImage(node, components, footnoteState, key);\n case \"bullet_list\":\n return renderBulletList(node, components, footnoteState, key);\n case \"ordered_list\":\n return renderOrderedList(node, components, footnoteState, key);\n case \"list_item\":\n return renderListItem(node, components, footnoteState, listTight, key);\n case \"definition_list\":\n return renderDefinitionList(node, components, footnoteState, key);\n case \"definition_list_item\":\n return renderDefinitionListItem(node, components, footnoteState, key);\n case \"term\":\n return renderTerm(node, components, footnoteState, key);\n case \"definition\":\n return renderDefinition(node, components, footnoteState, key);\n case \"task_list\":\n return renderTaskList(node, components, footnoteState, key);\n case \"task_list_item\":\n return renderTaskListItem(node, components, footnoteState, listTight, key);\n case \"blockquote\":\n return renderBlockQuote(node, components, footnoteState, key, \"blockquote\", \"block_quote\");\n case \"block_quote\":\n return renderBlockQuote(node, components, footnoteState, key, \"block_quote\", \"blockquote\");\n case \"thematic_break\":\n return renderWithOverride(\n pickComponent(components, \"thematic_break\"),\n \"hr\",\n mergeDomProps(node),\n {\n node\n },\n key\n );\n case \"str\":\n return renderStr(node, components, key);\n case \"non_breaking_space\":\n return renderNonBreakingSpace(node, components, key);\n default:\n if (isSoftBreakNode(node)) {\n return renderSoftBreak(node, components, key);\n }\n\n if (isHardBreakNode(node)) {\n return renderHardBreak(node, components, key);\n }\n\n return null;\n }\n}\n","import { parse } from \"@djot/djot\";\nimport { Fragment } from \"react\";\nimport type React from \"react\";\nimport { renderNode } from \"./renderNode\";\nimport type { DjotNode, DjotProps } from \"./types\";\n\nconst COMPILE_CACHE_LIMIT = 100;\nconst compileCache = new Map<string, DjotNode>();\n\nfunction getCachedAst(source: string): DjotNode | undefined {\n const cached = compileCache.get(source);\n\n if (!cached) {\n return undefined;\n }\n\n // Refresh cache recency on read.\n compileCache.delete(source);\n compileCache.set(source, cached);\n return cached;\n}\n\nfunction setCachedAst(source: string, ast: DjotNode): DjotNode {\n compileCache.set(source, ast);\n\n if (compileCache.size > COMPILE_CACHE_LIMIT) {\n const oldestSource = compileCache.keys().next().value;\n\n if (oldestSource !== undefined) {\n compileCache.delete(oldestSource);\n }\n }\n\n return ast;\n}\n\nexport function compileDjot(source: string): DjotNode {\n const cached = getCachedAst(source);\n\n if (cached) {\n return cached;\n }\n\n const ast = parse(source) as DjotNode;\n return setCachedAst(source, ast);\n}\n\nexport function Djot(props: DjotProps): React.ReactElement | null {\n const { components } = props;\n const astFromProps = props.ast;\n\n if (astFromProps !== undefined) {\n return <Fragment>{renderNode(astFromProps, { components })}</Fragment>;\n }\n\n const source = props.children ?? \"\";\n\n if (source.length === 0) {\n return null;\n }\n\n const ast = compileDjot(source);\n return <Fragment>{renderNode(ast, { components })}</Fragment>;\n}\n\nexport default Djot;\n"]}
package/dist/index.d.cts CHANGED
@@ -2,6 +2,7 @@ import React from 'react';
2
2
 
3
3
  type DjotAttributes = Record<string, string>;
4
4
  interface DjotBaseNode {
5
+ autoAttributes?: DjotAttributes;
5
6
  attributes?: DjotAttributes;
6
7
  tag: string;
7
8
  }
@@ -9,13 +10,12 @@ interface DjotParentNode extends DjotBaseNode {
9
10
  children: DjotNode[];
10
11
  }
11
12
  interface DjotDocNode extends DjotParentNode {
12
- autoReferences?: Record<string, unknown>;
13
+ autoReferences?: Record<string, DjotReferenceNode>;
13
14
  footnotes?: Record<string, DjotFootnoteNode>;
14
- references?: Record<string, unknown>;
15
+ references?: Record<string, DjotReferenceNode>;
15
16
  tag: "doc";
16
17
  }
17
18
  interface DjotSectionNode extends DjotParentNode {
18
- autoAttributes?: DjotAttributes;
19
19
  tag: "section";
20
20
  }
21
21
  interface DjotDivNode extends DjotParentNode {
@@ -55,6 +55,9 @@ interface DjotInsertNode extends DjotParentNode {
55
55
  interface DjotDeleteNode extends DjotParentNode {
56
56
  tag: "delete";
57
57
  }
58
+ interface DjotSpanNode extends DjotParentNode {
59
+ tag: "span";
60
+ }
58
61
  type DjotTableAlignment = "default" | "left" | "right" | "center" | (string & {});
59
62
  interface DjotTableNode extends DjotParentNode {
60
63
  tag: "table";
@@ -108,24 +111,78 @@ interface DjotCodeBlockNode extends DjotBaseNode {
108
111
  tag: "code_block";
109
112
  text: string;
110
113
  }
111
- interface DjotLinkNode extends DjotParentNode {
114
+ interface DjotRawBlockNode extends DjotBaseNode {
115
+ format: string;
116
+ tag: "raw_block";
117
+ text: string;
118
+ }
119
+ interface DjotRawInlineNode extends DjotBaseNode {
120
+ format: string;
121
+ tag: "raw_inline";
122
+ text: string;
123
+ }
124
+ interface DjotSymbNode extends DjotBaseNode {
125
+ alias: string;
126
+ tag: "symb";
127
+ }
128
+ interface DjotUrlNode extends DjotBaseNode {
129
+ tag: "url";
130
+ text: string;
131
+ }
132
+ interface DjotEmailNode extends DjotBaseNode {
133
+ tag: "email";
134
+ text: string;
135
+ }
136
+ interface DjotReferenceNode extends DjotBaseNode {
112
137
  destination: string;
138
+ label: string;
139
+ tag: "reference";
140
+ }
141
+ interface DjotLinkNode extends DjotParentNode {
142
+ destination?: string;
143
+ reference?: string;
113
144
  tag: "link";
114
145
  }
115
146
  interface DjotImageNode extends DjotParentNode {
116
- destination: string;
147
+ destination?: string;
148
+ reference?: string;
117
149
  tag: "image";
118
150
  }
119
151
  interface DjotBulletListNode extends DjotParentNode {
152
+ tight?: boolean;
120
153
  tag: "bullet_list";
121
154
  }
155
+ type DjotOrderedListStyle = "1." | "1)" | "(1)" | "a." | "a)" | "(a)" | "A." | "A)" | "(A)" | "i." | "i)" | "(i)" | "I." | "I)" | "(I)" | (string & {});
122
156
  interface DjotOrderedListNode extends DjotParentNode {
123
157
  start?: number;
158
+ style?: DjotOrderedListStyle;
159
+ tight?: boolean;
124
160
  tag: "ordered_list";
125
161
  }
126
162
  interface DjotListItemNode extends DjotParentNode {
127
163
  tag: "list_item";
128
164
  }
165
+ interface DjotDefinitionListNode extends DjotParentNode {
166
+ tag: "definition_list";
167
+ }
168
+ interface DjotDefinitionListItemNode extends DjotParentNode {
169
+ tag: "definition_list_item";
170
+ }
171
+ interface DjotTermNode extends DjotParentNode {
172
+ tag: "term";
173
+ }
174
+ interface DjotDefinitionNode extends DjotParentNode {
175
+ tag: "definition";
176
+ }
177
+ type DjotCheckboxStatus = "checked" | "unchecked";
178
+ interface DjotTaskListNode extends DjotParentNode {
179
+ tag: "task_list";
180
+ tight?: boolean;
181
+ }
182
+ interface DjotTaskListItemNode extends DjotParentNode {
183
+ checkbox: DjotCheckboxStatus;
184
+ tag: "task_list_item";
185
+ }
129
186
  interface DjotBlockquoteNode extends DjotParentNode {
130
187
  tag: "blockquote";
131
188
  }
@@ -149,7 +206,10 @@ interface DjotSoftBreakNode extends DjotBaseNode {
149
206
  interface DjotHardBreakNode extends DjotBaseNode {
150
207
  tag: "hard_break" | "hardbreak";
151
208
  }
152
- type DjotNode = DjotDocNode | DjotSectionNode | DjotDivNode | DjotParaNode | DjotHeadingNode | DjotEmphNode | DjotStrongNode | DjotMarkNode | DjotHighlightedNode | DjotSuperscriptNode | DjotSupeNode | DjotSubscriptNode | DjotInsertNode | DjotDeleteNode | DjotTableNode | DjotCaptionNode | DjotRowNode | DjotCellNode | DjotFootnoteReferenceNode | DjotFootnoteNode | DjotDoubleQuotedNode | DjotSingleQuotedNode | DjotSmartPunctuationNode | DjotInlineMathNode | DjotDisplayMathNode | DjotCodeNode | DjotCodeBlockNode | DjotLinkNode | DjotImageNode | DjotBulletListNode | DjotOrderedListNode | DjotListItemNode | DjotBlockquoteNode | DjotBlockQuoteNode | DjotThematicBreakNode | DjotStrNode | DjotVerbatimNode | DjotSoftBreakNode | DjotHardBreakNode;
209
+ interface DjotNonBreakingSpaceNode extends DjotBaseNode {
210
+ tag: "non_breaking_space";
211
+ }
212
+ type DjotNode = DjotDocNode | DjotSectionNode | DjotDivNode | DjotParaNode | DjotHeadingNode | DjotEmphNode | DjotStrongNode | DjotMarkNode | DjotHighlightedNode | DjotSuperscriptNode | DjotSupeNode | DjotSubscriptNode | DjotInsertNode | DjotDeleteNode | DjotSpanNode | DjotTableNode | DjotCaptionNode | DjotRowNode | DjotCellNode | DjotFootnoteReferenceNode | DjotFootnoteNode | DjotDoubleQuotedNode | DjotSingleQuotedNode | DjotSmartPunctuationNode | DjotInlineMathNode | DjotDisplayMathNode | DjotCodeNode | DjotCodeBlockNode | DjotRawBlockNode | DjotRawInlineNode | DjotSymbNode | DjotUrlNode | DjotEmailNode | DjotLinkNode | DjotImageNode | DjotBulletListNode | DjotOrderedListNode | DjotListItemNode | DjotDefinitionListNode | DjotDefinitionListItemNode | DjotTermNode | DjotDefinitionNode | DjotTaskListNode | DjotTaskListItemNode | DjotBlockquoteNode | DjotBlockQuoteNode | DjotThematicBreakNode | DjotStrNode | DjotVerbatimNode | DjotNonBreakingSpaceNode | DjotSoftBreakNode | DjotHardBreakNode;
153
213
  type DjotNodeTag = DjotNode["tag"];
154
214
  type DjotNodeByTag<Tag extends DjotNodeTag> = Extract<DjotNode, {
155
215
  tag: Tag;
@@ -183,6 +243,7 @@ interface DjotComponentPropsMap {
183
243
  subscript: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"subscript">;
184
244
  insert: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"insert">;
185
245
  delete: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"delete">;
246
+ span: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"span">;
186
247
  table: React.TableHTMLAttributes<HTMLTableElement> & DjotNodePropsBase<"table">;
187
248
  caption: React.HTMLAttributes<HTMLTableCaptionElement> & DjotNodePropsBase<"caption">;
188
249
  row: React.HTMLAttributes<HTMLTableRowElement> & DjotNodePropsBase<"row"> & {
@@ -231,13 +292,50 @@ interface DjotComponentPropsMap {
231
292
  language?: string;
232
293
  value: string;
233
294
  };
295
+ raw_block: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"raw_block"> & {
296
+ format: string;
297
+ value: string;
298
+ };
299
+ raw_inline: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"raw_inline"> & {
300
+ format: string;
301
+ value: string;
302
+ };
303
+ symb: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"symb"> & {
304
+ alias: string;
305
+ value: string;
306
+ };
307
+ url: React.AnchorHTMLAttributes<HTMLAnchorElement> & DjotNodePropsBase<"url"> & {
308
+ href: string;
309
+ value: string;
310
+ };
311
+ email: React.AnchorHTMLAttributes<HTMLAnchorElement> & DjotNodePropsBase<"email"> & {
312
+ href: string;
313
+ value: string;
314
+ };
234
315
  link: React.AnchorHTMLAttributes<HTMLAnchorElement> & DjotNodePropsBase<"link">;
235
316
  image: React.ImgHTMLAttributes<HTMLImageElement> & DjotNodePropsBase<"image"> & {
236
317
  alt?: string;
237
318
  };
238
- bullet_list: React.HTMLAttributes<HTMLUListElement> & DjotNodePropsBase<"bullet_list">;
239
- ordered_list: React.OlHTMLAttributes<HTMLOListElement> & DjotNodePropsBase<"ordered_list">;
240
- list_item: React.LiHTMLAttributes<HTMLLIElement> & DjotNodePropsBase<"list_item">;
319
+ bullet_list: React.HTMLAttributes<HTMLUListElement> & DjotNodePropsBase<"bullet_list"> & {
320
+ tight?: boolean;
321
+ };
322
+ ordered_list: React.OlHTMLAttributes<HTMLOListElement> & DjotNodePropsBase<"ordered_list"> & {
323
+ tight?: boolean;
324
+ };
325
+ list_item: React.LiHTMLAttributes<HTMLLIElement> & DjotNodePropsBase<"list_item"> & {
326
+ tight?: boolean;
327
+ };
328
+ definition_list: React.HTMLAttributes<HTMLDListElement> & DjotNodePropsBase<"definition_list">;
329
+ definition_list_item: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"definition_list_item">;
330
+ term: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"term">;
331
+ definition: React.HTMLAttributes<HTMLElement> & DjotNodePropsBase<"definition">;
332
+ task_list: React.HTMLAttributes<HTMLUListElement> & DjotNodePropsBase<"task_list"> & {
333
+ tight?: boolean;
334
+ };
335
+ task_list_item: React.LiHTMLAttributes<HTMLLIElement> & DjotNodePropsBase<"task_list_item"> & {
336
+ checkbox: DjotCheckboxStatus;
337
+ tight?: boolean;
338
+ };
241
339
  blockquote: React.BlockquoteHTMLAttributes<HTMLQuoteElement> & Omit<DjotNodePropsBase<"blockquote">, "node"> & {
242
340
  node: DjotBlockquoteNode | DjotBlockQuoteNode;
243
341
  };
@@ -248,6 +346,9 @@ interface DjotComponentPropsMap {
248
346
  str: DjotNodePropsBase<"str"> & {
249
347
  value: string;
250
348
  };
349
+ non_breaking_space: DjotNodePropsBase<"non_breaking_space"> & {
350
+ value: string;
351
+ };
251
352
  soft_break: DjotNodePropsBase<"soft_break">;
252
353
  softbreak: DjotNodePropsBase<"softbreak">;
253
354
  hard_break: DjotNodePropsBase<"hard_break">;
@@ -256,24 +357,35 @@ interface DjotComponentPropsMap {
256
357
  type DjotComponents = Partial<{
257
358
  [K in keyof DjotComponentPropsMap]: React.ElementType<DjotComponentPropsMap[K]>;
258
359
  }>;
259
- interface DjotProps {
260
- children?: string | null | undefined;
360
+ interface DjotSharedProps {
261
361
  components?: DjotComponents | undefined;
262
362
  }
363
+ type DjotProps = (DjotSharedProps & {
364
+ ast?: never;
365
+ children?: string | null | undefined;
366
+ }) | (DjotSharedProps & {
367
+ ast: DjotNode;
368
+ children?: never;
369
+ });
263
370
 
264
- declare function Djot({ children, components }: DjotProps): React.ReactElement | null;
371
+ declare function compileDjot(source: string): DjotNode;
372
+ declare function Djot(props: DjotProps): React.ReactElement | null;
265
373
 
266
- interface RenderNodeOptions {
267
- components?: DjotComponents | undefined;
268
- footnoteState?: FootnoteState | undefined;
269
- key?: React.Key;
270
- }
271
374
  interface FootnoteState {
375
+ autoReferencesByLabel: Record<string, DjotReferenceNode>;
272
376
  firstRefIdByLabel: Map<string, string>;
273
377
  indexByLabel: Map<string, number>;
274
378
  order: string[];
379
+ referencesByLabel: Record<string, DjotReferenceNode>;
275
380
  refCountByLabel: Map<string, number>;
276
381
  }
382
+
383
+ interface RenderNodeOptions {
384
+ components?: DjotComponents | undefined;
385
+ footnoteState?: FootnoteState | undefined;
386
+ key?: React.Key;
387
+ listTight?: boolean | undefined;
388
+ }
277
389
  declare function renderNode(node: DjotNode, options?: RenderNodeOptions): React.ReactNode;
278
390
 
279
- export { Djot, type DjotComponentPropsMap, type DjotComponents, type DjotNode, type DjotNodeByTag, type DjotNodeTag, type DjotProps, Djot as default, renderNode };
391
+ export { Djot, type DjotComponentPropsMap, type DjotComponents, type DjotNode, type DjotNodeByTag, type DjotNodeTag, type DjotProps, compileDjot, Djot as default, renderNode };