{"version":3,"sources":["../../src/renderer/content.ts"],"names":["marked"],"mappings":"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","file":"content.cjs","sourcesContent":["import { marked } from 'marked';\nimport { ContentProcessor, ContentProcessorOptional } from '../types.js';\n\nexport class ContentLoader {\n  private content: Record<string, string>;\n  private processor?: ContentProcessorOptional | undefined;\n\n  constructor(content: Record<string, string>, processor?: ContentProcessorOptional) {\n    this.content = content;\n    this.processor = processor;\n  }\n\n  loadContent(path: string): string | undefined {\n    return this.content[path];\n  }\n\n  loadAndProcess(path: string): string | undefined {\n    const content = this.loadContent(path);\n    if (!content) {\n      return undefined;\n    }\n\n    return this.processContent(content);\n  }\n\n  processContent(content: string): string {\n    if (this.processor) {\n      content = this.processor.process(content);\n    }\n\n    return marked(content);\n  }\n\n  hasContent(path: string): boolean {\n    return path in this.content;\n  }\n\n  getAvailablePaths(): string[] {\n    return Object.keys(this.content);\n  }\n\n  getContentSize(path: string): number {\n    const content = this.loadContent(path);\n    return content ? content.length : 0;\n  }\n\n  getTotalContentSize(): number {\n    return Object.values(this.content).reduce((total, content) => total + content.length, 0);\n  }\n}\n\nexport async function loadContent(\n  path: string,\n  contentBundle: Record<string, string>,\n  processor?: ContentProcessorOptional\n): Promise<string | undefined> {\n  const loader = new ContentLoader(contentBundle, processor);\n  return loader.loadAndProcess(path);\n}\n\nexport function createContentLoader(\n  contentBundle: Record<string, string>,\n  processor?: ContentProcessorOptional\n): ContentLoader {\n  return new ContentLoader(contentBundle, processor);\n}\n\n// Utility functions for content processing\nexport function extractHeadings(content: string): Array<{\n  level: number;\n  text: string;\n  id: string;\n}> {\n  const headings: Array<{\n    level: number;\n    text: string;\n    id: string;\n  }> = [];\n\n  const lines = content.split('\\n');\n  for (const line of lines) {\n    const match = line.match(/^(#{1,6})\\s+(.+)$/);\n    if (match && match[1] && match[2]) {\n      const level = match[1].length;\n      const text = match[2].trim();\n      const id = text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n      \n      headings.push({ level, text, id });\n    }\n  }\n\n  return headings;\n}\n\nexport function extractTableOfContents(content: string): string {\n  const headings = extractHeadings(content);\n  \n  if (headings.length === 0) {\n    return '';\n  }\n\n  const toc = ['## Table of Contents', ''];\n  \n  for (const heading of headings) {\n    const indent = '  '.repeat(heading.level - 1);\n    toc.push(`${indent}- [${heading.text}](#${heading.id})`);\n  }\n\n  return toc.join('\\n');\n}\n\nexport function addTableOfContents(content: string): string {\n  const toc = extractTableOfContents(content);\n  if (!toc) {\n    return content;\n  }\n\n  const lines = content.split('\\n');\n  const firstHeadingIndex = lines.findIndex(line => line.match(/^#{1,6}\\s+/));\n  \n  if (firstHeadingIndex === -1) {\n    return content;\n  }\n\n  lines.splice(firstHeadingIndex + 1, 0, toc, '');\n  return lines.join('\\n');\n}"]}