{"version":3,"sources":["../src/core/simple-renderer.ts"],"names":["BaseRenderer"],"mappings":";;;;;AA6EO,IAAe,cAAA,GAAf,cAA8CA,8BAAA,CAA8B;AAAA,EACjF,YAAY,MAAA,EAAsC;AAChD,IAAA,KAAA,CAAM;AAAA,MACJ,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,gBAAgB,MAAA,CAAO,cAAA;AAAA,MACvB,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,eAAe,MAAA,CAAO;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA,EAIU,UAAA,GAAsB;AAC9B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEU,UAAA,CAAW,SAAkB,MAAA,EAA0B;AAC/D,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEU,SAAS,MAAA,EAA0B;AAC3C,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEU,aAAA,CAAc,SAAiB,MAAA,EAAyB;AAChE,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEU,eAAA,CAAgB,IAAA,EAAc,OAAA,EAAiB,eAAA,EAAmC;AAC1F,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEU,yBAAA,CACR,WAAA,EACA,KAAA,EACA,cAAA,EACA,cAAA,EACQ;AACR,IAAA,OAAO,cAAA;AAAA,EACT;AACF","file":"chunk-MURLDMGA.cjs","sourcesContent":["import type {\n  BlockDescriptor,\n  BlockHandler,\n  MarkHandler,\n  NodeOverrideHandler,\n  TNode,\n} from './ast-types';\nimport { BaseRenderer } from './base-renderer';\n\n/**\n * Configuration for a {@link SimpleRenderer}.\n *\n * Omits `attributors` and `blockAttributeResolvers` since\n * SimpleRenderer does not support the attributor system.\n *\n * **Note:** `marks` only accepts function-based `MarkHandler` entries.\n * Declarative `SimpleTagMark` descriptors are not supported because\n * `SimpleRenderer` has no tag-rendering mechanism. Use {@link BaseRenderer}\n * directly if you need declarative tag marks.\n *\n * @typeParam Output - The rendered output type (string, etc.)\n */\nexport interface SimpleRendererConfig<Output> {\n  /** How to render block-level nodes (paragraph, header, list, etc.) */\n  blocks: Record<string, BlockHandler<Output> | BlockDescriptor>;\n  /**\n   * How to render inline element marks (bold, link, etc.).\n   * Only function-based handlers are supported — `SimpleTagMark` descriptors\n   * are silently ignored by SimpleRenderer. Use `BaseRenderer` if you need them.\n   */\n  marks: Record<string, MarkHandler<Output>>;\n  /** Optional mark nesting priorities. Higher value = wraps outer. */\n  markPriorities?: Record<string, number>;\n  /**\n   * Override rendering for specific node types. Checked before the standard\n   * block handler lookup. See {@link import('./ast-types').NodeOverrideHandler}.\n   */\n  nodeOverrides?: Record<string, NodeOverrideHandler<Output>>;\n  /**\n   * Called for unknown node types with no block handler or nodeOverride.\n   * Return a value to use as output, or `undefined` to fall back to children.\n   */\n  onUnknownNode?: (node: TNode) => Output | undefined;\n}\n\n/**\n * Simplified base class for renderers that don't need the attributor system.\n *\n * Provides default no-op implementations for all `Attrs`-related abstract\n * methods from {@link BaseRenderer}, reducing the abstract method count\n * from 8 to 2:\n * - `joinChildren()` — how to combine rendered children into a single output\n * - `renderText()` — how to render a plain text leaf node\n *\n * Use this for output formats that don't have a concept of \"collected\n * inline attributes\" (Markdown, plain text, SSML, ADF, etc.).\n *\n * For renderers that need attributor support (HTML, React), extend\n * {@link BaseRenderer} directly instead.\n *\n * @typeParam Output - The rendered output type (string, etc.)\n *\n * @example\n * ```ts\n * class PlainTextRenderer extends SimpleRenderer<string> {\n *   constructor(config: SimpleRendererConfig<string>) {\n *     super(config);\n *   }\n *   protected joinChildren(children: string[]): string {\n *     return children.join('');\n *   }\n *   protected renderText(text: string): string {\n *     return text;\n *   }\n * }\n * ```\n */\nexport abstract class SimpleRenderer<Output> extends BaseRenderer<Output, unknown> {\n  constructor(config: SimpleRendererConfig<Output>) {\n    super({\n      blocks: config.blocks,\n      marks: config.marks,\n      markPriorities: config.markPriorities,\n      nodeOverrides: config.nodeOverrides,\n      onUnknownNode: config.onUnknownNode,\n    });\n  }\n\n  // ─── Default no-op implementations for Attrs protocol ─────────────────\n\n  protected emptyAttrs(): unknown {\n    return undefined;\n  }\n\n  protected mergeAttrs(_target: unknown, source: unknown): unknown {\n    return source;\n  }\n\n  protected hasAttrs(_attrs: unknown): boolean {\n    return false;\n  }\n\n  protected wrapWithAttrs(content: Output, _attrs: unknown): Output {\n    return content;\n  }\n\n  protected renderSimpleTag(_tag: string, content: Output, _collectedAttrs?: unknown): Output {\n    return content;\n  }\n\n  protected renderBlockFromDescriptor(\n    _descriptor: BlockDescriptor,\n    _node: TNode,\n    childrenOutput: Output,\n    _resolvedAttrs: unknown,\n  ): Output {\n    return childrenOutput;\n  }\n}\n"]}