{"version":3,"file":"compiler.cjs","names":["get","cx","defaultSlugify","defaultSanitizer","NAMED_CODES_TO_UNICODE","ORDERED_LIST_R","UNORDERED_LIST_R","ORDERED_LIST_ITEM_R","UNORDERED_LIST_ITEM_R","ORDERED_LIST_ITEM_PREFIX_R","UNORDERED_LIST_ITEM_PREFIX_R","allowInline","LIST_LOOKBEHIND_R","Priority","BLOCK_END_R","trimEnd","some","RuleType","blockRegex","BLOCKQUOTE_R","BLOCKQUOTE_TRIM_LEFT_MULTILINE_R","BLOCKQUOTE_ALERT_R","parseBlock","parseInline","anyScopeRegex","BREAK_LINE_R","captureNothing","BREAK_THEMATIC_R","CODE_BLOCK_R","unescapeString","CODE_BLOCK_FENCED_R","simpleInlineRegex","CODE_INLINE_R","FOOTNOTE_R","renderNothing","inlineRegex","FOOTNOTE_REFERENCE_R","GFM_TASK_R","HEADING_ATX_COMPLIANT_R","HEADING_R","HEADING_SETEXT_R","HTML_BLOCK_ELEMENT_R","HTML_LEFT_TRIM_AMOUNT_R","trimLeadingWhitespaceOutsideFences","DO_NOT_PROCESS_HTML_ELEMENTS","HTML_COMMENT_R","HTML_SELF_CLOSING_ELEMENT_R","CUSTOM_COMPONENT_R","parseCaptureInline","parseSimpleInline","LINK_AUTOLINK_R","startsWith","LINK_AUTOLINK_BARE_URL_R","CONSECUTIVE_NEWLINE_R","REFERENCE_IMAGE_OR_LINK","REFERENCE_IMAGE_R","REFERENCE_LINK_R","NP_TABLE_R","parseTableAlign","parseTableCells","parseTableRow","SHORTCODE_R","TEXT_PLAIN_R","HTML_CHAR_CODE_R","TEXT_BOLD_R","TEXT_EMPHASIZED_R","TEXT_ESCAPED_R","TEXT_MARKED_R","TEXT_STRIKETHROUGHED_R","ATTR_EXTRACTOR_R","normalizeAttributeKey","unquote","ATTRIBUTE_TO_NODE_PROP_MAP","attributeValueToNodePropValue","TRIM_STARTING_NEWLINES","PARAGRAPH_R","parserFor","FRONT_MATTER_R","SHOULD_RENDER_AS_BLOCK_R","renderFor","createRenderer"],"sources":["../../../src/markdown/compiler.ts"],"sourcesContent":["import {\n  ATTR_EXTRACTOR_R,\n  ATTRIBUTE_TO_NODE_PROP_MAP,\n  BLOCK_END_R,\n  BLOCKQUOTE_ALERT_R,\n  BLOCKQUOTE_R,\n  BLOCKQUOTE_TRIM_LEFT_MULTILINE_R,\n  BREAK_LINE_R,\n  BREAK_THEMATIC_R,\n  CODE_BLOCK_FENCED_R,\n  CODE_BLOCK_R,\n  CODE_INLINE_R,\n  CONSECUTIVE_NEWLINE_R,\n  CUSTOM_COMPONENT_R,\n  DO_NOT_PROCESS_HTML_ELEMENTS,\n  FOOTNOTE_R,\n  FOOTNOTE_REFERENCE_R,\n  FRONT_MATTER_R,\n  GFM_TASK_R,\n  HEADING_ATX_COMPLIANT_R,\n  HEADING_R,\n  HEADING_SETEXT_R,\n  HTML_BLOCK_ELEMENT_R,\n  HTML_CHAR_CODE_R,\n  HTML_COMMENT_R,\n  HTML_LEFT_TRIM_AMOUNT_R,\n  HTML_SELF_CLOSING_ELEMENT_R,\n  LINK_AUTOLINK_BARE_URL_R,\n  LINK_AUTOLINK_R,\n  LIST_LOOKBEHIND_R,\n  type ListType,\n  NAMED_CODES_TO_UNICODE,\n  NP_TABLE_R,\n  ORDERED,\n  ORDERED_LIST_ITEM_PREFIX_R,\n  ORDERED_LIST_ITEM_R,\n  ORDERED_LIST_R,\n  PARAGRAPH_R,\n  Priority,\n  REFERENCE_IMAGE_OR_LINK,\n  REFERENCE_IMAGE_R,\n  REFERENCE_LINK_R,\n  RuleType,\n  SHORTCODE_R,\n  SHOULD_RENDER_AS_BLOCK_R,\n  TEXT_BOLD_R,\n  TEXT_EMPHASIZED_R,\n  TEXT_ESCAPED_R,\n  TEXT_MARKED_R,\n  TEXT_PLAIN_R,\n  TEXT_STRIKETHROUGHED_R,\n  TRIM_STARTING_NEWLINES,\n  UNORDERED,\n  UNORDERED_LIST_ITEM_PREFIX_R,\n  UNORDERED_LIST_ITEM_R,\n  UNORDERED_LIST_R,\n} from './constants';\nimport { parserFor } from './parser';\nimport { createRenderer, renderFor } from './renderer';\nimport type {\n  CompileOptions,\n  ComponentOverrides as ComponentDefinition,\n  HeadingNode,\n  HTMLTag,\n  MarkdownContext,\n  MarkdownOptions,\n  MarkdownRuntime,\n  OrderedListNode,\n  ParseState,\n  Rule,\n  Rules,\n  TableNode,\n  UnorderedListNode,\n} from './types';\nimport {\n  allowInline,\n  anyScopeRegex,\n  attributeValueToNodePropValue,\n  blockRegex,\n  captureNothing,\n  cx,\n  sanitizer as defaultSanitizer,\n  slugify as defaultSlugify,\n  get,\n  inlineRegex,\n  normalizeAttributeKey,\n  parseBlock,\n  parseCaptureInline,\n  parseInline,\n  parseSimpleInline,\n  parseTableAlign,\n  parseTableCells,\n  parseTableRow,\n  renderNothing,\n  simpleInlineRegex,\n  some,\n  startsWith,\n  trimEnd,\n  trimLeadingWhitespaceOutsideFences,\n  unescapeString,\n  unquote,\n} from './utils';\n\ntype CreateElementFunction = (\n  tag: any,\n  props: Record<string, any> | null,\n  ...children: any[]\n) => unknown;\n\ntype FootnoteDef = { footnote: string; identifier: string };\n\nconst IMAGE_R = /^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/;\nconst LINK_INSIDE =\n  '(?:\\\\[[^\\\\[\\\\]]*(?:\\\\[[^\\\\[\\\\]]*\\\\][^\\\\[\\\\]]*)*\\\\]|[^\\\\[\\\\]])*';\nconst LINK_HREF_AND_TITLE =\n  '\\\\s*<?((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+[\\'\"]([\\\\s\\\\S]*?)[\\'\"])?\\\\s*';\nconst LINK_R = new RegExp(\n  `^\\\\[(${LINK_INSIDE})\\\\]\\\\(${LINK_HREF_AND_TITLE}\\\\)`\n);\n\nconst getTag = (tag: any, components: ComponentDefinition<any>): any => {\n  if (typeof tag !== 'string') return tag;\n  let override = get(components, tag);\n\n  if (!override && typeof tag === 'string') {\n    const lowercaseTag = tag.toLowerCase();\n    // Try case-insensitive lookup\n    const key = Object.keys(components).find(\n      (k) => k.toLowerCase() === lowercaseTag\n    );\n    if (key) {\n      override = get(components, key);\n    }\n  }\n\n  if (!override) return tag;\n\n  return override;\n};\n\nconst createElementFactory = (\n  ctx: MarkdownContext<any>,\n  options: MarkdownOptions\n): CreateElementFunction => {\n  const { runtime, components = {} } = ctx;\n  const filteredTags = options.tagfilter\n    ? [\n        'title',\n        'textarea',\n        'style',\n        'xmp',\n        'iframe',\n        'noembed',\n        'noframes',\n        'script',\n        'plaintext',\n      ]\n    : [];\n\n  return (\n    tag: any,\n    props: Record<string, any> | null,\n    ...children: any[]\n  ): unknown => {\n    if (typeof tag === 'string' && filteredTags.includes(tag.toLowerCase())) {\n      return null;\n    }\n\n    const isStringTag = typeof tag === 'string';\n\n    const className = cx(props?.className, props?.class);\n\n    const mergedProps: Record<string, any> = {};\n    let classNameHandled = false;\n\n    // Preserve attribute order while merging className\n    if (props) {\n      for (const key in props) {\n        const value = props[key];\n\n        if (value === undefined || value === null) continue;\n\n        if (key === 'className' || key === 'class') {\n          if (!classNameHandled) {\n            if (className) mergedProps.className = className;\n            classNameHandled = true;\n          }\n        } else {\n          mergedProps[key] = value;\n        }\n      }\n    }\n\n    if (!classNameHandled && className) {\n      mergedProps.className = className;\n    }\n\n    let finalProps = mergedProps;\n\n    if (runtime.normalizeProps && isStringTag)\n      finalProps = runtime.normalizeProps(tag as string, mergedProps);\n    const component = getTag(tag, components);\n\n    return runtime.createElement(\n      component,\n      finalProps,\n      ...(children.length === 1 ? [children[0]] : children)\n    );\n  };\n};\n\nconst createRules = (\n  createElement: CreateElementFunction,\n  ctx: MarkdownContext<any>,\n  options: MarkdownOptions,\n  footnotes: FootnoteDef[],\n  refs: Record<string, { target: string; title?: string }>,\n  attrStringToMap: (tag: HTMLTag, str: string) => Record<string, any> | null,\n  containsBlockSyntax: (input: string) => boolean,\n  nonParagraphBlockSyntaxes: RegExp[]\n): Rules => {\n  const slug = (input: string) => {\n    if (process.env.NODE_ENV === 'test' && input === '中文') {\n      const def = defaultSlugify(input);\n      console.log('Slug check:', {\n        input,\n        ctxSlugify: !!ctx.slugify,\n        defaultSlugifyResult: def,\n      });\n    }\n    return ctx.slugify\n      ? ctx.slugify(input, defaultSlugify)\n      : defaultSlugify(input);\n  };\n  const sanitize = ctx.sanitizer ?? defaultSanitizer;\n  const namedCodesToUnicode = ctx.namedCodesToUnicode\n    ? { ...NAMED_CODES_TO_UNICODE, ...ctx.namedCodesToUnicode }\n    : NAMED_CODES_TO_UNICODE;\n\n  const generateListRule = (\n    type: ListType\n  ): Rule<OrderedListNode | UnorderedListNode> => {\n    const ordered = type === ORDERED;\n    const LIST_R = ordered ? ORDERED_LIST_R : UNORDERED_LIST_R;\n    const LIST_ITEM_R = ordered ? ORDERED_LIST_ITEM_R : UNORDERED_LIST_ITEM_R;\n    const LIST_ITEM_PREFIX_R = ordered\n      ? ORDERED_LIST_ITEM_PREFIX_R\n      : UNORDERED_LIST_ITEM_PREFIX_R;\n\n    return {\n      _qualify: (source) => LIST_ITEM_PREFIX_R.test(source),\n      _match: allowInline((source, state) => {\n        const isStartOfLine = LIST_LOOKBEHIND_R.exec(state.prevCapture ?? '');\n        const isListAllowed = state.list ?? (!state.inline && !state.simple);\n\n        if (isStartOfLine && isListAllowed) {\n          const matchSource = (isStartOfLine[1] || '') + source;\n\n          return LIST_R.exec(matchSource);\n        }\n\n        return null;\n      }),\n      _order: Priority.HIGH,\n      _parse(capture, parse, state) {\n        const bullet = capture[2];\n        const startValue = ordered ? +bullet.slice(0, -1) : undefined;\n        const items = capture[0]\n          .replace(BLOCK_END_R, '\\n')\n          .match(LIST_ITEM_R) as string[];\n\n        if (!items) return { items: [], ordered, start: startValue } as any;\n\n        let lastItemWasAParagraph = false;\n\n        const result = items.map((item, i) => {\n          const prefixCapture = LIST_ITEM_PREFIX_R.exec(item);\n          const space = prefixCapture ? prefixCapture[0].length : 0;\n          const spaceRegex = new RegExp(`^ {1,${space}}`, 'gm');\n          const content = item\n            .replace(spaceRegex, '')\n            .replace(LIST_ITEM_PREFIX_R, '');\n          const isLastItem = i === items.length - 1;\n          const containsBlocks = content.indexOf('\\n\\n') !== -1;\n          const thisItemIsAParagraph =\n            containsBlocks || (isLastItem && lastItemWasAParagraph);\n          lastItemWasAParagraph = thisItemIsAParagraph;\n\n          const oldStateInline = state.inline;\n          const oldStateList = state.list;\n          state.list = true;\n\n          let adjustedContent: string;\n\n          if (thisItemIsAParagraph) {\n            state.inline = false;\n            adjustedContent = `${trimEnd(content)}\\n\\n`;\n          } else {\n            state.inline = true;\n            adjustedContent = trimEnd(content);\n          }\n\n          const parsed = parse(adjustedContent, state);\n          state.inline = oldStateInline;\n          state.list = oldStateList;\n\n          return parsed;\n        });\n\n        return { items: result, ordered, start: startValue } as any;\n      },\n      _render(node, output, state = {}) {\n        const Tag = node.ordered ? 'ol' : 'ul';\n        const props: Record<string, any> = { key: state.key };\n\n        if (node.ordered && node.start != null) props.start = node.start;\n\n        return createElement(\n          Tag,\n          props,\n          ...node.items.map((item, i) =>\n            createElement('li', { key: i }, output(item, state))\n          )\n        );\n      },\n    };\n  };\n\n  const matchParagraph = (\n    source: string,\n    state: ParseState\n  ): RegExpMatchArray | null => {\n    if (\n      state.inline ||\n      state.simple ||\n      (state.inHTML &&\n        source.indexOf('\\n\\n') === -1 &&\n        state.prevCapture?.indexOf('\\n\\n') === -1)\n    )\n      return null;\n    let start = 0;\n    while (true) {\n      const newlineIndex = source.indexOf('\\n', start);\n      const line = source.slice(\n        start,\n        newlineIndex === -1 ? undefined : newlineIndex + 1\n      );\n\n      if (some(nonParagraphBlockSyntaxes, line)) break;\n\n      if (newlineIndex === -1 || !line.trim()) break;\n      start = newlineIndex + 1;\n    }\n    const match = source.slice(0, start);\n    // Align with original simple-markdown behavior: capture the whole match including newlines\n\n    if (match === '') return null;\n    const captured = trimEnd(match);\n\n    if (captured === '') return null;\n\n    return [match, undefined, captured] as unknown as RegExpMatchArray;\n  };\n\n  const rules: Rules = {\n    [RuleType.blockQuote]: {\n      _qualify: ['>'],\n      _match: blockRegex(BLOCKQUOTE_R),\n      _order: Priority.HIGH,\n      _parse(capture, parse, state) {\n        const matchAlert = capture[0]\n          .replace(BLOCKQUOTE_TRIM_LEFT_MULTILINE_R, '')\n          .match(BLOCKQUOTE_ALERT_R);\n        const alert = matchAlert?.[1];\n        const content = matchAlert?.[2] ?? '';\n        const hasNewline = content.indexOf('\\n') !== -1;\n        const children = hasNewline\n          ? parseBlock(parse, content, state)\n          : parseInline(parse, content, state);\n\n        return { alert, children };\n      },\n      _render(node, output, state = {}) {\n        const props: Record<string, any> = { key: state.key };\n\n        if (node.alert) {\n          props.className = `markdown-alert-${slug(node.alert.toLowerCase())}`;\n          node.children.unshift({\n            attrs: {},\n            children: [{ type: RuleType.text, text: node.alert }],\n            noInnerParse: true,\n            type: RuleType.htmlBlock,\n            tag: 'header',\n          } as any);\n        }\n\n        return createElement('blockquote', props, output(node.children, state));\n      },\n    },\n    [RuleType.breakLine]: {\n      _qualify: ['  '],\n      _match: anyScopeRegex(BREAK_LINE_R),\n      _order: Priority.HIGH,\n      _parse: captureNothing,\n      _render(_, __, state = {}) {\n        return createElement('br', { key: state.key });\n      },\n    },\n    [RuleType.breakThematic]: {\n      _qualify: ['--', '__', '**', '- ', '* ', '_ '],\n      _match: blockRegex(BREAK_THEMATIC_R),\n      _order: Priority.HIGH,\n      _parse: captureNothing,\n      _render(_, __, state = {}) {\n        return createElement('hr', { key: state.key });\n      },\n    },\n    [RuleType.codeBlock]: {\n      _qualify: ['    '],\n      _match: blockRegex(CODE_BLOCK_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        return {\n          type: RuleType.codeBlock,\n          lang: undefined,\n          text: unescapeString(trimEnd(capture[0].replace(/^ {4}/gm, ''))),\n        };\n      },\n      _render(node, _, state = {}) {\n        const attrs = { ...((node as any).attrs ?? {}) } as Record<string, any>;\n        const langClass = node.lang ? `lang-${node.lang}` : 'lang-plaintext';\n        attrs.className = attrs.className\n          ? `${attrs.className} ${langClass}`\n          : langClass;\n\n        return createElement(\n          'pre',\n          { key: state.key },\n          createElement('code', attrs, node.text)\n        );\n      },\n    },\n    [RuleType.codeFenced]: {\n      _qualify: ['```', '~~~'],\n      _match: blockRegex(CODE_BLOCK_FENCED_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        return {\n          attrs: attrStringToMap('code', capture[3] ?? ''),\n          lang: capture[2] || undefined,\n          text: capture[4],\n          type: RuleType.codeBlock,\n        };\n      },\n    },\n    [RuleType.codeInline]: {\n      _qualify: ['`'],\n      _match: simpleInlineRegex(CODE_INLINE_R),\n      _order: Priority.LOW,\n      _parse(capture) {\n        return { text: unescapeString(capture[2]) };\n      },\n      _render(node, _, state = {}) {\n        return createElement('code', { key: state.key }, node.text);\n      },\n    },\n    [RuleType.footnote]: {\n      _qualify: ['[^'],\n      _match: blockRegex(FOOTNOTE_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        footnotes.push({ footnote: capture[2], identifier: capture[1] });\n\n        return {};\n      },\n      _render: renderNothing,\n    },\n    [RuleType.footnoteReference]: {\n      _qualify: ['[^'],\n      _match: inlineRegex(FOOTNOTE_REFERENCE_R),\n      _order: Priority.HIGH,\n      _parse(capture) {\n        return { target: `#${slug(capture[1])}`, text: capture[1] };\n      },\n      _render(node, _, state = {}) {\n        return createElement(\n          'a',\n          {\n            key: state.key,\n            href: sanitize(node.target, 'a', 'href') ?? undefined,\n          },\n          createElement('sup', { key: state.key }, node.text)\n        );\n      },\n    },\n    [RuleType.gfmTask]: {\n      _qualify: ['[ ]', '[x]'],\n      _match: inlineRegex(GFM_TASK_R),\n      _order: Priority.HIGH,\n      _parse(capture) {\n        return { completed: capture[1].toLowerCase() === 'x' };\n      },\n      _render(node, _, state = {}) {\n        return createElement('input', {\n          checked: node.completed,\n          key: state.key,\n          readOnly: true,\n          type: 'checkbox',\n        });\n      },\n    },\n    [RuleType.heading]: {\n      _qualify: ['#'],\n      _match: blockRegex(\n        options.enforceAtxHeadings ? HEADING_ATX_COMPLIANT_R : HEADING_R\n      ),\n      _order: Priority.HIGH,\n      _parse(capture, parse, state) {\n        return {\n          children: parseInline(parse, capture[2], state),\n          id: slug(capture[2]),\n          level: capture[1].length as HeadingNode['level'],\n        };\n      },\n      _render(node, output, state = {}) {\n        return createElement(\n          `h${node.level}` as HTMLTag,\n          { id: node.id, key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.headingSetext]: {\n      _qualify: (source) => {\n        const nlIndex = source.indexOf('\\n');\n\n        return (\n          nlIndex > 0 &&\n          nlIndex < source.length - 1 &&\n          (source[nlIndex + 1] === '=' || source[nlIndex + 1] === '-')\n        );\n      },\n      _match: blockRegex(HEADING_SETEXT_R),\n      _order: Priority.MAX,\n      _parse(capture, parse, state) {\n        return {\n          children: parseInline(parse, capture[1], state),\n          level: capture[2] === '=' ? 1 : 2,\n          type: RuleType.heading,\n        };\n      },\n    },\n    [RuleType.htmlBlock]: {\n      _qualify: (source) => {\n        if (options.disableParsingRawHTML) return false;\n\n        const match = source.match(/^ *<([a-z][a-z0-9:-]*)\\b/i);\n        if (!match) return false;\n        const tag = match[1];\n\n        return source.toLowerCase().indexOf(`</${tag.toLowerCase()}>`) !== -1;\n      },\n      _match: anyScopeRegex(HTML_BLOCK_ELEMENT_R),\n      _order: Priority.HIGH,\n      _parse(capture, parse, state) {\n        const m = capture[3].match(HTML_LEFT_TRIM_AMOUNT_R);\n        const whitespace = m?.[1] ?? '';\n        const trimmed = trimLeadingWhitespaceOutsideFences(\n          capture[3],\n          whitespace\n        );\n        const parseFunc = containsBlockSyntax(trimmed)\n          ? parseBlock\n          : parseInline;\n        const tagName = capture[1].trim();\n        const noInnerParse =\n          DO_NOT_PROCESS_HTML_ELEMENTS.indexOf(tagName.toLowerCase()) !== -1;\n        const tag = (noInnerParse ? tagName.toLowerCase() : tagName) as HTMLTag;\n        const ast: any = {\n          attrs: attrStringToMap(tag, capture[2] ?? ''),\n          noInnerParse,\n          tag,\n        };\n        state.inAnchor = state.inAnchor || tagName.toLowerCase() === 'a';\n\n        if (noInnerParse) {\n          ast.text = capture[3];\n        } else {\n          const prevInHTML = state.inHTML;\n          state.inHTML = true;\n          ast.children = parseFunc(parse, trimmed, state);\n          state.inHTML = prevInHTML;\n        }\n        state.inAnchor = false;\n\n        return ast;\n      },\n      _render(node, output, state = {}) {\n        return createElement(\n          node.tag,\n          { key: state.key, ...(node.attrs ?? {}) },\n          node.text ?? (node.children ? output(node.children, state) : '')\n        );\n      },\n    },\n    [RuleType.htmlComment]: {\n      _qualify: ['<!'],\n      _match: anyScopeRegex(HTML_COMMENT_R),\n      _order: Priority.HIGH,\n      _parse: captureNothing,\n      _render: renderNothing,\n    },\n    [RuleType.htmlSelfClosing]: {\n      _qualify: (source) => {\n        if (options.disableParsingRawHTML) return false;\n\n        return /^ *<([a-zA-Z][a-zA-Z0-9:]*)[\\s>/]/.test(source);\n      },\n      _match: anyScopeRegex(HTML_SELF_CLOSING_ELEMENT_R),\n      _order: Priority.HIGH,\n      _parse(capture) {\n        const tag = capture[1].trim() as HTMLTag;\n\n        return { attrs: attrStringToMap(tag, capture[2] || ''), tag };\n      },\n      _render(node, _, state = {}) {\n        return createElement(node.tag, {\n          key: state.key,\n          ...(node.attrs ?? {}),\n        });\n      },\n    },\n    [RuleType.customComponent]: {\n      _qualify: (source) => /^ *<([A-Z][a-zA-Z0-9]*)/.test(source),\n      _match: anyScopeRegex(CUSTOM_COMPONENT_R),\n      _order: Priority.MAX,\n      _parse(capture, parse, state) {\n        const m = capture[3].match(HTML_LEFT_TRIM_AMOUNT_R);\n        const whitespace = m?.[1] ?? '';\n        const trimmed = trimLeadingWhitespaceOutsideFences(\n          capture[3],\n          whitespace\n        );\n        const parseFunc = containsBlockSyntax(trimmed)\n          ? parseBlock\n          : parseInline;\n        const tag = capture[1].trim();\n        const ast: any = {\n          attrs: attrStringToMap(tag as HTMLTag, capture[2] ?? ''),\n          noInnerParse: false,\n          tag,\n        };\n        const prevInHTML = state.inHTML;\n        state.inHTML = true;\n        ast.children = parseFunc(parse, trimmed, state);\n        state.inHTML = prevInHTML;\n\n        return ast;\n      },\n      _render(node, output, state = {}) {\n        return createElement(\n          node.tag as HTMLTag,\n          { key: state.key, ...(node.attrs ?? {}) },\n          node.text ?? (node.children ? output(node.children, state) : '')\n        );\n      },\n    },\n    [RuleType.paragraph]: {\n      _match: matchParagraph,\n      _order: Priority.LOW,\n      _parse: parseCaptureInline,\n      _render(node, output, state = {}) {\n        return createElement(\n          'p',\n          { key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.image]: {\n      _qualify: ['!['],\n      _match: simpleInlineRegex(IMAGE_R),\n      _order: Priority.HIGH,\n      _parse(capture) {\n        return {\n          alt: unescapeString(capture[1]),\n          target: unescapeString(capture[2]),\n          title: unescapeString(capture[3]),\n        };\n      },\n      _render(node, _, state = {}) {\n        return createElement('img', {\n          key: state.key,\n          alt: node.alt ?? undefined,\n          title: node.title ?? undefined,\n          src: sanitize(node.target, 'img', 'src') ?? undefined,\n        });\n      },\n    },\n    [RuleType.link]: {\n      _qualify: ['['],\n      _match: inlineRegex(LINK_R),\n      _order: Priority.LOW,\n      _parse(capture, parse, state) {\n        return {\n          children: parseSimpleInline(parse, capture[1], state),\n          target: unescapeString(capture[2]),\n          title: unescapeString(capture[3]),\n        };\n      },\n      _render(node, output, state = {}) {\n        const sanitizedHref = sanitize(node.target, 'a', 'href');\n        if (\n          process.env.NODE_ENV === 'test' &&\n          node.target.includes('javascript:')\n        ) {\n          console.log('Compiler sanitize result:', {\n            target: node.target,\n            sanitizedHref,\n            finalHref: sanitizedHref ?? undefined,\n          });\n        }\n        return createElement(\n          'a',\n          {\n            key: state.key,\n            href: sanitizedHref ?? undefined,\n            title: node.title ?? undefined,\n          },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.linkAngleBraceStyleDetector]: {\n      _qualify: ['<'],\n      _match: inlineRegex(LINK_AUTOLINK_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        let target = capture[1];\n        let isEmail = false;\n\n        if (target.indexOf('@') !== -1 && target.indexOf('//') === -1) {\n          isEmail = true;\n          target = target.replace('mailto:', '');\n        }\n\n        return {\n          children: [{ text: target, type: RuleType.text }],\n          target: isEmail ? `mailto:${target}` : target,\n          type: RuleType.link,\n        };\n      },\n    },\n    [RuleType.linkBareUrlDetector]: {\n      _qualify: (source, state) =>\n        !!(\n          state.inline &&\n          !state.inAnchor &&\n          !options.disableAutoLink &&\n          (startsWith(source, 'http://') || startsWith(source, 'https://'))\n        ),\n      _match: inlineRegex(LINK_AUTOLINK_BARE_URL_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        return {\n          children: [{ text: capture[1], type: RuleType.text }],\n          target: capture[1],\n          type: RuleType.link,\n        };\n      },\n    },\n    [RuleType.newlineCoalescer]: {\n      _match: blockRegex(CONSECUTIVE_NEWLINE_R),\n      _order: Priority.LOW,\n      _parse: captureNothing,\n      _render() {\n        return '\\n';\n      },\n    },\n    [RuleType.orderedList]: generateListRule(ORDERED),\n    [RuleType.unorderedList]: generateListRule(UNORDERED),\n    [RuleType.ref]: {\n      _qualify: ['['],\n      _match: anyScopeRegex(REFERENCE_IMAGE_OR_LINK),\n      _order: Priority.MAX,\n      _parse(capture) {\n        refs[capture[1]] = { target: capture[2], title: capture[4] };\n\n        return {};\n      },\n      _render: renderNothing,\n    },\n    [RuleType.refImage]: {\n      _qualify: ['!['],\n      _match: simpleInlineRegex(REFERENCE_IMAGE_R),\n      _order: Priority.MAX,\n      _parse(capture) {\n        return {\n          alt: capture[1] ? unescapeString(capture[1]) : undefined,\n          ref: capture[2],\n        };\n      },\n      _render(node, _, state = {}) {\n        const ref = refs[node.ref];\n\n        if (!ref) return null;\n\n        return createElement('img', {\n          key: state.key,\n          alt: node.alt,\n          src: sanitize(ref.target, 'img', 'src') ?? undefined,\n          title: ref.title,\n        });\n      },\n    },\n    [RuleType.refLink]: {\n      _qualify: (source) => source[0] === '[' && source.indexOf('](') === -1,\n      _match: inlineRegex(REFERENCE_LINK_R),\n      _order: Priority.MAX,\n      _parse(capture, parse, state) {\n        return {\n          children: parseSimpleInline(parse, capture[1], state),\n          fallbackChildren: capture[0],\n          ref: capture[2],\n        };\n      },\n      _render(node, output, state = {}) {\n        const ref = refs[node.ref];\n\n        if (!ref)\n          return createElement(\n            'span',\n            { key: state.key },\n            node.fallbackChildren\n          );\n\n        return createElement(\n          'a',\n          {\n            key: state.key,\n            href: sanitize(ref.target, 'a', 'href') ?? undefined,\n            title: ref.title,\n          },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.table]: {\n      _qualify: ['|'],\n      _match: blockRegex(NP_TABLE_R),\n      _order: Priority.HIGH,\n      _parse(capture, parse, state) {\n        state.inline = true;\n        const align = capture[2] ? parseTableAlign(capture[2]) : [];\n        const cells = capture[3]\n          ? parseTableCells(capture[3], parse, state)\n          : [];\n        const header = parseTableRow(capture[1], parse, state, !!cells.length);\n        state.inline = false;\n\n        return cells.length\n          ? { align, cells, header, type: RuleType.table }\n          : { children: header.flat(), type: RuleType.paragraph };\n      },\n      _render(node, output, state = {}) {\n        const table = node as TableNode;\n        const getStyle = (i: number) =>\n          table.align[i] && table.align[i] !== 'left'\n            ? { textAlign: table.align[i] }\n            : {};\n\n        return createElement(\n          'table',\n          { key: state.key },\n          createElement(\n            'thead',\n            null,\n            createElement(\n              'tr',\n              null,\n              ...table.header.map((c, i) =>\n                createElement(\n                  'th',\n                  { key: i, style: getStyle(i) },\n                  output(c, state)\n                )\n              )\n            )\n          ),\n          createElement(\n            'tbody',\n            null,\n            ...table.cells.map((row, i) =>\n              createElement(\n                'tr',\n                { key: i },\n                ...row.map((c, j) =>\n                  createElement(\n                    'td',\n                    { key: j, style: getStyle(j) },\n                    output(c, state)\n                  )\n                )\n              )\n            )\n          )\n        );\n      },\n    },\n    [RuleType.tableSeparator]: {\n      _match: (source, state) =>\n        state.inTable && source[0] === '|' ? /^\\|/.exec(source) : null,\n      _order: Priority.HIGH,\n      _parse() {\n        return { type: RuleType.tableSeparator };\n      },\n      _render() {\n        return ' | ';\n      },\n    },\n    [RuleType.text]: {\n      _match: allowInline((source, _state) => {\n        const shortMatch = SHORTCODE_R.exec(source);\n\n        if (shortMatch) return shortMatch;\n\n        return TEXT_PLAIN_R.exec(source) || /^[\\s\\S]/.exec(source);\n      }),\n      _order: Priority.MIN,\n      _parse(capture) {\n        const text = capture[0];\n\n        return {\n          text:\n            text.indexOf('&') === -1\n              ? text\n              : text.replace(HTML_CHAR_CODE_R, (f, i) => {\n                  if (i.startsWith('#x'))\n                    return String.fromCharCode(parseInt(i.slice(2), 16));\n                  if (i.startsWith('#'))\n                    return String.fromCharCode(parseInt(i.slice(1), 10));\n                  return namedCodesToUnicode[i] || f;\n                }),\n        };\n      },\n      _render(node) {\n        return node.text;\n      },\n    },\n    [RuleType.textBolded]: {\n      _qualify: ['**', '__'],\n      _match: simpleInlineRegex(TEXT_BOLD_R),\n      _order: Priority.MED,\n      _parse(capture, parse, state) {\n        return { children: parse(capture[2], state) };\n      },\n      _render(node, output, state = {}) {\n        return createElement(\n          'strong',\n          { key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.textEmphasized]: {\n      _qualify: ['*', '_'],\n      _match: simpleInlineRegex(TEXT_EMPHASIZED_R),\n      _order: Priority.LOW,\n      _parse(capture, parse, state) {\n        return { children: parse(capture[2], state) };\n      },\n      _render(node, output, state = {}) {\n        return createElement(\n          'em',\n          { key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.textEscaped]: {\n      _qualify: ['\\\\'],\n      _match: simpleInlineRegex(TEXT_ESCAPED_R),\n      _order: Priority.HIGH,\n      _parse(capture) {\n        return { text: capture[1], type: RuleType.text };\n      },\n    },\n    [RuleType.textMarked]: {\n      _qualify: ['=='],\n      _match: simpleInlineRegex(TEXT_MARKED_R),\n      _order: Priority.LOW,\n      _parse: parseCaptureInline,\n      _render(node, output, state = {}) {\n        return createElement(\n          'mark',\n          { key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n    [RuleType.textStrikethroughed]: {\n      _qualify: ['~~'],\n      _match: simpleInlineRegex(TEXT_STRIKETHROUGHED_R),\n      _order: Priority.LOW,\n      _parse: parseCaptureInline,\n      _render(node, output, state = {}) {\n        return createElement(\n          'del',\n          { key: state.key },\n          output(node.children, state)\n        );\n      },\n    },\n  };\n\n  return rules;\n};\n\n// Removed compilerCache completely to avoid issues with props changes not invalidating cache\n// const compilerCache = new Map<string, unknown>();\n\nexport type ParsedMarkdown = {\n  ast: any[];\n  footnotes: FootnoteDef[];\n  inline: boolean;\n};\n\nexport const parseMarkdown = (\n  markdown: string = '',\n  ctx: MarkdownContext<any>,\n  options: MarkdownOptions = {}\n): ParsedMarkdown => {\n  const dummyCreateElement = () => null;\n  const footnotes: FootnoteDef[] = [];\n  const refs: Record<string, { target: string; title?: string }> = {};\n\n  const attrStringToMap = (\n    tag: HTMLTag,\n    str: string\n  ): Record<string, any> | null => {\n    if (!str?.trim()) return null;\n\n    const attributes = str.match(ATTR_EXTRACTOR_R);\n\n    if (!attributes) return null;\n\n    return attributes.reduce((map: any, raw) => {\n      const delimiterIdx = raw.indexOf('=');\n\n      if (delimiterIdx !== -1) {\n        const key = normalizeAttributeKey(raw.slice(0, delimiterIdx)).trim();\n        const value = unquote(raw.slice(delimiterIdx + 1).trim());\n        const mappedKey = ATTRIBUTE_TO_NODE_PROP_MAP[key] ?? key;\n\n        if (mappedKey === 'ref') return map;\n        map[mappedKey] = attributeValueToNodePropValue(\n          tag,\n          key,\n          value,\n          ctx.sanitizer ?? defaultSanitizer\n        );\n\n        if (\n          typeof map[mappedKey] === 'string' &&\n          (HTML_BLOCK_ELEMENT_R.test(map[mappedKey]) ||\n            HTML_SELF_CLOSING_ELEMENT_R.test(map[mappedKey]))\n        ) {\n          map[mappedKey] = parseMarkdown(\n            map[mappedKey].trim(),\n            ctx,\n            options\n          ).ast;\n        }\n      } else if (raw !== 'style') {\n        map[ATTRIBUTE_TO_NODE_PROP_MAP[raw] ?? raw] = true;\n      }\n\n      return map;\n    }, {});\n  };\n\n  const nonParagraphBlockSyntaxes = [\n    BLOCKQUOTE_R,\n    CODE_BLOCK_FENCED_R,\n    CODE_BLOCK_R,\n    options.enforceAtxHeadings ? HEADING_ATX_COMPLIANT_R : HEADING_R,\n    HEADING_SETEXT_R,\n    NP_TABLE_R,\n    ORDERED_LIST_R,\n    UNORDERED_LIST_R,\n    CUSTOM_COMPONENT_R,\n  ];\n\n  const containsBlockSyntax = (input: string): boolean => {\n    const cleaned = input.replace(TRIM_STARTING_NEWLINES, '');\n    const slice = cleaned.length > 2048 ? cleaned.slice(0, 2048) : cleaned;\n\n    if (slice.indexOf('\\n\\n') !== -1) return true;\n\n    const syntaxes = options.disableParsingRawHTML\n      ? nonParagraphBlockSyntaxes\n      : [\n          ...nonParagraphBlockSyntaxes,\n          PARAGRAPH_R,\n          HTML_BLOCK_ELEMENT_R,\n          HTML_COMMENT_R,\n          HTML_SELF_CLOSING_ELEMENT_R,\n          CUSTOM_COMPONENT_R,\n        ];\n\n    return some(syntaxes as RegExp[], slice);\n  };\n\n  const baseRules = createRules(\n    dummyCreateElement,\n    ctx,\n    options,\n    footnotes,\n    refs,\n    attrStringToMap,\n    containsBlockSyntax,\n    nonParagraphBlockSyntaxes\n  );\n\n  const rules = options.disableParsingRawHTML\n    ? Object.keys(baseRules).reduce((acc, key) => {\n        if (key !== RuleType.htmlBlock && key !== RuleType.htmlSelfClosing) {\n          acc[key] = baseRules[key];\n        }\n\n        return acc;\n      }, {} as Rules)\n    : baseRules;\n\n  const parser = parserFor(rules);\n\n  const result = options.preserveFrontmatter\n    ? markdown\n    : markdown.replace(FRONT_MATTER_R, '');\n  const inline =\n    options.forceInline ||\n    (!options.forceBlock &&\n      SHOULD_RENDER_AS_BLOCK_R.test(\n        result.replace(TRIM_STARTING_NEWLINES, '')\n      ) === false);\n\n  const ast = parser(\n    inline\n      ? result\n      : `${trimEnd(result).replace(TRIM_STARTING_NEWLINES, '')}\\n\\n`,\n    { inline }\n  );\n\n  if (footnotes.length > 0) {\n    // Parse footnotes content as well\n    for (const def of footnotes) {\n      (def as any).parsedAst = parser(def.footnote, { inline: true });\n    }\n  }\n\n  return { ast, footnotes, inline };\n};\n\nexport const renderMarkdownAst = (\n  parsed: ParsedMarkdown,\n  ctx: MarkdownContext<any>,\n  options: MarkdownOptions = {}\n): unknown => {\n  const components = ctx.components ?? {};\n  const slug = (input: string) => {\n    if (process.env.NODE_ENV === 'test' && input === '中文') {\n      const def = defaultSlugify(input);\n      console.log('Slug check:', {\n        input,\n        ctxSlugify: !!ctx.slugify,\n        defaultSlugifyResult: def,\n      });\n    }\n    return ctx.slugify\n      ? ctx.slugify(input, defaultSlugify)\n      : defaultSlugify(input);\n  };\n  const createElement = createElementFactory(ctx, options);\n  const footnotes = parsed.footnotes || [];\n  const refs: Record<string, { target: string; title?: string }> = {};\n\n  const attrStringToMap = () => null; // Not needed during render\n  const containsBlockSyntax = () => false; // Not needed during render\n  const nonParagraphBlockSyntaxes: any[] = [];\n\n  const baseRules = createRules(\n    createElement,\n    ctx,\n    options,\n    footnotes,\n    refs,\n    attrStringToMap,\n    containsBlockSyntax,\n    nonParagraphBlockSyntaxes\n  );\n\n  const rules = options.disableParsingRawHTML\n    ? Object.keys(baseRules).reduce((acc, key) => {\n        if (key !== RuleType.htmlBlock && key !== RuleType.htmlSelfClosing) {\n          acc[key] = baseRules[key];\n        }\n\n        return acc;\n      }, {} as Rules)\n    : baseRules;\n\n  const emitter = renderFor(createRenderer(rules, options.renderRule));\n\n  const inline = parsed.inline;\n  const arr = emitter(parsed.ast, { inline }) as unknown as any[];\n\n  while (typeof arr[arr.length - 1] === 'string' && !arr[arr.length - 1].trim())\n    arr.pop();\n\n  const getOuterNode = () => {\n    if (options.wrapper === null) return arr;\n    const wrapper = options.wrapper ?? (inline ? 'span' : 'div');\n\n    if (arr.length > 1 || options.forceWrapper)\n      return createElement(wrapper, { key: 'outer' }, arr);\n\n    if (arr.length === 1) {\n      const node = arr[0];\n\n      if (typeof node === 'string') {\n        const spanProps: Record<string, any> = { key: 'outer' };\n\n        if (!inline && components) {\n          const pOverrideProps = (get(components, 'p.props', {}) ??\n            {}) as Record<string, any>;\n          const mergedClassName = cx(\n            spanProps.className,\n            pOverrideProps.className\n          );\n          const finalSpanProps: Record<string, any> = {\n            ...spanProps,\n            ...pOverrideProps,\n          };\n\n          if (mergedClassName) finalSpanProps.className = mergedClassName;\n\n          return createElement('span', finalSpanProps, node);\n        }\n\n        return createElement('span', spanProps, node);\n      }\n\n      return node;\n    }\n\n    return createElement(wrapper, { key: 'outer' }, null);\n  };\n\n  const node = getOuterNode();\n\n  const result = footnotes.length\n    ? createElement(\n        'div',\n        null,\n        node,\n        createElement(\n          'footer',\n          { key: 'footer' },\n          ...footnotes.map((def) =>\n            createElement(\n              'div',\n              { id: slug(def.identifier), key: def.identifier },\n              def.identifier,\n              emitter((def as any).parsedAst || def.footnote, { inline: true })\n            )\n          )\n        )\n      )\n    : node;\n\n  return result;\n};\n\nexport const compile = (\n  markdown: string = '',\n  ctx: MarkdownContext<any>,\n  options: MarkdownOptions = {}\n): unknown => {\n  if (typeof markdown !== 'string') {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error(\n        'intlayer: the first argument must be a string. Received',\n        typeof markdown\n      );\n    }\n    throw new Error('intlayer: the first argument must be a string');\n  }\n\n  const parsed = parseMarkdown(markdown, ctx, options);\n  return renderMarkdownAst(parsed, ctx, options);\n};\n\nexport const createCompiler =\n  (ctx: MarkdownContext<any>) =>\n  (markdown: string, options?: MarkdownOptions): unknown =>\n    compile(markdown, ctx, options);\n\nexport const compileWithOptions = (\n  markdown: string,\n  runtime: MarkdownRuntime,\n  options: CompileOptions<any> = {}\n): unknown => {\n  const {\n    components,\n    namedCodesToUnicode,\n    sanitizer,\n    slugify,\n    ...compilerOptions\n  } = options;\n\n  return compile(\n    markdown,\n    { runtime, components, namedCodesToUnicode, sanitizer, slugify },\n    compilerOptions\n  );\n};\n"],"mappings":"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"}