{"version":3,"sources":["../src/lib/worker.ts"],"sourcesContent":["import * as pdfjsLib from 'pdfjs-dist'\n\n// Track if worker has been configured to prevent multiple configurations\nlet isWorkerConfigured = false\nlet workerRetryCount = 0\nconst MAX_WORKER_RETRIES = 3\n\n/**\n * Configure PDF.js worker source with retry logic\n * Call this before using any PDF components\n */\nexport const configurePDFWorker = (workerSrc?: string, force = false) => {\n  // Prevent multiple configurations unless forced\n  if (isWorkerConfigured && !force) {\n    return\n  }\n\n  // Clear any existing worker configuration\n  if (force) {\n    try {\n      // Clear the worker source properly\n      delete (pdfjsLib.GlobalWorkerOptions as any).workerSrc\n    } catch (error) {\n      console.warn('Error clearing existing worker:', error)\n    }\n  }\n\n  if (workerSrc && workerSrc.trim()) {\n    pdfjsLib.GlobalWorkerOptions.workerSrc = workerSrc\n  } else if (!pdfjsLib.GlobalWorkerOptions.workerSrc || pdfjsLib.GlobalWorkerOptions.workerSrc === '') {\n    // Try multiple CDN options as fallbacks\n    const fallbackWorkers = [\n      `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`,\n      `https://unpkg.com/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`,\n      `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.min.js`\n    ]\n    \n    // Use the first available worker based on retry count\n    const workerIndex = workerRetryCount % fallbackWorkers.length\n    pdfjsLib.GlobalWorkerOptions.workerSrc = fallbackWorkers[workerIndex]\n    \n    console.log(`Configuring PDF worker (attempt ${workerRetryCount + 1}):`, pdfjsLib.GlobalWorkerOptions.workerSrc)\n  }\n  \n  isWorkerConfigured = true\n}\n\n/**\n * Get the current worker configuration\n */\nexport const getWorkerSrc = () => pdfjsLib.GlobalWorkerOptions.workerSrc\n\n/**\n * Common worker configurations\n */\nexport const WorkerSources = {\n  // Local worker (copy pdf.worker.min.mjs to your public directory)\n  LOCAL: '/pdf.worker.min.js',\n  \n  // jsDelivr CDN (recommended - more reliable)\n  JSDELIVR: `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`,\n  \n  // unpkg CDN (alternative)\n  UNPKG: `https://unpkg.com/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`,\n  \n  // Mozilla CDN (if available)\n  MOZILLA: `https://mozilla.github.io/pdf.js/build/pdf.worker.mjs`,\n} as const\n\n/**\n * Reset worker configuration (useful for troubleshooting)\n */\nexport const resetWorkerConfiguration = () => {\n  isWorkerConfigured = false\n  workerRetryCount = 0\n  // Clear worker source properly to avoid \"Invalid workerSrc type\" error\n  try {\n    delete (pdfjsLib.GlobalWorkerOptions as any).workerSrc\n  } catch (error) {\n    // If delete fails, set to empty string as fallback\n    pdfjsLib.GlobalWorkerOptions.workerSrc = ''\n  }\n  // Reconfigure with default\n  configurePDFWorker(undefined, true)\n}\n\n/**\n * Retry worker configuration with next fallback\n */\nexport const retryWorkerConfiguration = () => {\n  if (workerRetryCount < MAX_WORKER_RETRIES) {\n    workerRetryCount++\n    isWorkerConfigured = false\n    configurePDFWorker(undefined, true)\n    return true\n  }\n  return false\n}\n\n/**\n * Check if worker is properly configured\n */\nexport const isWorkerConfiguredProperly = () => {\n  const workerSrc = pdfjsLib.GlobalWorkerOptions.workerSrc\n  return !!(workerSrc && workerSrc.trim() && workerSrc !== 'undefined') && isWorkerConfigured\n}\n\n/**\n * Get current retry count for debugging\n */\nexport const getWorkerRetryCount = () => workerRetryCount\n\n// Auto-configure on import with fallback\nconfigurePDFWorker() "],"mappings":";;;AAAA,YAAY,cAAc;AAG1B,IAAI,qBAAqB;AACzB,IAAI,mBAAmB;AACvB,IAAM,qBAAqB;AAMpB,IAAM,qBAAqB,CAAC,WAAoB,QAAQ,UAAU;AAEvE,MAAI,sBAAsB,CAAC,OAAO;AAChC;AAAA,EACF;AAGA,MAAI,OAAO;AACT,QAAI;AAEF,aAAiB,6BAA4B;AAAA,IAC/C,SAAS,OAAO;AACd,cAAQ,KAAK,mCAAmC,KAAK;AAAA,IACvD;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,KAAK,GAAG;AACjC,IAAS,6BAAoB,YAAY;AAAA,EAC3C,WAAW,CAAU,6BAAoB,aAAsB,6BAAoB,cAAc,IAAI;AAEnG,UAAM,kBAAkB;AAAA,MACtB,2CAAoD,gBAAO;AAAA,MAC3D,gCAAyC,gBAAO;AAAA,MAChD,iDAA0D,gBAAO;AAAA,IACnE;AAGA,UAAM,cAAc,mBAAmB,gBAAgB;AACvD,IAAS,6BAAoB,YAAY,gBAAgB,WAAW;AAEpE,YAAQ,IAAI,mCAAmC,mBAAmB,CAAC,MAAe,6BAAoB,SAAS;AAAA,EACjH;AAEA,uBAAqB;AACvB;AAKO,IAAM,eAAe,MAAe,6BAAoB;AAKxD,IAAM,gBAAgB;AAAA;AAAA,EAE3B,OAAO;AAAA;AAAA,EAGP,UAAU,2CAAoD,gBAAO;AAAA;AAAA,EAGrE,OAAO,gCAAyC,gBAAO;AAAA;AAAA,EAGvD,SAAS;AACX;AAKO,IAAM,2BAA2B,MAAM;AAC5C,uBAAqB;AACrB,qBAAmB;AAEnB,MAAI;AACF,WAAiB,6BAA4B;AAAA,EAC/C,SAAS,OAAO;AAEd,IAAS,6BAAoB,YAAY;AAAA,EAC3C;AAEA,qBAAmB,QAAW,IAAI;AACpC;AAKO,IAAM,2BAA2B,MAAM;AAC5C,MAAI,mBAAmB,oBAAoB;AACzC;AACA,yBAAqB;AACrB,uBAAmB,QAAW,IAAI;AAClC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAKO,IAAM,6BAA6B,MAAM;AAC9C,QAAM,YAAqB,6BAAoB;AAC/C,SAAO,CAAC,EAAE,aAAa,UAAU,KAAK,KAAK,cAAc,gBAAgB;AAC3E;AAKO,IAAM,sBAAsB,MAAM;AAGzC,mBAAmB;","names":[]}