@willwang-io/react-djot 0.1.4 → 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":["createElement","Fragment","parse","jsx"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createElement, Fragment } from \"react\";\nimport type React from \"react\";\nimport type {\n DjotBaseNode,\n DjotBlockQuoteNode,\n DjotBlockquoteNode,\n DjotCodeBlockNode,\n DjotCodeNode,\n DjotComponentPropsMap,\n DjotComponents,\n DjotDocNode,\n DjotHardBreakNode,\n DjotHeadingNode,\n DjotImageNode,\n DjotLinkNode,\n DjotNode,\n DjotOrderedListNode,\n DjotParentNode,\n DjotSectionNode,\n DjotSoftBreakNode,\n DjotStrNode,\n DjotVerbatimNode\n} from \"./types\";\n\nexport interface RenderNodeOptions {\n components?: DjotComponents | undefined;\n key?: React.Key;\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(children: DjotNode[], components?: DjotComponents): React.ReactNode[] {\n return children.map((child, index) =>\n renderNode(child, {\n components,\n key: index\n })\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 \"code_block\":\n output += node.text;\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 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 children = renderChildren(node.children, components);\n const Component = pickComponent(components, \"doc\");\n\n if (Component) {\n if (typeof Component === \"string\") {\n return createElement(Component, withKey({}, key), children);\n }\n\n return createElement(Component, withKey({ node }, key), children);\n }\n\n return createElement(Fragment, withKey({}, key), children);\n}\n\nfunction renderSection(\n node: DjotSectionNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components);\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 renderHeading(\n node: DjotHeadingNode,\n components: DjotComponents | undefined,\n key?: React.Key\n): React.ReactNode {\n const level = clampHeadingLevel(node.level);\n const children = renderChildren(node.children, components);\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 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 key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components);\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 key?: React.Key\n): React.ReactNode {\n const children = renderChildren(node.children, components);\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 key: React.Key | undefined,\n primary: \"blockquote\" | \"block_quote\",\n alias: \"blockquote\" | \"block_quote\"\n): React.ReactNode {\n const children = renderChildren(node.children, components);\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, key } = options;\n const children = isParentNode(node) ? renderChildren(node.children, components) : undefined;\n\n switch (node.tag) {\n case \"doc\":\n return renderDoc(node, components, key);\n case \"section\":\n return renderSection(node, components, 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, 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 \"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, 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, 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, key, \"blockquote\", \"block_quote\");\n case \"block_quote\":\n return renderBlockQuote(node, components, 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"]}