@cyber-harbour/ui 2.0.23 → 2.0.24

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.
package/README.md CHANGED
@@ -267,13 +267,13 @@ import '@cyber-harbour/ui/styles';
267
267
  ### Автоматичне копіювання
268
268
 
269
269
  ```bash
270
- npx @cyber-harbour/ui copy-pdf-worker
270
+ npx @cyber-harbour/ui copy-pdfjs
271
271
  ```
272
272
 
273
273
  ### Кастомна папка для worker'ів
274
274
 
275
275
  ```bash
276
- UI_LIBRARY_WORKERS_DIR=public/assets npx @cyber-harbour/ui copy-pdf-worker
276
+ UI_LIBRARY_WORKERS_DIR=public/assets npx @cyber-harbour/ui copy-pdfjs
277
277
  ```
278
278
 
279
279
  ### Вирішення проблем
@@ -290,7 +290,7 @@ UI_LIBRARY_WORKERS_DIR=public/assets npx @cyber-harbour/ui copy-pdf-worker
290
290
 
291
291
  ```bash
292
292
  npm install --save-peer pdfjs-dist
293
- npx @cyber-harbour/ui copy-pdf-worker
293
+ npx @cyber-harbour/ui copy-pdfjs
294
294
  ```
295
295
 
296
296
  3. **Перевірте структуру проекту**: скрипт шукає worker у наступних місцях:
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env node
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ // Find the current working directory (the project using the UI library)
6
+ const projectRoot = process.cwd();
7
+
8
+ // Allow custom target directory via command line argument
9
+ const targetDirName = process.env.UI_LIBRARY_PDFJS_DIR || 'public/pdfjs';
10
+
11
+ // Source paths
12
+ const pdfjsDistPath = path.resolve(projectRoot, 'node_modules/@cyber-harbour/ui/node_modules/pdfjs-dist');
13
+ const sourcePath = path.join(pdfjsDistPath, 'build/pdf.worker.min.mjs');
14
+
15
+ // Target directory (customizable)
16
+ const targetDir = path.resolve(projectRoot, targetDirName);
17
+ const targetPath = path.join(targetDir, 'pdf.worker.min.js');
18
+
19
+ // Helper function to copy directory recursively
20
+ function copyDirectorySync(source, target) {
21
+ if (!fs.existsSync(source)) {
22
+ return false;
23
+ }
24
+
25
+ if (!fs.existsSync(target)) {
26
+ fs.mkdirSync(target, { recursive: true });
27
+ }
28
+
29
+ const files = fs.readdirSync(source);
30
+ for (const file of files) {
31
+ const sourcePath = path.join(source, file);
32
+ const targetPath = path.join(target, file);
33
+
34
+ if (fs.lstatSync(sourcePath).isDirectory()) {
35
+ copyDirectorySync(sourcePath, targetPath);
36
+ } else {
37
+ fs.copyFileSync(sourcePath, targetPath);
38
+ }
39
+ }
40
+ return true;
41
+ }
42
+
43
+ // Additional folders to copy
44
+ const foldersToSync = [
45
+ { source: 'cmaps', target: 'cmaps' },
46
+ { source: 'standard_fonts', target: 'standard_fonts' },
47
+ { source: 'wasm', target: 'wasm' },
48
+ { source: 'iccs', target: 'iccs' },
49
+ ];
50
+
51
+ // Create target directory if it doesn't exist
52
+ if (!fs.existsSync(targetDir)) {
53
+ fs.mkdirSync(targetDir, { recursive: true });
54
+ console.log(`📁 Created ${targetDirName} directory`);
55
+ }
56
+
57
+ // Copy the worker file
58
+ try {
59
+ if (!fs.existsSync(sourcePath)) {
60
+ console.error('❌ Failed to copy PDF worker: PDF worker not found at:');
61
+ console.error(` ${sourcePath}`);
62
+ throw new Error('Make sure pdfjs-dist is installed in @cyber-harbour/ui dependency.');
63
+ }
64
+
65
+ console.log(`📄 Found PDF worker at: ${sourcePath}`);
66
+ fs.copyFileSync(sourcePath, targetPath);
67
+ console.log(`✅ PDF worker copied successfully to ${targetDirName}/pdf.worker.min.js`);
68
+
69
+ // Copy additional folders
70
+ let copiedFolders = [];
71
+ for (const folder of foldersToSync) {
72
+ const sourceFolderPath = path.join(pdfjsDistPath, folder.source);
73
+ const targetFolderPath = path.join(targetDir, folder.target);
74
+
75
+ if (copyDirectorySync(sourceFolderPath, targetFolderPath)) {
76
+ if (!copiedFolders.includes(folder.target)) {
77
+ copiedFolders.push(folder.target);
78
+ console.log(`✅ ${folder.target} folder copied successfully`);
79
+ }
80
+ } else if (!folder.fallback) {
81
+ console.warn(`⚠️ ${folder.source} folder not found at: ${sourceFolderPath}`);
82
+ }
83
+ }
84
+
85
+ // Copy wasm files if they exist
86
+ const wasmSourcePath = path.join(pdfjsDistPath, 'build');
87
+ const wasmTargetPath = path.join(targetDir, 'wasm');
88
+
89
+ if (fs.existsSync(wasmSourcePath)) {
90
+ if (!fs.existsSync(wasmTargetPath)) {
91
+ fs.mkdirSync(wasmTargetPath, { recursive: true });
92
+ }
93
+
94
+ // Look for wasm files in the build directory
95
+ const buildFiles = fs.readdirSync(wasmSourcePath);
96
+ const wasmFiles = buildFiles.filter((file) => file.endsWith('.wasm'));
97
+
98
+ if (wasmFiles.length > 0) {
99
+ wasmFiles.forEach((wasmFile) => {
100
+ const sourceWasmPath = path.join(wasmSourcePath, wasmFile);
101
+ const targetWasmPath = path.join(wasmTargetPath, wasmFile);
102
+ fs.copyFileSync(sourceWasmPath, targetWasmPath);
103
+ });
104
+ console.log(`✅ WASM files copied successfully (${wasmFiles.length} files)`);
105
+ copiedFolders.push('wasm');
106
+ }
107
+ }
108
+
109
+ // Copy ICC profiles if they exist
110
+ const iccPossiblePaths = [path.join(pdfjsDistPath, 'icc'), path.join(pdfjsDistPath, 'web/icc')];
111
+
112
+ for (const iccSourcePath of iccPossiblePaths) {
113
+ if (fs.existsSync(iccSourcePath)) {
114
+ const iccTargetPath = path.join(targetDir, 'icc');
115
+ if (copyDirectorySync(iccSourcePath, iccTargetPath)) {
116
+ console.log(`✅ ICC profiles copied successfully`);
117
+ copiedFolders.push('icc');
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ console.log(
123
+ `💡 Make sure to configure your app to load the worker from /${targetDirName.replace(
124
+ /^public\//,
125
+ ''
126
+ )}/pdf.worker.min.js`
127
+ );
128
+
129
+ // Additional info for different frameworks
130
+ console.log('\n📋 Integration examples:');
131
+ console.log('React/Next.js: Configure worker URL in your PDF component');
132
+ console.log('Vite: Worker will be available at /pdfjs/pdf.worker.min.js');
133
+ console.log('Custom: Use the path specified above');
134
+
135
+ console.log('\n📁 Available resources:');
136
+ console.log('- pdf.worker.min.js (PDF worker)');
137
+ if (copiedFolders.includes('cmaps')) console.log('- cmaps/ (character maps)');
138
+ if (copiedFolders.includes('standard_fonts')) console.log('- standard_fonts/ (standard fonts)');
139
+ if (copiedFolders.includes('wasm')) console.log('- wasm/ (WebAssembly files)');
140
+ if (copiedFolders.includes('icc')) console.log('- icc/ (ICC color profiles)');
141
+ } catch (error) {
142
+ console.error('❌ Failed to copy PDF resources:', error.message);
143
+ console.error('\n🔧 Troubleshooting:');
144
+ console.error('1. Make sure @cyber-harbour/ui has pdfjs-dist as dependency');
145
+ console.error('2. Run this command from your project root directory');
146
+ console.error('3. Check that you have write permissions in the target directory');
147
+ console.error('\n📍 Checked location:');
148
+ const exists = fs.existsSync(sourcePath);
149
+ console.error(` ${exists ? '✅' : '❌'} ${sourcePath}`);
150
+ process.exit(1);
151
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunkVMUGTG7N_js=require('./chunk-VMUGTG7N.js'),react=require('react'),reactPdf=require('react-pdf');require('react-pdf/dist/Page/AnnotationLayer.css'),require('react-pdf/dist/Page/TextLayer.css');var jsxRuntime=require('react/jsx-runtime');var a="/pdfjs";typeof window<"u"&&typeof document<"u"&&(reactPdf.pdfjs.GlobalWorkerOptions.workerSrc=`${a}/pdf.worker.min.js`);var U=chunkVMUGTG7N_js.a(({url:p})=>{let[t,v]=react.useState(0),[s,c]=react.useState(1),[g,u]=react.useState(true),[m,x]=react.useState(null),w=react.useMemo(()=>({cMapPacked:true,cMapUrl:`${a}/cmaps/`,standardFontDataUrl:`${a}/standard_fonts/`,wasmUrl:`${a}/wasm/`,iccUrl:`${a}/icc/`}),[]);function b({numPages:o}){v(o),u(false);}chunkVMUGTG7N_js.a(b,"onDocumentLoadSuccess");function P(o){x(`Failed to load PDF: ${o.message}`),u(false);}chunkVMUGTG7N_js.a(P,"onDocumentLoadError");function f(o){c(n=>n+o);}chunkVMUGTG7N_js.a(f,"changePage");function y(){f(-1);}chunkVMUGTG7N_js.a(y,"previousPage");function k(){f(1);}return chunkVMUGTG7N_js.a(k,"nextPage"),m?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-red-500 text-center",children:jsxRuntime.jsx("p",{children:m})})}):jsxRuntime.jsxs("div",{className:"h-full w-full flex flex-col",children:[g&&jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),t>0&&jsxRuntime.jsxs("div",{className:"flex items-center justify-center gap-4 p-4",children:[jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:s<=1,onClick:y,icon:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m15 18-6-6 6-6"})})}),jsxRuntime.jsxs("span",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("input",{type:"number",min:1,max:t,value:s,onChange:o=>{let n=parseInt(o.target.value,10);n>=1&&n<=t&&c(n);},className:"w-16 px-2 py-1 border rounded text-center"}),"/ ",t]}),jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:s>=t,onClick:k,icon:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m9 18 6-6-6-6"})})})]}),jsxRuntime.jsx("div",{className:"flex-1 flex justify-center overflow-auto",children:jsxRuntime.jsx(reactPdf.Document,{options:w,file:p,onLoadSuccess:b,onLoadError:P,loading:"",children:jsxRuntime.jsx(reactPdf.Page,{pageNumber:s,renderTextLayer:true,renderAnnotationLayer:true,className:"max-w-full max-h-full"})})})]})},"PdfDriver");
2
+ exports.PdfDriver=U;//# sourceMappingURL=PdfDriver-QWA7JRSC.js.map
3
+ //# sourceMappingURL=PdfDriver-QWA7JRSC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","options","useMemo","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","Document","Page"],"mappings":"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","file":"PdfDriver-QWA7JRSC.js","sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Button } from '../../../Core';\n\nconst BASE_DIR = '/pdfjs';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n pdfjs.GlobalWorkerOptions.workerSrc = `${BASE_DIR}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n}\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n\n const options = useMemo(\n () => ({\n cMapPacked: true,\n cMapUrl: `${BASE_DIR}/cmaps/`,\n standardFontDataUrl: `${BASE_DIR}/standard_fonts/`,\n wasmUrl: `${BASE_DIR}/wasm/`,\n iccUrl: `${BASE_DIR}/icc/`,\n }),\n []\n );\n\n //TODO: add fix 100px problem;\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {\n setNumPages(numPages);\n setLoading(false);\n }\n\n function onDocumentLoadError(error: Error): void {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }\n\n function changePage(offset: number): void {\n setPageNumber((prevPageNumber) => prevPageNumber + offset);\n }\n\n function previousPage(): void {\n changePage(-1);\n }\n\n function nextPage(): void {\n changePage(1);\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col\">\n {loading && (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-gray-500\">Loading PDF...</div>\n </div>\n )}\n {numPages > 0 && (\n <div className=\"flex items-center justify-center gap-4 p-4\">\n <Button\n variant=\"outlined\"\n aria-label=\"previous page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber <= 1}\n onClick={previousPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n }\n />\n\n <span className=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min={1}\n max={numPages}\n value={pageNumber}\n onChange={(e) => {\n const page = parseInt(e.target.value, 10);\n if (page >= 1 && page <= numPages) {\n setPageNumber(page);\n }\n }}\n className=\"w-16 px-2 py-1 border rounded text-center\"\n />\n / {numPages}\n </span>\n <Button\n variant=\"outlined\"\n aria-label=\"next page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber >= numPages}\n onClick={nextPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n }\n />\n </div>\n )}\n <div className=\"flex-1 flex justify-center overflow-auto\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className=\"max-w-full max-h-full\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import {a as a$1,z}from'./chunk-GLKANQJX.mjs';import {useState,useMemo}from'react';import {pdfjs,Document,Page}from'react-pdf';import'react-pdf/dist/Page/AnnotationLayer.css';import'react-pdf/dist/Page/TextLayer.css';import {jsx,jsxs}from'react/jsx-runtime';var a="/pdfjs";typeof window<"u"&&typeof document<"u"&&(pdfjs.GlobalWorkerOptions.workerSrc=`${a}/pdf.worker.min.js`);var B=a$1(({url:p})=>{let[t,v]=useState(0),[s,c]=useState(1),[g,u]=useState(true),[m,x]=useState(null),w=useMemo(()=>({cMapPacked:true,cMapUrl:`${a}/cmaps/`,standardFontDataUrl:`${a}/standard_fonts/`,wasmUrl:`${a}/wasm/`,iccUrl:`${a}/icc/`}),[]);function b({numPages:o}){v(o),u(false);}a$1(b,"onDocumentLoadSuccess");function P(o){x(`Failed to load PDF: ${o.message}`),u(false);}a$1(P,"onDocumentLoadError");function f(o){c(n=>n+o);}a$1(f,"changePage");function y(){f(-1);}a$1(y,"previousPage");function k(){f(1);}return a$1(k,"nextPage"),m?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:m})})}):jsxs("div",{className:"h-full w-full flex flex-col",children:[g&&jsx("div",{className:"flex items-center justify-center h-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),t>0&&jsxs("div",{className:"flex items-center justify-center gap-4 p-4",children:[jsx(z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:s<=1,onClick:y,icon:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"m15 18-6-6 6-6"})})}),jsxs("span",{className:"flex items-center gap-2",children:[jsx("input",{type:"number",min:1,max:t,value:s,onChange:o=>{let n=parseInt(o.target.value,10);n>=1&&n<=t&&c(n);},className:"w-16 px-2 py-1 border rounded text-center"}),"/ ",t]}),jsx(z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:s>=t,onClick:k,icon:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"m9 18 6-6-6-6"})})})]}),jsx("div",{className:"flex-1 flex justify-center overflow-auto",children:jsx(Document,{options:w,file:p,onLoadSuccess:b,onLoadError:P,loading:"",children:jsx(Page,{pageNumber:s,renderTextLayer:true,renderAnnotationLayer:true,className:"max-w-full max-h-full"})})})]})},"PdfDriver");
2
+ export{B as PdfDriver};//# sourceMappingURL=PdfDriver-W76VTBJI.mjs.map
3
+ //# sourceMappingURL=PdfDriver-W76VTBJI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","options","useMemo","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","Document","Page"],"mappings":"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","file":"PdfDriver-W76VTBJI.mjs","sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Button } from '../../../Core';\n\nconst BASE_DIR = '/pdfjs';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n pdfjs.GlobalWorkerOptions.workerSrc = `${BASE_DIR}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n}\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n\n const options = useMemo(\n () => ({\n cMapPacked: true,\n cMapUrl: `${BASE_DIR}/cmaps/`,\n standardFontDataUrl: `${BASE_DIR}/standard_fonts/`,\n wasmUrl: `${BASE_DIR}/wasm/`,\n iccUrl: `${BASE_DIR}/icc/`,\n }),\n []\n );\n\n //TODO: add fix 100px problem;\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {\n setNumPages(numPages);\n setLoading(false);\n }\n\n function onDocumentLoadError(error: Error): void {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }\n\n function changePage(offset: number): void {\n setPageNumber((prevPageNumber) => prevPageNumber + offset);\n }\n\n function previousPage(): void {\n changePage(-1);\n }\n\n function nextPage(): void {\n changePage(1);\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col\">\n {loading && (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-gray-500\">Loading PDF...</div>\n </div>\n )}\n {numPages > 0 && (\n <div className=\"flex items-center justify-center gap-4 p-4\">\n <Button\n variant=\"outlined\"\n aria-label=\"previous page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber <= 1}\n onClick={previousPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n }\n />\n\n <span className=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min={1}\n max={numPages}\n value={pageNumber}\n onChange={(e) => {\n const page = parseInt(e.target.value, 10);\n if (page >= 1 && page <= numPages) {\n setPageNumber(page);\n }\n }}\n className=\"w-16 px-2 py-1 border rounded text-center\"\n />\n / {numPages}\n </span>\n <Button\n variant=\"outlined\"\n aria-label=\"next page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber >= numPages}\n onClick={nextPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n }\n />\n </div>\n )}\n <div className=\"flex-1 flex justify-center overflow-auto\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className=\"max-w-full max-h-full\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
package/dist/index.js CHANGED
@@ -63,5 +63,5 @@ ${h?`
63
63
  `:""}
64
64
 
65
65
  min-width: 0;
66
- `);var ct=chunkVMUGTG7N_js.a(({url:h})=>{let[u,m]=at.useState(1),[P,D]=at.useState(),k=at__default.default.useRef(null),v=at__default.default.useRef(null),$=chunkVMUGTG7N_js.a(()=>{m(A=>Math.min(A+.25,4));},"handleZoomIn");return jsxRuntime.jsxs("div",{ref:v,className:"h-full w-full flex flex-col",children:[jsxRuntime.jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkVMUGTG7N_js.Pa,{style:{width:20,height:20}}),onClick:chunkVMUGTG7N_js.a(()=>{m(A=>Math.max(A-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxRuntime.jsxs(chunkVMUGTG7N_js.mb,{py:5,px:8,children:[u*100,"%"]}),jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkVMUGTG7N_js.ma,{style:{width:14,height:14}}),onClick:$,disabled:u>=4,p:8})]}),jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsxRuntime.jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...P==="width"&&{width:`calc(${u*100}% - 20px)`},...P==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&v.current){let A=k.current.width,X=k.current.height,S=A<X?"height":"width";D(S);}}})})]})},"ImageDriver");var dt=chunkVMUGTG7N_js.a(({url:h})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsxRuntime.jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Te=chunkVMUGTG7N_js.a(({url:h})=>{let[u,m]=at.useState(null),[P,D]=at.useState(false),[k,v]=at.useState(true),[$,H]=at.useState(null);return at.useEffect(()=>{D(true);},[]),at.useEffect(()=>{if(!P)return;chunkVMUGTG7N_js.a(async()=>{try{let X=await import('./PdfDriver-22EOQUD5.js');m(()=>X.PdfDriver),v(!1);}catch(X){console.error("Failed to load PDF driver:",X),H("Failed to load PDF viewer"),v(false);}},"loadPdfDriver")();},[P]),P?k?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):$||!u?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-red-500 text-center",children:jsxRuntime.jsx("p",{children:$||"PDF viewer unavailable"})})}):jsxRuntime.jsx(u,{url:h}):jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ht=chunkVMUGTG7N_js.a(({url:h,extension:u})=>jsxRuntime.jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,wr=1e4,gt=chunkVMUGTG7N_js.a(({url:h,blob:u})=>{let m=at.useRef(null),[P,D]=at.useState(null),[k,v]=at.useState(true);return at.useEffect(()=>{chunkVMUGTG7N_js.a(async()=>{if(m.current)try{if(v(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let A=docxPreview.renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),X=new Promise((S,G)=>setTimeout(()=>G(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),wr));await Promise.race([A,X]),v(!1);}catch(H){D(H?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),v(false);}},"renderDocument")();},[h,u]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!!P&&!k&&jsxRuntime.jsx("div",{className:"text-red-500 p-5",children:P}),k&&jsxRuntime.jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsxRuntime.jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Dr=chunkVMUGTG7N_js.a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),mt=chunkVMUGTG7N_js.a(({url:h,extension:u})=>{let[m,P]=at.useState(""),[D,k]=at.useState(true),[v,$]=at.useState(null);if(at.useEffect(()=>{chunkVMUGTG7N_js.a(async()=>{try{k(!0),$(null);let S=await fetch(h);if(!S.ok)throw new Error(`Failed to load file: ${S.statusText}`);let G=await S.text();P(G);}catch(S){$(S instanceof Error?S.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(v)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsxs("div",{className:"text-red-500",children:["Error: ",v]})});let H=Dr(u);return jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto",children:H!=="text"?jsxRuntime.jsx(reactSyntaxHighlighter.Prism,{className:"min-h-full! m-0! py-0!",language:H,style:prism.darcula,showLineNumbers:true,wrapLines:true,children:m}):jsxRuntime.jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var bt=chunkVMUGTG7N_js.a(({url:h})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsxRuntime.jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var vt=at.memo(chunkVMUGTG7N_js.a(function({extension:u,blob:m,path:P,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:P,buffer:D});let k=u.toLocaleLowerCase().trim(),v;if(P?v=P:m&&(v=URL.createObjectURL(m)),v){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsxRuntime.jsx(ct,{url:v});if(["mp3","wav","ogg","flac"].includes(k))return jsxRuntime.jsx(dt,{url:v});if(["mp4","webm"].includes(k))return jsxRuntime.jsx(bt,{url:v});if(u==="pdf")return jsxRuntime.jsx(Te,{url:v});if(["xlsx","pptx"].includes(k))return jsxRuntime.jsx(ht,{url:v,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsxRuntime.jsx(mt,{url:v,extension:k})}return k==="docx"?jsxRuntime.jsx(gt,{url:v,blob:m}):jsxRuntime.jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsxRuntime.jsx(chunkVMUGTG7N_js.mb,{children:jsxRuntime.jsx(chunkVMUGTG7N_js.Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var xs=chunkVMUGTG7N_js.a(h=>jsxRuntime.jsx("div",{className:"h-full w-full",children:jsxRuntime.jsx(vt,{...h})}),"FileViewer");var zs=chunkVMUGTG7N_js.a(({text:h,speed:u=50,onDone:m,markdown:P=false,markdownComponents:D={},className:k,...v})=>{let[$,H]=at.useState("");return at.useEffect(()=>{let A=0,X=setInterval(()=>{let S=h.charAt(A);H(G=>G+S),A++,A>=h.length&&(clearInterval(X),m?.());},u);return ()=>clearInterval(X)},[h,u,m]),at.useEffect(()=>{H("");},[h]),P?jsxRuntime.jsx("div",{className:k,children:jsxRuntime.jsx(Lr__default.default,{remarkPlugins:[jr__default.default],components:D,...v,children:$})}):jsxRuntime.jsx(chunkVMUGTG7N_js.Wa,{className:k,...v,children:$})},"Typewriter");Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkVMUGTG7N_js.qb}});Object.defineProperty(exports,"AlertIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.A}});Object.defineProperty(exports,"AndroidIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.za}});Object.defineProperty(exports,"ApiIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.B}});Object.defineProperty(exports,"ArrowCircleTopRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.C}});Object.defineProperty(exports,"ArrowRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.D}});Object.defineProperty(exports,"BallsMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ia}});Object.defineProperty(exports,"Box",{enumerable:true,get:function(){return chunkVMUGTG7N_js.mb}});Object.defineProperty(exports,"BreakpointProvider",{enumerable:true,get:function(){return chunkVMUGTG7N_js.q}});Object.defineProperty(exports,"BugReportIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.E}});Object.defineProperty(exports,"BurgerMenuIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Na}});Object.defineProperty(exports,"BusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.sa}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunkVMUGTG7N_js.z}});Object.defineProperty(exports,"CalendarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.F}});Object.defineProperty(exports,"CarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ta}});Object.defineProperty(exports,"ChatField",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Gb}});Object.defineProperty(exports,"CheckIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ja}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkVMUGTG7N_js.sb}});Object.defineProperty(exports,"ChevronDownIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ka}});Object.defineProperty(exports,"ChevronLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.G}});Object.defineProperty(exports,"ChevronRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.H}});Object.defineProperty(exports,"ChevronUpIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.la}});Object.defineProperty(exports,"ClockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Oa}});Object.defineProperty(exports,"CloseCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.I}});Object.defineProperty(exports,"ClosedLockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.J}});Object.defineProperty(exports,"ContentLoader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.zb}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.db}});Object.defineProperty(exports,"ContextMenuDelimiter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.eb}});Object.defineProperty(exports,"CrossIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.qa}});Object.defineProperty(exports,"DataSetsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.K}});Object.defineProperty(exports,"DeepSearchIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.L}});Object.defineProperty(exports,"DisabledVisibleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.M}});Object.defineProperty(exports,"DocsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.N}});Object.defineProperty(exports,"DownloadIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.O}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunkVMUGTG7N_js.vb}});Object.defineProperty(exports,"DrawerBody",{enumerable:true,get:function(){return chunkVMUGTG7N_js.xb}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.wb}});Object.defineProperty(exports,"EditUserIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.P}});Object.defineProperty(exports,"EmptyData",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ob}});Object.defineProperty(exports,"EnableVisibleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Q}});Object.defineProperty(exports,"EnterArrowLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.R}});Object.defineProperty(exports,"FileField",{enumerable:true,get:function(){return chunkVMUGTG7N_js.jb}});Object.defineProperty(exports,"FileIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.xa}});Object.defineProperty(exports,"FiltersIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.S}});Object.defineProperty(exports,"FlashIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ia}});Object.defineProperty(exports,"FlexContainer",{enumerable:true,get:function(){return chunkVMUGTG7N_js.kb}});Object.defineProperty(exports,"FlexItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.lb}});Object.defineProperty(exports,"FolderAlertIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ba}});Object.defineProperty(exports,"FolderInfoIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ja}});Object.defineProperty(exports,"Header",{enumerable:true,get:function(){return chunkVMUGTG7N_js._a}});Object.defineProperty(exports,"HeaderDelimeter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.$a}});Object.defineProperty(exports,"HeaderSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ab}});Object.defineProperty(exports,"HomepageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.T}});Object.defineProperty(exports,"ImageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Qa}});Object.defineProperty(exports,"InfoCircleFilledIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.oa}});Object.defineProperty(exports,"InfoCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.U}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ib}});Object.defineProperty(exports,"IosIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ya}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkVMUGTG7N_js.rb}});Object.defineProperty(exports,"Line",{enumerable:true,get:function(){return chunkVMUGTG7N_js.nb}});Object.defineProperty(exports,"LinerProgress",{enumerable:true,get:function(){return chunkVMUGTG7N_js.tb}});Object.defineProperty(exports,"ListMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Xa}});Object.defineProperty(exports,"ListMenuItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ya}});Object.defineProperty(exports,"ListMenuSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Za}});Object.defineProperty(exports,"MapRadarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.V}});Object.defineProperty(exports,"MaximizeIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ra}});Object.defineProperty(exports,"MicrosoftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Aa}});Object.defineProperty(exports,"MinusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Pa}});Object.defineProperty(exports,"Modal",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Bb}});Object.defineProperty(exports,"ModalBody",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Db}});Object.defineProperty(exports,"ModalFooter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Eb}});Object.defineProperty(exports,"ModalHeader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Cb}});Object.defineProperty(exports,"MoonIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.W}});Object.defineProperty(exports,"OpenLockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.X}});Object.defineProperty(exports,"OrganizationIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Y}});Object.defineProperty(exports,"Overlay",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ab}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkVMUGTG7N_js.cb}});Object.defineProperty(exports,"PassportIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ea}});Object.defineProperty(exports,"PasswordFinderIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Z}});Object.defineProperty(exports,"PencilIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ga}});Object.defineProperty(exports,"PhonebookIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js._}});Object.defineProperty(exports,"PlaneIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.va}});Object.defineProperty(exports,"PlusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ma}});Object.defineProperty(exports,"PointIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Fa}});Object.defineProperty(exports,"PrintIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.$}});Object.defineProperty(exports,"Profiler2Icon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.aa}});Object.defineProperty(exports,"ProfilerIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ba}});Object.defineProperty(exports,"ProgressLoader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Hb}});Object.defineProperty(exports,"RelationIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ca}});Object.defineProperty(exports,"RelationPointsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Da}});Object.defineProperty(exports,"RotateLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ka}});Object.defineProperty(exports,"RotateRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.La}});Object.defineProperty(exports,"RowActionsMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.hb}});Object.defineProperty(exports,"SandBoxIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ca}});Object.defineProperty(exports,"SearchIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.da}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkVMUGTG7N_js.gb}});Object.defineProperty(exports,"ShipIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.wa}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Sa}});Object.defineProperty(exports,"SidebarContext",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ra}});Object.defineProperty(exports,"SidebarDelimeter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ua}});Object.defineProperty(exports,"SidebarItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ta}});Object.defineProperty(exports,"SidebarSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Va}});Object.defineProperty(exports,"StatisticIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ea}});Object.defineProperty(exports,"SunIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.fa}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ub}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkVMUGTG7N_js.bb}});Object.defineProperty(exports,"Tag",{enumerable:true,get:function(){return chunkVMUGTG7N_js.pb}});Object.defineProperty(exports,"TailwindExample",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Fb}});Object.defineProperty(exports,"ThemeProvider",{enumerable:true,get:function(){return chunkVMUGTG7N_js.s}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkVMUGTG7N_js.yb}});Object.defineProperty(exports,"Typography",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Wa}});Object.defineProperty(exports,"UnfoldIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.pa}});Object.defineProperty(exports,"UpRightArrowCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ga}});Object.defineProperty(exports,"UploadImageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ma}});Object.defineProperty(exports,"UserInCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ha}});Object.defineProperty(exports,"UsersIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.na}});Object.defineProperty(exports,"VectorIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ha}});Object.defineProperty(exports,"WayIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ua}});Object.defineProperty(exports,"convertPaletteToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.f}});Object.defineProperty(exports,"createComponent",{enumerable:true,get:function(){return chunkVMUGTG7N_js.w}});Object.defineProperty(exports,"createStyledComponent",{enumerable:true,get:function(){return chunkVMUGTG7N_js.x}});Object.defineProperty(exports,"darkTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.p}});Object.defineProperty(exports,"darkThemePx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.o}});Object.defineProperty(exports,"destructSpaceProps",{enumerable:true,get:function(){return chunkVMUGTG7N_js.t}});Object.defineProperty(exports,"generatePropertySpaceStyle",{enumerable:true,get:function(){return chunkVMUGTG7N_js.u}});Object.defineProperty(exports,"getBreakpoint",{enumerable:true,get:function(){return chunkVMUGTG7N_js.k}});Object.defineProperty(exports,"getButtonSizeStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.h}});Object.defineProperty(exports,"getButtonStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.g}});Object.defineProperty(exports,"getInputStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.i}});Object.defineProperty(exports,"getResponsiveProps",{enumerable:true,get:function(){return chunkVMUGTG7N_js.v}});Object.defineProperty(exports,"getTypographyStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.j}});Object.defineProperty(exports,"hexToRgba",{enumerable:true,get:function(){return chunkVMUGTG7N_js.l}});Object.defineProperty(exports,"lightTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.n}});Object.defineProperty(exports,"lightThemePx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.m}});Object.defineProperty(exports,"propToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.e}});Object.defineProperty(exports,"pxToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.c}});Object.defineProperty(exports,"remToPx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.d}});Object.defineProperty(exports,"resolveThemeColor",{enumerable:true,get:function(){return chunkVMUGTG7N_js.b}});Object.defineProperty(exports,"useBreakpoint",{enumerable:true,get:function(){return chunkVMUGTG7N_js.r}});Object.defineProperty(exports,"useContextMenuControl",{enumerable:true,get:function(){return chunkVMUGTG7N_js.fb}});Object.defineProperty(exports,"useTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.y}});Object.defineProperty(exports,"ServerStyleSheet",{enumerable:true,get:function(){return Xt.ServerStyleSheet}});Object.defineProperty(exports,"StyleSheetManager",{enumerable:true,get:function(){return Xt.StyleSheetManager}});exports.Container=ji;exports.FileViewer=xs;exports.FullscreenCard=pa;exports.Graph2D=lr;exports.PageContent=hi;exports.PageLayout=ai;exports.Styled=Ft;exports.StyledContainer=Lt;exports.StyledMain=Rt;exports.SubNav=bi;exports.Typewriter=zs;//# sourceMappingURL=index.js.map
66
+ `);var ct=chunkVMUGTG7N_js.a(({url:h})=>{let[u,m]=at.useState(1),[P,D]=at.useState(),k=at__default.default.useRef(null),v=at__default.default.useRef(null),$=chunkVMUGTG7N_js.a(()=>{m(A=>Math.min(A+.25,4));},"handleZoomIn");return jsxRuntime.jsxs("div",{ref:v,className:"h-full w-full flex flex-col",children:[jsxRuntime.jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkVMUGTG7N_js.Pa,{style:{width:20,height:20}}),onClick:chunkVMUGTG7N_js.a(()=>{m(A=>Math.max(A-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxRuntime.jsxs(chunkVMUGTG7N_js.mb,{py:5,px:8,children:[u*100,"%"]}),jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkVMUGTG7N_js.ma,{style:{width:14,height:14}}),onClick:$,disabled:u>=4,p:8})]}),jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsxRuntime.jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...P==="width"&&{width:`calc(${u*100}% - 20px)`},...P==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&v.current){let A=k.current.width,X=k.current.height,S=A<X?"height":"width";D(S);}}})})]})},"ImageDriver");var dt=chunkVMUGTG7N_js.a(({url:h})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsxRuntime.jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Te=chunkVMUGTG7N_js.a(({url:h})=>{let[u,m]=at.useState(null),[P,D]=at.useState(false),[k,v]=at.useState(true),[$,H]=at.useState(null);return at.useEffect(()=>{D(true);},[]),at.useEffect(()=>{if(!P)return;chunkVMUGTG7N_js.a(async()=>{try{let X=await import('./PdfDriver-QWA7JRSC.js');m(()=>X.PdfDriver),v(!1);}catch(X){console.error("Failed to load PDF driver:",X),H("Failed to load PDF viewer"),v(false);}},"loadPdfDriver")();},[P]),P?k?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):$||!u?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-red-500 text-center",children:jsxRuntime.jsx("p",{children:$||"PDF viewer unavailable"})})}):jsxRuntime.jsx(u,{url:h}):jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ht=chunkVMUGTG7N_js.a(({url:h,extension:u})=>jsxRuntime.jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,wr=1e4,gt=chunkVMUGTG7N_js.a(({url:h,blob:u})=>{let m=at.useRef(null),[P,D]=at.useState(null),[k,v]=at.useState(true);return at.useEffect(()=>{chunkVMUGTG7N_js.a(async()=>{if(m.current)try{if(v(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let A=docxPreview.renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),X=new Promise((S,G)=>setTimeout(()=>G(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),wr));await Promise.race([A,X]),v(!1);}catch(H){D(H?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),v(false);}},"renderDocument")();},[h,u]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!!P&&!k&&jsxRuntime.jsx("div",{className:"text-red-500 p-5",children:P}),k&&jsxRuntime.jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsxRuntime.jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Dr=chunkVMUGTG7N_js.a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),mt=chunkVMUGTG7N_js.a(({url:h,extension:u})=>{let[m,P]=at.useState(""),[D,k]=at.useState(true),[v,$]=at.useState(null);if(at.useEffect(()=>{chunkVMUGTG7N_js.a(async()=>{try{k(!0),$(null);let S=await fetch(h);if(!S.ok)throw new Error(`Failed to load file: ${S.statusText}`);let G=await S.text();P(G);}catch(S){$(S instanceof Error?S.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(v)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsxs("div",{className:"text-red-500",children:["Error: ",v]})});let H=Dr(u);return jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto",children:H!=="text"?jsxRuntime.jsx(reactSyntaxHighlighter.Prism,{className:"min-h-full! m-0! py-0!",language:H,style:prism.darcula,showLineNumbers:true,wrapLines:true,children:m}):jsxRuntime.jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var bt=chunkVMUGTG7N_js.a(({url:h})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsxRuntime.jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var vt=at.memo(chunkVMUGTG7N_js.a(function({extension:u,blob:m,path:P,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:P,buffer:D});let k=u.toLocaleLowerCase().trim(),v;if(P?v=P:m&&(v=URL.createObjectURL(m)),v){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsxRuntime.jsx(ct,{url:v});if(["mp3","wav","ogg","flac"].includes(k))return jsxRuntime.jsx(dt,{url:v});if(["mp4","webm"].includes(k))return jsxRuntime.jsx(bt,{url:v});if(u==="pdf")return jsxRuntime.jsx(Te,{url:v});if(["xlsx","pptx"].includes(k))return jsxRuntime.jsx(ht,{url:v,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsxRuntime.jsx(mt,{url:v,extension:k})}return k==="docx"?jsxRuntime.jsx(gt,{url:v,blob:m}):jsxRuntime.jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsxRuntime.jsx(chunkVMUGTG7N_js.mb,{children:jsxRuntime.jsx(chunkVMUGTG7N_js.Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var xs=chunkVMUGTG7N_js.a(h=>jsxRuntime.jsx("div",{className:"h-full w-full",children:jsxRuntime.jsx(vt,{...h})}),"FileViewer");var zs=chunkVMUGTG7N_js.a(({text:h,speed:u=50,onDone:m,markdown:P=false,markdownComponents:D={},className:k,...v})=>{let[$,H]=at.useState("");return at.useEffect(()=>{let A=0,X=setInterval(()=>{let S=h.charAt(A);H(G=>G+S),A++,A>=h.length&&(clearInterval(X),m?.());},u);return ()=>clearInterval(X)},[h,u,m]),at.useEffect(()=>{H("");},[h]),P?jsxRuntime.jsx("div",{className:k,children:jsxRuntime.jsx(Lr__default.default,{remarkPlugins:[jr__default.default],components:D,...v,children:$})}):jsxRuntime.jsx(chunkVMUGTG7N_js.Wa,{className:k,...v,children:$})},"Typewriter");Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkVMUGTG7N_js.qb}});Object.defineProperty(exports,"AlertIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.A}});Object.defineProperty(exports,"AndroidIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.za}});Object.defineProperty(exports,"ApiIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.B}});Object.defineProperty(exports,"ArrowCircleTopRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.C}});Object.defineProperty(exports,"ArrowRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.D}});Object.defineProperty(exports,"BallsMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ia}});Object.defineProperty(exports,"Box",{enumerable:true,get:function(){return chunkVMUGTG7N_js.mb}});Object.defineProperty(exports,"BreakpointProvider",{enumerable:true,get:function(){return chunkVMUGTG7N_js.q}});Object.defineProperty(exports,"BugReportIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.E}});Object.defineProperty(exports,"BurgerMenuIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Na}});Object.defineProperty(exports,"BusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.sa}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunkVMUGTG7N_js.z}});Object.defineProperty(exports,"CalendarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.F}});Object.defineProperty(exports,"CarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ta}});Object.defineProperty(exports,"ChatField",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Gb}});Object.defineProperty(exports,"CheckIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ja}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkVMUGTG7N_js.sb}});Object.defineProperty(exports,"ChevronDownIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ka}});Object.defineProperty(exports,"ChevronLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.G}});Object.defineProperty(exports,"ChevronRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.H}});Object.defineProperty(exports,"ChevronUpIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.la}});Object.defineProperty(exports,"ClockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Oa}});Object.defineProperty(exports,"CloseCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.I}});Object.defineProperty(exports,"ClosedLockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.J}});Object.defineProperty(exports,"ContentLoader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.zb}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.db}});Object.defineProperty(exports,"ContextMenuDelimiter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.eb}});Object.defineProperty(exports,"CrossIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.qa}});Object.defineProperty(exports,"DataSetsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.K}});Object.defineProperty(exports,"DeepSearchIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.L}});Object.defineProperty(exports,"DisabledVisibleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.M}});Object.defineProperty(exports,"DocsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.N}});Object.defineProperty(exports,"DownloadIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.O}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunkVMUGTG7N_js.vb}});Object.defineProperty(exports,"DrawerBody",{enumerable:true,get:function(){return chunkVMUGTG7N_js.xb}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.wb}});Object.defineProperty(exports,"EditUserIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.P}});Object.defineProperty(exports,"EmptyData",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ob}});Object.defineProperty(exports,"EnableVisibleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Q}});Object.defineProperty(exports,"EnterArrowLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.R}});Object.defineProperty(exports,"FileField",{enumerable:true,get:function(){return chunkVMUGTG7N_js.jb}});Object.defineProperty(exports,"FileIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.xa}});Object.defineProperty(exports,"FiltersIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.S}});Object.defineProperty(exports,"FlashIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ia}});Object.defineProperty(exports,"FlexContainer",{enumerable:true,get:function(){return chunkVMUGTG7N_js.kb}});Object.defineProperty(exports,"FlexItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.lb}});Object.defineProperty(exports,"FolderAlertIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ba}});Object.defineProperty(exports,"FolderInfoIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ja}});Object.defineProperty(exports,"Header",{enumerable:true,get:function(){return chunkVMUGTG7N_js._a}});Object.defineProperty(exports,"HeaderDelimeter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.$a}});Object.defineProperty(exports,"HeaderSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ab}});Object.defineProperty(exports,"HomepageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.T}});Object.defineProperty(exports,"ImageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Qa}});Object.defineProperty(exports,"InfoCircleFilledIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.oa}});Object.defineProperty(exports,"InfoCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.U}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ib}});Object.defineProperty(exports,"IosIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ya}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkVMUGTG7N_js.rb}});Object.defineProperty(exports,"Line",{enumerable:true,get:function(){return chunkVMUGTG7N_js.nb}});Object.defineProperty(exports,"LinerProgress",{enumerable:true,get:function(){return chunkVMUGTG7N_js.tb}});Object.defineProperty(exports,"ListMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Xa}});Object.defineProperty(exports,"ListMenuItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ya}});Object.defineProperty(exports,"ListMenuSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Za}});Object.defineProperty(exports,"MapRadarIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.V}});Object.defineProperty(exports,"MaximizeIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ra}});Object.defineProperty(exports,"MicrosoftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Aa}});Object.defineProperty(exports,"MinusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Pa}});Object.defineProperty(exports,"Modal",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Bb}});Object.defineProperty(exports,"ModalBody",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Db}});Object.defineProperty(exports,"ModalFooter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Eb}});Object.defineProperty(exports,"ModalHeader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Cb}});Object.defineProperty(exports,"MoonIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.W}});Object.defineProperty(exports,"OpenLockIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.X}});Object.defineProperty(exports,"OrganizationIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Y}});Object.defineProperty(exports,"Overlay",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ab}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkVMUGTG7N_js.cb}});Object.defineProperty(exports,"PassportIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ea}});Object.defineProperty(exports,"PasswordFinderIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Z}});Object.defineProperty(exports,"PencilIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ga}});Object.defineProperty(exports,"PhonebookIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js._}});Object.defineProperty(exports,"PlaneIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.va}});Object.defineProperty(exports,"PlusIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ma}});Object.defineProperty(exports,"PointIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Fa}});Object.defineProperty(exports,"PrintIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.$}});Object.defineProperty(exports,"Profiler2Icon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.aa}});Object.defineProperty(exports,"ProfilerIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ba}});Object.defineProperty(exports,"ProgressLoader",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Hb}});Object.defineProperty(exports,"RelationIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ca}});Object.defineProperty(exports,"RelationPointsIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Da}});Object.defineProperty(exports,"RotateLeftIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ka}});Object.defineProperty(exports,"RotateRightIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.La}});Object.defineProperty(exports,"RowActionsMenu",{enumerable:true,get:function(){return chunkVMUGTG7N_js.hb}});Object.defineProperty(exports,"SandBoxIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ca}});Object.defineProperty(exports,"SearchIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.da}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkVMUGTG7N_js.gb}});Object.defineProperty(exports,"ShipIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.wa}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Sa}});Object.defineProperty(exports,"SidebarContext",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ra}});Object.defineProperty(exports,"SidebarDelimeter",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ua}});Object.defineProperty(exports,"SidebarItem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ta}});Object.defineProperty(exports,"SidebarSection",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Va}});Object.defineProperty(exports,"StatisticIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ea}});Object.defineProperty(exports,"SunIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.fa}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ub}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkVMUGTG7N_js.bb}});Object.defineProperty(exports,"Tag",{enumerable:true,get:function(){return chunkVMUGTG7N_js.pb}});Object.defineProperty(exports,"TailwindExample",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Fb}});Object.defineProperty(exports,"ThemeProvider",{enumerable:true,get:function(){return chunkVMUGTG7N_js.s}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkVMUGTG7N_js.yb}});Object.defineProperty(exports,"Typography",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Wa}});Object.defineProperty(exports,"UnfoldIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.pa}});Object.defineProperty(exports,"UpRightArrowCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ga}});Object.defineProperty(exports,"UploadImageIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ma}});Object.defineProperty(exports,"UserInCircleIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.Ha}});Object.defineProperty(exports,"UsersIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.na}});Object.defineProperty(exports,"VectorIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ha}});Object.defineProperty(exports,"WayIcon",{enumerable:true,get:function(){return chunkVMUGTG7N_js.ua}});Object.defineProperty(exports,"convertPaletteToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.f}});Object.defineProperty(exports,"createComponent",{enumerable:true,get:function(){return chunkVMUGTG7N_js.w}});Object.defineProperty(exports,"createStyledComponent",{enumerable:true,get:function(){return chunkVMUGTG7N_js.x}});Object.defineProperty(exports,"darkTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.p}});Object.defineProperty(exports,"darkThemePx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.o}});Object.defineProperty(exports,"destructSpaceProps",{enumerable:true,get:function(){return chunkVMUGTG7N_js.t}});Object.defineProperty(exports,"generatePropertySpaceStyle",{enumerable:true,get:function(){return chunkVMUGTG7N_js.u}});Object.defineProperty(exports,"getBreakpoint",{enumerable:true,get:function(){return chunkVMUGTG7N_js.k}});Object.defineProperty(exports,"getButtonSizeStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.h}});Object.defineProperty(exports,"getButtonStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.g}});Object.defineProperty(exports,"getInputStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.i}});Object.defineProperty(exports,"getResponsiveProps",{enumerable:true,get:function(){return chunkVMUGTG7N_js.v}});Object.defineProperty(exports,"getTypographyStyles",{enumerable:true,get:function(){return chunkVMUGTG7N_js.j}});Object.defineProperty(exports,"hexToRgba",{enumerable:true,get:function(){return chunkVMUGTG7N_js.l}});Object.defineProperty(exports,"lightTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.n}});Object.defineProperty(exports,"lightThemePx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.m}});Object.defineProperty(exports,"propToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.e}});Object.defineProperty(exports,"pxToRem",{enumerable:true,get:function(){return chunkVMUGTG7N_js.c}});Object.defineProperty(exports,"remToPx",{enumerable:true,get:function(){return chunkVMUGTG7N_js.d}});Object.defineProperty(exports,"resolveThemeColor",{enumerable:true,get:function(){return chunkVMUGTG7N_js.b}});Object.defineProperty(exports,"useBreakpoint",{enumerable:true,get:function(){return chunkVMUGTG7N_js.r}});Object.defineProperty(exports,"useContextMenuControl",{enumerable:true,get:function(){return chunkVMUGTG7N_js.fb}});Object.defineProperty(exports,"useTheme",{enumerable:true,get:function(){return chunkVMUGTG7N_js.y}});Object.defineProperty(exports,"ServerStyleSheet",{enumerable:true,get:function(){return Xt.ServerStyleSheet}});Object.defineProperty(exports,"StyleSheetManager",{enumerable:true,get:function(){return Xt.StyleSheetManager}});exports.Container=ji;exports.FileViewer=xs;exports.FullscreenCard=pa;exports.Graph2D=lr;exports.PageContent=hi;exports.PageLayout=ai;exports.Styled=Ft;exports.StyledContainer=Lt;exports.StyledMain=Rt;exports.SubNav=bi;exports.Typewriter=zs;//# sourceMappingURL=index.js.map
67
67
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -63,5 +63,5 @@ ${h?`
63
63
  `:""}
64
64
 
65
65
  min-width: 0;
66
- `);var st=a(({url:h})=>{let[u,m]=useState(1),[M,D]=useState(),k=it.useRef(null),v=it.useRef(null),$=a(()=>{m(A=>Math.min(A+.25,4));},"handleZoomIn");return jsxs("div",{ref:v,className:"h-full w-full flex flex-col",children:[jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:a(()=>{m(A=>Math.max(A-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxs(mb,{py:5,px:8,children:[u*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:$,disabled:u>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...M==="width"&&{width:`calc(${u*100}% - 20px)`},...M==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&v.current){let A=k.current.width,H=k.current.height,P=A<H?"height":"width";D(P);}}})})]})},"ImageDriver");var lt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Ce=a(({url:h})=>{let[u,m]=useState(null),[M,D]=useState(false),[k,v]=useState(true),[$,O]=useState(null);return useEffect(()=>{D(true);},[]),useEffect(()=>{if(!M)return;a(async()=>{try{let H=await import('./PdfDriver-5PZGCQXG.mjs');m(()=>H.PdfDriver),v(!1);}catch(H){console.error("Failed to load PDF driver:",H),O("Failed to load PDF viewer"),v(false);}},"loadPdfDriver")();},[M]),M?k?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):$||!u?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:$||"PDF viewer unavailable"})})}):jsx(u,{url:h}):jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ut=a(({url:h,extension:u})=>jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,vr=1e4,pt=a(({url:h,blob:u})=>{let m=useRef(null),[M,D]=useState(null),[k,v]=useState(true);return useEffect(()=>{a(async()=>{if(m.current)try{if(v(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let A=renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),H=new Promise((P,Y)=>setTimeout(()=>Y(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),vr));await Promise.race([A,H]),v(!1);}catch(O){D(O?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),v(false);}},"renderDocument")();},[h,u]),jsxs(Fragment,{children:[!!M&&!k&&jsx("div",{className:"text-red-500 p-5",children:M}),k&&jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Mr=a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),gt=a(({url:h,extension:u})=>{let[m,M]=useState(""),[D,k]=useState(true),[v,$]=useState(null);if(useEffect(()=>{a(async()=>{try{k(!0),$(null);let P=await fetch(h);if(!P.ok)throw new Error(`Failed to load file: ${P.statusText}`);let Y=await P.text();M(Y);}catch(P){$(P instanceof Error?P.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(v)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",v]})});let O=Mr(u);return jsx("div",{className:"h-full w-full overflow-auto",children:O!=="text"?jsx(Prism,{className:"min-h-full! m-0! py-0!",language:O,style:darcula,showLineNumbers:true,wrapLines:true,children:m}):jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var yt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var wt=memo(a(function({extension:u,blob:m,path:M,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:M,buffer:D});let k=u.toLocaleLowerCase().trim(),v;if(M?v=M:m&&(v=URL.createObjectURL(m)),v){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsx(st,{url:v});if(["mp3","wav","ogg","flac"].includes(k))return jsx(lt,{url:v});if(["mp4","webm"].includes(k))return jsx(yt,{url:v});if(u==="pdf")return jsx(Ce,{url:v});if(["xlsx","pptx"].includes(k))return jsx(ut,{url:v,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsx(gt,{url:v,extension:k})}return k==="docx"?jsx(pt,{url:v,blob:m}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(mb,{children:jsx(Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var Ja=a(h=>jsx("div",{className:"h-full w-full",children:jsx(wt,{...h})}),"FileViewer");var ds=a(({text:h,speed:u=50,onDone:m,markdown:M=false,markdownComponents:D={},className:k,...v})=>{let[$,O]=useState("");return useEffect(()=>{let A=0,H=setInterval(()=>{let P=h.charAt(A);O(Y=>Y+P),A++,A>=h.length&&(clearInterval(H),m?.());},u);return ()=>clearInterval(H)},[h,u,m]),useEffect(()=>{O("");},[h]),M?jsx("div",{className:k,children:jsx(Tr,{remarkPlugins:[Lr],components:D,...v,children:$})}):jsx(Wa,{className:k,...v,children:$})},"Typewriter");export{Di as Container,Ja as FileViewer,ta as FullscreenCard,cr as Graph2D,di as PageContent,ii as PageLayout,zt as Styled,Tt as StyledContainer,Rt as StyledMain,gi as SubNav,ds as Typewriter};//# sourceMappingURL=index.mjs.map
66
+ `);var st=a(({url:h})=>{let[u,m]=useState(1),[M,D]=useState(),k=it.useRef(null),v=it.useRef(null),$=a(()=>{m(A=>Math.min(A+.25,4));},"handleZoomIn");return jsxs("div",{ref:v,className:"h-full w-full flex flex-col",children:[jsxs("div",{className:"flex justify-center items-stretch p-5.5 gap-1 border-b border-gray-200 relative ",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:a(()=>{m(A=>Math.max(A-.25,.25));},"handleZoomOut"),disabled:u<=.25,p:5}),jsxs(mb,{py:5,px:8,children:[u*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:$,disabled:u>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto flex items-center justify-center",children:jsx("img",{src:h,ref:k,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"height 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...M==="width"&&{width:`calc(${u*100}% - 20px)`},...M==="height"&&{height:`calc(${u*100}% - 20px)`}},onLoad:()=>{if(k.current&&v.current){let A=k.current.width,H=k.current.height,P=A<H?"height":"width";D(P);}}})})]})},"ImageDriver");var lt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:h,className:"w-full"})}),"AudioDriver");var Ce=a(({url:h})=>{let[u,m]=useState(null),[M,D]=useState(false),[k,v]=useState(true),[$,O]=useState(null);return useEffect(()=>{D(true);},[]),useEffect(()=>{if(!M)return;a(async()=>{try{let H=await import('./PdfDriver-W76VTBJI.mjs');m(()=>H.PdfDriver),v(!1);}catch(H){console.error("Failed to load PDF driver:",H),O("Failed to load PDF viewer"),v(false);}},"loadPdfDriver")();},[M]),M?k?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):$||!u?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:$||"PDF viewer unavailable"})})}):jsx(u,{url:h}):jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})})},"PdfDriverWrapper");var ut=a(({url:h,extension:u})=>jsxs("a",{href:h,download:`file.${u}`,className:"text-blue-500 underline",children:["Download ",u.toUpperCase()," file"]}),"DownloadDriver");var ft=50,vr=1e4,pt=a(({url:h,blob:u})=>{let m=useRef(null),[M,D]=useState(null),[k,v]=useState(true);return useEffect(()=>{a(async()=>{if(m.current)try{if(v(!0),D(null),!u&&h&&(u=await(await fetch(h)).blob()),!u){D("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(u.size/(1024*1024)>ft){D(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${ft} \u041C\u0411)`);return}m.current.innerHTML="";let A=renderAsync(u,m.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),H=new Promise((P,Y)=>setTimeout(()=>Y(new Error("\u0420\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 DOCX \u0437\u0430\u0439\u043D\u044F\u0432 \u043D\u0430\u0434\u0442\u043E \u0431\u0430\u0433\u0430\u0442\u043E \u0447\u0430\u0441\u0443")),vr));await Promise.race([A,H]),v(!1);}catch(O){D(O?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),v(false);}},"renderDocument")();},[h,u]),jsxs(Fragment,{children:[!!M&&!k&&jsx("div",{className:"text-red-500 p-5",children:M}),k&&jsx("div",{className:"flex items-center justify-center p-5",children:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F..."}),jsx("div",{ref:m,className:"w-full h-full overflow-auto"})]})},"DocxDriver");var Mr=a(h=>({js:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",json:"json",html:"html",css:"css",scss:"scss",py:"python",java:"java",cpp:"cpp",c:"c",cs:"csharp",php:"php",rb:"ruby",go:"go",rs:"rust",swift:"swift",kt:"kotlin",xml:"xml",yaml:"yaml",yml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",txt:"text"})[h]||"text","getLanguageFromExtension"),gt=a(({url:h,extension:u})=>{let[m,M]=useState(""),[D,k]=useState(true),[v,$]=useState(null);if(useEffect(()=>{a(async()=>{try{k(!0),$(null);let P=await fetch(h);if(!P.ok)throw new Error(`Failed to load file: ${P.statusText}`);let Y=await P.text();M(Y);}catch(P){$(P instanceof Error?P.message:"Failed to load text content");}finally{k(false);}},"loadTextContent")();},[h]),D)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(v)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",v]})});let O=Mr(u);return jsx("div",{className:"h-full w-full overflow-auto",children:O!=="text"?jsx(Prism,{className:"min-h-full! m-0! py-0!",language:O,style:darcula,showLineNumbers:true,wrapLines:true,children:m}):jsx("pre",{className:"whitespace-pre-wrap p-4 text-sm font-mono bg-gray-50 min-h-full",children:m})})},"TextDriver");var yt=a(({url:h})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:h,className:"w-full max-h-full"})}),"VideoDriver");var wt=memo(a(function({extension:u,blob:m,path:M,buffer:D}){console.log("Driver props:",{extension:u,blob:m,path:M,buffer:D});let k=u.toLocaleLowerCase().trim(),v;if(M?v=M:m&&(v=URL.createObjectURL(m)),v){if(["jpeg","jpg","png","gif","bmp","webp"].includes(k))return jsx(st,{url:v});if(["mp3","wav","ogg","flac"].includes(k))return jsx(lt,{url:v});if(["mp4","webm"].includes(k))return jsx(yt,{url:v});if(u==="pdf")return jsx(Ce,{url:v});if(["xlsx","pptx"].includes(k))return jsx(ut,{url:v,extension:k});if(["txt","js","jsx","ts","tsx","json","html","css","scss","py","java","cpp","c","cs","php","rb","go","rs","swift","kt","xml","yaml","yml","md","sql","sh","bash"].includes(k))return jsx(gt,{url:v,extension:k})}return k==="docx"?jsx(pt,{url:v,blob:m}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(mb,{children:jsx(Wa,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:"Sorry, this file type isn\u2019t supported yet."})})})},"Driver"));var Ja=a(h=>jsx("div",{className:"h-full w-full",children:jsx(wt,{...h})}),"FileViewer");var ds=a(({text:h,speed:u=50,onDone:m,markdown:M=false,markdownComponents:D={},className:k,...v})=>{let[$,O]=useState("");return useEffect(()=>{let A=0,H=setInterval(()=>{let P=h.charAt(A);O(Y=>Y+P),A++,A>=h.length&&(clearInterval(H),m?.());},u);return ()=>clearInterval(H)},[h,u,m]),useEffect(()=>{O("");},[h]),M?jsx("div",{className:k,children:jsx(Tr,{remarkPlugins:[Lr],components:D,...v,children:$})}):jsx(Wa,{className:k,...v,children:$})},"Typewriter");export{Di as Container,Ja as FileViewer,ta as FullscreenCard,cr as Graph2D,di as PageContent,ii as PageLayout,zt as Styled,Tt as StyledContainer,Rt as StyledMain,gi as SubNav,ds as Typewriter};//# sourceMappingURL=index.mjs.map
67
67
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyber-harbour/ui",
3
- "version": "2.0.23",
3
+ "version": "2.0.24",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "bin": {
16
16
  "switch-ui-lib": "./bin/switch-ui-lib.js",
17
- "copy-pdf-worker": "./bin/copy-pdf-worker.js"
17
+ "copy-pdfjs": "./bin/copy-pdfjs.js"
18
18
  },
19
19
  "files": [
20
20
  "dist",
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env node
2
- const fs = require('fs');
3
- const path = require('path');
4
-
5
- // Find the current working directory (the project using the UI library)
6
- const projectRoot = process.cwd();
7
-
8
- // Allow custom target directory via command line argument
9
- const targetDirName = process.env.UI_LIBRARY_WORKERS_DIR || 'public/workers';
10
-
11
- // Try multiple possible locations for pdfjs-dist worker
12
- const possiblePaths = [
13
- // In project's own node_modules
14
- path.resolve(projectRoot, 'node_modules/pdfjs-dist/build/pdf.worker.min.mjs'),
15
- // In the UI library's node_modules (when installed as dependency)
16
- path.resolve(projectRoot, 'node_modules/@cyber-harbour/ui/node_modules/pdfjs-dist/build/pdf.worker.min.mjs'),
17
- // In nested node_modules structure
18
- path.resolve(__dirname, '../node_modules/pdfjs-dist/build/pdf.worker.min.mjs'),
19
- // Alternative path structure
20
- path.resolve(projectRoot, 'node_modules/pdfjs-dist/build/pdf.worker.mjs'),
21
- ];
22
-
23
- // Try to resolve through require mechanism
24
- try {
25
- const pdfjsPath = require.resolve('pdfjs-dist/package.json', { paths: [projectRoot] });
26
- const pdfjsDir = path.dirname(pdfjsPath);
27
- const resolvedWorkerPath = path.join(pdfjsDir, 'build/pdf.worker.min.mjs');
28
- if (!possiblePaths.includes(resolvedWorkerPath)) {
29
- possiblePaths.unshift(resolvedWorkerPath);
30
- }
31
- } catch (err) {
32
- // pdfjs-dist not found via require.resolve, continue with predefined paths
33
- }
34
-
35
- // Find the first existing source path
36
- let sourcePath = null;
37
- for (const possiblePath of possiblePaths) {
38
- if (fs.existsSync(possiblePath)) {
39
- sourcePath = possiblePath;
40
- break;
41
- }
42
- }
43
-
44
- // Target directory (customizable)
45
- const targetDir = path.resolve(projectRoot, targetDirName);
46
- const targetPath = path.join(targetDir, 'pdf.worker.min.js');
47
-
48
- // Create target directory if it doesn't exist
49
- if (!fs.existsSync(targetDir)) {
50
- fs.mkdirSync(targetDir, { recursive: true });
51
- console.log(`📁 Created ${targetDirName} directory`);
52
- }
53
-
54
- // Copy the worker file
55
- try {
56
- if (!sourcePath) {
57
- console.error('❌ Failed to copy PDF worker: PDF worker not found in any of the following locations:');
58
- possiblePaths.forEach((path, index) => {
59
- console.error(` ${index + 1}. ${path}`);
60
- });
61
- throw new Error('Make sure pdfjs-dist is installed either in your project or as a peer dependency.');
62
- }
63
-
64
- console.log(`📄 Found PDF worker at: ${sourcePath}`);
65
- fs.copyFileSync(sourcePath, targetPath);
66
- console.log(`✅ PDF worker copied successfully to ${targetDirName}/pdf.worker.min.js`);
67
- console.log(
68
- `💡 Make sure to configure your app to load the worker from /${targetDirName.replace(
69
- /^public\//,
70
- ''
71
- )}/pdf.worker.min.js`
72
- );
73
-
74
- // Additional info for different frameworks
75
- console.log('\n📋 Integration examples:');
76
- console.log('React/Next.js: Configure worker URL in your PDF component');
77
- console.log('Vite: Worker will be available at /workers/pdf.worker.min.js');
78
- console.log('Custom: Use the path specified above');
79
- } catch (error) {
80
- console.error('❌ Failed to copy PDF worker:', error.message);
81
- console.error('\n🔧 Troubleshooting:');
82
- console.error('1. Make sure pdfjs-dist is installed in your project: npm install pdfjs-dist');
83
- console.error('2. Or make sure @cyber-harbour/ui has pdfjs-dist as dependency');
84
- console.error('3. Run this command from your project root directory');
85
- console.error('4. Check that you have write permissions in the target directory');
86
- console.error('\n📍 Checked locations:');
87
- possiblePaths.forEach((path, index) => {
88
- const exists = fs.existsSync(path);
89
- console.error(` ${exists ? '✅' : '❌'} ${path}`);
90
- });
91
- process.exit(1);
92
- }
@@ -1,3 +0,0 @@
1
- 'use strict';var chunkVMUGTG7N_js=require('./chunk-VMUGTG7N.js'),react=require('react'),reactPdf=require('react-pdf');require('react-pdf/dist/Page/AnnotationLayer.css'),require('react-pdf/dist/Page/TextLayer.css');var jsxRuntime=require('react/jsx-runtime');if(typeof window<"u"&&typeof document<"u"){let s="/workers";reactPdf.pdfjs.GlobalWorkerOptions.workerSrc=`${s}/pdf.worker.min.js`;}var S=chunkVMUGTG7N_js.a(({url:s})=>{let[n,p]=react.useState(0),[a,u]=react.useState(1),[v,c]=react.useState(true),[m,g]=react.useState(null);function x({numPages:r}){p(r),c(false);}chunkVMUGTG7N_js.a(x,"onDocumentLoadSuccess");function w(r){g(`Failed to load PDF: ${r.message}`),c(false);}chunkVMUGTG7N_js.a(w,"onDocumentLoadError");function f(r){u(t=>t+r);}chunkVMUGTG7N_js.a(f,"changePage");function b(){f(-1);}chunkVMUGTG7N_js.a(b,"previousPage");function k(){f(1);}return chunkVMUGTG7N_js.a(k,"nextPage"),m?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsxRuntime.jsx("div",{className:"text-red-500 text-center",children:jsxRuntime.jsx("p",{children:m})})}):jsxRuntime.jsxs("div",{className:"h-full w-full flex flex-col",children:[v&&jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),n>0&&jsxRuntime.jsxs("div",{className:"flex items-center justify-center gap-4 p-4",children:[jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:a<=1,onClick:b,icon:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m15 18-6-6 6-6"})})}),jsxRuntime.jsxs("span",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("input",{type:"number",min:1,max:n,value:a,onChange:r=>{let t=parseInt(r.target.value,10);t>=1&&t<=n&&u(t);},className:"w-16 px-2 py-1 border rounded text-center"}),"/ ",n]}),jsxRuntime.jsx(chunkVMUGTG7N_js.z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:a>=n,onClick:k,icon:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"m9 18 6-6-6-6"})})})]}),jsxRuntime.jsx("div",{className:"flex-1 flex justify-center overflow-auto",children:jsxRuntime.jsx(reactPdf.Document,{file:s,onLoadSuccess:x,onLoadError:w,loading:"",children:jsxRuntime.jsx(reactPdf.Page,{pageNumber:a,renderTextLayer:true,renderAnnotationLayer:true,className:"max-w-full max-h-full"})})})]})},"PdfDriver");
2
- exports.PdfDriver=S;//# sourceMappingURL=PdfDriver-22EOQUD5.js.map
3
- //# sourceMappingURL=PdfDriver-22EOQUD5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["workerDir","pdfjs","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","Document","Page"],"mappings":"kQAOA,GAAI,OAAO,MAAW,CAAA,GAAA,EAAe,OAAO,QAAa,CAAA,GAAA,CAAa,CACpE,IAAMA,CAAAA,CAAY,UAClBC,CAAAA,cAAAA,CAAM,oBAAoB,SAAY,CAAA,CAAA,EAAGD,CAAS,CACpD,kBAAA,EAAA,KAMaE,CAAsCC,CAAAA,kBAAAA,CAAA,CAAC,CAAE,IAAAC,CAAI,CAAA,GAAM,CAC9D,GAAM,CAACC,EAAUC,CAAW,CAAA,CAAIC,cAAiB,CAAA,CAAC,EAC5C,CAACC,CAAAA,CAAYC,CAAa,CAAIF,CAAAA,cAAAA,CAAiB,CAAC,CAChD,CAAA,CAACG,CAASC,CAAAA,CAAU,EAAIJ,cAAkB,CAAA,IAAI,EAC9C,CAACK,CAAAA,CAAOC,CAAQ,CAAIN,CAAAA,cAAAA,CAAwB,IAAI,CAAA,CAItD,SAASO,CAAsB,CAAA,CAAE,SAAAT,CAAS,CAAA,CAA+B,CACvEC,CAAYD,CAAAA,CAAQ,CACpBM,CAAAA,CAAAA,CAAW,KAAK,EAClB,CAHSR,mBAAAW,CAAA,CAAA,uBAAA,CAAA,CAKT,SAASC,CAAoBH,CAAAA,CAAAA,CAAoB,CAC/CC,CAAAA,CAAS,uBAAuBD,CAAM,CAAA,OAAO,EAAE,CAC/CD,CAAAA,CAAAA,CAAW,KAAK,EAClB,CAHSR,kBAAAY,CAAAA,CAAAA,CAAA,uBAKT,SAASC,CAAAA,CAAWC,EAAsB,CACxCR,CAAAA,CAAeS,GAAmBA,CAAiBD,CAAAA,CAAM,EAC3D,CAFSd,mBAAAa,CAAA,CAAA,YAAA,CAAA,CAIT,SAASG,CAAqB,EAAA,CAC5BH,EAAW,EAAE,EACf,CAFSb,kBAAAA,CAAAgB,EAAA,cAIT,CAAA,CAAA,SAASC,GAAiB,CACxBJ,CAAAA,CAAW,CAAC,EACd,CAEA,OAJSb,kBAAAA,CAAAiB,EAAA,UAILR,CAAAA,CAAAA,CAAAA,CAEAS,eAAC,KAAI,CAAA,CAAA,SAAA,CAAU,iDACb,QAAAA,CAAAA,cAAAA,CAAC,KAAI,CAAA,CAAA,SAAA,CAAU,2BACb,QAAAA,CAAAA,cAAAA,CAAC,KAAG,QAAAT,CAAAA,CAAAA,CAAM,EACZ,CACF,CAAA,CAAA,CAKFU,eAAC,CAAA,KAAA,CAAA,CAAI,UAAU,6BACZ,CAAA,QAAA,CAAA,CAAAZ,GACCW,cAAC,CAAA,KAAA,CAAA,CAAI,UAAU,yCACb,CAAA,QAAA,CAAAA,cAAC,CAAA,KAAA,CAAA,CAAI,UAAU,eAAgB,CAAA,QAAA,CAAA,gBAAA,CAAc,CAC/C,CAAA,CAAA,CAEDhB,EAAW,CACViB,EAAAA,eAAAA,CAAC,KAAI,CAAA,CAAA,SAAA,CAAU,6CACb,QAAAD,CAAAA,CAAAA,cAAAA,CAACE,mBAAA,CACC,OAAA,CAAQ,WACR,YAAW,CAAA,eAAA,CACX,KAAM,CAAA,WAAA,CACN,KAAK,OACL,CAAA,IAAA,CAAK,SACL,QAAUf,CAAAA,CAAAA,EAAc,EACxB,OAASW,CAAAA,CAAAA,CACT,IACEE,CAAAA,cAAAA,CAAC,OACC,KAAM,CAAA,4BAAA,CACN,QAAQ,WACR,CAAA,IAAA,CAAK,OACL,MAAO,CAAA,cAAA,CACP,WAAY,CAAA,GAAA,CACZ,cAAc,OACd,CAAA,cAAA,CAAe,QAEf,QAAAA,CAAAA,cAAAA,CAAC,QAAK,CAAE,CAAA,gBAAA,CAAiB,CAC3B,CAAA,CAAA,CAEJ,EAEAC,eAAC,CAAA,MAAA,CAAA,CAAK,UAAU,yBACd,CAAA,QAAA,CAAA,CAAAD,eAAC,OACC,CAAA,CAAA,IAAA,CAAK,QACL,CAAA,GAAA,CAAK,EACL,GAAKhB,CAAAA,CAAAA,CACL,MAAOG,CACP,CAAA,QAAA,CAAWgB,GAAM,CACf,IAAMC,CAAO,CAAA,QAAA,CAASD,EAAE,MAAO,CAAA,KAAA,CAAO,EAAE,CACpCC,CAAAA,CAAAA,EAAQ,GAAKA,CAAQpB,EAAAA,CAAAA,EACvBI,CAAcgB,CAAAA,CAAI,EAEtB,CACA,CAAA,SAAA,CAAU,4CACZ,CAAE,CAAA,IAAA,CACCpB,GACL,CACAgB,CAAAA,cAAAA,CAACE,kBAAA,CAAA,CACC,QAAQ,UACR,CAAA,YAAA,CAAW,YACX,KAAM,CAAA,WAAA,CACN,KAAK,OACL,CAAA,IAAA,CAAK,QACL,CAAA,QAAA,CAAUf,GAAcH,CACxB,CAAA,OAAA,CAASe,EACT,IACEC,CAAAA,cAAAA,CAAC,OACC,KAAM,CAAA,4BAAA,CACN,OAAQ,CAAA,WAAA,CACR,KAAK,MACL,CAAA,MAAA,CAAO,eACP,WAAY,CAAA,GAAA,CACZ,cAAc,OACd,CAAA,cAAA,CAAe,OAEf,CAAA,QAAA,CAAAA,eAAC,MAAK,CAAA,CAAA,CAAA,CAAE,gBAAgB,CAC1B,CAAA,CAAA,CAEJ,GACF,CAEFA,CAAAA,cAAAA,CAAC,KAAI,CAAA,CAAA,SAAA,CAAU,2CACb,QAAAA,CAAAA,cAAAA,CAACK,kBAAA,CAAS,IAAA,CAAMtB,EAAK,aAAeU,CAAAA,CAAAA,CAAuB,WAAaC,CAAAA,CAAAA,CAAqB,QAAQ,EACnG,CAAA,QAAA,CAAAM,eAACM,aAAA,CAAA,CACC,WAAYnB,CACZ,CAAA,eAAA,CAAiB,IACjB,CAAA,qBAAA,CAAuB,KACvB,SAAU,CAAA,uBAAA,CACZ,EACF,CACF,CAAA,CAAA,CAAA,CACF,CAEJ,CA5HmD,CAAA,WAAA","file":"PdfDriver-22EOQUD5.js","sourcesContent":["import React, { useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Button } from '../../../Core';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const workerDir = '/workers';\n pdfjs.GlobalWorkerOptions.workerSrc = `${workerDir}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n}\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n\n //TODO: add fix 100px problem;\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {\n setNumPages(numPages);\n setLoading(false);\n }\n\n function onDocumentLoadError(error: Error): void {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }\n\n function changePage(offset: number): void {\n setPageNumber((prevPageNumber) => prevPageNumber + offset);\n }\n\n function previousPage(): void {\n changePage(-1);\n }\n\n function nextPage(): void {\n changePage(1);\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col\">\n {loading && (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-gray-500\">Loading PDF...</div>\n </div>\n )}\n {numPages > 0 && (\n <div className=\"flex items-center justify-center gap-4 p-4\">\n <Button\n variant=\"outlined\"\n aria-label=\"previous page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber <= 1}\n onClick={previousPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n }\n />\n\n <span className=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min={1}\n max={numPages}\n value={pageNumber}\n onChange={(e) => {\n const page = parseInt(e.target.value, 10);\n if (page >= 1 && page <= numPages) {\n setPageNumber(page);\n }\n }}\n className=\"w-16 px-2 py-1 border rounded text-center\"\n />\n / {numPages}\n </span>\n <Button\n variant=\"outlined\"\n aria-label=\"next page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber >= numPages}\n onClick={nextPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n }\n />\n </div>\n )}\n <div className=\"flex-1 flex justify-center overflow-auto\">\n <Document file={url} onLoadSuccess={onDocumentLoadSuccess} onLoadError={onDocumentLoadError} loading=\"\">\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className=\"max-w-full max-h-full\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
@@ -1,3 +0,0 @@
1
- import {a,z}from'./chunk-GLKANQJX.mjs';import {useState}from'react';import {pdfjs,Document,Page}from'react-pdf';import'react-pdf/dist/Page/AnnotationLayer.css';import'react-pdf/dist/Page/TextLayer.css';import {jsx,jsxs}from'react/jsx-runtime';if(typeof window<"u"&&typeof document<"u"){let s="/workers";pdfjs.GlobalWorkerOptions.workerSrc=`${s}/pdf.worker.min.js`;}var F=a(({url:s})=>{let[n,p]=useState(0),[a$1,u]=useState(1),[v,c]=useState(true),[m,g]=useState(null);function x({numPages:r}){p(r),c(false);}a(x,"onDocumentLoadSuccess");function w(r){g(`Failed to load PDF: ${r.message}`),c(false);}a(w,"onDocumentLoadError");function f(r){u(t=>t+r);}a(f,"changePage");function b(){f(-1);}a(b,"previousPage");function k(){f(1);}return a(k,"nextPage"),m?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:m})})}):jsxs("div",{className:"h-full w-full flex flex-col",children:[v&&jsx("div",{className:"flex items-center justify-center h-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),n>0&&jsxs("div",{className:"flex items-center justify-center gap-4 p-4",children:[jsx(z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:a$1<=1,onClick:b,icon:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"m15 18-6-6 6-6"})})}),jsxs("span",{className:"flex items-center gap-2",children:[jsx("input",{type:"number",min:1,max:n,value:a$1,onChange:r=>{let t=parseInt(r.target.value,10);t>=1&&t<=n&&u(t);},className:"w-16 px-2 py-1 border rounded text-center"}),"/ ",n]}),jsx(z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:a$1>=n,onClick:k,icon:jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"m9 18 6-6-6-6"})})})]}),jsx("div",{className:"flex-1 flex justify-center overflow-auto",children:jsx(Document,{file:s,onLoadSuccess:x,onLoadError:w,loading:"",children:jsx(Page,{pageNumber:a$1,renderTextLayer:true,renderAnnotationLayer:true,className:"max-w-full max-h-full"})})})]})},"PdfDriver");
2
- export{F as PdfDriver};//# sourceMappingURL=PdfDriver-5PZGCQXG.mjs.map
3
- //# sourceMappingURL=PdfDriver-5PZGCQXG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["workerDir","pdfjs","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","Document","Page"],"mappings":"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","file":"PdfDriver-5PZGCQXG.mjs","sourcesContent":["import React, { useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Button } from '../../../Core';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const workerDir = '/workers';\n pdfjs.GlobalWorkerOptions.workerSrc = `${workerDir}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n}\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n\n //TODO: add fix 100px problem;\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {\n setNumPages(numPages);\n setLoading(false);\n }\n\n function onDocumentLoadError(error: Error): void {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }\n\n function changePage(offset: number): void {\n setPageNumber((prevPageNumber) => prevPageNumber + offset);\n }\n\n function previousPage(): void {\n changePage(-1);\n }\n\n function nextPage(): void {\n changePage(1);\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col\">\n {loading && (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-gray-500\">Loading PDF...</div>\n </div>\n )}\n {numPages > 0 && (\n <div className=\"flex items-center justify-center gap-4 p-4\">\n <Button\n variant=\"outlined\"\n aria-label=\"previous page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber <= 1}\n onClick={previousPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n }\n />\n\n <span className=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min={1}\n max={numPages}\n value={pageNumber}\n onChange={(e) => {\n const page = parseInt(e.target.value, 10);\n if (page >= 1 && page <= numPages) {\n setPageNumber(page);\n }\n }}\n className=\"w-16 px-2 py-1 border rounded text-center\"\n />\n / {numPages}\n </span>\n <Button\n variant=\"outlined\"\n aria-label=\"next page\"\n color=\"secondary\"\n size=\"small\"\n type=\"button\"\n disabled={pageNumber >= numPages}\n onClick={nextPage}\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n }\n />\n </div>\n )}\n <div className=\"flex-1 flex justify-center overflow-auto\">\n <Document file={url} onLoadSuccess={onDocumentLoadSuccess} onLoadError={onDocumentLoadError} loading=\"\">\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className=\"max-w-full max-h-full\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}