{"version":3,"sources":["../src/pdf/setupPdfWorker.ts","../src/components/PDFPageCanvas.tsx","../src/components/PDFPagesCanvas.tsx","../src/hooks/usePdfDocument.ts","../src/pdf/loadPdf.ts","../src/hooks/usePdfPage.ts","../src/hooks/usePdfPages.ts","../src/utils/ocr.ts","../src/utils/render.ts","../src/utils/extractTextFromMultiPages.ts","../src/utils/extractTextFromSinglePage.ts","../src/constants/ocrLanguages.ts"],"sourcesContent":["// lib/pdf/setupPdfWorker.ts\r\n\r\n// lib/pdf/workerSetup.ts\r\nimport { GlobalWorkerOptions } from \"pdfjs-dist\";\r\n\r\n// This will run once when the module is loaded\r\nGlobalWorkerOptions.workerSrc =\r\n  \"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/5.3.93/pdf.worker.min.mjs\";\r\n\r\n// Configure worker once globally\r\n// GlobalWorkerOptions.workerSrc = new URL(\r\n//   \"pdfjs-dist/build/pdf.worker.min.mjs\",\r\n//   import.meta.url\r\n// ).toString();\r\n","import {\r\n  useEffect,\r\n  useRef,\r\n  forwardRef,\r\n  useImperativeHandle,\r\n  type CSSProperties,\r\n} from \"react\";\r\nimport type { PDFPageProxy } from \"pdfjs-dist\";\r\n\r\ninterface Props {\r\n  page: PDFPageProxy | null;\r\n  scale?: number;\r\n  className?: string;\r\n  style?: CSSProperties;\r\n}\r\n\r\n/**\r\n * Renders a single PDF page onto a canvas.\r\n * - Fully customizable via `style`, `className`, and `ref`.\r\n * - `ref` gives access to the canvas DOM node.\r\n */\r\nexport const PDFPageCanvas = forwardRef<HTMLCanvasElement, Props>(\r\n  ({ page, scale = 1.5, className, style }, ref) => {\r\n    const canvasRef = useRef<HTMLCanvasElement>(null);\r\n\r\n    // Expose canvas element to parent via ref\r\n    useImperativeHandle(ref, () => canvasRef.current!);\r\n\r\n    useEffect(() => {\r\n      if (!page || !canvasRef.current) return;\r\n\r\n      const viewport = page.getViewport({ scale });\r\n      const canvas = canvasRef.current;\r\n      const ctx = canvas.getContext(\"2d\");\r\n\r\n      canvas.width = viewport.width;\r\n      canvas.height = viewport.height;\r\n\r\n      page.render({ canvasContext: ctx!, viewport });\r\n    }, [page, scale]);\r\n\r\n    return (\r\n      <canvas\r\n        ref={canvasRef}\r\n        className={className}\r\n        style={{\r\n          width: \"100%\", // Responsive\r\n          height: \"auto\",\r\n          display: \"block\",\r\n          ...style,\r\n        }}\r\n      />\r\n    );\r\n  }\r\n);\r\n","import { forwardRef, useEffect, useRef } from \"react\";\r\nimport type { PDFPageProxy } from \"pdfjs-dist\";\r\n\r\ninterface Props {\r\n  pages: PDFPageProxy[];\r\n  className?: string;\r\n  style?: React.CSSProperties;\r\n}\r\n\r\nexport const PDFPagesCanvas = forwardRef<HTMLDivElement, Props>(\r\n  ({ pages, className = \"\", style }, ref) => {\r\n    const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n    useEffect(() => {\r\n      if (!pages.length) return;\r\n\r\n      const renderPages = async () => {\r\n        const container = containerRef.current;\r\n        if (!container) return;\r\n\r\n        // Clear previous content\r\n        container.innerHTML = \"\";\r\n\r\n        for (const page of pages) {\r\n          const viewport = page.getViewport({ scale: 1.5 });\r\n\r\n          const canvas = document.createElement(\"canvas\");\r\n          const context = canvas.getContext(\"2d\")!;\r\n          canvas.width = viewport.width;\r\n          canvas.height = viewport.height;\r\n\r\n          // Make canvas responsive\r\n          canvas.style.width = \"100%\";\r\n          canvas.style.height = \"auto\";\r\n          canvas.style.display = \"block\";\r\n\r\n          await page.render({ canvasContext: context, viewport }).promise;\r\n\r\n          const wrapper = document.createElement(\"div\");\r\n          wrapper.style.width = \"100%\";\r\n          wrapper.style.maxWidth = \"900px\";\r\n          wrapper.style.margin = \"1rem auto\";\r\n          wrapper.appendChild(canvas);\r\n\r\n          container.appendChild(wrapper);\r\n        }\r\n      };\r\n\r\n      renderPages();\r\n    }, [pages]);\r\n\r\n    return (\r\n      <div\r\n        ref={ref ?? containerRef}\r\n        className={className}\r\n        style={{\r\n          display: \"flex\",\r\n          flexDirection: \"column\",\r\n          alignItems: \"center\",\r\n          width: \"100%\",\r\n          gap: \"1rem\",\r\n          ...style,\r\n        }}\r\n      />\r\n    );\r\n  }\r\n);\r\n","import { useEffect, useState } from \"react\";\r\nimport type { PDFDocumentProxy } from \"pdfjs-dist/types/src/display/api\";\r\nimport { loadPdf } from \"../pdf/loadPdf\";\r\n\r\nexport function usePdfDocument(file: File | null) {\r\n  const [pdf, setPdf] = useState<PDFDocumentProxy | null>(null);\r\n  const [pageNumbers, setPageNumbers] = useState<number[] | null>(null);\r\n  const [error, setError] = useState(\"\");\r\n  const [loading, setLoading] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (!file) return;\r\n\r\n    let cancelled = false;\r\n    setLoading(true);\r\n    setError(\"\");\r\n    setPdf(null);\r\n    setPageNumbers(null);\r\n\r\n    const load = async () => {\r\n      try {\r\n        const doc = await loadPdf(file);\r\n        if (cancelled) return;\r\n        setPdf(doc);\r\n        setPageNumbers(Array.from({ length: doc.numPages }, (_, i) => i + 1));\r\n      } catch (err) {\r\n        if (!cancelled) setError(\"Failed to load PDF.\");\r\n      } finally {\r\n        if (!cancelled) setLoading(false);\r\n      }\r\n    };\r\n\r\n    load();\r\n\r\n    return () => {\r\n      cancelled = true;\r\n    };\r\n  }, [file]);\r\n\r\n  return { pdf, pageNumbers, error, loading };\r\n}\r\n","import { getDocument, type PDFDocumentProxy } from \"pdfjs-dist\";\r\n\r\nexport async function loadPdf(file: File): Promise<PDFDocumentProxy> {\r\n  const arrayBuffer = await file.arrayBuffer();\r\n  const pdf = await getDocument({ data: arrayBuffer }).promise;\r\n  return pdf;\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\r\n\r\nexport function usePdfPage(pdf: PDFDocumentProxy | null, pageNumber: number) {\r\n  const [page, setPage] = useState<PDFPageProxy | null>(null);\r\n\r\n  useEffect(() => {\r\n    if (!pdf) return;\r\n    const load = async () => {\r\n      const p = await pdf.getPage(pageNumber);\r\n      setPage(p);\r\n    };\r\n    load();\r\n  }, [pdf, pageNumber]);\r\n\r\n  return { page };\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\r\n\r\ntype PageRange = \"all\" | { from: number; to: number };\r\n\r\nexport function usePdfPages(\r\n  pdf: PDFDocumentProxy | null,\r\n  range: PageRange = \"all\"\r\n) {\r\n  const [pages, setPages] = useState<PDFPageProxy[]>([]);\r\n  const [loading, setLoading] = useState(false);\r\n  const [error, setError] = useState(\"\");\r\n\r\n  useEffect(() => {\r\n    const loadPages = async () => {\r\n      if (!pdf) return;\r\n\r\n      setLoading(true);\r\n      setError(\"\");\r\n      try {\r\n        let from = 1;\r\n        let to = pdf.numPages;\r\n\r\n        if (typeof range === \"object\") {\r\n          from = Math.max(1, range.from);\r\n          to = Math.min(pdf.numPages, range.to);\r\n        }\r\n\r\n        const pagePromises = [];\r\n        for (let i = from; i <= to; i++) {\r\n          pagePromises.push(pdf.getPage(i));\r\n        }\r\n\r\n        const loadedPages = await Promise.all(pagePromises);\r\n        setPages(loadedPages);\r\n      } catch (err) {\r\n        setError(\"Failed to load pages.\");\r\n        setPages([]);\r\n      } finally {\r\n        setLoading(false);\r\n      }\r\n    };\r\n\r\n    loadPages();\r\n  }, [pdf, range]);\r\n\r\n  return { pages, loading, error };\r\n}\r\n","import Tesseract from \"tesseract.js\";\r\n\r\nexport async function extractTextFromImage(\r\n  dataUrl: string,\r\n  lang: string = \"eng\"\r\n): Promise<string> {\r\n  const {\r\n    data: { text },\r\n  } = await Tesseract.recognize(dataUrl, lang, {\r\n    logger: (m) => console.log(m),\r\n  });\r\n\r\n  return text.trim();\r\n}\r\n\r\nexport async function extractTextFromImages(\r\n  imageDataUrls: string[],\r\n  lang: string = \"eng\"\r\n): Promise<string[]> {\r\n  const textPromises = imageDataUrls.map(async (dataUrl) => {\r\n    const {\r\n      data: { text },\r\n    } = await Tesseract.recognize(dataUrl, lang);\r\n    return text.trim();\r\n  });\r\n\r\n  return await Promise.all(textPromises);\r\n}\r\n","import type { PDFPageProxy } from \"pdfjs-dist\";\r\n\r\nexport async function renderPageToImage(\r\n  page: PDFPageProxy,\r\n  scale = 1.5\r\n): Promise<string> {\r\n  const viewport = page.getViewport({ scale, rotation: 0 });\r\n  const canvas = document.createElement(\"canvas\");\r\n  const context = canvas.getContext(\"2d\")!;\r\n  canvas.width = viewport.width;\r\n  canvas.height = viewport.height;\r\n  await page.render({ canvasContext: context, viewport }).promise;\r\n  return canvas.toDataURL(\"image/png\");\r\n}\r\n\r\nexport async function renderPagesToImages(\r\n  pages: PDFPageProxy[],\r\n  scale = 1.5\r\n): Promise<string[]> {\r\n  const imagePromises = pages.map(async (page) => {\r\n    const viewport = page.getViewport({ scale, rotation: 0 });\r\n    const canvas = document.createElement(\"canvas\");\r\n    const context = canvas.getContext(\"2d\")!;\r\n    canvas.width = viewport.width;\r\n    canvas.height = viewport.height;\r\n    await page.render({ canvasContext: context, viewport }).promise;\r\n    return canvas.toDataURL(\"image/png\");\r\n  });\r\n\r\n  return await Promise.all(imagePromises);\r\n}\r\n","import { renderPageToImage } from \"./render\";\r\nimport Tesseract from \"tesseract.js\";\r\nimport type { PDFPageProxy } from \"pdfjs-dist\";\r\nimport type { OcrLanguageCode } from \"../constants/ocrLanguages\";\r\n\r\n/**\r\n * Extract text from multiple PDF pages with optional per-page progress tracking\r\n */\r\nexport async function extractTextFromMultiPages(\r\n  pages: PDFPageProxy[],\r\n  lang: OcrLanguageCode = \"eng\",\r\n  onPageProgress?: (pageIndex: number, progress: number) => void\r\n): Promise<string[]> {\r\n  const results: string[] = [];\r\n\r\n  for (let i = 0; i < pages.length; i++) {\r\n    const page = pages[i];\r\n    const image = await renderPageToImage(page);\r\n\r\n    const {\r\n      data: { text },\r\n    } = await Tesseract.recognize(image, lang, {\r\n      logger: (m) => {\r\n        if (m.status === \"recognizing text\" && onPageProgress) {\r\n          onPageProgress(i, Math.round(m.progress * 100));\r\n        }\r\n      },\r\n    });\r\n\r\n    results.push(text.trim());\r\n  }\r\n\r\n  return results;\r\n}\r\n","import { renderPageToImage } from \"./render\";\r\nimport Tesseract from \"tesseract.js\";\r\nimport type { PDFPageProxy } from \"pdfjs-dist\";\r\nimport type { OcrLanguageCode } from \"../constants/ocrLanguages\";\r\n\r\n/**\r\n * Extract text from a single PDF page with optional progress tracking\r\n */\r\nexport async function extractTextFromSinglePage(\r\n  page: PDFPageProxy,\r\n  lang: OcrLanguageCode = \"eng\",\r\n  onProgress?: (progress: number) => void\r\n): Promise<string> {\r\n  const image = await renderPageToImage(page);\r\n\r\n  const {\r\n    data: { text },\r\n  } = await Tesseract.recognize(image, lang, {\r\n    logger: (m) => {\r\n      if (m.status === \"recognizing text\" && onProgress) {\r\n        onProgress(Math.round(m.progress * 100));\r\n      }\r\n    },\r\n  });\r\n\r\n  return text.trim();\r\n}\r\n","export const supportedOcrLanguages = [\r\n  { code: \"afr\", name: \"Afrikaans\" },\r\n  { code: \"amh\", name: \"Amharic\" },\r\n  { code: \"ara\", name: \"Arabic\" },\r\n  { code: \"asm\", name: \"Assamese\" },\r\n  { code: \"aze\", name: \"Azerbaijani\" },\r\n  { code: \"aze_cyrl\", name: \"Azerbaijani - Cyrilic\" },\r\n  { code: \"bel\", name: \"Belarusian\" },\r\n  { code: \"ben\", name: \"Bengali\" },\r\n  { code: \"bod\", name: \"Tibetan\" },\r\n  { code: \"bos\", name: \"Bosnian\" },\r\n  { code: \"bre\", name: \"Breton\" },\r\n  { code: \"bul\", name: \"Bulgarian\" },\r\n  { code: \"cat\", name: \"Catalan; Valencian\" },\r\n  { code: \"ceb\", name: \"Cebuano\" },\r\n  { code: \"ces\", name: \"Czech\" },\r\n  { code: \"chi_sim\", name: \"Chinese - Simplified\" },\r\n  { code: \"chi_tra\", name: \"Chinese - Traditional\" },\r\n  { code: \"chr\", name: \"Cherokee\" },\r\n  { code: \"cos\", name: \"Corsican\" },\r\n  { code: \"cym\", name: \"Welsh\" },\r\n  { code: \"dan\", name: \"Danish\" },\r\n  { code: \"dan_frak\", name: \"Danish - Fraktur (contrib)\" },\r\n  { code: \"deu\", name: \"German\" },\r\n  { code: \"deu_frak\", name: \"German - Fraktur (contrib)\" },\r\n  { code: \"deu_latf\", name: \"German (Fraktur Latin)\" },\r\n  { code: \"dzo\", name: \"Dzongkha\" },\r\n  { code: \"ell\", name: \"Greek, Modern (1453-)\" },\r\n  { code: \"eng\", name: \"English\" },\r\n  { code: \"enm\", name: \"English, Middle (1100-1500)\" },\r\n  { code: \"epo\", name: \"Esperanto\" },\r\n  { code: \"equ\", name: \"Math / equation detection module\" },\r\n  { code: \"est\", name: \"Estonian\" },\r\n  { code: \"eus\", name: \"Basque\" },\r\n  { code: \"fao\", name: \"Faroese\" },\r\n  { code: \"fas\", name: \"Persian\" },\r\n  { code: \"fil\", name: \"Filipino (old - Tagalog)\" },\r\n  { code: \"fin\", name: \"Finnish\" },\r\n  { code: \"fra\", name: \"French\" },\r\n  { code: \"frk\", name: \"German - Fraktur (now deu_latf)\" },\r\n  { code: \"frm\", name: \"French, Middle (ca.1400-1600)\" },\r\n  { code: \"fry\", name: \"Western Frisian\" },\r\n  { code: \"gla\", name: \"Scottish Gaelic\" },\r\n  { code: \"gle\", name: \"Irish\" },\r\n  { code: \"glg\", name: \"Galician\" },\r\n  { code: \"grc\", name: \"Greek, Ancient (to 1453) (contrib)\" },\r\n  { code: \"guj\", name: \"Gujarati\" },\r\n  { code: \"hat\", name: \"Haitian; Haitian Creole\" },\r\n  { code: \"heb\", name: \"Hebrew\" },\r\n  { code: \"hin\", name: \"Hindi\" },\r\n  { code: \"hrv\", name: \"Croatian\" },\r\n  { code: \"hun\", name: \"Hungarian\" },\r\n  { code: \"hye\", name: \"Armenian\" },\r\n  { code: \"iku\", name: \"Inuktitut\" },\r\n  { code: \"ind\", name: \"Indonesian\" },\r\n  { code: \"isl\", name: \"Icelandic\" },\r\n  { code: \"ita\", name: \"Italian\" },\r\n  { code: \"ita_old\", name: \"Italian - Old\" },\r\n  { code: \"jav\", name: \"Javanese\" },\r\n  { code: \"jpn\", name: \"Japanese\" },\r\n  { code: \"kan\", name: \"Kannada\" },\r\n  { code: \"kat\", name: \"Georgian\" },\r\n  { code: \"kat_old\", name: \"Georgian - Old\" },\r\n  { code: \"kaz\", name: \"Kazakh\" },\r\n  { code: \"khm\", name: \"Central Khmer\" },\r\n  { code: \"kir\", name: \"Kirghiz; Kyrgyz\" },\r\n  { code: \"kmr\", name: \"Kurmanji (Kurdish - Latin Script)\" },\r\n  { code: \"kor\", name: \"Korean\" },\r\n  { code: \"kor_vert\", name: \"Korean (vertical)\" },\r\n  { code: \"kur\", name: \"Kurdish (Arabic Script)\" },\r\n  { code: \"lao\", name: \"Lao\" },\r\n  { code: \"lat\", name: \"Latin\" },\r\n  { code: \"lav\", name: \"Latvian\" },\r\n  { code: \"lit\", name: \"Lithuanian\" },\r\n  { code: \"ltz\", name: \"Luxembourgish\" },\r\n  { code: \"mal\", name: \"Malayalam\" },\r\n  { code: \"mar\", name: \"Marathi\" },\r\n  { code: \"mkd\", name: \"Macedonian\" },\r\n  { code: \"mlt\", name: \"Maltese\" },\r\n  { code: \"mon\", name: \"Mongolian\" },\r\n  { code: \"mri\", name: \"Maori\" },\r\n  { code: \"msa\", name: \"Malay\" },\r\n  { code: \"mya\", name: \"Burmese\" },\r\n  { code: \"nep\", name: \"Nepali\" },\r\n  { code: \"nld\", name: \"Dutch; Flemish\" },\r\n  { code: \"nor\", name: \"Norwegian\" },\r\n  { code: \"oci\", name: \"Occitan (post 1500)\" },\r\n  { code: \"ori\", name: \"Oriya\" },\r\n  { code: \"osd\", name: \"Orientation and script detection module\" },\r\n  { code: \"pan\", name: \"Panjabi; Punjabi\" },\r\n  { code: \"pol\", name: \"Polish\" },\r\n  { code: \"por\", name: \"Portuguese\" },\r\n  { code: \"pus\", name: \"Pushto; Pashto\" },\r\n  { code: \"que\", name: \"Quechua\" },\r\n  { code: \"ron\", name: \"Romanian; Moldavian; Moldovan\" },\r\n  { code: \"rus\", name: \"Russian\" },\r\n  { code: \"san\", name: \"Sanskrit\" },\r\n  { code: \"sin\", name: \"Sinhala; Sinhalese\" },\r\n  { code: \"slk\", name: \"Slovak\" },\r\n  { code: \"slk_frak\", name: \"Slovak - Fraktur (contrib)\" },\r\n  { code: \"slv\", name: \"Slovenian\" },\r\n  { code: \"snd\", name: \"Sindhi\" },\r\n  { code: \"spa\", name: \"Spanish; Castilian\" },\r\n  { code: \"spa_old\", name: \"Spanish; Castilian - Old\" },\r\n  { code: \"sqi\", name: \"Albanian\" },\r\n  { code: \"srp\", name: \"Serbian\" },\r\n  { code: \"srp_latn\", name: \"Serbian - Latin\" },\r\n  { code: \"sun\", name: \"Sundanese\" },\r\n  { code: \"swa\", name: \"Swahili\" },\r\n  { code: \"swe\", name: \"Swedish\" },\r\n  { code: \"syr\", name: \"Syriac\" },\r\n  { code: \"tam\", name: \"Tamil\" },\r\n  { code: \"tat\", name: \"Tatar\" },\r\n  { code: \"tel\", name: \"Telugu\" },\r\n  { code: \"tgk\", name: \"Tajik\" },\r\n  { code: \"tgl\", name: \"Tagalog (new - Filipino)\" },\r\n  { code: \"tha\", name: \"Thai\" },\r\n  { code: \"tir\", name: \"Tigrinya\" },\r\n  { code: \"ton\", name: \"Tonga\" },\r\n  { code: \"tur\", name: \"Turkish\" },\r\n  { code: \"uig\", name: \"Uighur; Uyghur\" },\r\n  { code: \"ukr\", name: \"Ukrainian\" },\r\n  { code: \"urd\", name: \"Urdu\" },\r\n  { code: \"uzb\", name: \"Uzbek\" },\r\n  { code: \"uzb_cyrl\", name: \"Uzbek - Cyrilic\" },\r\n  { code: \"vie\", name: \"Vietnamese\" },\r\n  { code: \"yid\", name: \"Yiddish\" },\r\n  { code: \"yor\", name: \"Yoruba\" },\r\n] as const;\r\n\r\nexport type OcrLanguageCode = (typeof supportedOcrLanguages)[number][\"code\"];\r\n"],"mappings":";AAGA,SAAS,2BAA2B;AAGpC,oBAAoB,YAClB;;;ACPF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAoCD;AArBC,IAAM,gBAAgB;AAAA,EAC3B,CAAC,EAAE,MAAM,QAAQ,KAAK,WAAW,MAAM,GAAG,QAAQ;AAChD,UAAM,YAAY,OAA0B,IAAI;AAGhD,wBAAoB,KAAK,MAAM,UAAU,OAAQ;AAEjD,cAAU,MAAM;AACd,UAAI,CAAC,QAAQ,CAAC,UAAU,QAAS;AAEjC,YAAM,WAAW,KAAK,YAAY,EAAE,MAAM,CAAC;AAC3C,YAAM,SAAS,UAAU;AACzB,YAAM,MAAM,OAAO,WAAW,IAAI;AAElC,aAAO,QAAQ,SAAS;AACxB,aAAO,SAAS,SAAS;AAEzB,WAAK,OAAO,EAAE,eAAe,KAAM,SAAS,CAAC;AAAA,IAC/C,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA,OAAO;AAAA,UACL,OAAO;AAAA;AAAA,UACP,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,GAAG;AAAA,QACL;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;;;ACtDA,SAAS,cAAAA,aAAY,aAAAC,YAAW,UAAAC,eAAc;AAoDxC,gBAAAC,YAAA;AA3CC,IAAM,iBAAiBH;AAAA,EAC5B,CAAC,EAAE,OAAO,YAAY,IAAI,MAAM,GAAG,QAAQ;AACzC,UAAM,eAAeE,QAAuB,IAAI;AAEhD,IAAAD,WAAU,MAAM;AACd,UAAI,CAAC,MAAM,OAAQ;AAEnB,YAAM,cAAc,YAAY;AAC9B,cAAM,YAAY,aAAa;AAC/B,YAAI,CAAC,UAAW;AAGhB,kBAAU,YAAY;AAEtB,mBAAW,QAAQ,OAAO;AACxB,gBAAM,WAAW,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC;AAEhD,gBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,gBAAM,UAAU,OAAO,WAAW,IAAI;AACtC,iBAAO,QAAQ,SAAS;AACxB,iBAAO,SAAS,SAAS;AAGzB,iBAAO,MAAM,QAAQ;AACrB,iBAAO,MAAM,SAAS;AACtB,iBAAO,MAAM,UAAU;AAEvB,gBAAM,KAAK,OAAO,EAAE,eAAe,SAAS,SAAS,CAAC,EAAE;AAExD,gBAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,kBAAQ,MAAM,QAAQ;AACtB,kBAAQ,MAAM,WAAW;AACzB,kBAAQ,MAAM,SAAS;AACvB,kBAAQ,YAAY,MAAM;AAE1B,oBAAU,YAAY,OAAO;AAAA,QAC/B;AAAA,MACF;AAEA,kBAAY;AAAA,IACd,GAAG,CAAC,KAAK,CAAC;AAEV,WACE,gBAAAE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,OAAO;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,UACL,SAAS;AAAA,UACT,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,OAAO;AAAA,UACP,KAAK;AAAA,UACL,GAAG;AAAA,QACL;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;;;AClEA,SAAS,aAAAC,YAAW,gBAAgB;;;ACApC,SAAS,mBAA0C;AAEnD,eAAsB,QAAQ,MAAuC;AACnE,QAAM,cAAc,MAAM,KAAK,YAAY;AAC3C,QAAM,MAAM,MAAM,YAAY,EAAE,MAAM,YAAY,CAAC,EAAE;AACrD,SAAO;AACT;;;ADFO,SAAS,eAAe,MAAmB;AAChD,QAAM,CAAC,KAAK,MAAM,IAAI,SAAkC,IAAI;AAC5D,QAAM,CAAC,aAAa,cAAc,IAAI,SAA0B,IAAI;AACpE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,KAAM;AAEX,QAAI,YAAY;AAChB,eAAW,IAAI;AACf,aAAS,EAAE;AACX,WAAO,IAAI;AACX,mBAAe,IAAI;AAEnB,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,cAAM,MAAM,MAAM,QAAQ,IAAI;AAC9B,YAAI,UAAW;AACf,eAAO,GAAG;AACV,uBAAe,MAAM,KAAK,EAAE,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;AAAA,MACtE,SAAS,KAAK;AACZ,YAAI,CAAC,UAAW,UAAS,qBAAqB;AAAA,MAChD,UAAE;AACA,YAAI,CAAC,UAAW,YAAW,KAAK;AAAA,MAClC;AAAA,IACF;AAEA,SAAK;AAEL,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SAAO,EAAE,KAAK,aAAa,OAAO,QAAQ;AAC5C;;;AExCA,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAG7B,SAAS,WAAW,KAA8B,YAAoB;AAC3E,QAAM,CAAC,MAAM,OAAO,IAAIA,UAA8B,IAAI;AAE1D,EAAAD,WAAU,MAAM;AACd,QAAI,CAAC,IAAK;AACV,UAAM,OAAO,YAAY;AACvB,YAAM,IAAI,MAAM,IAAI,QAAQ,UAAU;AACtC,cAAQ,CAAC;AAAA,IACX;AACA,SAAK;AAAA,EACP,GAAG,CAAC,KAAK,UAAU,CAAC;AAEpB,SAAO,EAAE,KAAK;AAChB;;;AChBA,SAAS,aAAAE,YAAW,YAAAC,iBAAgB;AAK7B,SAAS,YACd,KACA,QAAmB,OACnB;AACA,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAyB,CAAC,CAAC;AACrD,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAS,EAAE;AAErC,EAAAD,WAAU,MAAM;AACd,UAAM,YAAY,YAAY;AAC5B,UAAI,CAAC,IAAK;AAEV,iBAAW,IAAI;AACf,eAAS,EAAE;AACX,UAAI;AACF,YAAI,OAAO;AACX,YAAI,KAAK,IAAI;AAEb,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,KAAK,IAAI,GAAG,MAAM,IAAI;AAC7B,eAAK,KAAK,IAAI,IAAI,UAAU,MAAM,EAAE;AAAA,QACtC;AAEA,cAAM,eAAe,CAAC;AACtB,iBAAS,IAAI,MAAM,KAAK,IAAI,KAAK;AAC/B,uBAAa,KAAK,IAAI,QAAQ,CAAC,CAAC;AAAA,QAClC;AAEA,cAAM,cAAc,MAAM,QAAQ,IAAI,YAAY;AAClD,iBAAS,WAAW;AAAA,MACtB,SAAS,KAAK;AACZ,iBAAS,uBAAuB;AAChC,iBAAS,CAAC,CAAC;AAAA,MACb,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAEA,cAAU;AAAA,EACZ,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,EAAE,OAAO,SAAS,MAAM;AACjC;;;AC/CA,OAAO,eAAe;AAEtB,eAAsB,qBACpB,SACA,OAAe,OACE;AACjB,QAAM;AAAA,IACJ,MAAM,EAAE,KAAK;AAAA,EACf,IAAI,MAAM,UAAU,UAAU,SAAS,MAAM;AAAA,IAC3C,QAAQ,CAAC,MAAM,QAAQ,IAAI,CAAC;AAAA,EAC9B,CAAC;AAED,SAAO,KAAK,KAAK;AACnB;AAEA,eAAsB,sBACpB,eACA,OAAe,OACI;AACnB,QAAM,eAAe,cAAc,IAAI,OAAO,YAAY;AACxD,UAAM;AAAA,MACJ,MAAM,EAAE,KAAK;AAAA,IACf,IAAI,MAAM,UAAU,UAAU,SAAS,IAAI;AAC3C,WAAO,KAAK,KAAK;AAAA,EACnB,CAAC;AAED,SAAO,MAAM,QAAQ,IAAI,YAAY;AACvC;;;ACzBA,eAAsB,kBACpB,MACA,QAAQ,KACS;AACjB,QAAM,WAAW,KAAK,YAAY,EAAE,OAAO,UAAU,EAAE,CAAC;AACxD,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAM,UAAU,OAAO,WAAW,IAAI;AACtC,SAAO,QAAQ,SAAS;AACxB,SAAO,SAAS,SAAS;AACzB,QAAM,KAAK,OAAO,EAAE,eAAe,SAAS,SAAS,CAAC,EAAE;AACxD,SAAO,OAAO,UAAU,WAAW;AACrC;AAEA,eAAsB,oBACpB,OACA,QAAQ,KACW;AACnB,QAAM,gBAAgB,MAAM,IAAI,OAAO,SAAS;AAC9C,UAAM,WAAW,KAAK,YAAY,EAAE,OAAO,UAAU,EAAE,CAAC;AACxD,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,UAAU,OAAO,WAAW,IAAI;AACtC,WAAO,QAAQ,SAAS;AACxB,WAAO,SAAS,SAAS;AACzB,UAAM,KAAK,OAAO,EAAE,eAAe,SAAS,SAAS,CAAC,EAAE;AACxD,WAAO,OAAO,UAAU,WAAW;AAAA,EACrC,CAAC;AAED,SAAO,MAAM,QAAQ,IAAI,aAAa;AACxC;;;AC7BA,OAAOE,gBAAe;AAOtB,eAAsB,0BACpB,OACA,OAAwB,OACxB,gBACmB;AACnB,QAAM,UAAoB,CAAC;AAE3B,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,OAAO,MAAM,CAAC;AACpB,UAAM,QAAQ,MAAM,kBAAkB,IAAI;AAE1C,UAAM;AAAA,MACJ,MAAM,EAAE,KAAK;AAAA,IACf,IAAI,MAAMA,WAAU,UAAU,OAAO,MAAM;AAAA,MACzC,QAAQ,CAAC,MAAM;AACb,YAAI,EAAE,WAAW,sBAAsB,gBAAgB;AACrD,yBAAe,GAAG,KAAK,MAAM,EAAE,WAAW,GAAG,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACF,CAAC;AAED,YAAQ,KAAK,KAAK,KAAK,CAAC;AAAA,EAC1B;AAEA,SAAO;AACT;;;AChCA,OAAOC,gBAAe;AAOtB,eAAsB,0BACpB,MACA,OAAwB,OACxB,YACiB;AACjB,QAAM,QAAQ,MAAM,kBAAkB,IAAI;AAE1C,QAAM;AAAA,IACJ,MAAM,EAAE,KAAK;AAAA,EACf,IAAI,MAAMA,WAAU,UAAU,OAAO,MAAM;AAAA,IACzC,QAAQ,CAAC,MAAM;AACb,UAAI,EAAE,WAAW,sBAAsB,YAAY;AACjD,mBAAW,KAAK,MAAM,EAAE,WAAW,GAAG,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO,KAAK,KAAK;AACnB;;;AC1BO,IAAM,wBAAwB;AAAA,EACnC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,cAAc;AAAA,EACnC,EAAE,MAAM,YAAY,MAAM,wBAAwB;AAAA,EAClD,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,qBAAqB;AAAA,EAC1C,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,WAAW,MAAM,uBAAuB;AAAA,EAChD,EAAE,MAAM,WAAW,MAAM,wBAAwB;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,YAAY,MAAM,6BAA6B;AAAA,EACvD,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,YAAY,MAAM,6BAA6B;AAAA,EACvD,EAAE,MAAM,YAAY,MAAM,yBAAyB;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,wBAAwB;AAAA,EAC7C,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,8BAA8B;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,mCAAmC;AAAA,EACxD,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,2BAA2B;AAAA,EAChD,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,kCAAkC;AAAA,EACvD,EAAE,MAAM,OAAO,MAAM,gCAAgC;AAAA,EACrD,EAAE,MAAM,OAAO,MAAM,kBAAkB;AAAA,EACvC,EAAE,MAAM,OAAO,MAAM,kBAAkB;AAAA,EACvC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,qCAAqC;AAAA,EAC1D,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,0BAA0B;AAAA,EAC/C,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,WAAW,MAAM,gBAAgB;AAAA,EACzC,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,EAC1C,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EACrC,EAAE,MAAM,OAAO,MAAM,kBAAkB;AAAA,EACvC,EAAE,MAAM,OAAO,MAAM,oCAAoC;AAAA,EACzD,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,YAAY,MAAM,oBAAoB;AAAA,EAC9C,EAAE,MAAM,OAAO,MAAM,0BAA0B;AAAA,EAC/C,EAAE,MAAM,OAAO,MAAM,MAAM;AAAA,EAC3B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EACrC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,iBAAiB;AAAA,EACtC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,sBAAsB;AAAA,EAC3C,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,0CAA0C;AAAA,EAC/D,EAAE,MAAM,OAAO,MAAM,mBAAmB;AAAA,EACxC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,iBAAiB;AAAA,EACtC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,gCAAgC;AAAA,EACrD,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,qBAAqB;AAAA,EAC1C,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,YAAY,MAAM,6BAA6B;AAAA,EACvD,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,qBAAqB;AAAA,EAC1C,EAAE,MAAM,WAAW,MAAM,2BAA2B;AAAA,EACpD,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EAC5C,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,EAC9B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,2BAA2B;AAAA,EAChD,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EAC5B,EAAE,MAAM,OAAO,MAAM,WAAW;AAAA,EAChC,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,iBAAiB;AAAA,EACtC,EAAE,MAAM,OAAO,MAAM,YAAY;AAAA,EACjC,EAAE,MAAM,OAAO,MAAM,OAAO;AAAA,EAC5B,EAAE,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC7B,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EAC5C,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,EAClC,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B,EAAE,MAAM,OAAO,MAAM,SAAS;AAChC;","names":["forwardRef","useEffect","useRef","jsx","useEffect","useEffect","useEffect","useState","useEffect","useState","Tesseract","Tesseract"]}