{"version":3,"sources":["../../../src/renderers/markdown/functions/pad-list-item-content.ts","../../../src/renderers/markdown/functions/resolve-code-block-language.ts","../../../src/renderers/markdown/functions/resolve-list-type.ts","../../../src/renderers/markdown/functions/build-renderer-config.ts","../../../src/renderers/markdown/functions/build-bracket-renderer-config.ts","../../../src/renderers/markdown/functions/resolve-config.ts","../../../src/renderers/markdown/bracket-markdown-renderer.ts","../../../src/renderers/markdown/functions/markdown-html-attrs.ts","../../../src/renderers/markdown/functions/build-html-renderer-config.ts","../../../src/renderers/markdown/html-markdown-renderer.ts","../../../src/renderers/markdown/markdown-renderer.ts"],"names":["resolveCodeBlockLines","DEFAULT_MARK_PRIORITIES","isEmbedNode","getHeaderLevel","resolveImageData","resolveVideoSrc","resolveFormulaText","SimpleRenderer","escapeHtml","BaseRenderer"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Handle multi-line list item content by padding continuation lines.\n *\n * Matches the behavior of the existing `getContentForListItem()` function.\n */\nexport function padListItemContent(content: string, padding: string): string {\n  const lines = content.split(/\\r?\\n/);\n\n  return lines.reduce((text, line, idx) => {\n    if (line.trim()) {\n      text += (idx > 0 ? padding : '') + line;\n    }\n    return text;\n  }, '');\n}\n","import type { TNode } from '../../../core/ast-types';\n\n/**\n * Extract the programming language from a code-block node's attributes.\n *\n * Handles both string values (`'javascript'`) and nested objects\n * (`{ 'code-block': 'javascript' }`).\n *\n * Returns `''` for generic / `'plain'` / `true` code blocks.\n */\nexport function resolveCodeBlockLanguage(node: TNode): string {\n  const lang = node.attributes['code-block'];\n\n  if (typeof lang === 'string' && lang !== 'true' && lang !== 'plain') {\n    return lang;\n  }\n\n  if (typeof lang === 'object' && lang !== null) {\n    const inner = (lang as Record<string, unknown>)['code-block'];\n    if (typeof inner === 'string' && inner !== 'true' && inner !== 'plain') {\n      return inner;\n    }\n  }\n\n  return '';\n}\n","import type { TNode } from '../../../core/ast-types';\n\n/**\n * Resolve the list type from a list-item node's attributes.\n *\n * Supports both simple (`'bullet'`) and nested (`{ list: 'bullet' }`) formats.\n */\nexport function resolveListType(node: TNode): string {\n  const listAttr = node.attributes.list;\n  if (typeof listAttr === 'string') return listAttr;\n\n  if (typeof listAttr === 'object' && listAttr !== null) {\n    const inner = (listAttr as Record<string, unknown>).list;\n    if (typeof inner === 'string') return inner;\n  }\n\n  return 'bullet';\n}\n","import { DEFAULT_MARK_PRIORITIES } from '../../../common/default-mark-priorities';\nimport { isEmbedNode, type NodeOverrideContext, type TNode } from '../../../core/ast-types';\nimport type { SimpleRendererConfig } from '../../../core/simple-renderer';\nimport { getHeaderLevel } from '../../common/node-attributes';\nimport { resolveCodeBlockLines } from '../../common/resolve-code-block-lines';\nimport {\n  resolveFormulaText,\n  resolveImageData,\n  resolveVideoSrc,\n} from '../../common/resolve-embed-data';\nimport type { ResolvedMarkdownConfig } from '../types/markdown-config';\nimport { padListItemContent } from './pad-list-item-content';\n\n/** Passthrough mark handler for marks with no Markdown equivalent. */\nconst identity = (content: string): string => content;\n\nimport { resolveCodeBlockLanguage } from './resolve-code-block-language';\nimport { resolveListType } from './resolve-list-type';\n\n// ─── Node Override Helpers ─────────────────────────────────────────────────\n\nfunction renderRoot(node: TNode, ctx: NodeOverrideContext<string>): string {\n  const parts = node.children.map((child) => ctx.renderNode(child));\n\n  // Trim trailing empty parts (from trailing newlines in the delta)\n  while (parts.length > 0 && parts[parts.length - 1] === '') {\n    parts.pop();\n  }\n\n  return parts.join('\\n');\n}\n\nfunction renderCodeBlockContainer(node: TNode, cfg: ResolvedMarkdownConfig): string {\n  const { language, lines } = resolveCodeBlockLines(node);\n  const lang = language && language !== 'plain' ? language : '';\n  return `${cfg.fenceChar}${lang}\\n${lines.join('\\n')}\\n${cfg.fenceChar}`;\n}\n\nfunction renderListNode(\n  node: TNode,\n  depth: number,\n  cfg: ResolvedMarkdownConfig,\n  renderNode: (child: TNode) => string,\n): string {\n  let orderedIndex = 0;\n  const items: string[] = [];\n\n  for (const child of node.children) {\n    if (child.type !== 'list-item') continue;\n\n    const listType = resolveListType(child);\n    if (listType === 'ordered') {\n      orderedIndex++;\n    }\n\n    items.push(renderListItem(child, listType, orderedIndex, depth, cfg, renderNode));\n  }\n\n  return items.join('\\n');\n}\n\nfunction renderListItem(\n  node: TNode,\n  listType: string,\n  orderedIndex: number,\n  depth: number,\n  cfg: ResolvedMarkdownConfig,\n  renderNode: (child: TNode) => string,\n): string {\n  const indent = cfg.indentString.repeat(depth);\n  const prefix = getListPrefix(listType, orderedIndex, cfg);\n\n  const inlineChildren = node.children.filter((c) => c.type !== 'list');\n  const nestedLists = node.children.filter((c) => c.type === 'list');\n\n  const rawContent = inlineChildren.map(renderNode).join('');\n  const content = padListItemContent(rawContent, indent + cfg.indentString);\n\n  let result = `${indent}${prefix}${content}`;\n\n  for (const nestedList of nestedLists) {\n    result += `\\n${renderListNode(nestedList, depth + 1, cfg, renderNode)}`;\n  }\n\n  return result;\n}\n\nfunction getListPrefix(\n  listType: string,\n  orderedIndex: number,\n  cfg: ResolvedMarkdownConfig,\n): string {\n  switch (listType) {\n    case 'ordered':\n      return `${orderedIndex}. `;\n    case 'checked':\n      return '- [x] ';\n    case 'unchecked':\n      return '- [ ] ';\n    default:\n      return `${cfg.bulletChar}${cfg.bulletPadding}`;\n  }\n}\n\n/**\n * Build a full `SimpleRendererConfig<string>` for standard Markdown only.\n *\n * Defines all block handlers (paragraph, header, blockquote, code-block,\n * image, video, divider, formula, table pass-throughs) and mark handlers\n * (bold, italic, strike, code, link). Underline and script are stripped.\n *\n * Node overrides handle `root`, `list`, and `code-block-container` — types\n * that need custom traversal logic not expressible as simple block handlers.\n */\nexport function buildRendererConfig(cfg: ResolvedMarkdownConfig): SimpleRendererConfig<string> {\n  return {\n    markPriorities: DEFAULT_MARK_PRIORITIES,\n\n    onUnknownNode: (node: TNode) => {\n      if (isEmbedNode(node) && cfg.embedHandler) {\n        return cfg.embedHandler(node) ?? '';\n      }\n      return undefined;\n    },\n\n    nodeOverrides: {\n      'line-break': () => '\\n',\n\n      root: (node, ctx) => renderRoot(node, ctx),\n\n      'code-block-container': (node) => renderCodeBlockContainer(node, cfg),\n\n      list: (node, ctx) => renderListNode(node, 0, cfg, ctx.renderNode),\n    },\n\n    blocks: {\n      paragraph: (_node, children) => {\n        return children || '';\n      },\n\n      header: (node, children) => {\n        const level = getHeaderLevel(node);\n        const prefix = '#'.repeat(level);\n        return `${prefix} ${children}`;\n      },\n\n      blockquote: (_node, children) => {\n        const content = children || '';\n        return content\n          .split('\\n')\n          .map((line) => `> ${line}`)\n          .join('\\n');\n      },\n\n      'code-block': (node, children) => {\n        // Standalone code block (when used without codeBlockGrouper).\n        // Within a code-block-container this is handled by nodeOverrides.\n        const lang = resolveCodeBlockLanguage(node);\n        return `${cfg.fenceChar}${lang}\\n${children}\\n${cfg.fenceChar}`;\n      },\n\n      image: (node) => {\n        const img = resolveImageData(node);\n        if (!img) return '';\n        return `![${img.alt}](${img.src})`;\n      },\n\n      video: (node) => {\n        return resolveVideoSrc(node) ?? '';\n      },\n\n      divider: () => cfg.hrString,\n\n      formula: (node) => {\n        return resolveFormulaText(node);\n      },\n\n      // Table blocks — basic passthrough rendering.\n      // A full table→markdown converter can be added via withBlock().\n      table: (_node, children) => children,\n      'table-row': (_node, children) => children,\n      'table-cell': (_node, children) => children,\n    },\n\n    marks: {\n      bold: (content) => `**${content}**`,\n      italic: (content) => `_${content}_`,\n      strike: (content) => `~~${content}~~`,\n      code: (content) => `\\`${content}\\``,\n      link: (content, value) => `[${content}](${String(value)})`,\n\n      // No standard MD syntax — pass content through (strip)\n      underline: identity,\n      script: identity,\n\n      // No native Markdown equivalents — pass content through\n      color: identity,\n      background: identity,\n      font: identity,\n      size: identity,\n    },\n  };\n}\n","import type { TNode } from '../../../core/ast-types';\nimport { isEmbedNode } from '../../../core/ast-types';\nimport type { SimpleRendererConfig } from '../../../core/simple-renderer';\nimport type { ResolvedMarkdownConfig } from '../types/markdown-config';\nimport { buildRendererConfig } from './build-renderer-config';\n\n/** Build opening [STYLE attr=value ...] tag. Values are stringified; avoid ] in values. */\nfunction styleTag(attrs: Record<string, string | boolean>): string {\n  const parts = Object.entries(attrs)\n    .filter(([, v]) => v !== undefined && v !== '' && v !== false)\n    .map(([k, v]) => `${k}=${v === true ? 'true' : String(v)}`);\n  return parts.length ? `[STYLE ${parts.join(' ')}]` : '';\n}\n\n/**\n * Build config for bracket markdown ([STYLE] and other [TAG]...[/TAG] formats).\n * Same as standard but underline, script, color, background, font and size are\n * rendered as [STYLE attr=value ...]content[/STYLE]. Supports embedAttributesHandler\n * for attribute-only embed output as a self-closing tag [EMBED type=... attr=val ... /].\n * The \"type\" attribute is always the embed node type; handler provides the rest.\n */\nexport function buildBracketRendererConfig(\n  cfg: ResolvedMarkdownConfig,\n): SimpleRendererConfig<string> {\n  const base = buildRendererConfig(cfg);\n  return {\n    ...base,\n    onUnknownNode: (node: TNode) => {\n      if (isEmbedNode(node)) {\n        const custom = cfg.embedHandler?.(node);\n        if (custom !== undefined) return custom;\n        const attrs = cfg.embedAttributesHandler?.(node);\n        if (attrs && typeof attrs === 'object') {\n          const { type: _reserved, ...rest } = attrs;\n          const merged = { type: node.type, ...rest };\n          const attrStr = Object.entries(merged)\n            .filter(([, v]) => v !== undefined && v !== '')\n            .map(([k, v]) => `${k}=${String(v)}`)\n            .join(' ');\n          return `[EMBED ${attrStr} /]`;\n        }\n        return '';\n      }\n      return base.onUnknownNode?.(node);\n    },\n    marks: {\n      ...base.marks,\n      underline: (content) => {\n        const open = styleTag({ underline: true });\n        return open ? `${open}${content}[/STYLE]` : content;\n      },\n      script: (content, value) => {\n        const attrs: Record<string, string | boolean> =\n          value === 'super' ? { sup: true } : { sub: true };\n        const open = styleTag(attrs);\n        return open ? `${open}${content}[/STYLE]` : content;\n      },\n      color: (content, value) => {\n        if (value == null || value === '') return content;\n        const open = styleTag({ color: String(value) });\n        return `${open}${content}[/STYLE]`;\n      },\n      background: (content, value) => {\n        if (value == null || value === '') return content;\n        const open = styleTag({ bg: String(value) });\n        return `${open}${content}[/STYLE]`;\n      },\n      font: (content, value) => {\n        if (value == null || value === '') return content;\n        const open = styleTag({ font: String(value) });\n        return `${open}${content}[/STYLE]`;\n      },\n      size: (content, value) => {\n        if (value == null || value === '') return content;\n        const open = styleTag({ size: String(value) });\n        return `${open}${content}[/STYLE]`;\n      },\n    },\n  };\n}\n","import type { MarkdownConfig, ResolvedMarkdownConfig } from '../types/markdown-config';\n\n/**\n * Apply defaults to produce a fully resolved config.\n * @internal\n */\nexport function resolveConfig(config?: MarkdownConfig): ResolvedMarkdownConfig {\n  return {\n    bulletChar: config?.bulletChar ?? '*',\n    bulletPadding: config?.bulletPadding ?? '   ',\n    indentString: config?.indentString ?? '    ',\n    hrString: config?.hrString ?? '* * *',\n    fenceChar: config?.fenceChar ?? '```',\n    embedHandler: config?.embedHandler,\n    embedAttributesHandler: config?.embedAttributesHandler,\n  };\n}\n","import { SimpleRenderer } from '../../core/simple-renderer';\nimport { buildBracketRendererConfig } from './functions/build-bracket-renderer-config';\nimport { resolveConfig } from './functions/resolve-config';\nimport type { MarkdownConfig } from './types/markdown-config';\n\n/**\n * Bracket markdown renderer: uses [STYLE]...[/STYLE] and other [TAG]...[/TAG]\n * formats for content with no standard Markdown syntax. Same blocks and standard\n * marks as {@link MarkdownRenderer}, plus non-standard formats as bracket tags\n * (e.g. [STYLE underline=true], [STYLE color=red]). Content inside can include\n * **bold**, *italic*, `code`.\n *\n * Currently supports [STYLE] with: underline, sub, sup, color, bg, font, size.\n * Additional bracket tag types can be added via the bracket renderer config.\n *\n * @example\n * ```ts\n * const renderer = new BracketMarkdownRenderer();\n * const md = renderer.render(ast);\n * // e.g. [STYLE color=red]**bold**[/STYLE]\n * ```\n */\nexport class BracketMarkdownRenderer extends SimpleRenderer<string> {\n  constructor(config?: MarkdownConfig) {\n    const cfg = resolveConfig(config);\n    super(buildBracketRendererConfig(cfg));\n  }\n\n  protected joinChildren(children: string[]): string {\n    return children.join('');\n  }\n\n  protected renderText(text: string): string {\n    return text;\n  }\n}\n","import { escapeHtml } from '../../html/base-html-renderer';\nimport type { MarkdownHtmlAttrs } from '../types/markdown-html-attrs';\n\nconst EMPTY: MarkdownHtmlAttrs = Object.freeze({});\n\nexport function emptyMarkdownHtmlAttrs(): MarkdownHtmlAttrs {\n  return EMPTY;\n}\n\nexport function mergeMarkdownHtmlAttrs(\n  target: MarkdownHtmlAttrs,\n  source: MarkdownHtmlAttrs,\n): MarkdownHtmlAttrs {\n  const t = target.attrs;\n  const s = source.attrs;\n  if (!t && !s) return EMPTY;\n  return { attrs: { ...t, ...s } };\n}\n\nexport function hasMarkdownHtmlAttrs(a: MarkdownHtmlAttrs | undefined): boolean {\n  return Boolean(a?.attrs && Object.keys(a.attrs).length > 0);\n}\n\nexport function serializeMarkdownHtmlAttrs(attrs: Record<string, string> | undefined): string {\n  if (!attrs || Object.keys(attrs).length === 0) return '';\n  return Object.entries(attrs)\n    .filter(([, v]) => v !== undefined && v !== '')\n    .map(([k, v]) => `${escapeHtml(k)}=\"${escapeHtml(String(v).trim())}\"`)\n    .join(' ');\n}\n","import type { RendererConfig, TNode } from '../../../core/ast-types';\nimport { isEmbedNode } from '../../../core/ast-types';\nimport { escapeHtml } from '../../html/base-html-renderer';\nimport type { ResolvedMarkdownConfig } from '../types/markdown-config';\nimport type { MarkdownHtmlAttrs } from '../types/markdown-html-attrs';\nimport { buildRendererConfig } from './build-renderer-config';\nimport { serializeMarkdownHtmlAttrs } from './markdown-html-attrs';\n\n/** Wrap content in HTML tag with optional attributor attrs (for underline/script). */\nfunction tagWithAttrs(tag: string, content: string, attrs: MarkdownHtmlAttrs | undefined): string {\n  const attrStr = attrs ? serializeMarkdownHtmlAttrs(attrs.attrs) : '';\n  return attrStr ? `<${tag} ${attrStr}>${content}</${tag}>` : `<${tag}>${content}</${tag}>`;\n}\n\n/**\n * Build config for Markdown with HTML fallbacks. Underline and script are HTML\n * tags; color, background, font and size are **attributors** (like the HTML\n * renderers) so they merge into a single <span> tag. Supports embedAttributesHandler.\n */\nexport function buildHtmlRendererConfig(\n  cfg: ResolvedMarkdownConfig,\n): RendererConfig<string, MarkdownHtmlAttrs> {\n  const base = buildRendererConfig(cfg);\n  const {\n    underline,\n    script,\n    color: _color,\n    background: _background,\n    font: _font,\n    size: _size,\n    ...restMarks\n  } = base.marks;\n\n  return {\n    markPriorities: base.markPriorities,\n    blocks: base.blocks,\n    nodeOverrides: base.nodeOverrides,\n    onUnknownNode: (node: TNode) => {\n      if (isEmbedNode(node)) {\n        const custom = cfg.embedHandler?.(node);\n        if (custom !== undefined) return custom;\n        const attrs = cfg.embedAttributesHandler?.(node);\n        if (attrs && typeof attrs === 'object' && Object.keys(attrs).length > 0) {\n          const attrStr = Object.entries(attrs)\n            .map(([k, v]) => `data-${k}=\"${escapeHtml(String(v))}\"`)\n            .join(' ');\n          return `<embed data-embed-type=\"${escapeHtml(node.type)}\" ${attrStr} />`;\n        }\n        return '';\n      }\n      return base.onUnknownNode?.(node);\n    },\n    attributors: {\n      color: (value) =>\n        value != null && value !== '' ? { attrs: { color: String(value).trim() } } : {},\n      background: (value) =>\n        value != null && value !== ''\n          ? { attrs: { 'background-color': String(value).trim() } }\n          : {},\n      font: (value) =>\n        value != null && value !== '' ? { attrs: { font: String(value).trim() } } : {},\n      size: (value) =>\n        value != null && value !== '' ? { attrs: { size: String(value).trim() } } : {},\n    },\n    marks: {\n      ...restMarks,\n      underline: (content, _v, _n, a) => tagWithAttrs('u', content, a),\n      script: (content, value, _n, a) => {\n        const tag = value === 'super' ? 'sup' : 'sub';\n        return tagWithAttrs(tag, content, a);\n      },\n    },\n  };\n}\n","import type { BlockDescriptor, MarkHandler, SimpleTagMark, TNode } from '../../core/ast-types';\nimport { BaseRenderer } from '../../core/base-renderer';\nimport { buildHtmlRendererConfig } from './functions/build-html-renderer-config';\nimport {\n  emptyMarkdownHtmlAttrs,\n  hasMarkdownHtmlAttrs,\n  mergeMarkdownHtmlAttrs,\n  serializeMarkdownHtmlAttrs,\n} from './functions/markdown-html-attrs';\nimport { resolveConfig } from './functions/resolve-config';\nimport type { MarkdownConfig } from './types/markdown-config';\nimport type { MarkdownHtmlAttrs } from './types/markdown-html-attrs';\n\nfunction isSimpleTagMark(m: unknown): m is SimpleTagMark {\n  return typeof m === 'object' && m !== null && 'tag' in m;\n}\n\n/**\n * Markdown renderer that uses HTML for formats with no standard Markdown syntax.\n * Same blocks and standard marks as {@link MarkdownRenderer}, plus:\n *\n * - **Underline** → `<u>...</u>`\n * - **Script (subscript)** → `<sub>...</sub>`\n * - **Script (superscript)** → `<sup>...</sup>`\n * - **Color, background, font, size** → single `<span color=\"...\" ...>` with all attributes\n *\n * Use when the output is rendered by a Markdown processor that allows inline\n * HTML (e.g. GitHub Flavored Markdown, CommonMark). Use {@link MarkdownRenderer}\n * for strict standard Markdown only.\n *\n * @example\n * ```ts\n * const renderer = new HtmlMarkdownRenderer();\n * const md = renderer.render(ast);\n * // Underline and script appear as <u>, <sub>, <sup>; color/font etc. in one <span>\n * ```\n */\nexport class HtmlMarkdownRenderer extends BaseRenderer<string, MarkdownHtmlAttrs> {\n  constructor(config?: MarkdownConfig) {\n    const cfg = resolveConfig(config);\n    super(buildHtmlRendererConfig(cfg));\n  }\n\n  protected joinChildren(children: string[]): string {\n    return children.join('');\n  }\n\n  protected renderText(text: string): string {\n    return text;\n  }\n\n  protected emptyAttrs(): MarkdownHtmlAttrs {\n    return emptyMarkdownHtmlAttrs();\n  }\n\n  protected mergeAttrs(target: MarkdownHtmlAttrs, source: MarkdownHtmlAttrs): MarkdownHtmlAttrs {\n    return mergeMarkdownHtmlAttrs(target, source);\n  }\n\n  protected hasAttrs(attrs: MarkdownHtmlAttrs): boolean {\n    return hasMarkdownHtmlAttrs(attrs);\n  }\n\n  protected wrapWithAttrs(content: string, attrs: MarkdownHtmlAttrs): string {\n    const attrStr = serializeMarkdownHtmlAttrs(attrs.attrs);\n    return attrStr ? `<span ${attrStr}>${content}</span>` : content;\n  }\n\n  protected renderSimpleTag(\n    tag: string,\n    content: string,\n    collectedAttrs?: MarkdownHtmlAttrs,\n  ): string {\n    const attrStr = collectedAttrs ? serializeMarkdownHtmlAttrs(collectedAttrs.attrs) : '';\n    return attrStr ? `<${tag} ${attrStr}>${content}</${tag}>` : `<${tag}>${content}</${tag}>`;\n  }\n\n  protected renderBlockFromDescriptor(\n    _descriptor: BlockDescriptor,\n    _node: TNode,\n    childrenOutput: string,\n    _resolvedAttrs: MarkdownHtmlAttrs,\n  ): string {\n    return childrenOutput;\n  }\n\n  /**\n   * Override so attributors (color, font, etc.) wrap outside element marks.\n   * Element marks output Markdown (**bold**, _italic_, etc.); then we wrap\n   * with <span color=\"...\" ...> for a result like <span color=\"red\">**text**</span>.\n   */\n  protected override renderTextNode(node: TNode): string {\n    let output = this.renderText(typeof node.data === 'string' ? node.data : '');\n\n    let collectedAttrs = this.emptyAttrs();\n    for (const [attrName, attrValue] of Object.entries(node.attributes)) {\n      const handler = this.attributors[attrName];\n      if (handler) {\n        const contribution = handler(attrValue, node);\n        if (this.hasAttrs(contribution)) {\n          collectedAttrs = this.hasAttrs(collectedAttrs)\n            ? this.mergeAttrs(collectedAttrs, contribution)\n            : contribution;\n        }\n      }\n    }\n    const hasCollected = this.hasAttrs(collectedAttrs);\n\n    const elementMarks: Array<{\n      mark: MarkHandler<string, MarkdownHtmlAttrs> | SimpleTagMark;\n      value: unknown;\n      priority: number;\n    }> = [];\n    for (const [attrName, attrValue] of Object.entries(node.attributes)) {\n      const mark = this.marks[attrName];\n      if (mark) {\n        elementMarks.push({\n          mark,\n          value: attrValue,\n          priority: this.markPriorities[attrName] ?? 0,\n        });\n      }\n    }\n    elementMarks.sort((a, b) => a.priority - b.priority);\n\n    for (const { mark, value } of elementMarks) {\n      if (isSimpleTagMark(mark)) {\n        const tag = typeof mark.tag === 'function' ? mark.tag(value) : mark.tag;\n        output = this.renderSimpleTag(tag, output, undefined);\n      } else {\n        output = (mark as MarkHandler<string, MarkdownHtmlAttrs>)(output, value, node, undefined);\n      }\n    }\n\n    if (hasCollected) {\n      output = this.wrapWithAttrs(output, collectedAttrs);\n    }\n\n    return output;\n  }\n}\n","import { SimpleRenderer } from '../../core/simple-renderer';\nimport { buildRendererConfig } from './functions/build-renderer-config';\nimport { resolveConfig } from './functions/resolve-config';\nimport type { MarkdownConfig } from './types/markdown-config';\n\n/**\n * Renders an AST into standard Markdown text.\n *\n * Supports all standard Quill block types (paragraphs, headers, blockquotes,\n * code blocks, lists, images, video, horizontal rules) and inline marks that\n * have native Markdown syntax: bold, italic, strike, code, link.\n *\n * Formats with no standard Markdown equivalent (underline, script, color,\n * background, font, size) are stripped. For HTML fallbacks (e.g. `<u>`,\n * `<sub>`, `<sup>`) use {@link HtmlMarkdownRenderer}.\n *\n * The renderer is designed for extensibility — use `withBlock()` and\n * `withMark()` to add handlers for custom embed types (e.g. mentions,\n * link previews, formulas).\n *\n * @example\n * ```ts\n * const renderer = new MarkdownRenderer();\n * const md = renderer.render(ast);\n * ```\n *\n * @example\n * ```ts\n * // Customized output\n * const renderer = new MarkdownRenderer({\n *   bulletChar: '-',\n *   hrString: '---',\n *   fenceChar: '~~~',\n * });\n * ```\n *\n * @example\n * ```ts\n * // Extend with custom embed\n * const renderer = new MarkdownRenderer().withBlock('user_mention', (node) => {\n *   const data = node.data as Record<string, unknown>;\n *   return `[@${data.name}](#user_mention#${data.id})`;\n * });\n * ```\n */\nexport class MarkdownRenderer extends SimpleRenderer<string> {\n  constructor(config?: MarkdownConfig) {\n    const cfg = resolveConfig(config);\n    super(buildRendererConfig(cfg));\n  }\n\n  // ─── SimpleRenderer Abstract Methods ─────────────────────────────────────\n\n  protected joinChildren(children: string[]): string {\n    return children.join('');\n  }\n\n  protected renderText(text: string): string {\n    return text;\n  }\n}\n"]}