@json-to-office/jto 0.3.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/client/assets/HomePage-9ryiIVJl.js +99 -0
  3. package/dist/client/assets/HomePage-9ryiIVJl.js.map +1 -0
  4. package/dist/client/assets/JsonEditorPage-BO0AtnI3.js +3 -0
  5. package/dist/client/assets/{JsonEditorPage-DKor0I6f.js.map → JsonEditorPage-BO0AtnI3.js.map} +1 -1
  6. package/dist/client/assets/MonacoPluginProvider-BE7Xjhup.js +3 -0
  7. package/dist/client/assets/{MonacoPluginProvider-BGYshg9R.js.map → MonacoPluginProvider-BE7Xjhup.js.map} +1 -1
  8. package/dist/client/assets/NotFoundPage-SV9cseZ6.js +2 -0
  9. package/dist/client/assets/{NotFoundPage-ILCklaD-.js.map → NotFoundPage-SV9cseZ6.js.map} +1 -1
  10. package/dist/client/assets/button-DghEEchK.js +2 -0
  11. package/dist/client/assets/{button-BzUKH2aN.js.map → button-DghEEchK.js.map} +1 -1
  12. package/dist/client/assets/{docx-preview-DkKCgwb-.js → docx-preview-DQa8jhzH.js} +3 -3
  13. package/dist/client/assets/{docx-preview-DkKCgwb-.js.map → docx-preview-DQa8jhzH.js.map} +1 -1
  14. package/dist/client/assets/{editor-BS2qlF-X.js → editor-BxyYhgT1.js} +2 -2
  15. package/dist/client/assets/{editor-BS2qlF-X.js.map → editor-BxyYhgT1.js.map} +1 -1
  16. package/dist/client/assets/{editor-monaco-json-DKrX3IiN.js → editor-monaco-json-PlUCgtCX.js} +3 -3
  17. package/dist/client/assets/{editor-monaco-json-DKrX3IiN.js.map → editor-monaco-json-PlUCgtCX.js.map} +1 -1
  18. package/dist/client/assets/index-DSzthtfQ.js +3 -0
  19. package/dist/client/assets/{index-D_aKAAFg.js.map → index-DSzthtfQ.js.map} +1 -1
  20. package/dist/client/assets/{monaco-editor-B-NlkJ5A.js → monaco-editor-BcgxPCqT.js} +3 -3
  21. package/dist/client/assets/{monaco-editor-B-NlkJ5A.js.map → monaco-editor-BcgxPCqT.js.map} +1 -1
  22. package/dist/client/assets/preview-BBQhSmsm.js +3 -0
  23. package/dist/client/assets/{preview-AJZwEEO9.js.map → preview-BBQhSmsm.js.map} +1 -1
  24. package/dist/client/assets/query-vendor-Df8-oete.js +7 -0
  25. package/dist/client/assets/query-vendor-Df8-oete.js.map +1 -0
  26. package/dist/client/assets/radix-ui-BZ5iKMtq.js +51 -0
  27. package/dist/client/assets/radix-ui-BZ5iKMtq.js.map +1 -0
  28. package/dist/client/assets/react-vendor-CTFDOf2G.js +61 -0
  29. package/dist/client/assets/react-vendor-CTFDOf2G.js.map +1 -0
  30. package/dist/client/assets/{state-vendor-Az8redj0.js → state-vendor-BDrPu9qj.js} +2 -2
  31. package/dist/client/assets/{state-vendor-Az8redj0.js.map → state-vendor-BDrPu9qj.js.map} +1 -1
  32. package/dist/client/assets/{ui-vendor-ChWVh3T-.js → ui-vendor-Dyg3GRT-.js} +2 -2
  33. package/dist/client/assets/{ui-vendor-ChWVh3T-.js.map → ui-vendor-Dyg3GRT-.js.map} +1 -1
  34. package/dist/client/index.html +6 -6
  35. package/dist/prompts/instructions-docx.md +46 -0
  36. package/dist/prompts/instructions-edit-document-docx.md +54 -0
  37. package/dist/prompts/instructions-edit-document-pptx-slides.md +40 -0
  38. package/dist/prompts/instructions-edit-document-pptx-templates.md +48 -0
  39. package/dist/prompts/instructions-edit-document-pptx.md +49 -0
  40. package/dist/prompts/instructions-edit-document.md +28 -0
  41. package/dist/prompts/instructions-edit-pptx.md +31 -0
  42. package/dist/prompts/instructions-edit.md +24 -0
  43. package/dist/prompts/instructions-generate-docx.md +10 -0
  44. package/dist/prompts/instructions-generate-pptx.md +24 -0
  45. package/dist/prompts/instructions-generate.md +21 -0
  46. package/dist/prompts/pptx-core.md +180 -0
  47. package/dist/prompts/pptx-design.md +209 -0
  48. package/dist/prompts/system-theme.md +28 -0
  49. package/dist/prompts/system.md +30 -0
  50. package/package.json +17 -17
  51. package/dist/client/assets/HomePage-muPAe_M2.js +0 -99
  52. package/dist/client/assets/HomePage-muPAe_M2.js.map +0 -1
  53. package/dist/client/assets/JsonEditorPage-DKor0I6f.js +0 -3
  54. package/dist/client/assets/MonacoPluginProvider-BGYshg9R.js +0 -3
  55. package/dist/client/assets/NotFoundPage-ILCklaD-.js +0 -2
  56. package/dist/client/assets/button-BzUKH2aN.js +0 -2
  57. package/dist/client/assets/index-D_aKAAFg.js +0 -3
  58. package/dist/client/assets/preview-AJZwEEO9.js +0 -3
  59. package/dist/client/assets/query-vendor-CT0SoqJh.js +0 -15
  60. package/dist/client/assets/query-vendor-CT0SoqJh.js.map +0 -1
  61. package/dist/client/assets/radix-ui-DkKm4m5M.js +0 -2
  62. package/dist/client/assets/radix-ui-DkKm4m5M.js.map +0 -1
  63. package/dist/client/assets/react-vendor-B_QXlk-T.js +0 -102
  64. package/dist/client/assets/react-vendor-B_QXlk-T.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"mappings":"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","names":["DocumentGenerationLoader","className","currentStage","message","stages","stageLabels","currentStageIndex","cn","jsxs","jsx","Spinner","stage","index","isActive","isCompleted","PreviewLoading","renderingLibrary","getLibraryInfo","library","name","description","Skeleton","PreviewFrame","React","isLoading","iframeSrc","iframeSrcDoc","isGenerating","generationProgress","ref","iframeLoaded","setIframeLoaded","useState","useEffect","handleIframeLoad","handleIframeError","iframeSandbox","hasContent","FORMAT_LABEL","PreviewFrameMemoized","WarningsPanel","warnings","isExpanded","setIsExpanded","ChevronRight","AlertTriangle","warning","Info","renderDocxWithDocxJS","blob","docx_preview","__vitePreload","bodyEl","headEl","renderPromise","timeoutPromise","_","reject","overrideStyleEl","env","htmlEl","renderWithLibreOffice","formData","ext","FORMAT","response","API_ENDPOINTS","json","pdfBlob","objectUrl","renderDocument","_baseUrl","payload","error","errorMessage","Progress","React.forwardRef","value","props","ProgressPrimitive.Root","ProgressPrimitive.Indicator","formatBytes","bytes","k","sizes","i","CacheMetrics","stats","setStats","loading","setLoading","setError","controller","fetchData","data","err","interval","handleCacheCleared","doc","hitRatePct","Badge","ComponentBreakdown","stat","hitRate","requests","memory","DebounceCountdown","memo","editTimestamp","debounceMs","remaining","setRemaining","id","tick","r","secs","pct","Preview","autoReload","saveDocumentDebounceWait","setSettings","useSettingsStore","state","text","globalError","cacheStatus","cacheHitRate","isRendering","isPreviewStale","editSequence","lastBuiltSequence","hasValidationErrors","setOutput","useOutputStore","activeTab","useDocumentsStore","documentTypes","setIframeSrc","setIframeSrcDoc","showCacheMetrics","setShowCacheMetrics","iframeRef","renderCleanupRef","useRef","pendingManualRenderRef","cleanupRenderedPreview","useCallback","doRender","docName","docBlob","status","displayMessage","manualRenderRef","handleManualRender","onManual","onShowCache","Fragment","_b","_a","PreviewHeaderMemoized","lib","Separator","hasUnsyncedEdits","isStale","willAutoBuild","isSwitchingDoc","Dialog","DialogContent","DialogHeader","DialogTitle"],"ignoreList":[],"sources":["../../../src/client/components/ui/loading-states.tsx","../../../src/client/components/playground/preview-frame.tsx","../../../src/client/components/playground/warnings-panel.tsx","../../../src/client/lib/render.ts","../../../src/client/components/ui/progress.tsx","../../../src/client/components/cache-metrics.tsx","../../../src/client/components/playground/preview.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { Spinner } from './spinner';\nimport { Skeleton } from './skeleton';\n\ninterface LoadingOverlayProps {\n isLoading: boolean;\n children: React.ReactNode;\n message?: string;\n className?: string;\n}\n\nexport function LoadingOverlay({\n isLoading,\n children,\n message = 'Loading...',\n className,\n}: LoadingOverlayProps) {\n return (\n <div className={cn('relative', className)}>\n {children}\n {isLoading && (\n <div className=\"absolute inset-0 bg-background/80 backdrop-blur-sm flex items-center justify-center z-50\">\n <div className=\"flex flex-col items-center gap-2\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground\">{message}</p>\n </div>\n </div>\n )}\n </div>\n );\n}\n\ninterface DocumentGenerationLoaderProps {\n className?: string;\n currentStage?: 'parsing' | 'building' | 'rendering' | 'finalizing';\n message?: string;\n}\n\nexport function DocumentGenerationLoader({\n className,\n currentStage = 'parsing',\n message,\n}: DocumentGenerationLoaderProps) {\n const stages = ['parsing', 'building', 'rendering', 'finalizing'];\n const stageLabels = {\n parsing: 'Validating JSON',\n building: 'Building structure',\n rendering: 'Rendering content',\n finalizing: 'Finalizing document',\n };\n\n const currentStageIndex = stages.indexOf(currentStage);\n\n return (\n <div className={cn('p-6 space-y-4', className)}>\n <div className=\"flex items-center gap-3\">\n <Spinner size=\"md\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Generating Document</p>\n <p className=\"text-xs text-muted-foreground\">\n {message || `${stageLabels[currentStage]}...`}\n </p>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {stages.map((stage, index) => {\n const isActive = index === currentStageIndex;\n const isCompleted = index < currentStageIndex;\n return (\n <div key={stage} className=\"space-y-2\">\n <div className=\"flex justify-between text-xs\">\n <span\n className={cn(\n isActive\n ? 'text-primary font-medium'\n : isCompleted\n ? 'text-muted-foreground'\n : 'text-muted-foreground/60'\n )}\n >\n {stageLabels[stage as keyof typeof stageLabels]}\n </span>\n <span className=\"text-muted-foreground\">\n {isCompleted ? '✓' : isActive ? '...' : '○'}\n </span>\n </div>\n <div className=\"w-full bg-secondary rounded-full h-1.5\">\n <div\n className={cn(\n 'h-1.5 rounded-full transition-all duration-300',\n isCompleted\n ? 'bg-green-500'\n : isActive\n ? 'bg-primary animate-pulse'\n : 'bg-transparent'\n )}\n style={{ width: isCompleted ? '100%' : isActive ? '100%' : '0%' }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface PreviewLoadingProps {\n renderingLibrary?: string;\n className?: string;\n}\n\nexport function PreviewLoading({\n renderingLibrary,\n className,\n}: PreviewLoadingProps) {\n const getLibraryInfo = (library?: string) => {\n switch (library) {\n case 'LibreOffice':\n return {\n name: 'LibreOffice',\n description: 'Converting PPTX to PDF locally...',\n };\n case 'Office':\n return {\n name: 'Microsoft Office',\n description: 'Uploading file and loading Office viewer...',\n };\n case 'Docs':\n return {\n name: 'Google Docs',\n description: 'Uploading file and loading Docs viewer...',\n };\n default:\n return { name: 'Default', description: 'Processing document...' };\n }\n };\n\n const { name, description } = getLibraryInfo(renderingLibrary);\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center h-full p-8 space-y-4',\n className\n )}\n >\n <Spinner size=\"lg\" />\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm font-medium\">Rendering Preview</p>\n <p className=\"text-xs text-muted-foreground\">Using {name} renderer</p>\n <p className=\"text-xs text-muted-foreground/80\">{description}</p>\n </div>\n\n <div className=\"w-full max-w-md space-y-3\">\n <Skeleton className=\"h-16 w-full\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n </div>\n <Skeleton className=\"h-12 w-full\" />\n </div>\n </div>\n );\n}\n\ninterface InlineLoaderProps {\n message?: string;\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function InlineLoader({\n message = 'Loading...',\n size = 'sm',\n className,\n}: InlineLoaderProps) {\n return (\n <div className={cn('flex items-center gap-2', className)}>\n <Spinner size={size} />\n <span className=\"text-sm text-muted-foreground\">{message}</span>\n </div>\n );\n}\n\ninterface FileOperationLoaderProps {\n operation: 'upload' | 'download' | 'save' | 'delete';\n fileName?: string;\n progress?: number;\n className?: string;\n}\n\nexport function FileOperationLoader({\n operation,\n fileName,\n progress,\n className,\n}: FileOperationLoaderProps) {\n const operationLabels = {\n upload: 'Uploading',\n download: 'Downloading',\n save: 'Saving',\n delete: 'Deleting',\n };\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3 p-3 border rounded-lg bg-muted/50',\n className\n )}\n >\n <Spinner size=\"sm\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">\n {operationLabels[operation]} {fileName && `\"${fileName}\"`}\n </p>\n {progress !== undefined && (\n <div className=\"mt-1\">\n <div className=\"flex justify-between text-xs mb-1\">\n <span>{progress}%</span>\n <span className=\"text-muted-foreground\">\n {progress < 100 ? 'In progress...' : 'Complete'}\n </span>\n </div>\n <div className=\"w-full bg-secondary rounded-full h-1.5\">\n <div\n className=\"bg-primary h-1.5 rounded-full transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { DocumentGenerationLoader, PreviewLoading } from '../ui/loading-states';\nimport { Spinner } from '../ui/spinner';\nimport { FORMAT_LABEL } from '../../lib/env';\n\nconst PreviewFrame = React.forwardRef<\n HTMLIFrameElement,\n {\n isLoading: boolean;\n iframeSrc?: string;\n iframeSrcDoc?: string;\n isGenerating?: boolean;\n generationProgress?: {\n stage: 'parsing' | 'building' | 'rendering' | 'finalizing';\n message?: string;\n };\n }\n>(\n (\n {\n isLoading,\n iframeSrc,\n iframeSrcDoc,\n isGenerating,\n generationProgress,\n },\n ref\n ) => {\n const [iframeLoaded, setIframeLoaded] = useState(false);\n\n // Reset iframe loaded state when content changes\n useEffect(() => {\n setIframeLoaded(false);\n }, [iframeSrc, iframeSrcDoc]);\n\n // Handle iframe load event\n const handleIframeLoad = () => {\n setIframeLoaded(true);\n };\n\n // Handle iframe errors\n const handleIframeError = () => {\n console.warn('Iframe failed to load content');\n setIframeLoaded(false);\n };\n\n // PDF blob URLs and remote viewers can be blocked by Chromium-based browsers\n // when loaded in a sandboxed iframe. Keep sandbox only for srcDoc-based preview.\n const iframeSandbox = iframeSrcDoc\n ? 'allow-scripts allow-popups allow-forms'\n : undefined;\n\n const hasContent = Boolean(iframeSrc || iframeSrcDoc);\n\n // Full-screen loaders only when no existing content\n if (isGenerating && !hasContent) {\n return (\n <div className=\"grow\">\n <DocumentGenerationLoader\n currentStage={generationProgress?.stage}\n message={generationProgress?.message}\n />\n </div>\n );\n }\n\n if (isLoading && !hasContent) {\n return (\n <div className=\"grow\">\n <PreviewLoading renderingLibrary=\"LibreOffice\" />\n </div>\n );\n }\n\n if (hasContent) {\n return (\n <div className=\"h-full w-full relative bg-white\">\n {/* Loading overlay */}\n {!iframeLoaded && (\n <div className=\"absolute inset-0 bg-muted/80 flex items-center justify-center z-10\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-foreground mx-auto mb-2\"></div>\n <p className=\"text-sm text-muted-foreground\">\n Loading preview...\n </p>\n </div>\n </div>\n )}\n {/* Generating/Rendering overlay on top of existing content */}\n {(isGenerating || isLoading) && (\n <div className=\"absolute inset-0 bg-background/60 backdrop-blur-[2px] flex items-center justify-center z-20 transition-opacity duration-200\">\n <div className=\"flex flex-col items-center gap-2\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground\">\n {isGenerating ? 'Generating...' : 'Rendering...'}\n </p>\n </div>\n </div>\n )}\n {/* Key forces remount when switching between srcDoc (sandboxed) and\n src (blob URL, no sandbox) to avoid stale sandbox race condition */}\n <iframe\n key={iframeSrcDoc ? 'srcdoc' : 'src'}\n ref={ref}\n className=\"w-full h-full border-0\"\n style={{\n backgroundColor: 'white',\n // Fade in after load to prevent flash\n opacity: iframeLoaded ? 1 : 0,\n transition: 'opacity 0.2s ease-in-out',\n }}\n src={iframeSrc}\n srcDoc={iframeSrcDoc}\n onLoad={handleIframeLoad}\n onError={handleIframeError}\n // Security: sandbox srcDoc to prevent XSS from rendered HTML.\n // Blob URLs (src) must NOT be sandboxed without allow-same-origin.\n sandbox={iframeSandbox}\n // Accessibility\n title=\"Document preview\"\n aria-label={`Preview of rendered ${FORMAT_LABEL.toLowerCase()}`}\n />\n </div>\n );\n }\n return null;\n }\n);\n\nPreviewFrame.displayName = 'PreviewFrame';\nexport const PreviewFrameMemoized = React.memo(PreviewFrame);\n","import React from 'react';\nimport { AlertTriangle, Info, ChevronRight } from 'lucide-react';\nimport type { GenerationWarning } from '../../store/output-store';\n\ninterface WarningsPanelProps {\n warnings: GenerationWarning[] | null | undefined;\n className?: string;\n}\n\nexport function WarningsPanel({ warnings, className }: WarningsPanelProps) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n if (!warnings || warnings.length === 0) {\n return null;\n }\n\n return (\n <div className={className}>\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-full items-center gap-2 rounded-md border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/50 px-3 py-1.5 text-left transition-colors hover:bg-amber-100 dark:hover:bg-amber-900/50\"\n >\n <ChevronRight\n className={`h-3.5 w-3.5 text-amber-600 dark:text-amber-400 transition-transform flex-shrink-0 ${isExpanded ? 'rotate-90' : ''}`}\n />\n <AlertTriangle className=\"h-3.5 w-3.5 text-amber-500 flex-shrink-0\" />\n <span className=\"text-xs font-medium text-amber-700 dark:text-amber-300\">\n {warnings.length} warning{warnings.length !== 1 ? 's' : ''}\n </span>\n </button>\n\n {isExpanded && (\n <div className=\"mt-1.5 space-y-1.5\">\n {warnings.map((warning, index) => (\n <div\n key={index}\n className=\"flex items-start gap-2 rounded-md border border-amber-100 dark:border-amber-900 bg-white dark:bg-amber-950/30 px-3 py-2\"\n >\n {warning.severity === 'info' ? (\n <Info className=\"h-3.5 w-3.5 mt-0.5 text-blue-500 flex-shrink-0\" />\n ) : (\n <AlertTriangle className=\"h-3.5 w-3.5 mt-0.5 text-amber-500 flex-shrink-0\" />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <code className=\"text-[11px] font-medium text-amber-700 dark:text-amber-300 bg-amber-50 dark:bg-amber-900/40 px-1 py-0.5 rounded\">\n {warning.component}\n </code>\n {warning.severity === 'info' && (\n <span className=\"text-[10px] uppercase tracking-wide text-blue-500 font-medium\">\n info\n </span>\n )}\n </div>\n <p className=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400 leading-relaxed\">\n {warning.message}\n </p>\n {warning.context && Object.keys(warning.context).length > 0 && (\n <details className=\"mt-1.5\">\n <summary className=\"text-[11px] text-gray-400 dark:text-gray-500 cursor-pointer hover:text-gray-600 dark:hover:text-gray-300\">\n Context\n </summary>\n <pre className=\"mt-1 text-[11px] bg-gray-50 dark:bg-gray-900/50 p-1.5 rounded overflow-x-auto text-gray-600 dark:text-gray-400\">\n {JSON.stringify(warning.context, null, 2)}\n </pre>\n </details>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import { FORMAT } from './env';\nimport { API_ENDPOINTS } from '../config/api';\nimport { env } from './env';\n\nexport type RenderPayload = {\n iframeSrc?: string;\n iframeSrcDoc?: string;\n cleanup?: () => void;\n};\n\nasync function renderDocxWithDocxJS(blob: Blob): Promise<RenderPayload> {\n const docx_preview = await import('docx-preview');\n\n const bodyEl = document.createElement('body');\n const headEl = document.createElement('head');\n\n const renderPromise = docx_preview.renderAsync(blob, bodyEl, headEl, {\n inWrapper: true,\n });\n\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error('DocxJS renderAsync timed out after 10 seconds'));\n }, 10000);\n });\n\n await Promise.race([renderPromise, timeoutPromise]);\n\n const overrideStyleEl = document.createElement('link');\n overrideStyleEl.rel = 'stylesheet';\n overrideStyleEl.href = `${env.basePath}/css/preview/docxjs.css`;\n headEl.appendChild(overrideStyleEl);\n\n const htmlEl = document.createElement('html');\n htmlEl.appendChild(headEl);\n htmlEl.appendChild(bodyEl);\n\n return {\n iframeSrcDoc: htmlEl.outerHTML,\n };\n}\n\nasync function renderWithLibreOffice(\n name: string,\n blob: Blob\n): Promise<RenderPayload> {\n const formData = new FormData();\n const ext = FORMAT === 'pptx' ? '.pptx' : '.docx';\n formData.append('file', blob, `${name}${ext}`);\n\n const response = await fetch(API_ENDPOINTS.preview.libreoffice, {\n method: 'POST',\n body: formData,\n });\n\n if (!response.ok) {\n let message = `LibreOffice preview failed (${response.status})`;\n try {\n const json = await response.json();\n if (json && typeof json === 'object' && typeof json.error === 'string') {\n message = json.error;\n }\n } catch {}\n throw new Error(message);\n }\n\n const pdfBlob = await response.blob();\n if (!pdfBlob.size) {\n throw new Error('LibreOffice preview returned an empty PDF');\n }\n\n const objectUrl = URL.createObjectURL(pdfBlob);\n return {\n iframeSrc: objectUrl,\n cleanup: () => URL.revokeObjectURL(objectUrl),\n };\n}\n\nexport function cleanupIframe(iframe: HTMLIFrameElement) {\n try {\n if (iframe.contentWindow) {\n iframe.contentWindow.location.replace('about:blank');\n }\n iframe.src = 'about:blank';\n iframe.srcdoc = '';\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe);\n }\n } catch (error) {\n console.warn('Error cleaning up iframe:', error);\n }\n}\n\nexport type RenderLibrary = 'docxjs' | 'LibreOffice';\n\nexport async function renderDocument(\n name: string,\n blob: Blob,\n library: RenderLibrary = FORMAT === 'docx' ? 'docxjs' : 'LibreOffice',\n _baseUrl?: string,\n) {\n try {\n if (!blob || blob.size === 0) {\n throw new Error('Invalid or empty document blob');\n }\n\n let payload: RenderPayload;\n\n if (FORMAT === 'docx' && library === 'docxjs') {\n payload = await renderDocxWithDocxJS(blob);\n } else {\n payload = await renderWithLibreOffice(name, blob);\n }\n\n return { status: 'success' as const, name, payload };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return { status: 'error' as const, name, payload: new Error(errorMessage) };\n }\n}\n\n// Keep backward compat exports for pptx code\nexport const renderPptx = (name: string, blob: Blob, baseUrl: string) =>\n renderDocument(name, blob, 'LibreOffice', baseUrl);\n","import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport { cn } from '../../lib/utils';\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n 'relative h-4 w-full overflow-hidden rounded-full bg-secondary',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","import { useEffect, useState } from 'react';\nimport { Badge } from './ui/badge';\nimport { Progress } from './ui/progress';\nimport { API_ENDPOINTS } from '../config/api';\nimport { FORMAT } from '../lib/env';\n\ninterface CacheStats {\n document: {\n hits: number;\n misses: number;\n hitRate: number;\n size: number;\n itemCount: number;\n enabled: boolean;\n };\n components?: ComponentCacheData;\n}\n\ninterface ComponentStatistics {\n type: string;\n hits: number;\n misses: number;\n avgProcessTime: number;\n avgSize: number;\n entries: number;\n hitRate?: number;\n totalRequests?: number;\n memoryUsage?: number;\n}\n\ninterface ComponentCacheData {\n entries: number;\n totalSize: number;\n hitRate: number;\n totalHits: number;\n totalMisses: number;\n avgResponseTime: number;\n evictions: number;\n componentStats: ComponentStatistics[];\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function CacheMetrics() {\n const [stats, setStats] = useState<CacheStats | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const controller = new AbortController();\n\n const fetchData = async () => {\n try {\n const response = await fetch(API_ENDPOINTS.cacheStats, {\n signal: controller.signal,\n });\n if (!response.ok) throw new Error('Failed to fetch cache stats');\n const data = await response.json();\n\n if (!controller.signal.aborted) {\n setStats(data.data);\n setError(null);\n }\n } catch (err) {\n if (!controller.signal.aborted) {\n if (err instanceof Error && err.name !== 'AbortError') {\n setError(err.message);\n } else if (!(err instanceof Error) || err.name !== 'AbortError') {\n setError('Failed to load cache stats');\n }\n }\n } finally {\n if (!controller.signal.aborted) setLoading(false);\n }\n };\n\n fetchData();\n const interval = setInterval(fetchData, 5000);\n\n const handleCacheCleared = () => fetchData();\n window.addEventListener('cache:cleared', handleCacheCleared);\n\n return () => {\n controller.abort();\n clearInterval(interval);\n window.removeEventListener('cache:cleared', handleCacheCleared);\n };\n }, []);\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-destructive p-4\">\n Error loading cache metrics: {error}\n </div>\n );\n }\n\n if (!stats) return null;\n\n const { document: doc } = stats;\n const hitRatePct = doc.hitRate * 100;\n\n return (\n <div className=\"space-y-4\">\n {/* Summary row */}\n <div className=\"flex items-center gap-6 text-sm\">\n <div>\n <span className=\"text-muted-foreground\">Hit Rate</span>{' '}\n <span className=\"font-semibold text-base\">{hitRatePct.toFixed(1)}%</span>\n <span className=\"text-muted-foreground ml-1\">\n ({doc.hits} hits / {doc.misses} misses)\n </span>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Size</span>{' '}\n <span className=\"font-semibold\">{formatBytes(doc.size)}</span>\n <span className=\"text-muted-foreground ml-1\">\n ({doc.itemCount} items)\n </span>\n </div>\n <Badge variant={doc.enabled ? 'default' : 'secondary'}>\n {doc.enabled ? 'Enabled' : 'Disabled'}\n </Badge>\n </div>\n\n <Progress value={hitRatePct} className=\"h-2\" aria-label=\"Cache hit rate\" />\n\n {/* Module-level breakdown (docx only) */}\n {FORMAT === 'docx' && stats.components && (\n <ComponentBreakdown data={stats.components} />\n )}\n </div>\n );\n}\n\nfunction ComponentBreakdown({ data }: { data: ComponentCacheData }) {\n if (data.componentStats.length === 0) return null;\n\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Module Breakdown</h4>\n <div className=\"space-y-1\">\n {data.componentStats.map((stat) => {\n const hitRate = (stat.hitRate || 0) * 100;\n const requests = stat.totalRequests || stat.hits + stat.misses;\n const memory = stat.memoryUsage || stat.entries * stat.avgSize || 0;\n\n return (\n <div key={stat.type} className=\"px-3 py-1.5 text-sm\">\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"font-medium\">{stat.type}</span>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span>{hitRate.toFixed(0)}% hit</span>\n <span>{requests} req</span>\n <span>{formatBytes(memory)}</span>\n </div>\n </div>\n <Progress value={hitRate} className=\"h-1.5\" />\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef, useState, memo } from 'react';\nimport { PreviewFrameMemoized } from './preview-frame';\nimport { PreviewHeaderMemoized } from './preview-header';\nimport { WarningsPanel } from './warnings-panel';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Separator } from '../ui/separator';\nimport { useOutputStore } from '../../store/output-store-provider';\nimport { useSettingsStore } from '../../store/settings-store-provider';\nimport { renderDocument } from '../../lib/render';\nimport { useDocumentsStore } from '../../store/documents-store-provider';\nimport { CacheMetrics } from '../cache-metrics';\nimport { FORMAT_LABEL } from '../../lib/env';\n\n/**\n * Tiny live countdown that ticks every 100ms and shows the\n * remaining debounce time before generation starts.\n * Renders nothing once the deadline is reached.\n */\nconst DebounceCountdown = memo(function DebounceCountdown({\n editTimestamp,\n debounceMs,\n}: {\n editTimestamp: number;\n debounceMs: number;\n}) {\n const [remaining, setRemaining] = useState(() =>\n Math.max(0, editTimestamp + debounceMs - Date.now())\n );\n\n useEffect(() => {\n let id: ReturnType<typeof setInterval> | undefined;\n const tick = () => {\n const r = Math.max(0, editTimestamp + debounceMs - Date.now());\n setRemaining(r);\n if (r <= 0 && id != null) clearInterval(id);\n };\n tick();\n id = setInterval(tick, 100);\n return () => {\n if (id != null) clearInterval(id);\n };\n }, [editTimestamp, debounceMs]);\n\n if (remaining <= 0) return null;\n\n const secs = (remaining / 1000).toFixed(1);\n const pct = Math.min(100, (remaining / debounceMs) * 100);\n\n return (\n <span className=\"inline-flex items-center gap-1.5 text-xs text-amber-600 dark:text-amber-400 tabular-nums\">\n <span\n className=\"h-1 rounded-full bg-amber-500/60 transition-[width] duration-100\"\n style={{ width: `${Math.round(pct * 0.4)}px` }}\n />\n {secs}s\n </span>\n );\n});\n\nexport function Preview() {\n const {\n autoReload,\n renderingLibrary,\n saveDocumentDebounceWait,\n setSettings,\n } = useSettingsStore((state) => state);\n const {\n name,\n text,\n blob,\n isGenerating,\n generationProgress,\n globalError,\n cacheStatus,\n cacheHitRate,\n warnings,\n isRendering,\n isPreviewStale,\n editSequence,\n lastBuiltSequence,\n editTimestamp,\n hasValidationErrors,\n setOutput,\n } = useOutputStore((state) => state);\n const activeTab = useDocumentsStore((state) => state.activeTab);\n const documentTypes = useDocumentsStore((state) => state.documentTypes);\n\n const [iframeSrc, setIframeSrc] = useState<string | undefined>(undefined);\n const [iframeSrcDoc, setIframeSrcDoc] = useState<string | undefined>(\n undefined\n );\n const [showCacheMetrics, setShowCacheMetrics] = useState<boolean>(false);\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n\n const renderCleanupRef = useRef<(() => void) | null>(null);\n const pendingManualRenderRef = useRef(false);\n\n const cleanupRenderedPreview = useCallback(() => {\n if (renderCleanupRef.current) {\n renderCleanupRef.current();\n renderCleanupRef.current = null;\n }\n }, []);\n\n // Core render function\n const doRender = useCallback(\n async (docName: string, docBlob: Blob) => {\n setOutput({\n isRendering: true,\n isPreviewStale: false,\n globalError: undefined,\n });\n\n try {\n const { status, payload } = await renderDocument(\n docName,\n docBlob,\n renderingLibrary\n );\n\n if (status !== 'success') {\n throw payload instanceof Error ? payload : new Error(String(payload));\n }\n\n cleanupRenderedPreview();\n setIframeSrc(payload.iframeSrc || undefined);\n setIframeSrcDoc(payload.iframeSrcDoc || undefined);\n renderCleanupRef.current = payload.cleanup || null;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n let displayMessage = errorMessage;\n if (errorMessage.includes('Failed to fetch')) {\n displayMessage =\n 'Network error: Unable to load required resources. Check if the server is running properly.';\n } else if (errorMessage.includes('timeout')) {\n displayMessage =\n 'Render timeout: The rendering process took too long.';\n }\n\n setOutput({ globalError: displayMessage });\n } finally {\n setOutput({ isRendering: false });\n }\n },\n [setOutput, cleanupRenderedPreview, renderingLibrary]\n );\n\n // Ref to always hold latest manual-render deps so the event listener never goes stale\n const manualRenderRef = useRef({ name, blob, doRender });\n useEffect(() => {\n manualRenderRef.current = { name, blob, doRender };\n });\n\n const handleManualRender = useCallback(async () => {\n // Set flag so blob-change effect renders the new blob when it arrives\n pendingManualRenderRef.current = true;\n // Flush debounces + trigger build via editor.tsx\n window.dispatchEvent(new CustomEvent('preview:flushAndBuild'));\n }, []); // stable — reads from ref\n\n // Auto-render when blob changes and docxjs + autoReload are active\n // Mark preview stale when blob changes but auto-render is OFF\n // Also render if a manual Run triggered the build (pendingManualRenderRef)\n useEffect(() => {\n if (blob && name && autoReload && renderingLibrary === 'docxjs') {\n doRender(name, blob);\n } else if (blob && name && pendingManualRenderRef.current) {\n pendingManualRenderRef.current = false;\n doRender(name, blob);\n } else if (blob && name) {\n setOutput({ isPreviewStale: true });\n }\n }, [blob, name, autoReload, renderingLibrary, doRender, setOutput]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n cleanupRenderedPreview();\n };\n }, [cleanupRenderedPreview]);\n\n // Listen for global header events (stable — handleManualRender never changes)\n useEffect(() => {\n const onManual = () => handleManualRender();\n const onShowCache = () => setShowCacheMetrics(true);\n\n window.addEventListener('preview:manualRender', onManual);\n window.addEventListener('preview:showCacheMetrics', onShowCache);\n return () => {\n window.removeEventListener('preview:manualRender', onManual);\n window.removeEventListener('preview:showCacheMetrics', onShowCache);\n };\n }, [handleManualRender]);\n\n return (\n <>\n <div className=\"flex h-full flex-col\">\n {(useSettingsStore as any) &&\n (useSettingsStore as any).getState?.().useGlobalPreviewHeader ===\n false && (\n <PreviewHeaderMemoized\n iframeRef={iframeRef}\n displayReloadButton={\n Boolean(iframeSrc) && !(iframeSrc?.startsWith('blob:') ?? false)\n }\n name={name?.trim() || 'Preview'}\n blob={blob}\n autoReload={autoReload}\n onToggleAutoReload={() =>\n setSettings({ autoReload: !autoReload })\n }\n onManualRender={handleManualRender}\n isGenerating={isGenerating}\n isRendering={isRendering}\n onShowCacheMetrics={() => setShowCacheMetrics(true)}\n documentText={text}\n warnings={warnings}\n renderingLibrary={renderingLibrary}\n setRenderingLibrary={(lib) =>\n setSettings({ renderingLibrary: lib } as any)\n }\n />\n )}\n <Separator />\n {/* Status Bar: cache + stale combined */}\n {(() => {\n const hasUnsyncedEdits =\n (editSequence ?? 0) > (lastBuiltSequence ?? 0);\n const isStale =\n (isPreviewStale || hasUnsyncedEdits) &&\n !isGenerating &&\n !isRendering;\n return (\n ((cacheStatus && cacheStatus !== 'UNKNOWN') || isStale) && (\n <div\n className={`px-3 py-1.5 flex items-center justify-between border-b overflow-hidden ${\n isStale\n ? 'bg-amber-500/10 border-amber-500/30'\n : 'bg-muted/30'\n }`}\n >\n <div className=\"flex items-center gap-2 min-w-0 truncate\">\n {cacheStatus === 'HIT' && !isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-green-500 flex-shrink-0\" />\n <span className=\"text-xs text-muted-foreground truncate\">\n Cached\n </span>\n </>\n ) : cacheStatus === 'MISS' && !isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-orange-500 flex-shrink-0\" />\n <span className=\"text-xs text-muted-foreground truncate\">\n Fresh {FORMAT_LABEL.toLowerCase()}\n </span>\n </>\n ) : isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-amber-500 flex-shrink-0\" />\n <span className=\"text-xs text-amber-600 dark:text-amber-400 truncate\">\n Outdated — click Run\n </span>\n {editTimestamp &&\n hasUnsyncedEdits &&\n !isGenerating &&\n !hasValidationErrors &&\n autoReload &&\n renderingLibrary === 'docxjs' && (\n <DebounceCountdown\n editTimestamp={editTimestamp}\n debounceMs={saveDocumentDebounceWait + 200}\n />\n )}\n </>\n ) : null}\n </div>\n {!isStale && cacheHitRate && cacheHitRate !== '0.0%' && (\n <span className=\"text-xs text-muted-foreground flex-shrink-0 ml-2\">\n {cacheHitRate} hit rate\n </span>\n )}\n </div>\n )\n );\n })()}\n {/* Warnings Panel */}\n <WarningsPanel warnings={warnings} className=\"mx-3 my-2\" />\n {/* Generation Error — centered in preview area */}\n {globalError && !isGenerating ? (\n <div className=\"flex-1 flex items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-red-400/50 bg-red-400/10 px-4 py-3 text-sm text-red-400\">\n <p className=\"font-medium mb-1\">Generation failed</p>\n <p className=\"text-xs text-red-400/80 break-words\">\n {globalError}\n </p>\n </div>\n </div>\n ) : (\n <PreviewFrameMemoized\n ref={iframeRef}\n isLoading={Boolean(isRendering)}\n iframeSrc={iframeSrc}\n iframeSrcDoc={iframeSrcDoc}\n isGenerating={(() => {\n const willAutoBuild = autoReload && renderingLibrary === 'docxjs';\n const isSwitchingDoc =\n activeTab &&\n name &&\n activeTab !== name &&\n documentTypes[activeTab] !== 'application/json+theme';\n return (\n Boolean(isGenerating) ||\n Boolean(willAutoBuild && isSwitchingDoc)\n );\n })()}\n generationProgress={(() => {\n const willAutoBuild = autoReload && renderingLibrary === 'docxjs';\n const isSwitchingDoc =\n activeTab &&\n name &&\n activeTab !== name &&\n documentTypes[activeTab] !== 'application/json+theme';\n return willAutoBuild && isSwitchingDoc && !isGenerating\n ? {\n stage: 'parsing' as const,\n message: `Building preview for ${activeTab}...`,\n }\n : generationProgress;\n })()}\n />\n )}\n </div>\n\n {/* Cache Metrics Dialog */}\n <Dialog open={showCacheMetrics} onOpenChange={setShowCacheMetrics}>\n <DialogContent className=\"max-w-2xl\">\n <DialogHeader>\n <DialogTitle>Cache Performance</DialogTitle>\n </DialogHeader>\n <CacheMetrics />\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"file":"assets/preview-AJZwEEO9.js"}
1
+ {"version":3,"mappings":";kjBAsCO,SAASA,GAAyB,CACvC,UAAAC,EACA,aAAAC,EAAe,UACf,QAAAC,CACF,EAAkC,CAChC,MAAMC,EAAS,CAAC,UAAW,WAAY,YAAa,YAAY,EAC1DC,EAAc,CAClB,QAAS,kBACT,SAAU,qBACV,UAAW,oBACX,WAAY,uBAGRC,EAAoBF,EAAO,QAAQF,CAAY,EAErD,cACG,OAAI,UAAWK,EAAG,gBAAiBN,CAAS,EAC3C,UAAAO,OAAC,OAAI,UAAU,0BACb,UAAAC,MAACC,EAAA,CAAQ,KAAK,KAAK,EACnBF,OAAC,OAAI,UAAU,YACb,UAAAC,MAAC,KAAE,UAAU,sBAAsB,+BAAmB,EACtDA,MAAC,KAAE,UAAU,gCACV,YAAW,GAAGJ,EAAYH,CAAY,CAAC,MAC1C,GACF,GACF,EAEAO,MAAC,OAAI,UAAU,YACZ,WAAO,IAAI,CAACE,EAAOC,IAAU,CAC5B,MAAMC,EAAWD,IAAUN,EACrBQ,EAAcF,EAAQN,EAC5B,OACEE,OAAC,OAAgB,UAAU,YACzB,UAAAA,OAAC,OAAI,UAAU,+BACb,UAAAC,MAAC,QACC,UAAWF,EACTM,EACI,2BACAC,EACE,wBACA,4BAGP,WAAYH,CAAiC,IAEhDF,MAAC,QAAK,UAAU,wBACb,WAAc,IAAMI,EAAW,MAAQ,IAC1C,GACF,EACAJ,MAAC,OAAI,UAAU,yCACb,SAAAA,MAAC,OACC,UAAWF,EACT,iDACAO,EACI,eACAD,EACE,2BACA,kBAER,MAAO,CAAE,MAAOC,GAAuBD,EAAT,OAA6B,KAAK,EAClE,CACF,IA7BQF,CA8BV,CAEJ,CAAC,EACH,GACF,CAEJ,CAOO,SAASI,GAAe,CAC7B,iBAAAC,EACA,UAAAf,CACF,EAAwB,CACtB,MAAMgB,EAAkBC,GAAqB,CAC3C,OAAQA,EAAA,CACR,IAAK,cACH,MAAO,CACL,KAAM,cACN,YAAa,qCAEjB,IAAK,SACH,MAAO,CACL,KAAM,mBACN,YAAa,+CAEjB,IAAK,OACH,MAAO,CACL,KAAM,cACN,YAAa,6CAEjB,QACE,MAAO,CAAE,KAAM,UAAW,YAAa,yBAAyB,CAEpE,EAEM,CAAE,KAAAC,EAAM,YAAAC,GAAgBH,EAAeD,CAAgB,EAE7D,OACER,OAAC,OACC,UAAWD,EACT,iEACAN,CAAA,EAGF,UAAAQ,MAACC,EAAA,CAAQ,KAAK,KAAK,EACnBF,OAAC,OAAI,UAAU,wBACb,UAAAC,MAAC,KAAE,UAAU,sBAAsB,6BAAiB,EACpDD,OAAC,KAAE,UAAU,gCAAgC,mBAAOW,EAAK,aAAS,EAClEV,MAAC,KAAE,UAAU,mCAAoC,SAAAW,CAAA,CAAY,GAC/D,EAEAZ,OAAC,OAAI,UAAU,4BACb,UAAAC,MAACY,EAAA,CAAS,UAAU,cAAc,EAClCb,OAAC,OAAI,UAAU,YACb,UAAAC,MAACY,EAAA,CAAS,UAAU,aAAa,EACjCZ,MAACY,EAAA,CAAS,UAAU,YAAY,EAChCZ,MAACY,EAAA,CAAS,UAAU,YAAY,GAClC,EACAZ,MAACY,EAAA,CAAS,UAAU,cAAc,GACpC,IAGN,CCjKA,MAAMC,EAAeC,EAAM,WAazB,CACE,CACE,UAAAC,EACA,UAAAC,EACA,aAAAC,EACA,aAAAC,EACA,mBAAAC,CAAA,EAEFC,IACG,CACH,KAAM,CAACC,EAAcC,CAAe,EAAIC,WAAS,EAAK,EAGtDC,YAAU,IAAM,CACdF,EAAgB,EAAK,CACvB,EAAG,CAACN,EAAWC,CAAY,CAAC,EAG5B,MAAMQ,EAAmB,IAAM,CAC7BH,EAAgB,EAAI,CACtB,EAGMI,EAAoB,IAAM,CAC9B,QAAQ,KAAK,+BAA+B,EAC5CJ,EAAgB,EAAK,CACvB,EAIMK,EAAgBV,EAClB,yCACA,OAEEW,EAAa,GAAQZ,GAAaC,GAGxC,OAAIC,GAAgB,CAACU,EAEjB5B,MAAC,OAAI,UAAU,OACb,SAAAA,MAACT,GAAA,CACC,aAAc4B,GAAA,YAAAA,EAAoB,MAClC,QAASA,GAAA,YAAAA,EAAoB,UAEjC,EAIAJ,GAAa,CAACa,EAEd5B,MAAC,OAAI,UAAU,OACb,eAACM,GAAA,CAAe,iBAAiB,cAAc,EACjD,EAIAsB,EAEA7B,OAAC,OAAI,UAAU,kCAEZ,WAACsB,SACC,OAAI,UAAU,qEACb,SAAAtB,OAAC,OAAI,UAAU,cACb,UAAAC,MAAC,OAAI,UAAU,8EAA8E,EAC7FA,MAAC,KAAE,UAAU,gCAAgC,8BAE7C,GACF,EACF,GAGAkB,GAAgBH,IAChBf,MAAC,OAAI,UAAU,8HACb,SAAAD,OAAC,OAAI,UAAU,mCACb,UAAAC,MAACC,EAAA,CAAQ,KAAK,KAAK,QAClB,KAAE,UAAU,gCACV,SAAAiB,EAAe,gBAAkB,eACpC,GACF,EACF,EAIFlB,MAAC,UAEC,IAAAoB,EACA,UAAU,yBACV,MAAO,CACL,gBAAiB,QAEjB,QAASC,EAAe,EAAI,EAC5B,WAAY,4BAEd,IAAKL,EACL,OAAQC,EACR,OAAQQ,EACR,QAASC,EAGT,QAASC,EAET,MAAM,mBACN,aAAY,uBAAuBE,EAAa,aAAa,IAlBxDZ,EAAe,SAAW,MAmBjC,EACF,EAGG,IACT,CACF,EAEAJ,EAAa,YAAc,eACpB,MAAMiB,GAAuBhB,EAAM,KAAKD,CAAY,ECzHpD,SAASkB,GAAc,CAAE,SAAAC,EAAU,UAAAxC,GAAiC,CACzE,KAAM,CAACyC,EAAYC,CAAa,EAAIpB,EAAM,SAAS,EAAK,EAExD,MAAI,CAACkB,GAAYA,EAAS,SAAW,EAC5B,KAIPjC,OAAC,OAAI,UAAAP,EACH,UAAAO,OAAC,UACC,KAAK,SACL,QAAS,IAAMmC,EAAc,CAACD,CAAU,EACxC,UAAU,iNAEV,UAAAjC,MAACmC,GAAA,CACC,UAAW,qFAAqFF,EAAa,YAAc,EAAE,KAE/HjC,MAACoC,EAAA,CAAc,UAAU,2CAA2C,EACpErC,OAAC,QAAK,UAAU,yDACb,UAAAiC,EAAS,OAAO,WAASA,EAAS,SAAW,EAAI,IAAM,IAC1D,KAGDC,SACE,OAAI,UAAU,qBACZ,SAAAD,EAAS,IAAI,CAACK,EAASlC,IACtBJ,OAAC,OAEC,UAAU,0HAET,UAAAsC,EAAQ,WAAa,OACpBrC,MAACsC,GAAA,CAAK,UAAU,iDAAiD,EAEjEtC,MAACoC,EAAA,CAAc,UAAU,kDAAkD,EAE7ErC,OAAC,OAAI,UAAU,iBACb,UAAAA,OAAC,OAAI,UAAU,4BACb,UAAAC,MAAC,QAAK,UAAU,kHACb,SAAAqC,EAAQ,UACX,EACCA,EAAQ,WAAa,cACnB,QAAK,UAAU,gEAAgE,gBAEhF,GAEJ,EACArC,MAAC,KAAE,UAAU,kEACV,WAAQ,QACX,EACCqC,EAAQ,SAAW,OAAO,KAAKA,EAAQ,OAAO,EAAE,OAAS,GACxDtC,OAAC,WAAQ,UAAU,SACjB,UAAAC,MAAC,WAAQ,UAAU,2GAA2G,mBAE9H,EACAA,MAAC,OAAI,UAAU,iHACZ,cAAK,UAAUqC,EAAQ,QAAS,KAAM,CAAC,EAC1C,GACF,GAEJ,IAhCKlC,CAAA,CAkCR,EACH,GAEJ,CAEJ,CCjEA,eAAeoC,GAAqBC,EAAoC,CACtE,MAAMC,EAAe,MAAAC,GAAA,IAAM,OAAO,4BAAc,0BAE1CC,EAAS,SAAS,cAAc,MAAM,EACtCC,EAAS,SAAS,cAAc,MAAM,EAEtCC,EAAgBJ,EAAa,YAAYD,EAAMG,EAAQC,EAAQ,CACnE,UAAW,GACZ,EAEKE,EAAiB,IAAI,QAAQ,CAACC,EAAGC,IAAW,CAChD,WAAW,IAAM,CACfA,EAAO,IAAI,MAAM,+CAA+C,CAAC,CACnE,EAAG,GAAK,CACV,CAAC,EAED,MAAM,QAAQ,KAAK,CAACH,EAAeC,CAAc,CAAC,EAElD,MAAMG,EAAkB,SAAS,cAAc,MAAM,EACrDA,EAAgB,IAAM,aACtBA,EAAgB,KAAO,GAAGC,GAAI,QAAQ,0BACtCN,EAAO,YAAYK,CAAe,EAElC,MAAME,EAAS,SAAS,cAAc,MAAM,EAC5C,OAAAA,EAAO,YAAYP,CAAM,EACzBO,EAAO,YAAYR,CAAM,EAElB,CACL,aAAcQ,EAAO,UAEzB,CAEA,eAAeC,GACb1C,EACA8B,EACwB,CACxB,MAAMa,EAAW,IAAI,SACfC,EAAMC,IAAW,OAAS,QAAU,QAC1CF,EAAS,OAAO,OAAQb,EAAM,GAAG9B,CAAI,GAAG4C,CAAG,EAAE,EAE7C,MAAME,EAAW,MAAM,MAAMC,EAAc,QAAQ,YAAa,CAC9D,OAAQ,OACR,KAAMJ,CAAA,CACP,EAED,GAAI,CAACG,EAAS,GAAI,CAChB,IAAI9D,EAAU,+BAA+B8D,EAAS,MAAM,IAC5D,GAAI,CACF,MAAME,EAAO,MAAMF,EAAS,OACxBE,GAAQ,OAAOA,GAAS,UAAY,OAAOA,EAAK,OAAU,WAC5DhE,EAAUgE,EAAK,MAEnB,MAAQ,CAAC,CACT,MAAM,IAAI,MAAMhE,CAAO,CACzB,CAEA,MAAMiE,EAAU,MAAMH,EAAS,OAC/B,GAAI,CAACG,EAAQ,KACX,MAAM,IAAI,MAAM,2CAA2C,EAG7D,MAAMC,EAAY,IAAI,gBAAgBD,CAAO,EAC7C,MAAO,CACL,UAAWC,EACX,QAAS,IAAM,IAAI,gBAAgBA,CAAS,EAEhD,CAmBA,eAAsBC,GACpBnD,EACA8B,EACA/B,EAAyB8C,IAAW,OAAS,SAAW,cACxDO,EACA,CACA,GAAI,CACF,GAAI,CAACtB,GAAQA,EAAK,OAAS,EACzB,MAAM,IAAI,MAAM,gCAAgC,EAGlD,IAAIuB,EAEJ,OAAIR,IAAW,QAAU9C,IAAY,SACnCsD,EAAU,MAAMxB,GAAqBC,CAAI,EAEzCuB,EAAU,MAAMX,GAAsB1C,EAAM8B,CAAI,EAG3C,CAAE,OAAQ,UAAoB,KAAA9B,EAAM,QAAAqD,CAAA,CAC7C,OAASC,EAAO,CACd,MAAMC,EAAeD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EAC1E,MAAO,CAAE,OAAQ,QAAkB,KAAAtD,EAAM,QAAS,IAAI,MAAMuD,CAAY,EAC1E,CACF,CCnHA,MAAMC,EAAWC,aAGf,CAAC,CAAE,UAAA3E,EAAW,MAAA4E,EAAO,GAAGC,CAAA,EAASjD,IACjCpB,MAACsE,EAAA,CACC,IAAAlD,EACA,UAAWtB,EACT,gEACAN,CAAA,EAED,GAAG6E,EAEJ,SAAArE,MAACuE,GAAA,CACC,UAAU,iDACV,MAAO,CAAE,UAAW,eAAe,KAAOH,GAAS,EAAE,KAAK,EAC5D,CACF,CACD,EACDF,EAAS,YAAcI,EAAuB,YCmB9C,SAASE,EAAYC,EAAuB,CAC1C,GAAIA,IAAU,EAAG,MAAO,MACxB,MAAMC,EAAI,KACJC,EAAQ,CAAC,IAAK,KAAM,KAAM,IAAI,EAC9BC,EAAI,KAAK,MAAM,KAAK,IAAIH,CAAK,EAAI,KAAK,IAAIC,CAAC,CAAC,EAClD,OAAO,YAAYD,EAAQ,KAAK,IAAIC,EAAGE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAI,IAAMD,EAAMC,CAAC,CACxE,CAEO,SAASC,IAAe,CAC7B,KAAM,CAACC,EAAOC,CAAQ,EAAIxD,WAA4B,IAAI,EACpD,CAACyD,EAASC,CAAU,EAAI1D,WAAS,EAAI,EACrC,CAACyC,EAAOkB,CAAQ,EAAI3D,WAAwB,IAAI,EA2CtD,GAzCAC,YAAU,IAAM,CACd,MAAM2D,EAAa,IAAI,gBAEjBC,EAAY,SAAY,CAC5B,GAAI,CACF,MAAM5B,EAAW,MAAM,MAAMC,EAAc,WAAY,CACrD,OAAQ0B,EAAW,OACpB,EACD,GAAI,CAAC3B,EAAS,GAAI,MAAM,IAAI,MAAM,6BAA6B,EAC/D,MAAM6B,EAAO,MAAM7B,EAAS,OAEvB2B,EAAW,OAAO,UACrBJ,EAASM,EAAK,IAAI,EAClBH,EAAS,IAAI,EAEjB,OAASI,EAAK,CACPH,EAAW,OAAO,UACjBG,aAAe,OAASA,EAAI,OAAS,aACvCJ,EAASI,EAAI,OAAO,GACX,EAAEA,aAAe,QAAUA,EAAI,OAAS,eACjDJ,EAAS,4BAA4B,EAG3C,SACOC,EAAW,OAAO,WAAoB,EAAK,CAClD,CACF,EAEAC,EAAA,EACA,MAAMG,EAAW,YAAYH,EAAW,GAAI,EAEtCI,EAAqB,IAAMJ,EAAA,EACjC,cAAO,iBAAiB,gBAAiBI,CAAkB,EAEpD,IAAM,CACXL,EAAW,QACX,cAAcI,CAAQ,EACtB,OAAO,oBAAoB,gBAAiBC,CAAkB,CAChE,CACF,EAAG,EAAE,EAEDR,EACF,OACEhF,MAAC,OAAI,UAAU,uCACb,eAAC,OAAI,UAAU,8DAA8D,EAC/E,EAIJ,GAAIgE,EACF,OACEjE,OAAC,OAAI,UAAU,uBAAuB,0CACNiE,CAAA,EAChC,EAIJ,GAAI,CAACc,EAAO,OAAO,KAEnB,KAAM,CAAE,SAAUW,CAAA,EAAQX,EACpBY,EAAaD,EAAI,QAAU,IAEjC,OACE1F,OAAC,OAAI,UAAU,YAEb,UAAAA,OAAC,OAAI,UAAU,kCACb,UAAAA,OAAC,OACC,UAAAC,MAAC,QAAK,UAAU,wBAAwB,oBAAQ,EAAQ,IACxDD,OAAC,QAAK,UAAU,0BAA2B,UAAA2F,EAAW,QAAQ,CAAC,EAAE,KAAC,EAClE3F,OAAC,QAAK,UAAU,6BAA6B,cACzC0F,EAAI,KAAK,WAASA,EAAI,OAAO,YACjC,GACF,SACC,OACC,UAAAzF,MAAC,QAAK,UAAU,wBAAwB,gBAAI,EAAQ,UACnD,QAAK,UAAU,gBAAiB,SAAAwE,EAAYiB,EAAI,IAAI,EAAE,EACvD1F,OAAC,QAAK,UAAU,6BAA6B,cACzC0F,EAAI,UAAU,WAClB,GACF,EACAzF,MAAC2F,GAAA,CAAM,QAASF,EAAI,QAAU,UAAY,YACvC,SAAAA,EAAI,QAAU,UAAY,WAC7B,GACF,QAECvB,EAAA,CAAS,MAAOwB,EAAY,UAAU,MAAM,aAAW,iBAAiB,EAGxEnC,IAAW,QAAUuB,EAAM,kBACzBc,GAAA,CAAmB,KAAMd,EAAM,WAAY,GAEhD,CAEJ,CAEA,SAASc,GAAmB,CAAE,KAAAP,GAAsC,CAClE,OAAIA,EAAK,eAAe,SAAW,EAAU,KAG3CtF,OAAC,OAAI,UAAU,YACb,UAAAC,MAAC,MAAG,UAAU,sBAAsB,4BAAgB,EACpDA,MAAC,OAAI,UAAU,YACZ,WAAK,eAAe,IAAK6F,GAAS,CACjC,MAAMC,GAAWD,EAAK,SAAW,GAAK,IAChCE,EAAWF,EAAK,eAAiBA,EAAK,KAAOA,EAAK,OAClDG,EAASH,EAAK,aAAeA,EAAK,QAAUA,EAAK,SAAW,EAElE,OACE9F,OAAC,OAAoB,UAAU,sBAC7B,UAAAA,OAAC,OAAI,UAAU,yCACb,UAAAC,MAAC,QAAK,UAAU,cAAe,SAAA6F,EAAK,KAAK,EACzC9F,OAAC,OAAI,UAAU,wDACb,UAAAA,OAAC,QAAM,UAAA+F,EAAQ,QAAQ,CAAC,EAAE,SAAK,SAC9B,QAAM,UAAAC,EAAS,QAAI,EACpB/F,MAAC,QAAM,SAAAwE,EAAYwB,CAAM,EAAE,GAC7B,GACF,EACAhG,MAACkE,EAAA,CAAS,MAAO4B,EAAS,UAAU,QAAQ,IATpCD,EAAK,IAUf,CAEJ,CAAC,EACH,GACF,CAEJ,CChKA,MAAMI,GAAoBC,OAAK,SAA2B,CACxD,cAAAC,EACA,WAAAC,CACF,EAGG,CACD,KAAM,CAACC,EAAWC,CAAY,EAAI/E,WAAS,IACzC,KAAK,IAAI,EAAG4E,EAAgBC,EAAa,KAAK,KAAK,GAiBrD,GAdA5E,YAAU,IAAM,CACd,IAAI+E,EACJ,MAAMC,EAAO,IAAM,CACjB,MAAMC,EAAI,KAAK,IAAI,EAAGN,EAAgBC,EAAa,KAAK,KAAK,EAC7DE,EAAaG,CAAC,EACVA,GAAK,GAAKF,GAAM,oBAAoBA,CAAE,CAC5C,EACA,OAAAC,EAAA,EACAD,EAAK,YAAYC,EAAM,GAAG,EACnB,IAAM,CACPD,GAAM,MAAM,cAAcA,CAAE,CAClC,CACF,EAAG,CAACJ,EAAeC,CAAU,CAAC,EAE1BC,GAAa,EAAG,OAAO,KAE3B,MAAMK,GAAQL,EAAY,KAAM,QAAQ,CAAC,EACnCM,EAAM,KAAK,IAAI,IAAMN,EAAYD,EAAc,GAAG,EAExD,OACErG,OAAC,QAAK,UAAU,2FACd,UAAAC,MAAC,QACC,UAAU,mEACV,MAAO,CAAE,MAAO,GAAG,KAAK,MAAM2G,EAAM,EAAG,CAAC,KAAK,GAE9CD,EAAK,KACR,CAEJ,CAAC,EAEM,SAASE,IAAU,SACxB,KAAM,CACJ,WAAAC,EACA,iBAAAtG,EACA,yBAAAuG,EACA,YAAAC,CAAA,EACEC,EAAkBC,GAAUA,CAAK,EAC/B,CACJ,KAAAvG,EACA,KAAAwG,EACA,KAAA1E,EACA,aAAAtB,EACA,mBAAAC,EACA,YAAAgG,EACA,YAAAC,EACA,aAAAC,EACA,SAAArF,EACA,YAAAsF,EACA,eAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,cAAAtB,EACA,oBAAAuB,EACA,UAAAC,CAAA,EACEC,GAAgBX,GAAUA,CAAK,EAC7BY,EAAYC,EAAmBb,GAAUA,EAAM,SAAS,EACxDc,EAAgBD,EAAmBb,GAAUA,EAAM,aAAa,EAEhE,CAACjG,EAAWgH,CAAY,EAAIzG,WAA6B,MAAS,EAClE,CAACN,GAAcgH,EAAe,EAAI1G,WACtC,QAEI,CAAC2G,GAAkBC,CAAmB,EAAI5G,WAAkB,EAAK,EACjE6G,EAAYtH,EAAM,OAA0B,IAAI,EAEhDuH,EAAmBC,SAA4B,IAAI,EACnDC,EAAyBD,SAAO,EAAK,EAErCE,EAAyBC,cAAY,IAAM,CAC3CJ,EAAiB,UACnBA,EAAiB,UACjBA,EAAiB,QAAU,KAE/B,EAAG,EAAE,EAGCK,EAAWD,cACf,MAAOE,EAAiBC,IAAkB,CACxCjB,EAAU,CACR,YAAa,GACb,eAAgB,GAChB,YAAa,OACd,EAED,GAAI,CACF,KAAM,CAAE,OAAAkB,EAAQ,QAAA9E,CAAA,EAAY,MAAMF,GAChC8E,EACAC,EACArI,CAAA,EAGF,GAAIsI,IAAW,UACb,MAAM9E,aAAmB,MAAQA,EAAU,IAAI,MAAM,OAAOA,CAAO,CAAC,EAGtEyE,EAAA,EACAR,EAAajE,EAAQ,WAAa,MAAS,EAC3CkE,GAAgBlE,EAAQ,cAAgB,MAAS,EACjDsE,EAAiB,QAAUtE,EAAQ,SAAW,IAChD,OAASC,EAAO,CACd,MAAMC,EACJD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EAEvD,IAAI8E,EAAiB7E,EACjBA,EAAa,SAAS,iBAAiB,EACzC6E,EACE,6FACO7E,EAAa,SAAS,SAAS,IACxC6E,EACE,wDAGJnB,EAAU,CAAE,YAAamB,EAAgB,CAC3C,SACEnB,EAAU,CAAE,YAAa,GAAO,CAClC,CACF,EACA,CAACA,EAAWa,EAAwBjI,CAAgB,GAIhDwI,GAAkBT,SAAO,CAAE,KAAA5H,EAAM,KAAA8B,EAAM,SAAAkG,EAAU,EACvDlH,YAAU,IAAM,CACduH,GAAgB,QAAU,CAAE,KAAArI,EAAM,KAAA8B,EAAM,SAAAkG,CAAA,CAC1C,CAAC,EAED,MAAMM,EAAqBP,cAAY,SAAY,CAEjDF,EAAuB,QAAU,GAEjC,OAAO,cAAc,IAAI,YAAY,uBAAuB,CAAC,CAC/D,EAAG,EAAE,EAKL/G,mBAAU,IAAM,CACVgB,GAAQ9B,GAAQmG,GAActG,IAAqB,SACrDmI,EAAShI,EAAM8B,CAAI,EACVA,GAAQ9B,GAAQ6H,EAAuB,SAChDA,EAAuB,QAAU,GACjCG,EAAShI,EAAM8B,CAAI,GACVA,GAAQ9B,GACjBiH,EAAU,CAAE,eAAgB,GAAM,CAEtC,EAAG,CAACnF,EAAM9B,EAAMmG,EAAYtG,EAAkBmI,EAAUf,CAAS,CAAC,EAGlEnG,YAAU,IACD,IAAM,CACXgH,EAAA,CACF,EACC,CAACA,CAAsB,CAAC,EAG3BhH,YAAU,IAAM,CACd,MAAMyH,EAAW,IAAMD,EAAA,EACjBE,EAAc,IAAMf,EAAoB,EAAI,EAElD,cAAO,iBAAiB,uBAAwBc,CAAQ,EACxD,OAAO,iBAAiB,2BAA4BC,CAAW,EACxD,IAAM,CACX,OAAO,oBAAoB,uBAAwBD,CAAQ,EAC3D,OAAO,oBAAoB,2BAA4BC,CAAW,CACpE,CACF,EAAG,CAACF,CAAkB,CAAC,EAGrBjJ,OAAAoJ,WAAA,CACE,UAAApJ,OAAC,OAAI,UAAU,uBACX,UAAAiH,KACCoC,GAAAC,EAAArC,GAAyB,WAAzB,YAAAoC,EAAA,KAAAC,GAAsC,0BACrC,IACArJ,MAACsJ,GAAA,CACC,UAAAlB,EACA,oBACE,EAAQpH,GAAc,GAAEA,GAAA,YAAAA,EAAW,WAAW,WAAY,IAE5D,MAAMN,GAAA,YAAAA,EAAM,SAAU,UACtB,KAAA8B,EACA,WAAAqE,EACA,mBAAoB,IAClBE,EAAY,CAAE,WAAY,CAACF,EAAY,EAEzC,eAAgBmC,EAChB,aAAA9H,EACA,YAAAoG,EACA,mBAAoB,IAAMa,EAAoB,EAAI,EAClD,aAAcjB,EACd,SAAAlF,EACA,iBAAAzB,EACA,oBAAsBgJ,GACpBxC,EAAY,CAAE,iBAAkBwC,EAAY,UAInDC,GAAA,EAAU,GAET,IAAM,CACN,MAAMC,GACHjC,GAAgB,IAAMC,GAAqB,GACxCiC,GACHnC,GAAkBkC,IACnB,CAACvI,GACD,CAACoG,EACH,OACIF,GAAeA,IAAgB,WAAcsC,IAC7C3J,OAAC,OACC,UAAW,0EACT2J,EACI,sCACA,aACN,GAEA,UAAA1J,MAAC,OAAI,UAAU,2CACZ,aAAgB,OAAS,CAAC0J,EACzB3J,OAAAoJ,WAAA,CACE,UAAAnJ,MAAC,OAAI,UAAU,sDAAsD,EACrEA,MAAC,QAAK,UAAU,yCAAyC,kBAEzD,GACF,EACEoH,IAAgB,QAAU,CAACsC,EAC7B3J,OAAAoJ,WAAA,CACE,UAAAnJ,MAAC,OAAI,UAAU,uDAAuD,EACtED,OAAC,QAAK,UAAU,yCAAyC,mBAChD8B,EAAa,aAAY,EAClC,GACF,EACE6H,EACF3J,OAAAoJ,WAAA,CACE,UAAAnJ,MAAC,OAAI,UAAU,sDAAsD,EACrEA,MAAC,QAAK,UAAU,sDAAsD,gCAEtE,EACCmG,GACCsD,GACA,CAACvI,GACD,CAACwG,GACDb,GACAtG,IAAqB,UACnBP,MAACiG,GAAA,CACC,cAAAE,EACA,WAAYW,EAA2B,KACzC,EAEN,EACE,KACN,EACC,CAAC4C,GAAWrC,GAAgBA,IAAiB,QAC5CtH,OAAC,QAAK,UAAU,mDACb,UAAAsH,EAAa,aAChB,IAKV,KAEArH,MAAC+B,GAAA,CAAc,SAAAC,EAAoB,UAAU,YAAY,EAExDmF,GAAe,CAACjG,EACflB,MAAC,OAAI,UAAU,8CACb,SAAAD,OAAC,OAAI,UAAU,4FACb,UAAAC,MAAC,KAAE,UAAU,mBAAmB,6BAAiB,EACjDA,MAAC,KAAE,UAAU,sCACV,SAAAmH,CAAA,CACH,GACF,EACF,EAEAnH,MAAC8B,GAAA,CACC,IAAKsG,EACL,UAAW,EAAQd,EACnB,UAAAtG,EACA,aAAAC,GACA,cAAe,IAAM,CACnB,MAAM0I,EAAgB9C,GAActG,IAAqB,SACnDqJ,EACJ/B,GACAnH,GACAmH,IAAcnH,GACdqH,EAAcF,CAAS,IAAM,yBAC/B,MACE,EAAQ3G,GACR,GAAQyI,GAAiBC,EAE7B,KACA,oBAAqB,IAAM,CACzB,MAAMD,EAAgB9C,GAActG,IAAqB,SACnDqJ,EACJ/B,GACAnH,GACAmH,IAAcnH,GACdqH,EAAcF,CAAS,IAAM,yBAC/B,OAAO8B,GAAiBC,GAAkB,CAAC1I,EACvC,CACE,MAAO,UACP,QAAS,wBAAwB2G,CAAS,OAE5C1G,CACN,IAAG,EACL,EAEJ,EAGAnB,MAAC6J,IAAO,KAAM3B,GAAkB,aAAcC,EAC5C,SAAApI,OAAC+J,GAAA,CAAc,UAAU,YACvB,UAAA9J,MAAC+J,GAAA,CACC,SAAA/J,MAACgK,GAAA,CAAY,6BAAiB,EAChC,QACCnF,GAAA,EAAa,GAChB,EACF,GACF,CAEJ","names":["DocumentGenerationLoader","className","currentStage","message","stages","stageLabels","currentStageIndex","cn","jsxs","jsx","Spinner","stage","index","isActive","isCompleted","PreviewLoading","renderingLibrary","getLibraryInfo","library","name","description","Skeleton","PreviewFrame","React","isLoading","iframeSrc","iframeSrcDoc","isGenerating","generationProgress","ref","iframeLoaded","setIframeLoaded","useState","useEffect","handleIframeLoad","handleIframeError","iframeSandbox","hasContent","FORMAT_LABEL","PreviewFrameMemoized","WarningsPanel","warnings","isExpanded","setIsExpanded","ChevronRight","AlertTriangle","warning","Info","renderDocxWithDocxJS","blob","docx_preview","__vitePreload","bodyEl","headEl","renderPromise","timeoutPromise","_","reject","overrideStyleEl","env","htmlEl","renderWithLibreOffice","formData","ext","FORMAT","response","API_ENDPOINTS","json","pdfBlob","objectUrl","renderDocument","_baseUrl","payload","error","errorMessage","Progress","React.forwardRef","value","props","ProgressPrimitive.Root","ProgressPrimitive.Indicator","formatBytes","bytes","k","sizes","i","CacheMetrics","stats","setStats","loading","setLoading","setError","controller","fetchData","data","err","interval","handleCacheCleared","doc","hitRatePct","Badge","ComponentBreakdown","stat","hitRate","requests","memory","DebounceCountdown","memo","editTimestamp","debounceMs","remaining","setRemaining","id","tick","r","secs","pct","Preview","autoReload","saveDocumentDebounceWait","setSettings","useSettingsStore","state","text","globalError","cacheStatus","cacheHitRate","isRendering","isPreviewStale","editSequence","lastBuiltSequence","hasValidationErrors","setOutput","useOutputStore","activeTab","useDocumentsStore","documentTypes","setIframeSrc","setIframeSrcDoc","showCacheMetrics","setShowCacheMetrics","iframeRef","renderCleanupRef","useRef","pendingManualRenderRef","cleanupRenderedPreview","useCallback","doRender","docName","docBlob","status","displayMessage","manualRenderRef","handleManualRender","onManual","onShowCache","Fragment","_b","_a","PreviewHeaderMemoized","lib","Separator","hasUnsyncedEdits","isStale","willAutoBuild","isSwitchingDoc","Dialog","DialogContent","DialogHeader","DialogTitle"],"ignoreList":[],"sources":["../../../src/client/components/ui/loading-states.tsx","../../../src/client/components/playground/preview-frame.tsx","../../../src/client/components/playground/warnings-panel.tsx","../../../src/client/lib/render.ts","../../../src/client/components/ui/progress.tsx","../../../src/client/components/cache-metrics.tsx","../../../src/client/components/playground/preview.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { Spinner } from './spinner';\nimport { Skeleton } from './skeleton';\n\ninterface LoadingOverlayProps {\n isLoading: boolean;\n children: React.ReactNode;\n message?: string;\n className?: string;\n}\n\nexport function LoadingOverlay({\n isLoading,\n children,\n message = 'Loading...',\n className,\n}: LoadingOverlayProps) {\n return (\n <div className={cn('relative', className)}>\n {children}\n {isLoading && (\n <div className=\"absolute inset-0 bg-background/80 backdrop-blur-sm flex items-center justify-center z-50\">\n <div className=\"flex flex-col items-center gap-2\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground\">{message}</p>\n </div>\n </div>\n )}\n </div>\n );\n}\n\ninterface DocumentGenerationLoaderProps {\n className?: string;\n currentStage?: 'parsing' | 'building' | 'rendering' | 'finalizing';\n message?: string;\n}\n\nexport function DocumentGenerationLoader({\n className,\n currentStage = 'parsing',\n message,\n}: DocumentGenerationLoaderProps) {\n const stages = ['parsing', 'building', 'rendering', 'finalizing'];\n const stageLabels = {\n parsing: 'Validating JSON',\n building: 'Building structure',\n rendering: 'Rendering content',\n finalizing: 'Finalizing document',\n };\n\n const currentStageIndex = stages.indexOf(currentStage);\n\n return (\n <div className={cn('p-6 space-y-4', className)}>\n <div className=\"flex items-center gap-3\">\n <Spinner size=\"md\" />\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">Generating Document</p>\n <p className=\"text-xs text-muted-foreground\">\n {message || `${stageLabels[currentStage]}...`}\n </p>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {stages.map((stage, index) => {\n const isActive = index === currentStageIndex;\n const isCompleted = index < currentStageIndex;\n return (\n <div key={stage} className=\"space-y-2\">\n <div className=\"flex justify-between text-xs\">\n <span\n className={cn(\n isActive\n ? 'text-primary font-medium'\n : isCompleted\n ? 'text-muted-foreground'\n : 'text-muted-foreground/60'\n )}\n >\n {stageLabels[stage as keyof typeof stageLabels]}\n </span>\n <span className=\"text-muted-foreground\">\n {isCompleted ? '✓' : isActive ? '...' : '○'}\n </span>\n </div>\n <div className=\"w-full bg-secondary rounded-full h-1.5\">\n <div\n className={cn(\n 'h-1.5 rounded-full transition-all duration-300',\n isCompleted\n ? 'bg-green-500'\n : isActive\n ? 'bg-primary animate-pulse'\n : 'bg-transparent'\n )}\n style={{ width: isCompleted ? '100%' : isActive ? '100%' : '0%' }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface PreviewLoadingProps {\n renderingLibrary?: string;\n className?: string;\n}\n\nexport function PreviewLoading({\n renderingLibrary,\n className,\n}: PreviewLoadingProps) {\n const getLibraryInfo = (library?: string) => {\n switch (library) {\n case 'LibreOffice':\n return {\n name: 'LibreOffice',\n description: 'Converting PPTX to PDF locally...',\n };\n case 'Office':\n return {\n name: 'Microsoft Office',\n description: 'Uploading file and loading Office viewer...',\n };\n case 'Docs':\n return {\n name: 'Google Docs',\n description: 'Uploading file and loading Docs viewer...',\n };\n default:\n return { name: 'Default', description: 'Processing document...' };\n }\n };\n\n const { name, description } = getLibraryInfo(renderingLibrary);\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center h-full p-8 space-y-4',\n className\n )}\n >\n <Spinner size=\"lg\" />\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm font-medium\">Rendering Preview</p>\n <p className=\"text-xs text-muted-foreground\">Using {name} renderer</p>\n <p className=\"text-xs text-muted-foreground/80\">{description}</p>\n </div>\n\n <div className=\"w-full max-w-md space-y-3\">\n <Skeleton className=\"h-16 w-full\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n </div>\n <Skeleton className=\"h-12 w-full\" />\n </div>\n </div>\n );\n}\n\ninterface InlineLoaderProps {\n message?: string;\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function InlineLoader({\n message = 'Loading...',\n size = 'sm',\n className,\n}: InlineLoaderProps) {\n return (\n <div className={cn('flex items-center gap-2', className)}>\n <Spinner size={size} />\n <span className=\"text-sm text-muted-foreground\">{message}</span>\n </div>\n );\n}\n\ninterface FileOperationLoaderProps {\n operation: 'upload' | 'download' | 'save' | 'delete';\n fileName?: string;\n progress?: number;\n className?: string;\n}\n\nexport function FileOperationLoader({\n operation,\n fileName,\n progress,\n className,\n}: FileOperationLoaderProps) {\n const operationLabels = {\n upload: 'Uploading',\n download: 'Downloading',\n save: 'Saving',\n delete: 'Deleting',\n };\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3 p-3 border rounded-lg bg-muted/50',\n className\n )}\n >\n <Spinner size=\"sm\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">\n {operationLabels[operation]} {fileName && `\"${fileName}\"`}\n </p>\n {progress !== undefined && (\n <div className=\"mt-1\">\n <div className=\"flex justify-between text-xs mb-1\">\n <span>{progress}%</span>\n <span className=\"text-muted-foreground\">\n {progress < 100 ? 'In progress...' : 'Complete'}\n </span>\n </div>\n <div className=\"w-full bg-secondary rounded-full h-1.5\">\n <div\n className=\"bg-primary h-1.5 rounded-full transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { DocumentGenerationLoader, PreviewLoading } from '../ui/loading-states';\nimport { Spinner } from '../ui/spinner';\nimport { FORMAT_LABEL } from '../../lib/env';\n\nconst PreviewFrame = React.forwardRef<\n HTMLIFrameElement,\n {\n isLoading: boolean;\n iframeSrc?: string;\n iframeSrcDoc?: string;\n isGenerating?: boolean;\n generationProgress?: {\n stage: 'parsing' | 'building' | 'rendering' | 'finalizing';\n message?: string;\n };\n }\n>(\n (\n {\n isLoading,\n iframeSrc,\n iframeSrcDoc,\n isGenerating,\n generationProgress,\n },\n ref\n ) => {\n const [iframeLoaded, setIframeLoaded] = useState(false);\n\n // Reset iframe loaded state when content changes\n useEffect(() => {\n setIframeLoaded(false);\n }, [iframeSrc, iframeSrcDoc]);\n\n // Handle iframe load event\n const handleIframeLoad = () => {\n setIframeLoaded(true);\n };\n\n // Handle iframe errors\n const handleIframeError = () => {\n console.warn('Iframe failed to load content');\n setIframeLoaded(false);\n };\n\n // PDF blob URLs and remote viewers can be blocked by Chromium-based browsers\n // when loaded in a sandboxed iframe. Keep sandbox only for srcDoc-based preview.\n const iframeSandbox = iframeSrcDoc\n ? 'allow-scripts allow-popups allow-forms'\n : undefined;\n\n const hasContent = Boolean(iframeSrc || iframeSrcDoc);\n\n // Full-screen loaders only when no existing content\n if (isGenerating && !hasContent) {\n return (\n <div className=\"grow\">\n <DocumentGenerationLoader\n currentStage={generationProgress?.stage}\n message={generationProgress?.message}\n />\n </div>\n );\n }\n\n if (isLoading && !hasContent) {\n return (\n <div className=\"grow\">\n <PreviewLoading renderingLibrary=\"LibreOffice\" />\n </div>\n );\n }\n\n if (hasContent) {\n return (\n <div className=\"h-full w-full relative bg-white\">\n {/* Loading overlay */}\n {!iframeLoaded && (\n <div className=\"absolute inset-0 bg-muted/80 flex items-center justify-center z-10\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-foreground mx-auto mb-2\"></div>\n <p className=\"text-sm text-muted-foreground\">\n Loading preview...\n </p>\n </div>\n </div>\n )}\n {/* Generating/Rendering overlay on top of existing content */}\n {(isGenerating || isLoading) && (\n <div className=\"absolute inset-0 bg-background/60 backdrop-blur-[2px] flex items-center justify-center z-20 transition-opacity duration-200\">\n <div className=\"flex flex-col items-center gap-2\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground\">\n {isGenerating ? 'Generating...' : 'Rendering...'}\n </p>\n </div>\n </div>\n )}\n {/* Key forces remount when switching between srcDoc (sandboxed) and\n src (blob URL, no sandbox) to avoid stale sandbox race condition */}\n <iframe\n key={iframeSrcDoc ? 'srcdoc' : 'src'}\n ref={ref}\n className=\"w-full h-full border-0\"\n style={{\n backgroundColor: 'white',\n // Fade in after load to prevent flash\n opacity: iframeLoaded ? 1 : 0,\n transition: 'opacity 0.2s ease-in-out',\n }}\n src={iframeSrc}\n srcDoc={iframeSrcDoc}\n onLoad={handleIframeLoad}\n onError={handleIframeError}\n // Security: sandbox srcDoc to prevent XSS from rendered HTML.\n // Blob URLs (src) must NOT be sandboxed without allow-same-origin.\n sandbox={iframeSandbox}\n // Accessibility\n title=\"Document preview\"\n aria-label={`Preview of rendered ${FORMAT_LABEL.toLowerCase()}`}\n />\n </div>\n );\n }\n return null;\n }\n);\n\nPreviewFrame.displayName = 'PreviewFrame';\nexport const PreviewFrameMemoized = React.memo(PreviewFrame);\n","import React from 'react';\nimport { AlertTriangle, Info, ChevronRight } from 'lucide-react';\nimport type { GenerationWarning } from '../../store/output-store';\n\ninterface WarningsPanelProps {\n warnings: GenerationWarning[] | null | undefined;\n className?: string;\n}\n\nexport function WarningsPanel({ warnings, className }: WarningsPanelProps) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n if (!warnings || warnings.length === 0) {\n return null;\n }\n\n return (\n <div className={className}>\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-full items-center gap-2 rounded-md border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/50 px-3 py-1.5 text-left transition-colors hover:bg-amber-100 dark:hover:bg-amber-900/50\"\n >\n <ChevronRight\n className={`h-3.5 w-3.5 text-amber-600 dark:text-amber-400 transition-transform flex-shrink-0 ${isExpanded ? 'rotate-90' : ''}`}\n />\n <AlertTriangle className=\"h-3.5 w-3.5 text-amber-500 flex-shrink-0\" />\n <span className=\"text-xs font-medium text-amber-700 dark:text-amber-300\">\n {warnings.length} warning{warnings.length !== 1 ? 's' : ''}\n </span>\n </button>\n\n {isExpanded && (\n <div className=\"mt-1.5 space-y-1.5\">\n {warnings.map((warning, index) => (\n <div\n key={index}\n className=\"flex items-start gap-2 rounded-md border border-amber-100 dark:border-amber-900 bg-white dark:bg-amber-950/30 px-3 py-2\"\n >\n {warning.severity === 'info' ? (\n <Info className=\"h-3.5 w-3.5 mt-0.5 text-blue-500 flex-shrink-0\" />\n ) : (\n <AlertTriangle className=\"h-3.5 w-3.5 mt-0.5 text-amber-500 flex-shrink-0\" />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <code className=\"text-[11px] font-medium text-amber-700 dark:text-amber-300 bg-amber-50 dark:bg-amber-900/40 px-1 py-0.5 rounded\">\n {warning.component}\n </code>\n {warning.severity === 'info' && (\n <span className=\"text-[10px] uppercase tracking-wide text-blue-500 font-medium\">\n info\n </span>\n )}\n </div>\n <p className=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400 leading-relaxed\">\n {warning.message}\n </p>\n {warning.context && Object.keys(warning.context).length > 0 && (\n <details className=\"mt-1.5\">\n <summary className=\"text-[11px] text-gray-400 dark:text-gray-500 cursor-pointer hover:text-gray-600 dark:hover:text-gray-300\">\n Context\n </summary>\n <pre className=\"mt-1 text-[11px] bg-gray-50 dark:bg-gray-900/50 p-1.5 rounded overflow-x-auto text-gray-600 dark:text-gray-400\">\n {JSON.stringify(warning.context, null, 2)}\n </pre>\n </details>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import { FORMAT } from './env';\nimport { API_ENDPOINTS } from '../config/api';\nimport { env } from './env';\n\nexport type RenderPayload = {\n iframeSrc?: string;\n iframeSrcDoc?: string;\n cleanup?: () => void;\n};\n\nasync function renderDocxWithDocxJS(blob: Blob): Promise<RenderPayload> {\n const docx_preview = await import('docx-preview');\n\n const bodyEl = document.createElement('body');\n const headEl = document.createElement('head');\n\n const renderPromise = docx_preview.renderAsync(blob, bodyEl, headEl, {\n inWrapper: true,\n });\n\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error('DocxJS renderAsync timed out after 10 seconds'));\n }, 10000);\n });\n\n await Promise.race([renderPromise, timeoutPromise]);\n\n const overrideStyleEl = document.createElement('link');\n overrideStyleEl.rel = 'stylesheet';\n overrideStyleEl.href = `${env.basePath}/css/preview/docxjs.css`;\n headEl.appendChild(overrideStyleEl);\n\n const htmlEl = document.createElement('html');\n htmlEl.appendChild(headEl);\n htmlEl.appendChild(bodyEl);\n\n return {\n iframeSrcDoc: htmlEl.outerHTML,\n };\n}\n\nasync function renderWithLibreOffice(\n name: string,\n blob: Blob\n): Promise<RenderPayload> {\n const formData = new FormData();\n const ext = FORMAT === 'pptx' ? '.pptx' : '.docx';\n formData.append('file', blob, `${name}${ext}`);\n\n const response = await fetch(API_ENDPOINTS.preview.libreoffice, {\n method: 'POST',\n body: formData,\n });\n\n if (!response.ok) {\n let message = `LibreOffice preview failed (${response.status})`;\n try {\n const json = await response.json();\n if (json && typeof json === 'object' && typeof json.error === 'string') {\n message = json.error;\n }\n } catch {}\n throw new Error(message);\n }\n\n const pdfBlob = await response.blob();\n if (!pdfBlob.size) {\n throw new Error('LibreOffice preview returned an empty PDF');\n }\n\n const objectUrl = URL.createObjectURL(pdfBlob);\n return {\n iframeSrc: objectUrl,\n cleanup: () => URL.revokeObjectURL(objectUrl),\n };\n}\n\nexport function cleanupIframe(iframe: HTMLIFrameElement) {\n try {\n if (iframe.contentWindow) {\n iframe.contentWindow.location.replace('about:blank');\n }\n iframe.src = 'about:blank';\n iframe.srcdoc = '';\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe);\n }\n } catch (error) {\n console.warn('Error cleaning up iframe:', error);\n }\n}\n\nexport type RenderLibrary = 'docxjs' | 'LibreOffice';\n\nexport async function renderDocument(\n name: string,\n blob: Blob,\n library: RenderLibrary = FORMAT === 'docx' ? 'docxjs' : 'LibreOffice',\n _baseUrl?: string,\n) {\n try {\n if (!blob || blob.size === 0) {\n throw new Error('Invalid or empty document blob');\n }\n\n let payload: RenderPayload;\n\n if (FORMAT === 'docx' && library === 'docxjs') {\n payload = await renderDocxWithDocxJS(blob);\n } else {\n payload = await renderWithLibreOffice(name, blob);\n }\n\n return { status: 'success' as const, name, payload };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return { status: 'error' as const, name, payload: new Error(errorMessage) };\n }\n}\n\n// Keep backward compat exports for pptx code\nexport const renderPptx = (name: string, blob: Blob, baseUrl: string) =>\n renderDocument(name, blob, 'LibreOffice', baseUrl);\n","import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport { cn } from '../../lib/utils';\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n 'relative h-4 w-full overflow-hidden rounded-full bg-secondary',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","import { useEffect, useState } from 'react';\nimport { Badge } from './ui/badge';\nimport { Progress } from './ui/progress';\nimport { API_ENDPOINTS } from '../config/api';\nimport { FORMAT } from '../lib/env';\n\ninterface CacheStats {\n document: {\n hits: number;\n misses: number;\n hitRate: number;\n size: number;\n itemCount: number;\n enabled: boolean;\n };\n components?: ComponentCacheData;\n}\n\ninterface ComponentStatistics {\n type: string;\n hits: number;\n misses: number;\n avgProcessTime: number;\n avgSize: number;\n entries: number;\n hitRate?: number;\n totalRequests?: number;\n memoryUsage?: number;\n}\n\ninterface ComponentCacheData {\n entries: number;\n totalSize: number;\n hitRate: number;\n totalHits: number;\n totalMisses: number;\n avgResponseTime: number;\n evictions: number;\n componentStats: ComponentStatistics[];\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function CacheMetrics() {\n const [stats, setStats] = useState<CacheStats | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const controller = new AbortController();\n\n const fetchData = async () => {\n try {\n const response = await fetch(API_ENDPOINTS.cacheStats, {\n signal: controller.signal,\n });\n if (!response.ok) throw new Error('Failed to fetch cache stats');\n const data = await response.json();\n\n if (!controller.signal.aborted) {\n setStats(data.data);\n setError(null);\n }\n } catch (err) {\n if (!controller.signal.aborted) {\n if (err instanceof Error && err.name !== 'AbortError') {\n setError(err.message);\n } else if (!(err instanceof Error) || err.name !== 'AbortError') {\n setError('Failed to load cache stats');\n }\n }\n } finally {\n if (!controller.signal.aborted) setLoading(false);\n }\n };\n\n fetchData();\n const interval = setInterval(fetchData, 5000);\n\n const handleCacheCleared = () => fetchData();\n window.addEventListener('cache:cleared', handleCacheCleared);\n\n return () => {\n controller.abort();\n clearInterval(interval);\n window.removeEventListener('cache:cleared', handleCacheCleared);\n };\n }, []);\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-destructive p-4\">\n Error loading cache metrics: {error}\n </div>\n );\n }\n\n if (!stats) return null;\n\n const { document: doc } = stats;\n const hitRatePct = doc.hitRate * 100;\n\n return (\n <div className=\"space-y-4\">\n {/* Summary row */}\n <div className=\"flex items-center gap-6 text-sm\">\n <div>\n <span className=\"text-muted-foreground\">Hit Rate</span>{' '}\n <span className=\"font-semibold text-base\">{hitRatePct.toFixed(1)}%</span>\n <span className=\"text-muted-foreground ml-1\">\n ({doc.hits} hits / {doc.misses} misses)\n </span>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Size</span>{' '}\n <span className=\"font-semibold\">{formatBytes(doc.size)}</span>\n <span className=\"text-muted-foreground ml-1\">\n ({doc.itemCount} items)\n </span>\n </div>\n <Badge variant={doc.enabled ? 'default' : 'secondary'}>\n {doc.enabled ? 'Enabled' : 'Disabled'}\n </Badge>\n </div>\n\n <Progress value={hitRatePct} className=\"h-2\" aria-label=\"Cache hit rate\" />\n\n {/* Module-level breakdown (docx only) */}\n {FORMAT === 'docx' && stats.components && (\n <ComponentBreakdown data={stats.components} />\n )}\n </div>\n );\n}\n\nfunction ComponentBreakdown({ data }: { data: ComponentCacheData }) {\n if (data.componentStats.length === 0) return null;\n\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-sm font-medium\">Module Breakdown</h4>\n <div className=\"space-y-1\">\n {data.componentStats.map((stat) => {\n const hitRate = (stat.hitRate || 0) * 100;\n const requests = stat.totalRequests || stat.hits + stat.misses;\n const memory = stat.memoryUsage || stat.entries * stat.avgSize || 0;\n\n return (\n <div key={stat.type} className=\"px-3 py-1.5 text-sm\">\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"font-medium\">{stat.type}</span>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span>{hitRate.toFixed(0)}% hit</span>\n <span>{requests} req</span>\n <span>{formatBytes(memory)}</span>\n </div>\n </div>\n <Progress value={hitRate} className=\"h-1.5\" />\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef, useState, memo } from 'react';\nimport { PreviewFrameMemoized } from './preview-frame';\nimport { PreviewHeaderMemoized } from './preview-header';\nimport { WarningsPanel } from './warnings-panel';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Separator } from '../ui/separator';\nimport { useOutputStore } from '../../store/output-store-provider';\nimport { useSettingsStore } from '../../store/settings-store-provider';\nimport { renderDocument } from '../../lib/render';\nimport { useDocumentsStore } from '../../store/documents-store-provider';\nimport { CacheMetrics } from '../cache-metrics';\nimport { FORMAT_LABEL } from '../../lib/env';\n\n/**\n * Tiny live countdown that ticks every 100ms and shows the\n * remaining debounce time before generation starts.\n * Renders nothing once the deadline is reached.\n */\nconst DebounceCountdown = memo(function DebounceCountdown({\n editTimestamp,\n debounceMs,\n}: {\n editTimestamp: number;\n debounceMs: number;\n}) {\n const [remaining, setRemaining] = useState(() =>\n Math.max(0, editTimestamp + debounceMs - Date.now())\n );\n\n useEffect(() => {\n let id: ReturnType<typeof setInterval> | undefined;\n const tick = () => {\n const r = Math.max(0, editTimestamp + debounceMs - Date.now());\n setRemaining(r);\n if (r <= 0 && id != null) clearInterval(id);\n };\n tick();\n id = setInterval(tick, 100);\n return () => {\n if (id != null) clearInterval(id);\n };\n }, [editTimestamp, debounceMs]);\n\n if (remaining <= 0) return null;\n\n const secs = (remaining / 1000).toFixed(1);\n const pct = Math.min(100, (remaining / debounceMs) * 100);\n\n return (\n <span className=\"inline-flex items-center gap-1.5 text-xs text-amber-600 dark:text-amber-400 tabular-nums\">\n <span\n className=\"h-1 rounded-full bg-amber-500/60 transition-[width] duration-100\"\n style={{ width: `${Math.round(pct * 0.4)}px` }}\n />\n {secs}s\n </span>\n );\n});\n\nexport function Preview() {\n const {\n autoReload,\n renderingLibrary,\n saveDocumentDebounceWait,\n setSettings,\n } = useSettingsStore((state) => state);\n const {\n name,\n text,\n blob,\n isGenerating,\n generationProgress,\n globalError,\n cacheStatus,\n cacheHitRate,\n warnings,\n isRendering,\n isPreviewStale,\n editSequence,\n lastBuiltSequence,\n editTimestamp,\n hasValidationErrors,\n setOutput,\n } = useOutputStore((state) => state);\n const activeTab = useDocumentsStore((state) => state.activeTab);\n const documentTypes = useDocumentsStore((state) => state.documentTypes);\n\n const [iframeSrc, setIframeSrc] = useState<string | undefined>(undefined);\n const [iframeSrcDoc, setIframeSrcDoc] = useState<string | undefined>(\n undefined\n );\n const [showCacheMetrics, setShowCacheMetrics] = useState<boolean>(false);\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n\n const renderCleanupRef = useRef<(() => void) | null>(null);\n const pendingManualRenderRef = useRef(false);\n\n const cleanupRenderedPreview = useCallback(() => {\n if (renderCleanupRef.current) {\n renderCleanupRef.current();\n renderCleanupRef.current = null;\n }\n }, []);\n\n // Core render function\n const doRender = useCallback(\n async (docName: string, docBlob: Blob) => {\n setOutput({\n isRendering: true,\n isPreviewStale: false,\n globalError: undefined,\n });\n\n try {\n const { status, payload } = await renderDocument(\n docName,\n docBlob,\n renderingLibrary\n );\n\n if (status !== 'success') {\n throw payload instanceof Error ? payload : new Error(String(payload));\n }\n\n cleanupRenderedPreview();\n setIframeSrc(payload.iframeSrc || undefined);\n setIframeSrcDoc(payload.iframeSrcDoc || undefined);\n renderCleanupRef.current = payload.cleanup || null;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n let displayMessage = errorMessage;\n if (errorMessage.includes('Failed to fetch')) {\n displayMessage =\n 'Network error: Unable to load required resources. Check if the server is running properly.';\n } else if (errorMessage.includes('timeout')) {\n displayMessage =\n 'Render timeout: The rendering process took too long.';\n }\n\n setOutput({ globalError: displayMessage });\n } finally {\n setOutput({ isRendering: false });\n }\n },\n [setOutput, cleanupRenderedPreview, renderingLibrary]\n );\n\n // Ref to always hold latest manual-render deps so the event listener never goes stale\n const manualRenderRef = useRef({ name, blob, doRender });\n useEffect(() => {\n manualRenderRef.current = { name, blob, doRender };\n });\n\n const handleManualRender = useCallback(async () => {\n // Set flag so blob-change effect renders the new blob when it arrives\n pendingManualRenderRef.current = true;\n // Flush debounces + trigger build via editor.tsx\n window.dispatchEvent(new CustomEvent('preview:flushAndBuild'));\n }, []); // stable — reads from ref\n\n // Auto-render when blob changes and docxjs + autoReload are active\n // Mark preview stale when blob changes but auto-render is OFF\n // Also render if a manual Run triggered the build (pendingManualRenderRef)\n useEffect(() => {\n if (blob && name && autoReload && renderingLibrary === 'docxjs') {\n doRender(name, blob);\n } else if (blob && name && pendingManualRenderRef.current) {\n pendingManualRenderRef.current = false;\n doRender(name, blob);\n } else if (blob && name) {\n setOutput({ isPreviewStale: true });\n }\n }, [blob, name, autoReload, renderingLibrary, doRender, setOutput]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n cleanupRenderedPreview();\n };\n }, [cleanupRenderedPreview]);\n\n // Listen for global header events (stable — handleManualRender never changes)\n useEffect(() => {\n const onManual = () => handleManualRender();\n const onShowCache = () => setShowCacheMetrics(true);\n\n window.addEventListener('preview:manualRender', onManual);\n window.addEventListener('preview:showCacheMetrics', onShowCache);\n return () => {\n window.removeEventListener('preview:manualRender', onManual);\n window.removeEventListener('preview:showCacheMetrics', onShowCache);\n };\n }, [handleManualRender]);\n\n return (\n <>\n <div className=\"flex h-full flex-col\">\n {(useSettingsStore as any) &&\n (useSettingsStore as any).getState?.().useGlobalPreviewHeader ===\n false && (\n <PreviewHeaderMemoized\n iframeRef={iframeRef}\n displayReloadButton={\n Boolean(iframeSrc) && !(iframeSrc?.startsWith('blob:') ?? false)\n }\n name={name?.trim() || 'Preview'}\n blob={blob}\n autoReload={autoReload}\n onToggleAutoReload={() =>\n setSettings({ autoReload: !autoReload })\n }\n onManualRender={handleManualRender}\n isGenerating={isGenerating}\n isRendering={isRendering}\n onShowCacheMetrics={() => setShowCacheMetrics(true)}\n documentText={text}\n warnings={warnings}\n renderingLibrary={renderingLibrary}\n setRenderingLibrary={(lib) =>\n setSettings({ renderingLibrary: lib } as any)\n }\n />\n )}\n <Separator />\n {/* Status Bar: cache + stale combined */}\n {(() => {\n const hasUnsyncedEdits =\n (editSequence ?? 0) > (lastBuiltSequence ?? 0);\n const isStale =\n (isPreviewStale || hasUnsyncedEdits) &&\n !isGenerating &&\n !isRendering;\n return (\n ((cacheStatus && cacheStatus !== 'UNKNOWN') || isStale) && (\n <div\n className={`px-3 py-1.5 flex items-center justify-between border-b overflow-hidden ${\n isStale\n ? 'bg-amber-500/10 border-amber-500/30'\n : 'bg-muted/30'\n }`}\n >\n <div className=\"flex items-center gap-2 min-w-0 truncate\">\n {cacheStatus === 'HIT' && !isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-green-500 flex-shrink-0\" />\n <span className=\"text-xs text-muted-foreground truncate\">\n Cached\n </span>\n </>\n ) : cacheStatus === 'MISS' && !isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-orange-500 flex-shrink-0\" />\n <span className=\"text-xs text-muted-foreground truncate\">\n Fresh {FORMAT_LABEL.toLowerCase()}\n </span>\n </>\n ) : isStale ? (\n <>\n <div className=\"h-1.5 w-1.5 rounded-full bg-amber-500 flex-shrink-0\" />\n <span className=\"text-xs text-amber-600 dark:text-amber-400 truncate\">\n Outdated — click Run\n </span>\n {editTimestamp &&\n hasUnsyncedEdits &&\n !isGenerating &&\n !hasValidationErrors &&\n autoReload &&\n renderingLibrary === 'docxjs' && (\n <DebounceCountdown\n editTimestamp={editTimestamp}\n debounceMs={saveDocumentDebounceWait + 200}\n />\n )}\n </>\n ) : null}\n </div>\n {!isStale && cacheHitRate && cacheHitRate !== '0.0%' && (\n <span className=\"text-xs text-muted-foreground flex-shrink-0 ml-2\">\n {cacheHitRate} hit rate\n </span>\n )}\n </div>\n )\n );\n })()}\n {/* Warnings Panel */}\n <WarningsPanel warnings={warnings} className=\"mx-3 my-2\" />\n {/* Generation Error — centered in preview area */}\n {globalError && !isGenerating ? (\n <div className=\"flex-1 flex items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-red-400/50 bg-red-400/10 px-4 py-3 text-sm text-red-400\">\n <p className=\"font-medium mb-1\">Generation failed</p>\n <p className=\"text-xs text-red-400/80 break-words\">\n {globalError}\n </p>\n </div>\n </div>\n ) : (\n <PreviewFrameMemoized\n ref={iframeRef}\n isLoading={Boolean(isRendering)}\n iframeSrc={iframeSrc}\n iframeSrcDoc={iframeSrcDoc}\n isGenerating={(() => {\n const willAutoBuild = autoReload && renderingLibrary === 'docxjs';\n const isSwitchingDoc =\n activeTab &&\n name &&\n activeTab !== name &&\n documentTypes[activeTab] !== 'application/json+theme';\n return (\n Boolean(isGenerating) ||\n Boolean(willAutoBuild && isSwitchingDoc)\n );\n })()}\n generationProgress={(() => {\n const willAutoBuild = autoReload && renderingLibrary === 'docxjs';\n const isSwitchingDoc =\n activeTab &&\n name &&\n activeTab !== name &&\n documentTypes[activeTab] !== 'application/json+theme';\n return willAutoBuild && isSwitchingDoc && !isGenerating\n ? {\n stage: 'parsing' as const,\n message: `Building preview for ${activeTab}...`,\n }\n : generationProgress;\n })()}\n />\n )}\n </div>\n\n {/* Cache Metrics Dialog */}\n <Dialog open={showCacheMetrics} onOpenChange={setShowCacheMetrics}>\n <DialogContent className=\"max-w-2xl\">\n <DialogHeader>\n <DialogTitle>Cache Performance</DialogTitle>\n </DialogHeader>\n <CacheMetrics />\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"file":"assets/preview-BBQhSmsm.js"}
@@ -0,0 +1,7 @@
1
+ var ut=t=>{throw TypeError(t)};var Ke=(t,e,n)=>e.has(t)||ut("Cannot "+n);var c=(t,e,n)=>(Ke(t,e,"read from private field"),n?n.call(t):e.get(t)),A=(t,e,n)=>e.has(t)?ut("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),g=(t,e,n,s)=>(Ke(t,e,"write to private field"),s?s.call(t,n):e.set(t,n),n),D=(t,e,n)=>(Ke(t,e,"access private method"),n);var ve=(t,e,n,s)=>({set _(r){g(t,e,r,n)},get _(){return c(t,e,s)}});import{r as Mt,j as wn}from"./react-vendor-CTFDOf2G.js";var _e=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},je=typeof window>"u"||"Deno"in globalThis;function I(){}function gn(t,e){return typeof t=="function"?t(e):t}function Sn(t){return typeof t=="number"&&t>=0&&t!==1/0}function En(t,e){return Math.max(t+(e||0)-Date.now(),0)}function ct(t,e){return typeof t=="function"?t(e):t}function Rn(t,e){return typeof t=="function"?t(e):t}function lt(t,e){const{type:n="all",exact:s,fetchStatus:r,predicate:i,queryKey:o,stale:a}=t;if(o){if(s){if(e.queryHash!==st(o,e.options))return!1}else if(!Re(e.queryKey,o))return!1}if(n!=="all"){const d=e.isActive();if(n==="active"&&!d||n==="inactive"&&d)return!1}return!(typeof a=="boolean"&&e.isStale()!==a||r&&r!==e.state.fetchStatus||i&&!i(e))}function ft(t,e){const{exact:n,status:s,predicate:r,mutationKey:i}=t;if(i){if(!e.options.mutationKey)return!1;if(n){if(Ee(e.options.mutationKey)!==Ee(i))return!1}else if(!Re(e.options.mutationKey,i))return!1}return!(s&&e.state.status!==s||r&&!r(e))}function st(t,e){return((e==null?void 0:e.queryKeyHashFn)||Ee)(t)}function Ee(t){return JSON.stringify(t,(e,n)=>We(n)?Object.keys(n).sort().reduce((s,r)=>(s[r]=n[r],s),{}):n)}function Re(t,e){return t===e?!0:typeof t!=typeof e?!1:t&&e&&typeof t=="object"&&typeof e=="object"?!Object.keys(e).some(n=>!Re(t[n],e[n])):!1}function kt(t,e){if(t===e)return t;const n=ht(t)&&ht(e);if(n||We(t)&&We(e)){const s=n?t:Object.keys(t),r=s.length,i=n?e:Object.keys(e),o=i.length,a=n?[]:{};let d=0;for(let f=0;f<o;f++){const l=n?f:i[f];(!n&&s.includes(l)||n)&&t[l]===void 0&&e[l]===void 0?(a[l]=void 0,d++):(a[l]=kt(t[l],e[l]),a[l]===t[l]&&t[l]!==void 0&&d++)}return r===o&&d===r?t:a}return e}function ht(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function We(t){if(!dt(t))return!1;const e=t.constructor;if(e===void 0)return!0;const n=e.prototype;return!(!dt(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function dt(t){return Object.prototype.toString.call(t)==="[object Object]"}function On(t){return new Promise(e=>{setTimeout(e,t)})}function An(t,e,n){return typeof n.structuralSharing=="function"?n.structuralSharing(t,e):n.structuralSharing!==!1?kt(t,e):e}function Tn(t,e,n=0){const s=[...t,e];return n&&s.length>n?s.slice(1):s}function Pn(t,e,n=0){const s=[e,...t];return n&&s.length>n?s.slice(0,-1):s}var rt=Symbol();function Bt(t,e){return!t.queryFn&&(e!=null&&e.initialPromise)?()=>e.initialPromise:!t.queryFn||t.queryFn===rt?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}var se,X,ce,xt,Cn=(xt=class extends _e{constructor(){super();A(this,se);A(this,X);A(this,ce);g(this,ce,e=>{if(!je&&window.addEventListener){const n=()=>e();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){c(this,X)||this.setEventListener(c(this,ce))}onUnsubscribe(){var e;this.hasListeners()||((e=c(this,X))==null||e.call(this),g(this,X,void 0))}setEventListener(e){var n;g(this,ce,e),(n=c(this,X))==null||n.call(this),g(this,X,e(s=>{typeof s=="boolean"?this.setFocused(s):this.onFocus()}))}setFocused(e){c(this,se)!==e&&(g(this,se,e),this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(n=>{n(e)})}isFocused(){var e;return typeof c(this,se)=="boolean"?c(this,se):((e=globalThis.document)==null?void 0:e.visibilityState)!=="hidden"}},se=new WeakMap,X=new WeakMap,ce=new WeakMap,xt),It=new Cn,le,Z,fe,Dt,vn=(Dt=class extends _e{constructor(){super();A(this,le,!0);A(this,Z);A(this,fe);g(this,fe,e=>{if(!je&&window.addEventListener){const n=()=>e(!0),s=()=>e(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",s,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",s)}}})}onSubscribe(){c(this,Z)||this.setEventListener(c(this,fe))}onUnsubscribe(){var e;this.hasListeners()||((e=c(this,Z))==null||e.call(this),g(this,Z,void 0))}setEventListener(e){var n;g(this,fe,e),(n=c(this,Z))==null||n.call(this),g(this,Z,e(this.setOnline.bind(this)))}setOnline(e){c(this,le)!==e&&(g(this,le,e),this.listeners.forEach(s=>{s(e)}))}isOnline(){return c(this,le)}},le=new WeakMap,Z=new WeakMap,fe=new WeakMap,Dt),Ue=new vn;function Fn(){let t,e;const n=new Promise((r,i)=>{t=r,e=i});n.status="pending",n.catch(()=>{});function s(r){Object.assign(n,r),delete n.resolve,delete n.reject}return n.resolve=r=>{s({status:"fulfilled",value:r}),t(r)},n.reject=r=>{s({status:"rejected",reason:r}),e(r)},n}function xn(t){return Math.min(1e3*2**t,3e4)}function Ht(t){return(t??"online")==="online"?Ue.isOnline():!0}var Qt=class extends Error{constructor(t){super("CancelledError"),this.revert=t==null?void 0:t.revert,this.silent=t==null?void 0:t.silent}};function ze(t){return t instanceof Qt}function Kt(t){let e=!1,n=0,s=!1,r;const i=Fn(),o=m=>{var p;s||(b(new Qt(m)),(p=t.abort)==null||p.call(t))},a=()=>{e=!0},d=()=>{e=!1},f=()=>It.isFocused()&&(t.networkMode==="always"||Ue.isOnline())&&t.canRun(),l=()=>Ht(t.networkMode)&&t.canRun(),h=m=>{var p;s||(s=!0,(p=t.onSuccess)==null||p.call(t,m),r==null||r(),i.resolve(m))},b=m=>{var p;s||(s=!0,(p=t.onError)==null||p.call(t,m),r==null||r(),i.reject(m))},R=()=>new Promise(m=>{var p;r=E=>{(s||f())&&m(E)},(p=t.onPause)==null||p.call(t)}).then(()=>{var m;r=void 0,s||(m=t.onContinue)==null||m.call(t)}),y=()=>{if(s)return;let m;const p=n===0?t.initialPromise:void 0;try{m=p??t.fn()}catch(E){m=Promise.reject(E)}Promise.resolve(m).then(h).catch(E=>{var x;if(s)return;const O=t.retry??(je?0:3),S=t.retryDelay??xn,P=typeof S=="function"?S(n,E):S,T=O===!0||typeof O=="number"&&n<O||typeof O=="function"&&O(n,E);if(e||!T){b(E);return}n++,(x=t.onFail)==null||x.call(t,n,E),On(P).then(()=>f()?void 0:R()).then(()=>{e?b(E):y()})})};return{promise:i,cancel:o,continue:()=>(r==null||r(),i),cancelRetry:a,continueRetry:d,canStart:l,start:()=>(l()?y():R().then(y),i)}}function Dn(){let t=[],e=0,n=a=>{a()},s=a=>{a()},r=a=>setTimeout(a,0);const i=a=>{e?t.push(a):r(()=>{n(a)})},o=()=>{const a=t;t=[],a.length&&r(()=>{s(()=>{a.forEach(d=>{n(d)})})})};return{batch:a=>{let d;e++;try{d=a()}finally{e--,e||o()}return d},batchCalls:a=>(...d)=>{i(()=>{a(...d)})},schedule:i,setNotifyFunction:a=>{n=a},setBatchNotifyFunction:a=>{s=a},setScheduler:a=>{r=a}}}var L=Dn(),re,Nt,zt=(Nt=class{constructor(){A(this,re)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Sn(this.gcTime)&&g(this,re,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(je?1/0:5*60*1e3))}clearGcTimeout(){c(this,re)&&(clearTimeout(c(this,re)),g(this,re,void 0))}},re=new WeakMap,Nt),he,de,B,N,Ae,ie,H,G,Ut,Nn=(Ut=class extends zt{constructor(e){super();A(this,H);A(this,he);A(this,de);A(this,B);A(this,N);A(this,Ae);A(this,ie);g(this,ie,!1),g(this,Ae,e.defaultOptions),this.setOptions(e.options),this.observers=[],g(this,B,e.cache),this.queryKey=e.queryKey,this.queryHash=e.queryHash,g(this,he,qn(this.options)),this.state=e.state??c(this,he),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var e;return(e=c(this,N))==null?void 0:e.promise}setOptions(e){this.options={...c(this,Ae),...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&c(this,B).remove(this)}setData(e,n){const s=An(this.state.data,e,this.options);return D(this,H,G).call(this,{data:s,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),s}setState(e,n){D(this,H,G).call(this,{type:"setState",state:e,setStateOptions:n})}cancel(e){var s,r;const n=(s=c(this,N))==null?void 0:s.promise;return(r=c(this,N))==null||r.cancel(e),n?n.then(I).catch(I):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(c(this,he))}isActive(){return this.observers.some(e=>Rn(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===rt||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!En(this.state.dataUpdatedAt,e)}onFocus(){var n;const e=this.observers.find(s=>s.shouldFetchOnWindowFocus());e==null||e.refetch({cancelRefetch:!1}),(n=c(this,N))==null||n.continue()}onOnline(){var n;const e=this.observers.find(s=>s.shouldFetchOnReconnect());e==null||e.refetch({cancelRefetch:!1}),(n=c(this,N))==null||n.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),c(this,B).notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(n=>n!==e),this.observers.length||(c(this,N)&&(c(this,ie)?c(this,N).cancel({revert:!0}):c(this,N).cancelRetry()),this.scheduleGc()),c(this,B).notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||D(this,H,G).call(this,{type:"invalidate"})}fetch(e,n){var d,f,l;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(c(this,N))return c(this,N).continueRetry(),c(this,N).promise}if(e&&this.setOptions(e),!this.options.queryFn){const h=this.observers.find(b=>b.options.queryFn);h&&this.setOptions(h.options)}const s=new AbortController,r=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(g(this,ie,!0),s.signal)})},i=()=>{const h=Bt(this.options,n),b={queryKey:this.queryKey,meta:this.meta};return r(b),g(this,ie,!1),this.options.persister?this.options.persister(h,b,this):h(b)},o={fetchOptions:n,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:i};r(o),(d=this.options.behavior)==null||d.onFetch(o,this),g(this,de,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((f=o.fetchOptions)==null?void 0:f.meta))&&D(this,H,G).call(this,{type:"fetch",meta:(l=o.fetchOptions)==null?void 0:l.meta});const a=h=>{var b,R,y,m;ze(h)&&h.silent||D(this,H,G).call(this,{type:"error",error:h}),ze(h)||((R=(b=c(this,B).config).onError)==null||R.call(b,h,this),(m=(y=c(this,B).config).onSettled)==null||m.call(y,this.state.data,h,this)),this.scheduleGc()};return g(this,N,Kt({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,abort:s.abort.bind(s),onSuccess:h=>{var b,R,y,m;if(h===void 0){a(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(h)}catch(p){a(p);return}(R=(b=c(this,B).config).onSuccess)==null||R.call(b,h,this),(m=(y=c(this,B).config).onSettled)==null||m.call(y,h,this.state.error,this),this.scheduleGc()},onError:a,onFail:(h,b)=>{D(this,H,G).call(this,{type:"failed",failureCount:h,error:b})},onPause:()=>{D(this,H,G).call(this,{type:"pause"})},onContinue:()=>{D(this,H,G).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),c(this,N).start()}},he=new WeakMap,de=new WeakMap,B=new WeakMap,N=new WeakMap,Ae=new WeakMap,ie=new WeakMap,H=new WeakSet,G=function(e){const n=s=>{switch(e.type){case"failed":return{...s,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...s,fetchStatus:"paused"};case"continue":return{...s,fetchStatus:"fetching"};case"fetch":return{...s,...Un(s.data,this.options),fetchMeta:e.meta??null};case"success":return{...s,data:e.data,dataUpdateCount:s.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=e.error;return ze(r)&&r.revert&&c(this,de)?{...c(this,de),fetchStatus:"idle"}:{...s,error:r,errorUpdateCount:s.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:s.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...s,isInvalidated:!0};case"setState":return{...s,...e.state}}};this.state=n(this.state),L.batch(()=>{this.observers.forEach(s=>{s.onQueryUpdate()}),c(this,B).notify({query:this,type:"updated",action:e})})},Ut);function Un(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Ht(e.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function qn(t){const e=typeof t.initialData=="function"?t.initialData():t.initialData,n=e!==void 0,s=n?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:n?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var $,qt,Ln=(qt=class extends _e{constructor(e={}){super();A(this,$);this.config=e,g(this,$,new Map)}build(e,n,s){const r=n.queryKey,i=n.queryHash??st(r,n);let o=this.get(i);return o||(o=new Nn({cache:this,queryKey:r,queryHash:i,options:e.defaultQueryOptions(n),state:s,defaultOptions:e.getQueryDefaults(r)}),this.add(o)),o}add(e){c(this,$).has(e.queryHash)||(c(this,$).set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const n=c(this,$).get(e.queryHash);n&&(e.destroy(),n===e&&c(this,$).delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){L.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return c(this,$).get(e)}getAll(){return[...c(this,$).values()]}find(e){const n={exact:!0,...e};return this.getAll().find(s=>lt(n,s))}findAll(e={}){const n=this.getAll();return Object.keys(e).length>0?n.filter(s=>lt(e,s)):n}notify(e){L.batch(()=>{this.listeners.forEach(n=>{n(e)})})}onFocus(){L.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){L.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},$=new WeakMap,qt),J,q,oe,V,W,Lt,_n=(Lt=class extends zt{constructor(e){super();A(this,V);A(this,J);A(this,q);A(this,oe);this.mutationId=e.mutationId,g(this,q,e.mutationCache),g(this,J,[]),this.state=e.state||jn(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){c(this,J).includes(e)||(c(this,J).push(e),this.clearGcTimeout(),c(this,q).notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){g(this,J,c(this,J).filter(n=>n!==e)),this.scheduleGc(),c(this,q).notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){c(this,J).length||(this.state.status==="pending"?this.scheduleGc():c(this,q).remove(this))}continue(){var e;return((e=c(this,oe))==null?void 0:e.continue())??this.execute(this.state.variables)}async execute(e){var r,i,o,a,d,f,l,h,b,R,y,m,p,E,O,S,P,T,x,k;g(this,oe,Kt({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(C,K)=>{D(this,V,W).call(this,{type:"failed",failureCount:C,error:K})},onPause:()=>{D(this,V,W).call(this,{type:"pause"})},onContinue:()=>{D(this,V,W).call(this,{type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>c(this,q).canRun(this)}));const n=this.state.status==="pending",s=!c(this,oe).canStart();try{if(!n){D(this,V,W).call(this,{type:"pending",variables:e,isPaused:s}),await((i=(r=c(this,q).config).onMutate)==null?void 0:i.call(r,e,this));const K=await((a=(o=this.options).onMutate)==null?void 0:a.call(o,e));K!==this.state.context&&D(this,V,W).call(this,{type:"pending",context:K,variables:e,isPaused:s})}const C=await c(this,oe).start();return await((f=(d=c(this,q).config).onSuccess)==null?void 0:f.call(d,C,e,this.state.context,this)),await((h=(l=this.options).onSuccess)==null?void 0:h.call(l,C,e,this.state.context)),await((R=(b=c(this,q).config).onSettled)==null?void 0:R.call(b,C,null,this.state.variables,this.state.context,this)),await((m=(y=this.options).onSettled)==null?void 0:m.call(y,C,null,e,this.state.context)),D(this,V,W).call(this,{type:"success",data:C}),C}catch(C){try{throw await((E=(p=c(this,q).config).onError)==null?void 0:E.call(p,C,e,this.state.context,this)),await((S=(O=this.options).onError)==null?void 0:S.call(O,C,e,this.state.context)),await((T=(P=c(this,q).config).onSettled)==null?void 0:T.call(P,void 0,C,this.state.variables,this.state.context,this)),await((k=(x=this.options).onSettled)==null?void 0:k.call(x,void 0,C,e,this.state.context)),C}finally{D(this,V,W).call(this,{type:"error",error:C})}}finally{c(this,q).runNext(this)}}},J=new WeakMap,q=new WeakMap,oe=new WeakMap,V=new WeakSet,W=function(e){const n=s=>{switch(e.type){case"failed":return{...s,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...s,isPaused:!0};case"continue":return{...s,isPaused:!1};case"pending":return{...s,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...s,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...s,data:void 0,error:e.error,failureCount:s.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=n(this.state),L.batch(()=>{c(this,J).forEach(s=>{s.onMutationUpdate(e)}),c(this,q).notify({mutation:this,type:"updated",action:e})})},Lt);function jn(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var j,Te,_t,Mn=(_t=class extends _e{constructor(e={}){super();A(this,j);A(this,Te);this.config=e,g(this,j,new Map),g(this,Te,Date.now())}build(e,n,s){const r=new _n({mutationCache:this,mutationId:++ve(this,Te)._,options:e.defaultMutationOptions(n),state:s});return this.add(r),r}add(e){const n=Fe(e),s=c(this,j).get(n)??[];s.push(e),c(this,j).set(n,s),this.notify({type:"added",mutation:e})}remove(e){var s;const n=Fe(e);if(c(this,j).has(n)){const r=(s=c(this,j).get(n))==null?void 0:s.filter(i=>i!==e);r&&(r.length===0?c(this,j).delete(n):c(this,j).set(n,r))}this.notify({type:"removed",mutation:e})}canRun(e){var s;const n=(s=c(this,j).get(Fe(e)))==null?void 0:s.find(r=>r.state.status==="pending");return!n||n===e}runNext(e){var s;const n=(s=c(this,j).get(Fe(e)))==null?void 0:s.find(r=>r!==e&&r.state.isPaused);return(n==null?void 0:n.continue())??Promise.resolve()}clear(){L.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}getAll(){return[...c(this,j).values()].flat()}find(e){const n={exact:!0,...e};return this.getAll().find(s=>ft(n,s))}findAll(e={}){return this.getAll().filter(n=>ft(e,n))}notify(e){L.batch(()=>{this.listeners.forEach(n=>{n(e)})})}resumePausedMutations(){const e=this.getAll().filter(n=>n.state.isPaused);return L.batch(()=>Promise.all(e.map(n=>n.continue().catch(I))))}},j=new WeakMap,Te=new WeakMap,_t);function Fe(t){var e;return((e=t.options.scope)==null?void 0:e.id)??String(t.mutationId)}function pt(t){return{onFetch:(e,n)=>{var l,h,b,R,y;const s=e.options,r=(b=(h=(l=e.fetchOptions)==null?void 0:l.meta)==null?void 0:h.fetchMore)==null?void 0:b.direction,i=((R=e.state.data)==null?void 0:R.pages)||[],o=((y=e.state.data)==null?void 0:y.pageParams)||[];let a={pages:[],pageParams:[]},d=0;const f=async()=>{let m=!1;const p=S=>{Object.defineProperty(S,"signal",{enumerable:!0,get:()=>(e.signal.aborted?m=!0:e.signal.addEventListener("abort",()=>{m=!0}),e.signal)})},E=Bt(e.options,e.fetchOptions),O=async(S,P,T)=>{if(m)return Promise.reject();if(P==null&&S.pages.length)return Promise.resolve(S);const x={queryKey:e.queryKey,pageParam:P,direction:T?"backward":"forward",meta:e.options.meta};p(x);const k=await E(x),{maxPages:C}=e.options,K=T?Pn:Tn;return{pages:K(S.pages,k,C),pageParams:K(S.pageParams,P,C)}};if(r&&i.length){const S=r==="backward",P=S?kn:mt,T={pages:i,pageParams:o},x=P(s,T);a=await O(T,x,S)}else{const S=t??i.length;do{const P=d===0?o[0]??s.initialPageParam:mt(s,a);if(d>0&&P==null)break;a=await O(a,P),d++}while(d<S)}return a};e.options.persister?e.fetchFn=()=>{var m,p;return(p=(m=e.options).persister)==null?void 0:p.call(m,f,{queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},n)}:e.fetchFn=f}}}function mt(t,{pages:e,pageParams:n}){const s=e.length-1;return e.length>0?t.getNextPageParam(e[s],e,n[s],n):void 0}function kn(t,{pages:e,pageParams:n}){var s;return e.length>0?(s=t.getPreviousPageParam)==null?void 0:s.call(t,e[0],e,n[0],n):void 0}var v,Y,ee,pe,me,te,ye,be,jt,gr=(jt=class{constructor(t={}){A(this,v);A(this,Y);A(this,ee);A(this,pe);A(this,me);A(this,te);A(this,ye);A(this,be);g(this,v,t.queryCache||new Ln),g(this,Y,t.mutationCache||new Mn),g(this,ee,t.defaultOptions||{}),g(this,pe,new Map),g(this,me,new Map),g(this,te,0)}mount(){ve(this,te)._++,c(this,te)===1&&(g(this,ye,It.subscribe(async t=>{t&&(await this.resumePausedMutations(),c(this,v).onFocus())})),g(this,be,Ue.subscribe(async t=>{t&&(await this.resumePausedMutations(),c(this,v).onOnline())})))}unmount(){var t,e;ve(this,te)._--,c(this,te)===0&&((t=c(this,ye))==null||t.call(this),g(this,ye,void 0),(e=c(this,be))==null||e.call(this),g(this,be,void 0))}isFetching(t){return c(this,v).findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return c(this,Y).findAll({...t,status:"pending"}).length}getQueryData(t){var n;const e=this.defaultQueryOptions({queryKey:t});return(n=c(this,v).get(e.queryHash))==null?void 0:n.state.data}ensureQueryData(t){const e=this.defaultQueryOptions(t),n=c(this,v).build(this,e),s=n.state.data;return s===void 0?this.fetchQuery(t):(t.revalidateIfStale&&n.isStaleByTime(ct(e.staleTime,n))&&this.prefetchQuery(e),Promise.resolve(s))}getQueriesData(t){return c(this,v).findAll(t).map(({queryKey:e,state:n})=>{const s=n.data;return[e,s]})}setQueryData(t,e,n){const s=this.defaultQueryOptions({queryKey:t}),r=c(this,v).get(s.queryHash),i=r==null?void 0:r.state.data,o=gn(e,i);if(o!==void 0)return c(this,v).build(this,s).setData(o,{...n,manual:!0})}setQueriesData(t,e,n){return L.batch(()=>c(this,v).findAll(t).map(({queryKey:s})=>[s,this.setQueryData(s,e,n)]))}getQueryState(t){var n;const e=this.defaultQueryOptions({queryKey:t});return(n=c(this,v).get(e.queryHash))==null?void 0:n.state}removeQueries(t){const e=c(this,v);L.batch(()=>{e.findAll(t).forEach(n=>{e.remove(n)})})}resetQueries(t,e){const n=c(this,v),s={type:"active",...t};return L.batch(()=>(n.findAll(t).forEach(r=>{r.reset()}),this.refetchQueries(s,e)))}cancelQueries(t,e={}){const n={revert:!0,...e},s=L.batch(()=>c(this,v).findAll(t).map(r=>r.cancel(n)));return Promise.all(s).then(I).catch(I)}invalidateQueries(t,e={}){return L.batch(()=>{if(c(this,v).findAll(t).forEach(s=>{s.invalidate()}),(t==null?void 0:t.refetchType)==="none")return Promise.resolve();const n={...t,type:(t==null?void 0:t.refetchType)??(t==null?void 0:t.type)??"active"};return this.refetchQueries(n,e)})}refetchQueries(t,e={}){const n={...e,cancelRefetch:e.cancelRefetch??!0},s=L.batch(()=>c(this,v).findAll(t).filter(r=>!r.isDisabled()).map(r=>{let i=r.fetch(void 0,n);return n.throwOnError||(i=i.catch(I)),r.state.fetchStatus==="paused"?Promise.resolve():i}));return Promise.all(s).then(I)}fetchQuery(t){const e=this.defaultQueryOptions(t);e.retry===void 0&&(e.retry=!1);const n=c(this,v).build(this,e);return n.isStaleByTime(ct(e.staleTime,n))?n.fetch(e):Promise.resolve(n.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(I).catch(I)}fetchInfiniteQuery(t){return t.behavior=pt(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(I).catch(I)}ensureInfiniteQueryData(t){return t.behavior=pt(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return Ue.isOnline()?c(this,Y).resumePausedMutations():Promise.resolve()}getQueryCache(){return c(this,v)}getMutationCache(){return c(this,Y)}getDefaultOptions(){return c(this,ee)}setDefaultOptions(t){g(this,ee,t)}setQueryDefaults(t,e){c(this,pe).set(Ee(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){const e=[...c(this,pe).values()],n={};return e.forEach(s=>{Re(t,s.queryKey)&&Object.assign(n,s.defaultOptions)}),n}setMutationDefaults(t,e){c(this,me).set(Ee(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){const e=[...c(this,me).values()];let n={};return e.forEach(s=>{Re(t,s.mutationKey)&&(n={...n,...s.defaultOptions})}),n}defaultQueryOptions(t){if(t._defaulted)return t;const e={...c(this,ee).queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=st(e.queryKey,e)),e.refetchOnReconnect===void 0&&(e.refetchOnReconnect=e.networkMode!=="always"),e.throwOnError===void 0&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.queryFn===rt&&(e.enabled=!1),e}defaultMutationOptions(t){return t!=null&&t._defaulted?t:{...c(this,ee).mutations,...(t==null?void 0:t.mutationKey)&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){c(this,v).clear(),c(this,Y).clear()}},v=new WeakMap,Y=new WeakMap,ee=new WeakMap,pe=new WeakMap,me=new WeakMap,te=new WeakMap,ye=new WeakMap,be=new WeakMap,jt),Bn=Mt.createContext(void 0),Sr=({client:t,children:e})=>(Mt.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),wn.jsx(Bn.Provider,{value:t,children:e}));function $t(t,e){return function(){return t.apply(e,arguments)}}const{toString:In}=Object.prototype,{getPrototypeOf:it}=Object,Me=(t=>e=>{const n=In.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Q=t=>(t=t.toLowerCase(),e=>Me(e)===t),ke=t=>e=>typeof e===t,{isArray:we}=Array,Oe=ke("undefined");function Hn(t){return t!==null&&!Oe(t)&&t.constructor!==null&&!Oe(t.constructor)&&M(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const Jt=Q("ArrayBuffer");function Qn(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&Jt(t.buffer),e}const Kn=ke("string"),M=ke("function"),Vt=ke("number"),Be=t=>t!==null&&typeof t=="object",zn=t=>t===!0||t===!1,xe=t=>{if(Me(t)!=="object")return!1;const e=it(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},$n=Q("Date"),Jn=Q("File"),Vn=Q("Blob"),Gn=Q("FileList"),Wn=t=>Be(t)&&M(t.pipe),Xn=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||M(t.append)&&((e=Me(t))==="formdata"||e==="object"&&M(t.toString)&&t.toString()==="[object FormData]"))},Zn=Q("URLSearchParams"),[Yn,es,ts,ns]=["ReadableStream","Request","Response","Headers"].map(Q),ss=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Pe(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let s,r;if(typeof t!="object"&&(t=[t]),we(t))for(s=0,r=t.length;s<r;s++)e.call(null,t[s],s,t);else{const i=n?Object.getOwnPropertyNames(t):Object.keys(t),o=i.length;let a;for(s=0;s<o;s++)a=i[s],e.call(null,t[a],a,t)}}function Gt(t,e){e=e.toLowerCase();const n=Object.keys(t);let s=n.length,r;for(;s-- >0;)if(r=n[s],e===r.toLowerCase())return r;return null}const ne=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Wt=t=>!Oe(t)&&t!==ne;function Xe(){const{caseless:t}=Wt(this)&&this||{},e={},n=(s,r)=>{const i=t&&Gt(e,r)||r;xe(e[i])&&xe(s)?e[i]=Xe(e[i],s):xe(s)?e[i]=Xe({},s):we(s)?e[i]=s.slice():e[i]=s};for(let s=0,r=arguments.length;s<r;s++)arguments[s]&&Pe(arguments[s],n);return e}const rs=(t,e,n,{allOwnKeys:s}={})=>(Pe(e,(r,i)=>{n&&M(r)?t[i]=$t(r,n):t[i]=r},{allOwnKeys:s}),t),is=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),os=(t,e,n,s)=>{t.prototype=Object.create(e.prototype,s),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},as=(t,e,n,s)=>{let r,i,o;const a={};if(e=e||{},t==null)return e;do{for(r=Object.getOwnPropertyNames(t),i=r.length;i-- >0;)o=r[i],(!s||s(o,t,e))&&!a[o]&&(e[o]=t[o],a[o]=!0);t=n!==!1&&it(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},us=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const s=t.indexOf(e,n);return s!==-1&&s===n},cs=t=>{if(!t)return null;if(we(t))return t;let e=t.length;if(!Vt(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},ls=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&it(Uint8Array)),fs=(t,e)=>{const s=(t&&t[Symbol.iterator]).call(t);let r;for(;(r=s.next())&&!r.done;){const i=r.value;e.call(t,i[0],i[1])}},hs=(t,e)=>{let n;const s=[];for(;(n=t.exec(e))!==null;)s.push(n);return s},ds=Q("HTMLFormElement"),ps=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,r){return s.toUpperCase()+r}),yt=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),ms=Q("RegExp"),Xt=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),s={};Pe(n,(r,i)=>{let o;(o=e(r,i,t))!==!1&&(s[i]=o||r)}),Object.defineProperties(t,s)},ys=t=>{Xt(t,(e,n)=>{if(M(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const s=t[n];if(M(s)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},bs=(t,e)=>{const n={},s=r=>{r.forEach(i=>{n[i]=!0})};return we(t)?s(t):s(String(t).split(e)),n},ws=()=>{},gs=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e,$e="abcdefghijklmnopqrstuvwxyz",bt="0123456789",Zt={DIGIT:bt,ALPHA:$e,ALPHA_DIGIT:$e+$e.toUpperCase()+bt},Ss=(t=16,e=Zt.ALPHA_DIGIT)=>{let n="";const{length:s}=e;for(;t--;)n+=e[Math.random()*s|0];return n};function Es(t){return!!(t&&M(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const Rs=t=>{const e=new Array(10),n=(s,r)=>{if(Be(s)){if(e.indexOf(s)>=0)return;if(!("toJSON"in s)){e[r]=s;const i=we(s)?[]:{};return Pe(s,(o,a)=>{const d=n(o,r+1);!Oe(d)&&(i[a]=d)}),e[r]=void 0,i}}return s};return n(t,0)},Os=Q("AsyncFunction"),As=t=>t&&(Be(t)||M(t))&&M(t.then)&&M(t.catch),Yt=((t,e)=>t?setImmediate:e?((n,s)=>(ne.addEventListener("message",({source:r,data:i})=>{r===ne&&i===n&&s.length&&s.shift()()},!1),r=>{s.push(r),ne.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",M(ne.postMessage)),Ts=typeof queueMicrotask<"u"?queueMicrotask.bind(ne):typeof process<"u"&&process.nextTick||Yt,u={isArray:we,isArrayBuffer:Jt,isBuffer:Hn,isFormData:Xn,isArrayBufferView:Qn,isString:Kn,isNumber:Vt,isBoolean:zn,isObject:Be,isPlainObject:xe,isReadableStream:Yn,isRequest:es,isResponse:ts,isHeaders:ns,isUndefined:Oe,isDate:$n,isFile:Jn,isBlob:Vn,isRegExp:ms,isFunction:M,isStream:Wn,isURLSearchParams:Zn,isTypedArray:ls,isFileList:Gn,forEach:Pe,merge:Xe,extend:rs,trim:ss,stripBOM:is,inherits:os,toFlatObject:as,kindOf:Me,kindOfTest:Q,endsWith:us,toArray:cs,forEachEntry:fs,matchAll:hs,isHTMLForm:ds,hasOwnProperty:yt,hasOwnProp:yt,reduceDescriptors:Xt,freezeMethods:ys,toObjectSet:bs,toCamelCase:ps,noop:ws,toFiniteNumber:gs,findKey:Gt,global:ne,isContextDefined:Wt,ALPHABET:Zt,generateString:Ss,isSpecCompliantForm:Es,toJSONObject:Rs,isAsyncFn:Os,isThenable:As,setImmediate:Yt,asap:Ts};function w(t,e,n,s,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),s&&(this.request=s),r&&(this.response=r,this.status=r.status?r.status:null)}u.inherits(w,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:u.toJSONObject(this.config),code:this.code,status:this.status}}});const en=w.prototype,tn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{tn[t]={value:t}});Object.defineProperties(w,tn);Object.defineProperty(en,"isAxiosError",{value:!0});w.from=(t,e,n,s,r,i)=>{const o=Object.create(en);return u.toFlatObject(t,o,function(d){return d!==Error.prototype},a=>a!=="isAxiosError"),w.call(o,t.message,e,n,s,r),o.cause=t,o.name=t.name,i&&Object.assign(o,i),o};const Ps=null;function Ze(t){return u.isPlainObject(t)||u.isArray(t)}function nn(t){return u.endsWith(t,"[]")?t.slice(0,-2):t}function wt(t,e,n){return t?t.concat(e).map(function(r,i){return r=nn(r),!n&&i?"["+r+"]":r}).join(n?".":""):e}function Cs(t){return u.isArray(t)&&!t.some(Ze)}const vs=u.toFlatObject(u,{},null,function(e){return/^is[A-Z]/.test(e)});function Ie(t,e,n){if(!u.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=u.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!u.isUndefined(p[m])});const s=n.metaTokens,r=n.visitor||l,i=n.dots,o=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&u.isSpecCompliantForm(e);if(!u.isFunction(r))throw new TypeError("visitor must be a function");function f(y){if(y===null)return"";if(u.isDate(y))return y.toISOString();if(!d&&u.isBlob(y))throw new w("Blob is not supported. Use a Buffer instead.");return u.isArrayBuffer(y)||u.isTypedArray(y)?d&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function l(y,m,p){let E=y;if(y&&!p&&typeof y=="object"){if(u.endsWith(m,"{}"))m=s?m:m.slice(0,-2),y=JSON.stringify(y);else if(u.isArray(y)&&Cs(y)||(u.isFileList(y)||u.endsWith(m,"[]"))&&(E=u.toArray(y)))return m=nn(m),E.forEach(function(S,P){!(u.isUndefined(S)||S===null)&&e.append(o===!0?wt([m],P,i):o===null?m:m+"[]",f(S))}),!1}return Ze(y)?!0:(e.append(wt(p,m,i),f(y)),!1)}const h=[],b=Object.assign(vs,{defaultVisitor:l,convertValue:f,isVisitable:Ze});function R(y,m){if(!u.isUndefined(y)){if(h.indexOf(y)!==-1)throw Error("Circular reference detected in "+m.join("."));h.push(y),u.forEach(y,function(E,O){(!(u.isUndefined(E)||E===null)&&r.call(e,E,u.isString(O)?O.trim():O,m,b))===!0&&R(E,m?m.concat(O):[O])}),h.pop()}}if(!u.isObject(t))throw new TypeError("data must be an object");return R(t),e}function gt(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(s){return e[s]})}function ot(t,e){this._pairs=[],t&&Ie(t,this,e)}const sn=ot.prototype;sn.append=function(e,n){this._pairs.push([e,n])};sn.toString=function(e){const n=e?function(s){return e.call(this,s,gt)}:gt;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function Fs(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function rn(t,e,n){if(!e)return t;const s=n&&n.encode||Fs;u.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let i;if(r?i=r(e,n):i=u.isURLSearchParams(e)?e.toString():new ot(e,n).toString(s),i){const o=t.indexOf("#");o!==-1&&(t=t.slice(0,o)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class St{constructor(){this.handlers=[]}use(e,n,s){return this.handlers.push({fulfilled:e,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){u.forEach(this.handlers,function(s){s!==null&&e(s)})}}const on={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},xs=typeof URLSearchParams<"u"?URLSearchParams:ot,Ds=typeof FormData<"u"?FormData:null,Ns=typeof Blob<"u"?Blob:null,Us={isBrowser:!0,classes:{URLSearchParams:xs,FormData:Ds,Blob:Ns},protocols:["http","https","file","blob","url","data"]},at=typeof window<"u"&&typeof document<"u",Ye=typeof navigator=="object"&&navigator||void 0,qs=at&&(!Ye||["ReactNative","NativeScript","NS"].indexOf(Ye.product)<0),Ls=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",_s=at&&window.location.href||"http://localhost",js=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:at,hasStandardBrowserEnv:qs,hasStandardBrowserWebWorkerEnv:Ls,navigator:Ye,origin:_s},Symbol.toStringTag,{value:"Module"})),U={...js,...Us};function Ms(t,e){return Ie(t,new U.classes.URLSearchParams,Object.assign({visitor:function(n,s,r,i){return U.isNode&&u.isBuffer(n)?(this.append(s,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},e))}function ks(t){return u.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Bs(t){const e={},n=Object.keys(t);let s;const r=n.length;let i;for(s=0;s<r;s++)i=n[s],e[i]=t[i];return e}function an(t){function e(n,s,r,i){let o=n[i++];if(o==="__proto__")return!0;const a=Number.isFinite(+o),d=i>=n.length;return o=!o&&u.isArray(r)?r.length:o,d?(u.hasOwnProp(r,o)?r[o]=[r[o],s]:r[o]=s,!a):((!r[o]||!u.isObject(r[o]))&&(r[o]=[]),e(n,s,r[o],i)&&u.isArray(r[o])&&(r[o]=Bs(r[o])),!a)}if(u.isFormData(t)&&u.isFunction(t.entries)){const n={};return u.forEachEntry(t,(s,r)=>{e(ks(s),r,n,0)}),n}return null}function Is(t,e,n){if(u.isString(t))try{return(e||JSON.parse)(t),u.trim(t)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(t)}const Ce={transitional:on,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const s=n.getContentType()||"",r=s.indexOf("application/json")>-1,i=u.isObject(e);if(i&&u.isHTMLForm(e)&&(e=new FormData(e)),u.isFormData(e))return r?JSON.stringify(an(e)):e;if(u.isArrayBuffer(e)||u.isBuffer(e)||u.isStream(e)||u.isFile(e)||u.isBlob(e)||u.isReadableStream(e))return e;if(u.isArrayBufferView(e))return e.buffer;if(u.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(i){if(s.indexOf("application/x-www-form-urlencoded")>-1)return Ms(e,this.formSerializer).toString();if((a=u.isFileList(e))||s.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return Ie(a?{"files[]":e}:e,d&&new d,this.formSerializer)}}return i||r?(n.setContentType("application/json",!1),Is(e)):e}],transformResponse:[function(e){const n=this.transitional||Ce.transitional,s=n&&n.forcedJSONParsing,r=this.responseType==="json";if(u.isResponse(e)||u.isReadableStream(e))return e;if(e&&u.isString(e)&&(s&&!this.responseType||r)){const o=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(a){if(o)throw a.name==="SyntaxError"?w.from(a,w.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:U.classes.FormData,Blob:U.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};u.forEach(["delete","get","head","post","put","patch"],t=>{Ce.headers[t]={}});const Hs=u.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Qs=t=>{const e={};let n,s,r;return t&&t.split(`
2
+ `).forEach(function(o){r=o.indexOf(":"),n=o.substring(0,r).trim().toLowerCase(),s=o.substring(r+1).trim(),!(!n||e[n]&&Hs[n])&&(n==="set-cookie"?e[n]?e[n].push(s):e[n]=[s]:e[n]=e[n]?e[n]+", "+s:s)}),e},Et=Symbol("internals");function Se(t){return t&&String(t).trim().toLowerCase()}function De(t){return t===!1||t==null?t:u.isArray(t)?t.map(De):String(t)}function Ks(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(t);)e[s[1]]=s[2];return e}const zs=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function Je(t,e,n,s,r){if(u.isFunction(s))return s.call(this,e,n);if(r&&(e=n),!!u.isString(e)){if(u.isString(s))return e.indexOf(s)!==-1;if(u.isRegExp(s))return s.test(e)}}function $s(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,s)=>n.toUpperCase()+s)}function Js(t,e){const n=u.toCamelCase(" "+e);["get","set","has"].forEach(s=>{Object.defineProperty(t,s+n,{value:function(r,i,o){return this[s].call(this,e,r,i,o)},configurable:!0})})}let _=class{constructor(e){e&&this.set(e)}set(e,n,s){const r=this;function i(a,d,f){const l=Se(d);if(!l)throw new Error("header name must be a non-empty string");const h=u.findKey(r,l);(!h||r[h]===void 0||f===!0||f===void 0&&r[h]!==!1)&&(r[h||d]=De(a))}const o=(a,d)=>u.forEach(a,(f,l)=>i(f,l,d));if(u.isPlainObject(e)||e instanceof this.constructor)o(e,n);else if(u.isString(e)&&(e=e.trim())&&!zs(e))o(Qs(e),n);else if(u.isHeaders(e))for(const[a,d]of e.entries())i(d,a,s);else e!=null&&i(n,e,s);return this}get(e,n){if(e=Se(e),e){const s=u.findKey(this,e);if(s){const r=this[s];if(!n)return r;if(n===!0)return Ks(r);if(u.isFunction(n))return n.call(this,r,s);if(u.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Se(e),e){const s=u.findKey(this,e);return!!(s&&this[s]!==void 0&&(!n||Je(this,this[s],s,n)))}return!1}delete(e,n){const s=this;let r=!1;function i(o){if(o=Se(o),o){const a=u.findKey(s,o);a&&(!n||Je(s,s[a],a,n))&&(delete s[a],r=!0)}}return u.isArray(e)?e.forEach(i):i(e),r}clear(e){const n=Object.keys(this);let s=n.length,r=!1;for(;s--;){const i=n[s];(!e||Je(this,this[i],i,e,!0))&&(delete this[i],r=!0)}return r}normalize(e){const n=this,s={};return u.forEach(this,(r,i)=>{const o=u.findKey(s,i);if(o){n[o]=De(r),delete n[i];return}const a=e?$s(i):String(i).trim();a!==i&&delete n[i],n[a]=De(r),s[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return u.forEach(this,(s,r)=>{s!=null&&s!==!1&&(n[r]=e&&u.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(`
3
+ `)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const s=new this(e);return n.forEach(r=>s.set(r)),s}static accessor(e){const s=(this[Et]=this[Et]={accessors:{}}).accessors,r=this.prototype;function i(o){const a=Se(o);s[a]||(Js(r,o),s[a]=!0)}return u.isArray(e)?e.forEach(i):i(e),this}};_.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);u.reduceDescriptors(_.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(s){this[n]=s}}});u.freezeMethods(_);function Ve(t,e){const n=this||Ce,s=e||n,r=_.from(s.headers);let i=s.data;return u.forEach(t,function(a){i=a.call(n,i,r.normalize(),e?e.status:void 0)}),r.normalize(),i}function un(t){return!!(t&&t.__CANCEL__)}function ge(t,e,n){w.call(this,t??"canceled",w.ERR_CANCELED,e,n),this.name="CanceledError"}u.inherits(ge,w,{__CANCEL__:!0});function cn(t,e,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?t(n):e(new w("Request failed with status code "+n.status,[w.ERR_BAD_REQUEST,w.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Vs(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function Gs(t,e){t=t||10;const n=new Array(t),s=new Array(t);let r=0,i=0,o;return e=e!==void 0?e:1e3,function(d){const f=Date.now(),l=s[i];o||(o=f),n[r]=d,s[r]=f;let h=i,b=0;for(;h!==r;)b+=n[h++],h=h%t;if(r=(r+1)%t,r===i&&(i=(i+1)%t),f-o<e)return;const R=l&&f-l;return R?Math.round(b*1e3/R):void 0}}function Ws(t,e){let n=0,s=1e3/e,r,i;const o=(f,l=Date.now())=>{n=l,r=null,i&&(clearTimeout(i),i=null),t.apply(null,f)};return[(...f)=>{const l=Date.now(),h=l-n;h>=s?o(f,l):(r=f,i||(i=setTimeout(()=>{i=null,o(r)},s-h)))},()=>r&&o(r)]}const qe=(t,e,n=3)=>{let s=0;const r=Gs(50,250);return Ws(i=>{const o=i.loaded,a=i.lengthComputable?i.total:void 0,d=o-s,f=r(d),l=o<=a;s=o;const h={loaded:o,total:a,progress:a?o/a:void 0,bytes:d,rate:f||void 0,estimated:f&&a&&l?(a-o)/f:void 0,event:i,lengthComputable:a!=null,[e?"download":"upload"]:!0};t(h)},n)},Rt=(t,e)=>{const n=t!=null;return[s=>e[0]({lengthComputable:n,total:t,loaded:s}),e[1]]},Ot=t=>(...e)=>u.asap(()=>t(...e)),Xs=U.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,U.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(U.origin),U.navigator&&/(msie|trident)/i.test(U.navigator.userAgent)):()=>!0,Zs=U.hasStandardBrowserEnv?{write(t,e,n,s,r,i){const o=[t+"="+encodeURIComponent(e)];u.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),u.isString(s)&&o.push("path="+s),u.isString(r)&&o.push("domain="+r),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Ys(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function er(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function ln(t,e){return t&&!Ys(e)?er(t,e):e}const At=t=>t instanceof _?{...t}:t;function ue(t,e){e=e||{};const n={};function s(f,l,h,b){return u.isPlainObject(f)&&u.isPlainObject(l)?u.merge.call({caseless:b},f,l):u.isPlainObject(l)?u.merge({},l):u.isArray(l)?l.slice():l}function r(f,l,h,b){if(u.isUndefined(l)){if(!u.isUndefined(f))return s(void 0,f,h,b)}else return s(f,l,h,b)}function i(f,l){if(!u.isUndefined(l))return s(void 0,l)}function o(f,l){if(u.isUndefined(l)){if(!u.isUndefined(f))return s(void 0,f)}else return s(void 0,l)}function a(f,l,h){if(h in e)return s(f,l);if(h in t)return s(void 0,f)}const d={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(f,l,h)=>r(At(f),At(l),h,!0)};return u.forEach(Object.keys(Object.assign({},t,e)),function(l){const h=d[l]||r,b=h(t[l],e[l],l);u.isUndefined(b)&&h!==a||(n[l]=b)}),n}const fn=t=>{const e=ue({},t);let{data:n,withXSRFToken:s,xsrfHeaderName:r,xsrfCookieName:i,headers:o,auth:a}=e;e.headers=o=_.from(o),e.url=rn(ln(e.baseURL,e.url),t.params,t.paramsSerializer),a&&o.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let d;if(u.isFormData(n)){if(U.hasStandardBrowserEnv||U.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if((d=o.getContentType())!==!1){const[f,...l]=d?d.split(";").map(h=>h.trim()).filter(Boolean):[];o.setContentType([f||"multipart/form-data",...l].join("; "))}}if(U.hasStandardBrowserEnv&&(s&&u.isFunction(s)&&(s=s(e)),s||s!==!1&&Xs(e.url))){const f=r&&i&&Zs.read(i);f&&o.set(r,f)}return e},tr=typeof XMLHttpRequest<"u",nr=tr&&function(t){return new Promise(function(n,s){const r=fn(t);let i=r.data;const o=_.from(r.headers).normalize();let{responseType:a,onUploadProgress:d,onDownloadProgress:f}=r,l,h,b,R,y;function m(){R&&R(),y&&y(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let p=new XMLHttpRequest;p.open(r.method.toUpperCase(),r.url,!0),p.timeout=r.timeout;function E(){if(!p)return;const S=_.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),T={data:!a||a==="text"||a==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:S,config:t,request:p};cn(function(k){n(k),m()},function(k){s(k),m()},T),p=null}"onloadend"in p?p.onloadend=E:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf("file:")===0)||setTimeout(E)},p.onabort=function(){p&&(s(new w("Request aborted",w.ECONNABORTED,t,p)),p=null)},p.onerror=function(){s(new w("Network Error",w.ERR_NETWORK,t,p)),p=null},p.ontimeout=function(){let P=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const T=r.transitional||on;r.timeoutErrorMessage&&(P=r.timeoutErrorMessage),s(new w(P,T.clarifyTimeoutError?w.ETIMEDOUT:w.ECONNABORTED,t,p)),p=null},i===void 0&&o.setContentType(null),"setRequestHeader"in p&&u.forEach(o.toJSON(),function(P,T){p.setRequestHeader(T,P)}),u.isUndefined(r.withCredentials)||(p.withCredentials=!!r.withCredentials),a&&a!=="json"&&(p.responseType=r.responseType),f&&([b,y]=qe(f,!0),p.addEventListener("progress",b)),d&&p.upload&&([h,R]=qe(d),p.upload.addEventListener("progress",h),p.upload.addEventListener("loadend",R)),(r.cancelToken||r.signal)&&(l=S=>{p&&(s(!S||S.type?new ge(null,t,p):S),p.abort(),p=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));const O=Vs(r.url);if(O&&U.protocols.indexOf(O)===-1){s(new w("Unsupported protocol "+O+":",w.ERR_BAD_REQUEST,t));return}p.send(i||null)})},sr=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let s=new AbortController,r;const i=function(f){if(!r){r=!0,a();const l=f instanceof Error?f:this.reason;s.abort(l instanceof w?l:new ge(l instanceof Error?l.message:l))}};let o=e&&setTimeout(()=>{o=null,i(new w(`timeout ${e} of ms exceeded`,w.ETIMEDOUT))},e);const a=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(f=>{f.unsubscribe?f.unsubscribe(i):f.removeEventListener("abort",i)}),t=null)};t.forEach(f=>f.addEventListener("abort",i));const{signal:d}=s;return d.unsubscribe=()=>u.asap(a),d}},rr=function*(t,e){let n=t.byteLength;if(n<e){yield t;return}let s=0,r;for(;s<n;)r=s+e,yield t.slice(s,r),s=r},ir=async function*(t,e){for await(const n of or(t))yield*rr(n,e)},or=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}const e=t.getReader();try{for(;;){const{done:n,value:s}=await e.read();if(n)break;yield s}}finally{await e.cancel()}},Tt=(t,e,n,s)=>{const r=ir(t,e);let i=0,o,a=d=>{o||(o=!0,s&&s(d))};return new ReadableStream({async pull(d){try{const{done:f,value:l}=await r.next();if(f){a(),d.close();return}let h=l.byteLength;if(n){let b=i+=h;n(b)}d.enqueue(new Uint8Array(l))}catch(f){throw a(f),f}},cancel(d){return a(d),r.return()}},{highWaterMark:2})},He=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",hn=He&&typeof ReadableStream=="function",ar=He&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),dn=(t,...e)=>{try{return!!t(...e)}catch{return!1}},ur=hn&&dn(()=>{let t=!1;const e=new Request(U.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),Pt=64*1024,et=hn&&dn(()=>u.isReadableStream(new Response("").body)),Le={stream:et&&(t=>t.body)};He&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Le[e]&&(Le[e]=u.isFunction(t[e])?n=>n[e]():(n,s)=>{throw new w(`Response type '${e}' is not supported`,w.ERR_NOT_SUPPORT,s)})})})(new Response);const cr=async t=>{if(t==null)return 0;if(u.isBlob(t))return t.size;if(u.isSpecCompliantForm(t))return(await new Request(U.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if(u.isArrayBufferView(t)||u.isArrayBuffer(t))return t.byteLength;if(u.isURLSearchParams(t)&&(t=t+""),u.isString(t))return(await ar(t)).byteLength},lr=async(t,e)=>{const n=u.toFiniteNumber(t.getContentLength());return n??cr(e)},fr=He&&(async t=>{let{url:e,method:n,data:s,signal:r,cancelToken:i,timeout:o,onDownloadProgress:a,onUploadProgress:d,responseType:f,headers:l,withCredentials:h="same-origin",fetchOptions:b}=fn(t);f=f?(f+"").toLowerCase():"text";let R=sr([r,i&&i.toAbortSignal()],o),y;const m=R&&R.unsubscribe&&(()=>{R.unsubscribe()});let p;try{if(d&&ur&&n!=="get"&&n!=="head"&&(p=await lr(l,s))!==0){let T=new Request(e,{method:"POST",body:s,duplex:"half"}),x;if(u.isFormData(s)&&(x=T.headers.get("content-type"))&&l.setContentType(x),T.body){const[k,C]=Rt(p,qe(Ot(d)));s=Tt(T.body,Pt,k,C)}}u.isString(h)||(h=h?"include":"omit");const E="credentials"in Request.prototype;y=new Request(e,{...b,signal:R,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:s,duplex:"half",credentials:E?h:void 0});let O=await fetch(y);const S=et&&(f==="stream"||f==="response");if(et&&(a||S&&m)){const T={};["status","statusText","headers"].forEach(K=>{T[K]=O[K]});const x=u.toFiniteNumber(O.headers.get("content-length")),[k,C]=a&&Rt(x,qe(Ot(a),!0))||[];O=new Response(Tt(O.body,Pt,k,()=>{C&&C(),m&&m()}),T)}f=f||"text";let P=await Le[u.findKey(Le,f)||"text"](O,t);return!S&&m&&m(),await new Promise((T,x)=>{cn(T,x,{data:P,headers:_.from(O.headers),status:O.status,statusText:O.statusText,config:t,request:y})})}catch(E){throw m&&m(),E&&E.name==="TypeError"&&/fetch/i.test(E.message)?Object.assign(new w("Network Error",w.ERR_NETWORK,t,y),{cause:E.cause||E}):w.from(E,E&&E.code,t,y)}}),tt={http:Ps,xhr:nr,fetch:fr};u.forEach(tt,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const Ct=t=>`- ${t}`,hr=t=>u.isFunction(t)||t===null||t===!1,pn={getAdapter:t=>{t=u.isArray(t)?t:[t];const{length:e}=t;let n,s;const r={};for(let i=0;i<e;i++){n=t[i];let o;if(s=n,!hr(n)&&(s=tt[(o=String(n)).toLowerCase()],s===void 0))throw new w(`Unknown adapter '${o}'`);if(s)break;r[o||"#"+i]=s}if(!s){const i=Object.entries(r).map(([a,d])=>`adapter ${a} `+(d===!1?"is not supported by the environment":"is not available in the build"));let o=e?i.length>1?`since :
4
+ `+i.map(Ct).join(`
5
+ `):" "+Ct(i[0]):"as no adapter specified";throw new w("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return s},adapters:tt};function Ge(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new ge(null,t)}function vt(t){return Ge(t),t.headers=_.from(t.headers),t.data=Ve.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),pn.getAdapter(t.adapter||Ce.adapter)(t).then(function(s){return Ge(t),s.data=Ve.call(t,t.transformResponse,s),s.headers=_.from(s.headers),s},function(s){return un(s)||(Ge(t),s&&s.response&&(s.response.data=Ve.call(t,t.transformResponse,s.response),s.response.headers=_.from(s.response.headers))),Promise.reject(s)})}const mn="1.7.9",Qe={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Qe[t]=function(s){return typeof s===t||"a"+(e<1?"n ":" ")+t}});const Ft={};Qe.transitional=function(e,n,s){function r(i,o){return"[Axios v"+mn+"] Transitional option '"+i+"'"+o+(s?". "+s:"")}return(i,o,a)=>{if(e===!1)throw new w(r(o," has been removed"+(n?" in "+n:"")),w.ERR_DEPRECATED);return n&&!Ft[o]&&(Ft[o]=!0,console.warn(r(o," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,o,a):!0}};Qe.spelling=function(e){return(n,s)=>(console.warn(`${s} is likely a misspelling of ${e}`),!0)};function dr(t,e,n){if(typeof t!="object")throw new w("options must be an object",w.ERR_BAD_OPTION_VALUE);const s=Object.keys(t);let r=s.length;for(;r-- >0;){const i=s[r],o=e[i];if(o){const a=t[i],d=a===void 0||o(a,i,t);if(d!==!0)throw new w("option "+i+" must be "+d,w.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new w("Unknown option "+i,w.ERR_BAD_OPTION)}}const Ne={assertOptions:dr,validators:Qe},z=Ne.validators;let ae=class{constructor(e){this.defaults=e,this.interceptors={request:new St,response:new St}}async request(e,n){try{return await this._request(e,n)}catch(s){if(s instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const i=r.stack?r.stack.replace(/^.+\n/,""):"";try{s.stack?i&&!String(s.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(s.stack+=`
6
+ `+i):s.stack=i}catch{}}throw s}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=ue(this.defaults,n);const{transitional:s,paramsSerializer:r,headers:i}=n;s!==void 0&&Ne.assertOptions(s,{silentJSONParsing:z.transitional(z.boolean),forcedJSONParsing:z.transitional(z.boolean),clarifyTimeoutError:z.transitional(z.boolean)},!1),r!=null&&(u.isFunction(r)?n.paramsSerializer={serialize:r}:Ne.assertOptions(r,{encode:z.function,serialize:z.function},!0)),Ne.assertOptions(n,{baseUrl:z.spelling("baseURL"),withXsrfToken:z.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&u.merge(i.common,i[n.method]);i&&u.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=_.concat(o,i);const a=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(d=d&&m.synchronous,a.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let l,h=0,b;if(!d){const y=[vt.bind(this),void 0];for(y.unshift.apply(y,a),y.push.apply(y,f),b=y.length,l=Promise.resolve(n);h<b;)l=l.then(y[h++],y[h++]);return l}b=a.length;let R=n;for(h=0;h<b;){const y=a[h++],m=a[h++];try{R=y(R)}catch(p){m.call(this,p);break}}try{l=vt.call(this,R)}catch(y){return Promise.reject(y)}for(h=0,b=f.length;h<b;)l=l.then(f[h++],f[h++]);return l}getUri(e){e=ue(this.defaults,e);const n=ln(e.baseURL,e.url);return rn(n,e.params,e.paramsSerializer)}};u.forEach(["delete","get","head","options"],function(e){ae.prototype[e]=function(n,s){return this.request(ue(s||{},{method:e,url:n,data:(s||{}).data}))}});u.forEach(["post","put","patch"],function(e){function n(s){return function(i,o,a){return this.request(ue(a||{},{method:e,headers:s?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}ae.prototype[e]=n(),ae.prototype[e+"Form"]=n(!0)});let pr=class yn{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(i){n=i});const s=this;this.promise.then(r=>{if(!s._listeners)return;let i=s._listeners.length;for(;i-- >0;)s._listeners[i](r);s._listeners=null}),this.promise.then=r=>{let i;const o=new Promise(a=>{s.subscribe(a),i=a}).then(r);return o.cancel=function(){s.unsubscribe(i)},o},e(function(i,o,a){s.reason||(s.reason=new ge(i,o,a),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=s=>{e.abort(s)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new yn(function(r){e=r}),cancel:e}}};function mr(t){return function(n){return t.apply(null,n)}}function yr(t){return u.isObject(t)&&t.isAxiosError===!0}const nt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nt).forEach(([t,e])=>{nt[e]=t});function bn(t){const e=new ae(t),n=$t(ae.prototype.request,e);return u.extend(n,ae.prototype,e,{allOwnKeys:!0}),u.extend(n,e,null,{allOwnKeys:!0}),n.create=function(r){return bn(ue(t,r))},n}const F=bn(Ce);F.Axios=ae;F.CanceledError=ge;F.CancelToken=pr;F.isCancel=un;F.VERSION=mn;F.toFormData=Ie;F.AxiosError=w;F.Cancel=F.CanceledError;F.all=function(e){return Promise.all(e)};F.spread=mr;F.isAxiosError=yr;F.mergeConfig=ue;F.AxiosHeaders=_;F.formToJSON=t=>an(u.isHTMLForm(t)?new FormData(t):t);F.getAdapter=pn.getAdapter;F.HttpStatusCode=nt;F.default=F;const{Axios:Or,AxiosError:Ar,CanceledError:Tr,isCancel:Pr,CancelToken:Cr,VERSION:vr,all:Fr,Cancel:xr,isAxiosError:Dr,spread:Nr,toFormData:Ur,AxiosHeaders:qr,HttpStatusCode:Lr,formToJSON:_r,getAdapter:jr,mergeConfig:Mr}=F;export{gr as Q,Sr as a,F as b};
7
+ //# sourceMappingURL=query-vendor-Df8-oete.js.map