@cyber-harbour/ui 2.1.8 → 2.1.9
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/dist/PdfDriver-235WGQCW.js +3 -0
- package/dist/PdfDriver-235WGQCW.js.map +1 -0
- package/dist/PdfDriver-ETH7RNAG.mjs +3 -0
- package/dist/PdfDriver-ETH7RNAG.mjs.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -1
- package/dist/PdfDriver-LZZV7HEY.js +0 -3
- package/dist/PdfDriver-LZZV7HEY.js.map +0 -1
- package/dist/PdfDriver-WD2ZDGPD.mjs +0 -3
- package/dist/PdfDriver-WD2ZDGPD.mjs.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var chunkACAR2CMA_js=require('./chunk-ACAR2CMA.js'),react=require('react'),R=require('lodash.debounce'),reactPdf=require('react-pdf');require('react-pdf/dist/Page/AnnotationLayer.css'),require('react-pdf/dist/Page/TextLayer.css');var reactVirtuoso=require('react-virtuoso'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var R__default=/*#__PURE__*/_interopDefault(R);var m="/pdfjs";typeof window<"u"&&typeof document<"u"&&(reactPdf.pdfjs.GlobalWorkerOptions.workerSrc=`${m}/pdf.worker.min.js`);var K=1e3,Q=400,X=150,ee=70,de=chunkACAR2CMA_js.a(({url:T})=>{let[o,S]=react.useState(0),[s,g]=react.useState(1),[j,w]=react.useState(true),[N,A]=react.useState(null),[M,O]=react.useState(400),[U,_]=react.useState(400),[f,y]=react.useState(1),a=react.useRef(null),P=react.useRef(null),h=react.useRef(false),c=react.useRef(null),b=react.useRef(false),p=react.useCallback((e,n=true)=>{e<1||e>o||(h.current=true,P.current?.scrollToIndex({index:e-1,align:"start",behavior:n?"smooth":"auto"}),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b.current&&(h.current=false);},K));},[o]),x=react.useMemo(()=>R__default.default((e,n=false)=>{p(e,n);},Q),[p]),z=react.useCallback(()=>{y(e=>Math.min(e+.25,4));},[]),B=react.useCallback(()=>{y(e=>Math.max(e-.25,.25));},[]);react.useEffect(()=>{if(!a.current)return;let e=R__default.default(()=>{a.current&&(O(a.current.offsetWidth-ee),_(a.current.clientHeight));},X);e();let n=new ResizeObserver(e);return n.observe(a.current),()=>{n.disconnect(),e.cancel();}},[]);let $=react.useMemo(()=>({cMapPacked:true,cMapUrl:`${m}/cmaps/`,standardFontDataUrl:`${m}/standard_fonts/`,wasmUrl:`${m}/wasm/`,iccUrl:`${m}/icc/`}),[]),F=react.useCallback(({numPages:e})=>{S(e),w(false);},[]),H=react.useCallback(e=>{A(`Failed to load PDF: ${e.message}`),w(false);},[]),v=react.useCallback(e=>{let n=s+e;g(n),p(n);},[s,p]),W=react.useCallback(()=>{v(-1);},[v]),V=react.useCallback(()=>{v(1);},[v]),Z=react.useCallback(e=>{if(h.current)return;let n=e.startIndex+1;n!==s&&g(n);},[s]);return react.useEffect(()=>(b.current=true,()=>{b.current=false,x.cancel(),c.current&&clearTimeout(c.current);}),[x]),N?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:N})})}):jsxRuntime.jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden pb-5",children:[j&&jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),o>0&&jsxRuntime.jsxs("div",{className:"flex items-center justify-center md:justify-between flex-wrap gap-3 p-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:s<=1,onClick:W,p:5,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:o,value:s,onChange:e=>{let n=parseInt(e.target.value,10);n>=1&&n<=o&&(g(n),x(n,false));},className:"w-15 px-1 py-1 border border-gray-400! rounded text-center"}),"/ ",o]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:s>=o,onClick:V,p:7,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.jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkACAR2CMA_js.Pa,{style:{width:20,height:20}}),onClick:B,disabled:f<=.25,p:7}),jsxRuntime.jsxs(chunkACAR2CMA_js.ob,{py:5,px:8,children:[f*100,"%"]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkACAR2CMA_js.ma,{style:{width:14,height:14}}),onClick:z,disabled:f>=4,p:8})]})]}),jsxRuntime.jsx("div",{ref:a,className:"flex-1 overflow-hidden min-h-0",children:jsxRuntime.jsx(reactPdf.Document,{options:$,file:T,onLoadSuccess:F,onLoadError:H,loading:"",children:jsxRuntime.jsx(reactVirtuoso.Virtuoso,{ref:P,style:{height:U||"calc(100dvh - 190px)",width:"100%"},totalCount:o,rangeChanged:Z,itemContent:e=>jsxRuntime.jsx("div",{className:"mx-auto w-fit mb-4",children:jsxRuntime.jsx(reactPdf.Page,{pageNumber:e+1,renderTextLayer:true,renderAnnotationLayer:true,width:M*f,className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out"})})})})})]})},"PdfDriver");
|
|
2
|
+
exports.PdfDriver=de;//# sourceMappingURL=PdfDriver-235WGQCW.js.map
|
|
3
|
+
//# sourceMappingURL=PdfDriver-235WGQCW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","SCROLL_ANIMATION_DURATION","INPUT_DEBOUNCE_DELAY","RESIZE_DEBOUNCE_DELAY","CONTAINER_PADDING","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","width","setWidth","height","setHeight","scale","setScale","containerRef","useRef","virtuosoRef","isUserScrollingRef","scrollTimeoutRef","isMountedRef","scrollToPage","useCallback","page","smooth","debouncedScroll","useMemo","debounce","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","observer","options","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","newPage","previousPage","nextPage","handleRangeChanged","range","visiblePage","jsx","jsxs","Button","MinusIcon","Box","PlusIcon","Document","Virtuoso","index","Page"],"mappings":"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","file":"PdfDriver-235WGQCW.js","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso';\nimport { Box, Button, MinusIcon, PlusIcon } 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}\nconst SCROLL_ANIMATION_DURATION = 1000;\nconst INPUT_DEBOUNCE_DELAY = 400;\nconst RESIZE_DEBOUNCE_DELAY = 150;\nconst CONTAINER_PADDING = 70;\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 const [width, setWidth] = useState<number>(400);\n const [height, setHeight] = useState<number>(400);\n const [scale, setScale] = useState(1);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtuosoRef = useRef<VirtuosoHandle>(null);\n const isUserScrollingRef = useRef<boolean>(false);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const isMountedRef = useRef(false);\n\n const scrollToPage = useCallback(\n (page: number, smooth = true) => {\n if (page < 1 || page > numPages) return;\n\n isUserScrollingRef.current = true;\n virtuosoRef.current?.scrollToIndex({\n index: page - 1,\n align: 'start',\n behavior: smooth ? 'smooth' : 'auto',\n });\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = setTimeout(() => {\n if (isMountedRef.current) isUserScrollingRef.current = false;\n }, SCROLL_ANIMATION_DURATION);\n },\n [numPages]\n );\n\n const debouncedScroll = useMemo(() => {\n return debounce((page: number, smooth = false) => {\n scrollToPage(page, smooth);\n }, INPUT_DEBOUNCE_DELAY);\n }, [scrollToPage]);\n\n const handleZoomIn = useCallback(() => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n }, []);\n\n const handleZoomOut = useCallback(() => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n }, []);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - CONTAINER_PADDING);\n setHeight(containerRef.current.clientHeight);\n }\n }, RESIZE_DEBOUNCE_DELAY);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n updateSize.cancel();\n };\n }, []);\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 const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }): void => {\n setNumPages(numPages);\n setLoading(false);\n }, []);\n\n const onDocumentLoadError = useCallback((error: Error): void => {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }, []);\n\n const changePage = useCallback(\n (offset: number): void => {\n const newPage = pageNumber + offset;\n setPageNumber(newPage);\n scrollToPage(newPage);\n },\n [pageNumber, scrollToPage]\n );\n\n const previousPage = useCallback((): void => {\n changePage(-1);\n }, [changePage]);\n\n const nextPage = useCallback((): void => {\n changePage(1);\n }, [changePage]);\n\n const handleRangeChanged = useCallback(\n (range: { startIndex: number; endIndex: number }) => {\n if (isUserScrollingRef.current) {\n return;\n }\n const visiblePage = range.startIndex + 1;\n if (visiblePage !== pageNumber) {\n setPageNumber(visiblePage);\n }\n },\n [pageNumber]\n );\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n debouncedScroll.cancel();\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n };\n }, [debouncedScroll]);\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 overflow-hidden pb-5\">\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 md:justify-between flex-wrap gap-3 p-4\">\n <div className=\"flex items-center justify-center gap-3\">\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 p={5}\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 debouncedScroll(page, false);\n }\n }}\n className=\"w-15 px-1 py-1 border border-gray-400! 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 p={7}\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 <div className=\"flex items-center justify-center gap-3\">\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-out\"\n color=\"secondary\"\n size=\"small\"\n icon={<MinusIcon style={{ width: 20, height: 20 }} />}\n onClick={handleZoomOut}\n disabled={scale <= 0.25}\n p={7}\n />\n <Box py={5} px={8}>\n {scale * 100}%\n </Box>\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-in\"\n size=\"small\"\n color=\"secondary\"\n icon={<PlusIcon style={{ width: 14, height: 14 }} />}\n onClick={handleZoomIn}\n disabled={scale >= 4}\n p={8}\n />\n </div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-hidden min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n >\n <Virtuoso\n ref={virtuosoRef}\n style={{ height: height || 'calc(100dvh - 190px)', width: '100%' }}\n totalCount={numPages}\n rangeChanged={handleRangeChanged}\n itemContent={(index) => (\n <div className=\"mx-auto w-fit mb-4\">\n <Page\n pageNumber={index + 1}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out\"\n />\n </div>\n )}\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {a,z,Pa,ob,ma}from'./chunk-IEXMV437.mjs';import {useState,useRef,useCallback,useMemo,useEffect}from'react';import R from'lodash.debounce';import {pdfjs,Document,Page}from'react-pdf';import'react-pdf/dist/Page/AnnotationLayer.css';import'react-pdf/dist/Page/TextLayer.css';import {Virtuoso}from'react-virtuoso';import {jsx,jsxs}from'react/jsx-runtime';var m="/pdfjs";typeof window<"u"&&typeof document<"u"&&(pdfjs.GlobalWorkerOptions.workerSrc=`${m}/pdf.worker.min.js`);var K=1e3,Q=400,X=150,ee=70,ue=a(({url:T})=>{let[o,S]=useState(0),[s,g]=useState(1),[j,w]=useState(true),[N,A]=useState(null),[M,O]=useState(400),[U,_]=useState(400),[f,y]=useState(1),a=useRef(null),P=useRef(null),h=useRef(false),c=useRef(null),b=useRef(false),p=useCallback((e,n=true)=>{e<1||e>o||(h.current=true,P.current?.scrollToIndex({index:e-1,align:"start",behavior:n?"smooth":"auto"}),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b.current&&(h.current=false);},K));},[o]),x=useMemo(()=>R((e,n=false)=>{p(e,n);},Q),[p]),z$1=useCallback(()=>{y(e=>Math.min(e+.25,4));},[]),B=useCallback(()=>{y(e=>Math.max(e-.25,.25));},[]);useEffect(()=>{if(!a.current)return;let e=R(()=>{a.current&&(O(a.current.offsetWidth-ee),_(a.current.clientHeight));},X);e();let n=new ResizeObserver(e);return n.observe(a.current),()=>{n.disconnect(),e.cancel();}},[]);let $=useMemo(()=>({cMapPacked:true,cMapUrl:`${m}/cmaps/`,standardFontDataUrl:`${m}/standard_fonts/`,wasmUrl:`${m}/wasm/`,iccUrl:`${m}/icc/`}),[]),F=useCallback(({numPages:e})=>{S(e),w(false);},[]),H=useCallback(e=>{A(`Failed to load PDF: ${e.message}`),w(false);},[]),v=useCallback(e=>{let n=s+e;g(n),p(n);},[s,p]),W=useCallback(()=>{v(-1);},[v]),V=useCallback(()=>{v(1);},[v]),Z=useCallback(e=>{if(h.current)return;let n=e.startIndex+1;n!==s&&g(n);},[s]);return useEffect(()=>(b.current=true,()=>{b.current=false,x.cancel(),c.current&&clearTimeout(c.current);}),[x]),N?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:N})})}):jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden pb-5",children:[j&&jsx("div",{className:"flex items-center justify-center h-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),o>0&&jsxs("div",{className:"flex items-center justify-center md:justify-between flex-wrap gap-3 p-4",children:[jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsx(z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:s<=1,onClick:W,p:5,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:o,value:s,onChange:e=>{let n=parseInt(e.target.value,10);n>=1&&n<=o&&(g(n),x(n,false));},className:"w-15 px-1 py-1 border border-gray-400! rounded text-center"}),"/ ",o]}),jsx(z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:s>=o,onClick:V,p:7,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"})})})]}),jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:B,disabled:f<=.25,p:7}),jsxs(ob,{py:5,px:8,children:[f*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:z$1,disabled:f>=4,p:8})]})]}),jsx("div",{ref:a,className:"flex-1 overflow-hidden min-h-0",children:jsx(Document,{options:$,file:T,onLoadSuccess:F,onLoadError:H,loading:"",children:jsx(Virtuoso,{ref:P,style:{height:U||"calc(100dvh - 190px)",width:"100%"},totalCount:o,rangeChanged:Z,itemContent:e=>jsx("div",{className:"mx-auto w-fit mb-4",children:jsx(Page,{pageNumber:e+1,renderTextLayer:true,renderAnnotationLayer:true,width:M*f,className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out"})})})})})]})},"PdfDriver");
|
|
2
|
+
export{ue as PdfDriver};//# sourceMappingURL=PdfDriver-ETH7RNAG.mjs.map
|
|
3
|
+
//# sourceMappingURL=PdfDriver-ETH7RNAG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","SCROLL_ANIMATION_DURATION","INPUT_DEBOUNCE_DELAY","RESIZE_DEBOUNCE_DELAY","CONTAINER_PADDING","PdfDriver","__name","url","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","width","setWidth","height","setHeight","scale","setScale","containerRef","useRef","virtuosoRef","isUserScrollingRef","scrollTimeoutRef","isMountedRef","scrollToPage","useCallback","page","smooth","debouncedScroll","useMemo","debounce","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","observer","options","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","newPage","previousPage","nextPage","handleRangeChanged","range","visiblePage","jsx","jsxs","Button","MinusIcon","Box","PlusIcon","Document","Virtuoso","index","Page"],"mappings":"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","file":"PdfDriver-ETH7RNAG.mjs","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso';\nimport { Box, Button, MinusIcon, PlusIcon } 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}\nconst SCROLL_ANIMATION_DURATION = 1000;\nconst INPUT_DEBOUNCE_DELAY = 400;\nconst RESIZE_DEBOUNCE_DELAY = 150;\nconst CONTAINER_PADDING = 70;\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 const [width, setWidth] = useState<number>(400);\n const [height, setHeight] = useState<number>(400);\n const [scale, setScale] = useState(1);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtuosoRef = useRef<VirtuosoHandle>(null);\n const isUserScrollingRef = useRef<boolean>(false);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const isMountedRef = useRef(false);\n\n const scrollToPage = useCallback(\n (page: number, smooth = true) => {\n if (page < 1 || page > numPages) return;\n\n isUserScrollingRef.current = true;\n virtuosoRef.current?.scrollToIndex({\n index: page - 1,\n align: 'start',\n behavior: smooth ? 'smooth' : 'auto',\n });\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = setTimeout(() => {\n if (isMountedRef.current) isUserScrollingRef.current = false;\n }, SCROLL_ANIMATION_DURATION);\n },\n [numPages]\n );\n\n const debouncedScroll = useMemo(() => {\n return debounce((page: number, smooth = false) => {\n scrollToPage(page, smooth);\n }, INPUT_DEBOUNCE_DELAY);\n }, [scrollToPage]);\n\n const handleZoomIn = useCallback(() => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n }, []);\n\n const handleZoomOut = useCallback(() => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n }, []);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - CONTAINER_PADDING);\n setHeight(containerRef.current.clientHeight);\n }\n }, RESIZE_DEBOUNCE_DELAY);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n updateSize.cancel();\n };\n }, []);\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 const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }): void => {\n setNumPages(numPages);\n setLoading(false);\n }, []);\n\n const onDocumentLoadError = useCallback((error: Error): void => {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }, []);\n\n const changePage = useCallback(\n (offset: number): void => {\n const newPage = pageNumber + offset;\n setPageNumber(newPage);\n scrollToPage(newPage);\n },\n [pageNumber, scrollToPage]\n );\n\n const previousPage = useCallback((): void => {\n changePage(-1);\n }, [changePage]);\n\n const nextPage = useCallback((): void => {\n changePage(1);\n }, [changePage]);\n\n const handleRangeChanged = useCallback(\n (range: { startIndex: number; endIndex: number }) => {\n if (isUserScrollingRef.current) {\n return;\n }\n const visiblePage = range.startIndex + 1;\n if (visiblePage !== pageNumber) {\n setPageNumber(visiblePage);\n }\n },\n [pageNumber]\n );\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n debouncedScroll.cancel();\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n };\n }, [debouncedScroll]);\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 overflow-hidden pb-5\">\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 md:justify-between flex-wrap gap-3 p-4\">\n <div className=\"flex items-center justify-center gap-3\">\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 p={5}\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 debouncedScroll(page, false);\n }\n }}\n className=\"w-15 px-1 py-1 border border-gray-400! 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 p={7}\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 <div className=\"flex items-center justify-center gap-3\">\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-out\"\n color=\"secondary\"\n size=\"small\"\n icon={<MinusIcon style={{ width: 20, height: 20 }} />}\n onClick={handleZoomOut}\n disabled={scale <= 0.25}\n p={7}\n />\n <Box py={5} px={8}>\n {scale * 100}%\n </Box>\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-in\"\n size=\"small\"\n color=\"secondary\"\n icon={<PlusIcon style={{ width: 14, height: 14 }} />}\n onClick={handleZoomIn}\n disabled={scale >= 4}\n p={8}\n />\n </div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-hidden min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n >\n <Virtuoso\n ref={virtuosoRef}\n style={{ height: height || 'calc(100dvh - 190px)', width: '100%' }}\n totalCount={numPages}\n rangeChanged={handleRangeChanged}\n itemContent={(index) => (\n <div className=\"mx-auto w-fit mb-4\">\n <Page\n pageNumber={index + 1}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out\"\n />\n </div>\n )}\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
|
package/dist/index.js
CHANGED
|
@@ -63,7 +63,7 @@ ${r?`
|
|
|
63
63
|
`:""}
|
|
64
64
|
|
|
65
65
|
min-width: 0;
|
|
66
|
-
`);var Bt=chunkACAR2CMA_js.a(({url:r})=>{let[o,c]=jt.useState(1),[p,h]=jt.useState(),v=jt__default.default.useRef(null),g=jt__default.default.useRef(null),P=chunkACAR2CMA_js.a(()=>{c(R=>Math.min(R+.25,4));},"handleZoomIn");return jsxRuntime.jsxs("div",{ref:g,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(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkACAR2CMA_js.Pa,{style:{width:20,height:20}}),onClick:chunkACAR2CMA_js.a(()=>{c(R=>Math.max(R-.25,.25));},"handleZoomOut"),disabled:o<=.25,p:5}),jsxRuntime.jsxs(chunkACAR2CMA_js.ob,{py:5,px:8,children:[o*100,"%"]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkACAR2CMA_js.ma,{style:{width:14,height:14}}),onClick:P,disabled:o>=4,p:8})]}),jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto",children:jsxRuntime.jsx("img",{src:r,ref:v,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"all 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...p==="width"&&{width:`calc(${o*100}% - 20px)`},...p==="height"&&{height:`calc(${o*100}% - 20px)`}},onLoad:()=>{if(v.current&&g.current){let R=v.current.width,F=v.current.height,M=R<F?"height":"width";h(M);}}})})]})},"ImageDriver");var Ot=chunkACAR2CMA_js.a(({url:r})=>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:r,className:"w-full"})}),"AudioDriver");var Ze=chunkACAR2CMA_js.a(({url:r})=>{let[o,c]=jt.useState(null),[p,h]=jt.useState(false),[v,g]=jt.useState(true),[P,I]=jt.useState(null);return jt.useEffect(()=>{h(true);},[]),jt.useEffect(()=>{if(!p)return;chunkACAR2CMA_js.a(async()=>{try{let F=await import('./PdfDriver-LZZV7HEY.js');c(()=>F.PdfDriver),g(!1);}catch(F){console.error("Failed to load PDF driver:",F),I("Failed to load PDF viewer"),g(false);}},"loadPdfDriver")();},[p]),p?v?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..."})}):P||!o?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:P||"PDF viewer unavailable"})})}):jsxRuntime.jsx(o,{url:r}):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=50,ao=1e4,Wt=chunkACAR2CMA_js.a(({url:r,blob:o})=>{let c=jt.useRef(null),[p,h]=jt.useState(null),[v,g]=jt.useState(true);return jt.useEffect(()=>{chunkACAR2CMA_js.a(async()=>{if(c.current)try{if(g(!0),h(null),!o&&r&&(o=await(await fetch(r)).blob()),!o){h("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(o.size/(1024*1024)>Ht){h(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${Ht} \u041C\u0411)`);return}c.current.innerHTML="";let R=docxPreview.renderAsync(o,c.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),F=new Promise((M,N)=>setTimeout(()=>N(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")),ao));await Promise.race([R,F]),g(!1);}catch(I){h(I?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),g(false);}},"renderDocument")();},[r,o]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!!p&&!v&&jsxRuntime.jsx("div",{className:"text-red-500 p-5",children:p}),v&&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:c,className:"w-full h-full overflow-auto [&>div.docx-wrapper_table_*]:wrap-break-word! [&>div.docx-wrapper_table]:table-fixed! [&>div.docx-wrapper_table]:max-w-full! [&>div.docx-wrapper_table]:w-full! [&>div.docx-wrapper_img]:max-w-full! [&>div.docx-wrapper_img]:h-auto! [&>div.docx-wrapper_table]:border-collapse! [&>div.docx-wrapper]:w-full [&>div.docx-wrapper]:box-border [&>div.docx-wrapper]:min-w-fit [&>div.docx-wrapper>section]:max-w-full! [&>div.docx-wrapper>section]:min-w-fit",style:{boxSizing:"border-box",wordBreak:"break-word",overflowWrap:"break-word"}})]})},"DocxDriver");var wo=chunkACAR2CMA_js.a(r=>({js:[langJavascript.javascript({jsx:false})],jsx:[langJavascript.javascript({jsx:true})],ts:[langJavascript.javascript({typescript:true,jsx:false})],tsx:[langJavascript.javascript({typescript:true,jsx:true})],json:[langJson.json()],html:[langHtml.html()],css:[langCss.css()],scss:[langCss.css()],py:[langPython.python()],java:[langJava.java()],cpp:[langCpp.cpp()],c:[langCpp.cpp()],php:[langPhp.php()],rs:[langRust.rust()],xml:[langXml.xml()],yaml:[langYaml.yaml()],yml:[langYaml.yaml()],md:[langMarkdown.markdown()],sql:[langSql.sql()],sh:[langMarkdown.markdown()],bash:[langMarkdown.markdown()]})[r]||[],"getLanguageExtension"),Vt=chunkACAR2CMA_js.a(({url:r,extension:o})=>{let[c,p]=jt.useState(""),[h,v]=jt.useState(true),[g,P]=jt.useState(null),[I,R]=jt.useState(0),F=jt.useRef(null);if(jt.useEffect(()=>{chunkACAR2CMA_js.a(async()=>{try{v(!0),P(null);let $=await fetch(r);if(!$.ok)throw new Error(`Failed to load file: ${$.statusText}`);let t=await $.text();p(t);}catch($){P($ instanceof Error?$.message:"Failed to load text content");}finally{v(false);}},"loadTextContent")();},[r]),jt.useEffect(()=>{let N=chunkACAR2CMA_js.a(()=>{if(F.current){let $=F.current.clientHeight;R($);}},"updateHeight");return N(),window.addEventListener("resize",N),()=>{window.removeEventListener("resize",N);}},[h]),h)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(g)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsxs("div",{className:"text-red-500",children:["Error: ",g]})});let M=wo(o);return jsxRuntime.jsx("div",{ref:F,className:"h-full w-full",children:I>0&&jsxRuntime.jsx(lo__default.default,{value:c,theme:codemirrorThemeVscode.vscodeDark,extensions:M,editable:false,height:`${I}px`,basicSetup:{lineNumbers:true,highlightActiveLineGutter:false,highlightActiveLine:false,foldGutter:true,dropCursor:false,indentOnInput:false,syntaxHighlighting:true,bracketMatching:true,closeBrackets:false,autocompletion:false,rectangularSelection:false,crosshairCursor:false,highlightSelectionMatches:false,closeBracketsKeymap:false,searchKeymap:false,foldKeymap:true,completionKeymap:false,lintKeymap:false}})})},"TextDriver");var Ut=chunkACAR2CMA_js.a(({url:r})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsxRuntime.jsx("video",{controls:true,src:r,className:"w-full max-h-full"})}),"VideoDriver");var Zt=jt.memo(chunkACAR2CMA_js.a(function({extension:o,blob:c,path:p,buffer:h,not_supported_message:v=" Sorry, this file type isn\u2019t supported yet."}){console.log("Driver props:",{extension:o,blob:c,path:p,buffer:h});let g=o.toLocaleLowerCase().trim(),P;if(p?P=p:c&&(P=URL.createObjectURL(c)),P){if(["jpeg","jpg","png","gif","bmp","webp"].includes(g))return jsxRuntime.jsx(Bt,{url:P});if(["mp3","wav","ogg","flac"].includes(g))return jsxRuntime.jsx(Ot,{url:P});if(["mp4","webm"].includes(g))return jsxRuntime.jsx(Ut,{url:P});if(o==="pdf")return jsxRuntime.jsx(Ze,{url:P});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(g))return jsxRuntime.jsx(Vt,{url:P,extension:g})}return g==="docx"?jsxRuntime.jsx(Wt,{url:P,blob:c}):jsxRuntime.jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsxRuntime.jsx(chunkACAR2CMA_js.ob,{className:"mx-5",children:jsxRuntime.jsx(chunkACAR2CMA_js.Ya,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:v})})})},"Driver"));var Qc=chunkACAR2CMA_js.a(r=>jsxRuntime.jsx("div",{className:"h-full w-full",children:jsxRuntime.jsx(Zt,{...r})}),"FileViewer");var Qt=250,hl=chunkACAR2CMA_js.a(({text:r,speed:o=50,onDone:c,markdown:p=false,markdownComponents:h={},className:v,...g})=>{let[P,I]=jt.useState(""),R=jt.useRef(null),F=jt.useRef(null);return jt.useEffect(()=>{let M=false;if(o>0){I(""),R.current=performance.now();let N=chunkACAR2CMA_js.a($=>{if(M||!R.current)return;let t=$-R.current,H=t/o>Qt?o/2:o,Z=t/o>Qt?1.5:1,x=Math.floor(t/H*Z);if(x>=r.length){I(r),M=true,c?.();return}I(r.slice(0,x)),F.current=requestAnimationFrame(N);},"tick");F.current=requestAnimationFrame(N);}else I(r),c?.();return ()=>{F.current&&cancelAnimationFrame(F.current);}},[r,o,c]),p?jsxRuntime.jsx("div",{className:v,children:jsxRuntime.jsx(So__default.default,{remarkPlugins:[Mo__default.default],components:h,...g,children:P})}):jsxRuntime.jsx(chunkACAR2CMA_js.Ya,{className:v,...g,children:P})},"Typewriter");var Io={timeout:2e3,message:"Copied!"},Sl=chunkACAR2CMA_js.a(({text:r,children:o,format:c="text/plain",tooltip:p})=>{let[h,v]=jt.useState(false),g=jt.useRef(null),P={...Io,...p},I=chunkACAR2CMA_js.a(async()=>{"clipboard"in navigator?await navigator.clipboard.writeText(r):No__default.default(r,{format:c}),v(true),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>v(false),P.timeout);},"handleCopy");return jt.useEffect(()=>()=>{g.current&&clearTimeout(g.current);},[]),jsxRuntime.jsx(chunkACAR2CMA_js.Ab,{onMouseLeave:()=>v(false),className:h?"visible":"hidden",content:P.message,children:o({copy:I})})},"CopyToClipboard");var er=chunkACAR2CMA_js.a(r=>new Date(r?Array.isArray(r)?r[1]||r[0]||new Date:r:new Date),"getInitValue"),$e=chunkACAR2CMA_js.a((r,o)=>{let c;if(o){let h=dateFns.parse(r||"",o,new Date);if(dateFns.isValid(h)&&dateFns.getYear(h)>=1970)return h}let p=new Date(r||"");return isNaN(p.getTime())?c:p},"parseDate"),$o=chunkACAR2CMA_js.a((r,o)=>{let c=r?$e(r,o):void 0;return c&&o?dateFns.format(c,o):r},"renderDate"),$l=chunkACAR2CMA_js.a(({value:r,range:o,inline:c=false,minDate:p=new Date(dateFns.getYear(new Date)-5,0,1),maxDate:h=new Date(dateFns.getYear(new Date)+5,11,31),format:v="dd.MM.yyyy",onChange:g,...P})=>{let[I,R]=jt.useState(dateFns.getMonth(er(r))),[F,M]=jt.useState(dateFns.getYear(er(r))),N=jt.useMemo(()=>{if(r){if(Array.isArray(r)){let t=$e(r[0],v),H=$e(r[1],v);return [t,H]}return $e(r,v)}},[r]),$=jt.useCallback(t=>{if(o){let H=!!(N&&Array.isArray(N)&&N[0]),Z=!!(N&&Array.isArray(N)&&N[1]);!H||H&&Z?g?.([t.toString(),""]):H&&!Z&&(t<N[0]?g?.([t.toString(),N[0].toString()]):g?.([N[0].toString(),t.toString()]));}else g?.(t.toString());},[o,N,g]);return c?jsxRuntime.jsx(tr,{month:I,year:F,minDate:p,maxDate:h,selectedDate:N,onSelectDate:$,onChangeMonth:R,onChangeYear:M}):o?jsxRuntime.jsx(Ho,{range:true,value:r,onChange:g,...P}):jsxRuntime.jsx(Wo,{value:r,onChange:g,minDate:p,maxDate:h,month:I,year:F,selectedDate:N,onChangeMonth:R,onChangeYear:M,onSelectDate:$,formatStr:v,...P})},"DatePicker"),Ho=chunkACAR2CMA_js.a(({minDate:r,maxDate:o,value:c,onChange:p})=>null,"DatePickerGroupInput"),Wo=chunkACAR2CMA_js.a(({placeholder:r,value:o,onChange:c,inputProps:p,...h})=>{let[v,g]=jt.useState(false),P=chunkACAR2CMA_js.y();return jsxRuntime.jsx(reactTinyPopover.Popover,{positions:["bottom","top","right","left"],align:"start",isOpen:v,onClickOutside:()=>g(false),content:jsxRuntime.jsx(chunkACAR2CMA_js.ob,{children:jsxRuntime.jsx(tr,{...h})}),containerStyle:{zIndex:`${P.zIndex.popover}`},children:jsxRuntime.jsx("div",{onClick:()=>g(true),children:jsxRuntime.jsx(chunkACAR2CMA_js.kb,{...p,placeholder:r,value:$o(o,h.formatStr),onChange:I=>c?.(I.target.value)})})})},"DatePickerInput"),tr=chunkACAR2CMA_js.a(({month:r,year:o,selectedDate:c,minDate:p,maxDate:h,onSelectDate:v,onChangeMonth:g,onChangeYear:P})=>{let I=jt.useMemo(()=>new Array(12).fill(null).map((x,j)=>{let S=new Date(0,j);return {value:j+1,inputDisplay:dateFns.format(S,"MMMM")}}),[]),R=jt.useMemo(()=>{let x=dateFns.getYear(p),S=dateFns.getYear(h)-x+1;return new Array(S).fill(null).map((k,ee)=>{let U=x+ee;return {value:U,inputDisplay:U.toString()}})},[p,h]),F=jt.useMemo(()=>new Array(7).fill(null).map((x,j)=>{let S=dateFns.startOfWeek(new Date,{weekStartsOn:j});return dateFns.format(S,"EEE")}),[]),M=jt.useMemo(()=>{let x=dateFns.getWeeksInMonth(new Date(o,r)),j=dateFns.startOfMonth(new Date(o,r)),S=dateFns.previousMonday(j),k=dateFns.differenceInDays(j,S);return new Array(x*7).fill(null).map((ee,U)=>new Date(o,r,U-k+1))},[r,o]),N=jt.useCallback(()=>{r===0?(P(o-1),g(11)):g(r-1);},[r,o]),$=jt.useCallback(()=>{r===11?(P(o+1),g(0)):g(r+1);},[r,o]),t=jt.useMemo(()=>p?!(o<dateFns.getYear(p)||o===dateFns.getYear(p)&&r<=dateFns.getMonth(p)):true,[r,o,p]),H=jt.useMemo(()=>h?!(o>dateFns.getYear(h)||o===dateFns.getYear(h)&&r>=dateFns.getMonth(h)):true,[r,o,h]),Z=jt.useCallback(x=>{x.stopPropagation();},[]);return jsxRuntime.jsxs("div",{className:"flex flex-col date-picker-calendar",onClick:Z,children:[jsxRuntime.jsxs("div",{className:"flex justify-center items-center gap-2 pb-3",children:[t&&jsxRuntime.jsx(chunkACAR2CMA_js.z,{size:"small",variant:"empty",icon:jsxRuntime.jsx(chunkACAR2CMA_js.G,{}),onClick:N}),jsxRuntime.jsxs("div",{className:"flex-1 flex justify-center gap-1",children:[jsxRuntime.jsx(chunkACAR2CMA_js.ib,{placeholder:"",hasBorder:false,selected:r+1,options:I,onSelect:x=>g(x-1),maxWidth:150,maxHeight:300}),jsxRuntime.jsx(chunkACAR2CMA_js.ib,{placeholder:"",hasBorder:false,selected:o,options:R,onSelect:x=>P(x),maxWidth:100,maxHeight:300})]}),H&&jsxRuntime.jsx(chunkACAR2CMA_js.z,{size:"small",variant:"empty",icon:jsxRuntime.jsx(chunkACAR2CMA_js.H,{}),onClick:$})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-7 gap-2",children:F.map(x=>jsxRuntime.jsx("div",{className:"text-center",children:x},x))}),jsxRuntime.jsx("div",{className:"grid grid-cols-7 gap-2 mt-2",children:M.map(x=>{let j=dateFns.getMonth(x)===r,S=dateFns.format(x,"yyyy-MM-dd")===dateFns.format(new Date,"yyyy-MM-dd"),k=c&&(Array.isArray(c)&&(c[0]&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c[0],"yyyy-MM-dd")||c[1]&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c[1],"yyyy-MM-dd"))||!Array.isArray(c)&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c,"yyyy-MM-dd")),ee=c&&Array.isArray(c)&&c[0]&&c[1]&&x>c[0]&&x<c[1],U=p&&dateFns.differenceInDays(x,p)<0||h&&dateFns.differenceInDays(x,h)>0||!j;return jsxRuntime.jsx(_o,{date:x,isCurrentMonth:j,isCurrentDay:S,isSelected:!!k,isInRange:!!ee,isDisabled:!!U,onSelectDate:v},x.toISOString())})})]})},"DatePickerCalendar"),_o=chunkACAR2CMA_js.a(({date:r,isCurrentMonth:o,isCurrentDay:c,isSelected:p,isInRange:h,isDisabled:v,onSelectDate:g})=>jsxRuntime.jsx("div",{className:`text-center p-2 cursor-pointer rounded ${v?"text-gray-400 cursor-not-allowed":p?"bg-blue-500 text-white":h?"bg-blue-100":c?"text-blue-500":o?"text-black":"text-gray-400"} ${v?"":p?"hover:bg-blue-600":"hover:bg-gray-100"}`,onClick:chunkACAR2CMA_js.a(I=>{v||g(r);},"handleClick"),children:dateFns.format(r,"d")}),"CalendarDay");var Go=chunkACAR2CMA_js.a(r=>{switch(r){case "primary":return "bg-blue-100 border-blue-200 dark:bg-blue-800/10 dark:border-blue-900";case "error":return "bg-red-100 border-red-200 dark:bg-red-800/10 dark:border-red-900";case "warning":return "bg-yellow-100 border-yellow-200 dark:bg-yellow-800/10 dark:border-yellow-900";case "success":return "bg-teal-100 border-teal-200 dark:bg-teal-800/10 dark:border-teal-900";case "default":default:return "bg-white border border-gray-200 dark:bg-neutral-800 dark:border-neutral-700"}},"getColorStyle"),Vo=chunkACAR2CMA_js.a(r=>{switch(r){case "primary":return "text-blue-800 dark:text-blue-500";case "error":return "text-red-800 dark:text-red-500";case "warning":return "text-yellow-800 dark:text-yellow-500";case "success":return "text-teal-800 dark:text-teal-500";case "default":default:return "text-gray-800 dark:text-white"}},"getTextColor"),qo=chunkACAR2CMA_js.a(r=>{switch(r){case "bottom":return "translate-y-4";case "top":default:return "-translate-y-4"}},"getTransitionStarting"),ar=chunkACAR2CMA_js.a(({id:r,color:o="default",message:c,duration:p,transitionDirection:h,cancelable:v=true,onClose:g})=>{let[P,I]=jt.useState(false),[R,F]=jt.useState(false),M=jt.useRef(null),N=jt.useCallback(()=>{I(true),M.current=setTimeout(()=>{g(r);},300);},[r,g]);return jt.useEffect(()=>{if(F(true),p&&p<1/0){let $=setTimeout(()=>{N();},p);return ()=>clearTimeout($)}},[p,N]),jt.useEffect(()=>()=>{M.current&&clearTimeout(M.current);},[]),jsxRuntime.jsx("div",{className:`max-w-xs
|
|
66
|
+
`);var Bt=chunkACAR2CMA_js.a(({url:r})=>{let[o,c]=jt.useState(1),[p,h]=jt.useState(),v=jt__default.default.useRef(null),g=jt__default.default.useRef(null),P=chunkACAR2CMA_js.a(()=>{c(R=>Math.min(R+.25,4));},"handleZoomIn");return jsxRuntime.jsxs("div",{ref:g,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(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkACAR2CMA_js.Pa,{style:{width:20,height:20}}),onClick:chunkACAR2CMA_js.a(()=>{c(R=>Math.max(R-.25,.25));},"handleZoomOut"),disabled:o<=.25,p:5}),jsxRuntime.jsxs(chunkACAR2CMA_js.ob,{py:5,px:8,children:[o*100,"%"]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkACAR2CMA_js.ma,{style:{width:14,height:14}}),onClick:P,disabled:o>=4,p:8})]}),jsxRuntime.jsx("div",{className:"h-full w-full overflow-auto",children:jsxRuntime.jsx("img",{src:r,ref:v,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"all 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...p==="width"&&{width:`calc(${o*100}% - 20px)`},...p==="height"&&{height:`calc(${o*100}% - 20px)`}},onLoad:()=>{if(v.current&&g.current){let R=v.current.width,F=v.current.height,M=R<F?"height":"width";h(M);}}})})]})},"ImageDriver");var Ot=chunkACAR2CMA_js.a(({url:r})=>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:r,className:"w-full"})}),"AudioDriver");var Ze=chunkACAR2CMA_js.a(({url:r})=>{let[o,c]=jt.useState(null),[p,h]=jt.useState(false),[v,g]=jt.useState(true),[P,I]=jt.useState(null);return jt.useEffect(()=>{h(true);},[]),jt.useEffect(()=>{if(!p)return;chunkACAR2CMA_js.a(async()=>{try{let F=await import('./PdfDriver-235WGQCW.js');c(()=>F.PdfDriver),g(!1);}catch(F){console.error("Failed to load PDF driver:",F),I("Failed to load PDF viewer"),g(false);}},"loadPdfDriver")();},[p]),p?v?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..."})}):P||!o?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:P||"PDF viewer unavailable"})})}):jsxRuntime.jsx(o,{url:r}):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=50,ao=1e4,Wt=chunkACAR2CMA_js.a(({url:r,blob:o})=>{let c=jt.useRef(null),[p,h]=jt.useState(null),[v,g]=jt.useState(true);return jt.useEffect(()=>{chunkACAR2CMA_js.a(async()=>{if(c.current)try{if(g(!0),h(null),!o&&r&&(o=await(await fetch(r)).blob()),!o){h("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(o.size/(1024*1024)>Ht){h(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${Ht} \u041C\u0411)`);return}c.current.innerHTML="";let R=docxPreview.renderAsync(o,c.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),F=new Promise((M,N)=>setTimeout(()=>N(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")),ao));await Promise.race([R,F]),g(!1);}catch(I){h(I?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),g(false);}},"renderDocument")();},[r,o]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!!p&&!v&&jsxRuntime.jsx("div",{className:"text-red-500 p-5",children:p}),v&&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:c,className:"w-full h-full overflow-auto [&>div.docx-wrapper_table_*]:wrap-break-word! [&>div.docx-wrapper_table]:table-fixed! [&>div.docx-wrapper_table]:max-w-full! [&>div.docx-wrapper_table]:w-full! [&>div.docx-wrapper_img]:max-w-full! [&>div.docx-wrapper_img]:h-auto! [&>div.docx-wrapper_table]:border-collapse! [&>div.docx-wrapper]:w-full [&>div.docx-wrapper]:box-border [&>div.docx-wrapper]:min-w-fit [&>div.docx-wrapper>section]:max-w-full! [&>div.docx-wrapper>section]:min-w-fit",style:{boxSizing:"border-box",wordBreak:"break-word",overflowWrap:"break-word"}})]})},"DocxDriver");var wo=chunkACAR2CMA_js.a(r=>({js:[langJavascript.javascript({jsx:false})],jsx:[langJavascript.javascript({jsx:true})],ts:[langJavascript.javascript({typescript:true,jsx:false})],tsx:[langJavascript.javascript({typescript:true,jsx:true})],json:[langJson.json()],html:[langHtml.html()],css:[langCss.css()],scss:[langCss.css()],py:[langPython.python()],java:[langJava.java()],cpp:[langCpp.cpp()],c:[langCpp.cpp()],php:[langPhp.php()],rs:[langRust.rust()],xml:[langXml.xml()],yaml:[langYaml.yaml()],yml:[langYaml.yaml()],md:[langMarkdown.markdown()],sql:[langSql.sql()],sh:[langMarkdown.markdown()],bash:[langMarkdown.markdown()]})[r]||[],"getLanguageExtension"),Vt=chunkACAR2CMA_js.a(({url:r,extension:o})=>{let[c,p]=jt.useState(""),[h,v]=jt.useState(true),[g,P]=jt.useState(null),[I,R]=jt.useState(0),F=jt.useRef(null);if(jt.useEffect(()=>{chunkACAR2CMA_js.a(async()=>{try{v(!0),P(null);let $=await fetch(r);if(!$.ok)throw new Error(`Failed to load file: ${$.statusText}`);let t=await $.text();p(t);}catch($){P($ instanceof Error?$.message:"Failed to load text content");}finally{v(false);}},"loadTextContent")();},[r]),jt.useEffect(()=>{let N=chunkACAR2CMA_js.a(()=>{if(F.current){let $=F.current.clientHeight;R($);}},"updateHeight");return N(),window.addEventListener("resize",N),()=>{window.removeEventListener("resize",N);}},[h]),h)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(g)return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsxs("div",{className:"text-red-500",children:["Error: ",g]})});let M=wo(o);return jsxRuntime.jsx("div",{ref:F,className:"h-full w-full",children:I>0&&jsxRuntime.jsx(lo__default.default,{value:c,theme:codemirrorThemeVscode.vscodeDark,extensions:M,editable:false,height:`${I}px`,basicSetup:{lineNumbers:true,highlightActiveLineGutter:false,highlightActiveLine:false,foldGutter:true,dropCursor:false,indentOnInput:false,syntaxHighlighting:true,bracketMatching:true,closeBrackets:false,autocompletion:false,rectangularSelection:false,crosshairCursor:false,highlightSelectionMatches:false,closeBracketsKeymap:false,searchKeymap:false,foldKeymap:true,completionKeymap:false,lintKeymap:false}})})},"TextDriver");var Ut=chunkACAR2CMA_js.a(({url:r})=>jsxRuntime.jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsxRuntime.jsx("video",{controls:true,src:r,className:"w-full max-h-full"})}),"VideoDriver");var Zt=jt.memo(chunkACAR2CMA_js.a(function({extension:o,blob:c,path:p,buffer:h,not_supported_message:v=" Sorry, this file type isn\u2019t supported yet."}){console.log("Driver props:",{extension:o,blob:c,path:p,buffer:h});let g=o.toLocaleLowerCase().trim(),P;if(p?P=p:c&&(P=URL.createObjectURL(c)),P){if(["jpeg","jpg","png","gif","bmp","webp"].includes(g))return jsxRuntime.jsx(Bt,{url:P});if(["mp3","wav","ogg","flac"].includes(g))return jsxRuntime.jsx(Ot,{url:P});if(["mp4","webm"].includes(g))return jsxRuntime.jsx(Ut,{url:P});if(o==="pdf")return jsxRuntime.jsx(Ze,{url:P});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(g))return jsxRuntime.jsx(Vt,{url:P,extension:g})}return g==="docx"?jsxRuntime.jsx(Wt,{url:P,blob:c}):jsxRuntime.jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsxRuntime.jsx(chunkACAR2CMA_js.ob,{className:"mx-5",children:jsxRuntime.jsx(chunkACAR2CMA_js.Ya,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:v})})})},"Driver"));var Qc=chunkACAR2CMA_js.a(r=>jsxRuntime.jsx("div",{className:"h-full w-full",children:jsxRuntime.jsx(Zt,{...r})}),"FileViewer");var Qt=250,hl=chunkACAR2CMA_js.a(({text:r,speed:o=50,onDone:c,markdown:p=false,markdownComponents:h={},className:v,...g})=>{let[P,I]=jt.useState(""),R=jt.useRef(null),F=jt.useRef(null);return jt.useEffect(()=>{let M=false;if(o>0){I(""),R.current=performance.now();let N=chunkACAR2CMA_js.a($=>{if(M||!R.current)return;let t=$-R.current,H=t/o>Qt?o/2:o,Z=t/o>Qt?1.5:1,x=Math.floor(t/H*Z);if(x>=r.length){I(r),M=true,c?.();return}I(r.slice(0,x)),F.current=requestAnimationFrame(N);},"tick");F.current=requestAnimationFrame(N);}else I(r),c?.();return ()=>{F.current&&cancelAnimationFrame(F.current);}},[r,o,c]),p?jsxRuntime.jsx("div",{className:v,children:jsxRuntime.jsx(So__default.default,{remarkPlugins:[Mo__default.default],components:h,...g,children:P})}):jsxRuntime.jsx(chunkACAR2CMA_js.Ya,{className:v,...g,children:P})},"Typewriter");var Io={timeout:2e3,message:"Copied!"},Sl=chunkACAR2CMA_js.a(({text:r,children:o,format:c="text/plain",tooltip:p})=>{let[h,v]=jt.useState(false),g=jt.useRef(null),P={...Io,...p},I=chunkACAR2CMA_js.a(async()=>{"clipboard"in navigator?await navigator.clipboard.writeText(r):No__default.default(r,{format:c}),v(true),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>v(false),P.timeout);},"handleCopy");return jt.useEffect(()=>()=>{g.current&&clearTimeout(g.current);},[]),jsxRuntime.jsx(chunkACAR2CMA_js.Ab,{onMouseLeave:()=>v(false),className:h?"visible":"hidden",content:P.message,children:o({copy:I})})},"CopyToClipboard");var er=chunkACAR2CMA_js.a(r=>new Date(r?Array.isArray(r)?r[1]||r[0]||new Date:r:new Date),"getInitValue"),$e=chunkACAR2CMA_js.a((r,o)=>{let c;if(o){let h=dateFns.parse(r||"",o,new Date);if(dateFns.isValid(h)&&dateFns.getYear(h)>=1970)return h}let p=new Date(r||"");return isNaN(p.getTime())?c:p},"parseDate"),$o=chunkACAR2CMA_js.a((r,o)=>{let c=r?$e(r,o):void 0;return c&&o?dateFns.format(c,o):r},"renderDate"),$l=chunkACAR2CMA_js.a(({value:r,range:o,inline:c=false,minDate:p=new Date(dateFns.getYear(new Date)-5,0,1),maxDate:h=new Date(dateFns.getYear(new Date)+5,11,31),format:v="dd.MM.yyyy",onChange:g,...P})=>{let[I,R]=jt.useState(dateFns.getMonth(er(r))),[F,M]=jt.useState(dateFns.getYear(er(r))),N=jt.useMemo(()=>{if(r){if(Array.isArray(r)){let t=$e(r[0],v),H=$e(r[1],v);return [t,H]}return $e(r,v)}},[r]),$=jt.useCallback(t=>{if(o){let H=!!(N&&Array.isArray(N)&&N[0]),Z=!!(N&&Array.isArray(N)&&N[1]);!H||H&&Z?g?.([t.toString(),""]):H&&!Z&&(t<N[0]?g?.([t.toString(),N[0].toString()]):g?.([N[0].toString(),t.toString()]));}else g?.(t.toString());},[o,N,g]);return c?jsxRuntime.jsx(tr,{month:I,year:F,minDate:p,maxDate:h,selectedDate:N,onSelectDate:$,onChangeMonth:R,onChangeYear:M}):o?jsxRuntime.jsx(Ho,{range:true,value:r,onChange:g,...P}):jsxRuntime.jsx(Wo,{value:r,onChange:g,minDate:p,maxDate:h,month:I,year:F,selectedDate:N,onChangeMonth:R,onChangeYear:M,onSelectDate:$,formatStr:v,...P})},"DatePicker"),Ho=chunkACAR2CMA_js.a(({minDate:r,maxDate:o,value:c,onChange:p})=>null,"DatePickerGroupInput"),Wo=chunkACAR2CMA_js.a(({placeholder:r,value:o,onChange:c,inputProps:p,...h})=>{let[v,g]=jt.useState(false),P=chunkACAR2CMA_js.y();return jsxRuntime.jsx(reactTinyPopover.Popover,{positions:["bottom","top","right","left"],align:"start",isOpen:v,onClickOutside:()=>g(false),content:jsxRuntime.jsx(chunkACAR2CMA_js.ob,{children:jsxRuntime.jsx(tr,{...h})}),containerStyle:{zIndex:`${P.zIndex.popover}`},children:jsxRuntime.jsx("div",{onClick:()=>g(true),children:jsxRuntime.jsx(chunkACAR2CMA_js.kb,{...p,placeholder:r,value:$o(o,h.formatStr),onChange:I=>c?.(I.target.value)})})})},"DatePickerInput"),tr=chunkACAR2CMA_js.a(({month:r,year:o,selectedDate:c,minDate:p,maxDate:h,onSelectDate:v,onChangeMonth:g,onChangeYear:P})=>{let I=jt.useMemo(()=>new Array(12).fill(null).map((x,j)=>{let S=new Date(0,j);return {value:j+1,inputDisplay:dateFns.format(S,"MMMM")}}),[]),R=jt.useMemo(()=>{let x=dateFns.getYear(p),S=dateFns.getYear(h)-x+1;return new Array(S).fill(null).map((k,ee)=>{let U=x+ee;return {value:U,inputDisplay:U.toString()}})},[p,h]),F=jt.useMemo(()=>new Array(7).fill(null).map((x,j)=>{let S=dateFns.startOfWeek(new Date,{weekStartsOn:j});return dateFns.format(S,"EEE")}),[]),M=jt.useMemo(()=>{let x=dateFns.getWeeksInMonth(new Date(o,r)),j=dateFns.startOfMonth(new Date(o,r)),S=dateFns.previousMonday(j),k=dateFns.differenceInDays(j,S);return new Array(x*7).fill(null).map((ee,U)=>new Date(o,r,U-k+1))},[r,o]),N=jt.useCallback(()=>{r===0?(P(o-1),g(11)):g(r-1);},[r,o]),$=jt.useCallback(()=>{r===11?(P(o+1),g(0)):g(r+1);},[r,o]),t=jt.useMemo(()=>p?!(o<dateFns.getYear(p)||o===dateFns.getYear(p)&&r<=dateFns.getMonth(p)):true,[r,o,p]),H=jt.useMemo(()=>h?!(o>dateFns.getYear(h)||o===dateFns.getYear(h)&&r>=dateFns.getMonth(h)):true,[r,o,h]),Z=jt.useCallback(x=>{x.stopPropagation();},[]);return jsxRuntime.jsxs("div",{className:"flex flex-col date-picker-calendar",onClick:Z,children:[jsxRuntime.jsxs("div",{className:"flex justify-center items-center gap-2 pb-3",children:[t&&jsxRuntime.jsx(chunkACAR2CMA_js.z,{size:"small",variant:"empty",icon:jsxRuntime.jsx(chunkACAR2CMA_js.G,{}),onClick:N}),jsxRuntime.jsxs("div",{className:"flex-1 flex justify-center gap-1",children:[jsxRuntime.jsx(chunkACAR2CMA_js.ib,{placeholder:"",hasBorder:false,selected:r+1,options:I,onSelect:x=>g(x-1),maxWidth:150,maxHeight:300}),jsxRuntime.jsx(chunkACAR2CMA_js.ib,{placeholder:"",hasBorder:false,selected:o,options:R,onSelect:x=>P(x),maxWidth:100,maxHeight:300})]}),H&&jsxRuntime.jsx(chunkACAR2CMA_js.z,{size:"small",variant:"empty",icon:jsxRuntime.jsx(chunkACAR2CMA_js.H,{}),onClick:$})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-7 gap-2",children:F.map(x=>jsxRuntime.jsx("div",{className:"text-center",children:x},x))}),jsxRuntime.jsx("div",{className:"grid grid-cols-7 gap-2 mt-2",children:M.map(x=>{let j=dateFns.getMonth(x)===r,S=dateFns.format(x,"yyyy-MM-dd")===dateFns.format(new Date,"yyyy-MM-dd"),k=c&&(Array.isArray(c)&&(c[0]&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c[0],"yyyy-MM-dd")||c[1]&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c[1],"yyyy-MM-dd"))||!Array.isArray(c)&&dateFns.format(x,"yyyy-MM-dd")===dateFns.format(c,"yyyy-MM-dd")),ee=c&&Array.isArray(c)&&c[0]&&c[1]&&x>c[0]&&x<c[1],U=p&&dateFns.differenceInDays(x,p)<0||h&&dateFns.differenceInDays(x,h)>0||!j;return jsxRuntime.jsx(_o,{date:x,isCurrentMonth:j,isCurrentDay:S,isSelected:!!k,isInRange:!!ee,isDisabled:!!U,onSelectDate:v},x.toISOString())})})]})},"DatePickerCalendar"),_o=chunkACAR2CMA_js.a(({date:r,isCurrentMonth:o,isCurrentDay:c,isSelected:p,isInRange:h,isDisabled:v,onSelectDate:g})=>jsxRuntime.jsx("div",{className:`text-center p-2 cursor-pointer rounded ${v?"text-gray-400 cursor-not-allowed":p?"bg-blue-500 text-white":h?"bg-blue-100":c?"text-blue-500":o?"text-black":"text-gray-400"} ${v?"":p?"hover:bg-blue-600":"hover:bg-gray-100"}`,onClick:chunkACAR2CMA_js.a(I=>{v||g(r);},"handleClick"),children:dateFns.format(r,"d")}),"CalendarDay");var Go=chunkACAR2CMA_js.a(r=>{switch(r){case "primary":return "bg-blue-100 border-blue-200 dark:bg-blue-800/10 dark:border-blue-900";case "error":return "bg-red-100 border-red-200 dark:bg-red-800/10 dark:border-red-900";case "warning":return "bg-yellow-100 border-yellow-200 dark:bg-yellow-800/10 dark:border-yellow-900";case "success":return "bg-teal-100 border-teal-200 dark:bg-teal-800/10 dark:border-teal-900";case "default":default:return "bg-white border border-gray-200 dark:bg-neutral-800 dark:border-neutral-700"}},"getColorStyle"),Vo=chunkACAR2CMA_js.a(r=>{switch(r){case "primary":return "text-blue-800 dark:text-blue-500";case "error":return "text-red-800 dark:text-red-500";case "warning":return "text-yellow-800 dark:text-yellow-500";case "success":return "text-teal-800 dark:text-teal-500";case "default":default:return "text-gray-800 dark:text-white"}},"getTextColor"),qo=chunkACAR2CMA_js.a(r=>{switch(r){case "bottom":return "translate-y-4";case "top":default:return "-translate-y-4"}},"getTransitionStarting"),ar=chunkACAR2CMA_js.a(({id:r,color:o="default",message:c,duration:p,transitionDirection:h,cancelable:v=true,onClose:g})=>{let[P,I]=jt.useState(false),[R,F]=jt.useState(false),M=jt.useRef(null),N=jt.useCallback(()=>{I(true),M.current=setTimeout(()=>{g(r);},300);},[r,g]);return jt.useEffect(()=>{if(F(true),p&&p<1/0){let $=setTimeout(()=>{N();},p);return ()=>clearTimeout($)}},[p,N]),jt.useEffect(()=>()=>{M.current&&clearTimeout(M.current);},[]),jsxRuntime.jsx("div",{className:`max-w-xs
|
|
67
67
|
border
|
|
68
68
|
w-full
|
|
69
69
|
text-sm
|
package/dist/index.mjs
CHANGED
|
@@ -63,7 +63,7 @@ ${r?`
|
|
|
63
63
|
`:""}
|
|
64
64
|
|
|
65
65
|
min-width: 0;
|
|
66
|
-
`);var jt=a(({url:r})=>{let[o,c]=useState(1),[p,h]=useState(),w=Rt.useRef(null),f=Rt.useRef(null),P=a(()=>{c(E=>Math.min(E+.25,4));},"handleZoomIn");return jsxs("div",{ref:f,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(()=>{c(E=>Math.max(E-.25,.25));},"handleZoomOut"),disabled:o<=.25,p:5}),jsxs(ob,{py:5,px:8,children:[o*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:P,disabled:o>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto",children:jsx("img",{src:r,ref:w,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"all 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...p==="width"&&{width:`calc(${o*100}% - 20px)`},...p==="height"&&{height:`calc(${o*100}% - 20px)`}},onLoad:()=>{if(w.current&&f.current){let E=w.current.width,B=w.current.height,M=E<B?"height":"width";h(M);}}})})]})},"ImageDriver");var Ft=a(({url:r})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:r,className:"w-full"})}),"AudioDriver");var Ue=a(({url:r})=>{let[o,c]=useState(null),[p,h]=useState(false),[w,f]=useState(true),[P,L]=useState(null);return useEffect(()=>{h(true);},[]),useEffect(()=>{if(!p)return;a(async()=>{try{let B=await import('./PdfDriver-WD2ZDGPD.mjs');c(()=>B.PdfDriver),f(!1);}catch(B){console.error("Failed to load PDF driver:",B),L("Failed to load PDF viewer"),f(false);}},"loadPdfDriver")();},[p]),p?w?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):P||!o?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:P||"PDF viewer unavailable"})})}):jsx(o,{url:r}):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 Ot=50,no=1e4,Wt=a(({url:r,blob:o})=>{let c=useRef(null),[p,h]=useState(null),[w,f]=useState(true);return useEffect(()=>{a(async()=>{if(c.current)try{if(f(!0),h(null),!o&&r&&(o=await(await fetch(r)).blob()),!o){h("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(o.size/(1024*1024)>Ot){h(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${Ot} \u041C\u0411)`);return}c.current.innerHTML="";let E=renderAsync(o,c.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),B=new Promise((M,C)=>setTimeout(()=>C(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")),no));await Promise.race([E,B]),f(!1);}catch(L){h(L?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),f(false);}},"renderDocument")();},[r,o]),jsxs(Fragment$1,{children:[!!p&&!w&&jsx("div",{className:"text-red-500 p-5",children:p}),w&&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:c,className:"w-full h-full overflow-auto [&>div.docx-wrapper_table_*]:wrap-break-word! [&>div.docx-wrapper_table]:table-fixed! [&>div.docx-wrapper_table]:max-w-full! [&>div.docx-wrapper_table]:w-full! [&>div.docx-wrapper_img]:max-w-full! [&>div.docx-wrapper_img]:h-auto! [&>div.docx-wrapper_table]:border-collapse! [&>div.docx-wrapper]:w-full [&>div.docx-wrapper]:box-border [&>div.docx-wrapper]:min-w-fit [&>div.docx-wrapper>section]:max-w-full! [&>div.docx-wrapper>section]:min-w-fit",style:{boxSizing:"border-box",wordBreak:"break-word",overflowWrap:"break-word"}})]})},"DocxDriver");var wo=a(r=>({js:[javascript({jsx:false})],jsx:[javascript({jsx:true})],ts:[javascript({typescript:true,jsx:false})],tsx:[javascript({typescript:true,jsx:true})],json:[json()],html:[html()],css:[css()],scss:[css()],py:[python()],java:[java()],cpp:[cpp()],c:[cpp()],php:[php()],rs:[rust()],xml:[xml()],yaml:[yaml()],yml:[yaml()],md:[markdown()],sql:[sql()],sh:[markdown()],bash:[markdown()]})[r]||[],"getLanguageExtension"),Gt=a(({url:r,extension:o})=>{let[c,p]=useState(""),[h,w]=useState(true),[f,P]=useState(null),[L,E]=useState(0),B=useRef(null);if(useEffect(()=>{a(async()=>{try{w(!0),P(null);let $=await fetch(r);if(!$.ok)throw new Error(`Failed to load file: ${$.statusText}`);let t=await $.text();p(t);}catch($){P($ instanceof Error?$.message:"Failed to load text content");}finally{w(false);}},"loadTextContent")();},[r]),useEffect(()=>{let C=a(()=>{if(B.current){let $=B.current.clientHeight;E($);}},"updateHeight");return C(),window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C);}},[h]),h)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(f)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",f]})});let M=wo(o);return jsx("div",{ref:B,className:"h-full w-full",children:L>0&&jsx(co,{value:c,theme:vscodeDark,extensions:M,editable:false,height:`${L}px`,basicSetup:{lineNumbers:true,highlightActiveLineGutter:false,highlightActiveLine:false,foldGutter:true,dropCursor:false,indentOnInput:false,syntaxHighlighting:true,bracketMatching:true,closeBrackets:false,autocompletion:false,rectangularSelection:false,crosshairCursor:false,highlightSelectionMatches:false,closeBracketsKeymap:false,searchKeymap:false,foldKeymap:true,completionKeymap:false,lintKeymap:false}})})},"TextDriver");var qt=a(({url:r})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:r,className:"w-full max-h-full"})}),"VideoDriver");var Ut=memo(a(function({extension:o,blob:c,path:p,buffer:h,not_supported_message:w=" Sorry, this file type isn\u2019t supported yet."}){console.log("Driver props:",{extension:o,blob:c,path:p,buffer:h});let f=o.toLocaleLowerCase().trim(),P;if(p?P=p:c&&(P=URL.createObjectURL(c)),P){if(["jpeg","jpg","png","gif","bmp","webp"].includes(f))return jsx(jt,{url:P});if(["mp3","wav","ogg","flac"].includes(f))return jsx(Ft,{url:P});if(["mp4","webm"].includes(f))return jsx(qt,{url:P});if(o==="pdf")return jsx(Ue,{url:P});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(f))return jsx(Gt,{url:P,extension:f})}return f==="docx"?jsx(Wt,{url:P,blob:c}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(ob,{className:"mx-5",children:jsx(Ya,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:w})})})},"Driver"));var Nc=a(r=>jsx("div",{className:"h-full w-full",children:jsx(Ut,{...r})}),"FileViewer");var Kt=250,Wc=a(({text:r,speed:o=50,onDone:c,markdown:p=false,markdownComponents:h={},className:w,...f})=>{let[P,L]=useState(""),E=useRef(null),B=useRef(null);return useEffect(()=>{let M=false;if(o>0){L(""),E.current=performance.now();let C=a($=>{if(M||!E.current)return;let t=$-E.current,O=t/o>Kt?o/2:o,U=t/o>Kt?1.5:1,x=Math.floor(t/O*U);if(x>=r.length){L(r),M=true,c?.();return}L(r.slice(0,x)),B.current=requestAnimationFrame(C);},"tick");B.current=requestAnimationFrame(C);}else L(r),c?.();return ()=>{B.current&&cancelAnimationFrame(B.current);}},[r,o,c]),p?jsx("div",{className:w,children:jsx(Po,{remarkPlugins:[So],components:h,...f,children:P})}):jsx(Ya,{className:w,...f,children:P})},"Typewriter");var Lo={timeout:2e3,message:"Copied!"},Jc=a(({text:r,children:o,format:c="text/plain",tooltip:p})=>{let[h,w]=useState(false),f=useRef(null),P={...Lo,...p},L=a(async()=>{"clipboard"in navigator?await navigator.clipboard.writeText(r):Mo(r,{format:c}),w(true),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>w(false),P.timeout);},"handleCopy");return useEffect(()=>()=>{f.current&&clearTimeout(f.current);},[]),jsx(Ab,{onMouseLeave:()=>w(false),className:h?"visible":"hidden",content:P.message,children:o({copy:L})})},"CopyToClipboard");var Qt=a(r=>new Date(r?Array.isArray(r)?r[1]||r[0]||new Date:r:new Date),"getInitValue"),$e=a((r,o)=>{let c;if(o){let h=parse(r||"",o,new Date);if(isValid(h)&&getYear(h)>=1970)return h}let p=new Date(r||"");return isNaN(p.getTime())?c:p},"parseDate"),$o=a((r,o)=>{let c=r?$e(r,o):void 0;return c&&o?format(c,o):r},"renderDate"),dl=a(({value:r,range:o,inline:c=false,minDate:p=new Date(getYear(new Date)-5,0,1),maxDate:h=new Date(getYear(new Date)+5,11,31),format:w="dd.MM.yyyy",onChange:f,...P})=>{let[L,E]=useState(getMonth(Qt(r))),[B,M]=useState(getYear(Qt(r))),C=useMemo(()=>{if(r){if(Array.isArray(r)){let t=$e(r[0],w),O=$e(r[1],w);return [t,O]}return $e(r,w)}},[r]),$=useCallback(t=>{if(o){let O=!!(C&&Array.isArray(C)&&C[0]),U=!!(C&&Array.isArray(C)&&C[1]);!O||O&&U?f?.([t.toString(),""]):O&&!U&&(t<C[0]?f?.([t.toString(),C[0].toString()]):f?.([C[0].toString(),t.toString()]));}else f?.(t.toString());},[o,C,f]);return c?jsx(er,{month:L,year:B,minDate:p,maxDate:h,selectedDate:C,onSelectDate:$,onChangeMonth:E,onChangeYear:M}):o?jsx(Oo,{range:true,value:r,onChange:f,...P}):jsx(Wo,{value:r,onChange:f,minDate:p,maxDate:h,month:L,year:B,selectedDate:C,onChangeMonth:E,onChangeYear:M,onSelectDate:$,formatStr:w,...P})},"DatePicker"),Oo=a(({minDate:r,maxDate:o,value:c,onChange:p})=>null,"DatePickerGroupInput"),Wo=a(({placeholder:r,value:o,onChange:c,inputProps:p,...h})=>{let[w,f]=useState(false),P=y();return jsx(Popover,{positions:["bottom","top","right","left"],align:"start",isOpen:w,onClickOutside:()=>f(false),content:jsx(ob,{children:jsx(er,{...h})}),containerStyle:{zIndex:`${P.zIndex.popover}`},children:jsx("div",{onClick:()=>f(true),children:jsx(kb,{...p,placeholder:r,value:$o(o,h.formatStr),onChange:L=>c?.(L.target.value)})})})},"DatePickerInput"),er=a(({month:r,year:o,selectedDate:c,minDate:p,maxDate:h,onSelectDate:w,onChangeMonth:f,onChangeYear:P})=>{let L=useMemo(()=>new Array(12).fill(null).map((x,R)=>{let S=new Date(0,R);return {value:R+1,inputDisplay:format(S,"MMMM")}}),[]),E=useMemo(()=>{let x=getYear(p),S=getYear(h)-x+1;return new Array(S).fill(null).map((k,Q)=>{let q=x+Q;return {value:q,inputDisplay:q.toString()}})},[p,h]),B=useMemo(()=>new Array(7).fill(null).map((x,R)=>{let S=startOfWeek(new Date,{weekStartsOn:R});return format(S,"EEE")}),[]),M=useMemo(()=>{let x=getWeeksInMonth(new Date(o,r)),R=startOfMonth(new Date(o,r)),S=previousMonday(R),k=differenceInDays(R,S);return new Array(x*7).fill(null).map((Q,q)=>new Date(o,r,q-k+1))},[r,o]),C=useCallback(()=>{r===0?(P(o-1),f(11)):f(r-1);},[r,o]),$=useCallback(()=>{r===11?(P(o+1),f(0)):f(r+1);},[r,o]),t=useMemo(()=>p?!(o<getYear(p)||o===getYear(p)&&r<=getMonth(p)):true,[r,o,p]),O=useMemo(()=>h?!(o>getYear(h)||o===getYear(h)&&r>=getMonth(h)):true,[r,o,h]),U=useCallback(x=>{x.stopPropagation();},[]);return jsxs("div",{className:"flex flex-col date-picker-calendar",onClick:U,children:[jsxs("div",{className:"flex justify-center items-center gap-2 pb-3",children:[t&&jsx(z,{size:"small",variant:"empty",icon:jsx(G,{}),onClick:C}),jsxs("div",{className:"flex-1 flex justify-center gap-1",children:[jsx(ib,{placeholder:"",hasBorder:false,selected:r+1,options:L,onSelect:x=>f(x-1),maxWidth:150,maxHeight:300}),jsx(ib,{placeholder:"",hasBorder:false,selected:o,options:E,onSelect:x=>P(x),maxWidth:100,maxHeight:300})]}),O&&jsx(z,{size:"small",variant:"empty",icon:jsx(H,{}),onClick:$})]}),jsx("div",{className:"grid grid-cols-7 gap-2",children:B.map(x=>jsx("div",{className:"text-center",children:x},x))}),jsx("div",{className:"grid grid-cols-7 gap-2 mt-2",children:M.map(x=>{let R=getMonth(x)===r,S=format(x,"yyyy-MM-dd")===format(new Date,"yyyy-MM-dd"),k=c&&(Array.isArray(c)&&(c[0]&&format(x,"yyyy-MM-dd")===format(c[0],"yyyy-MM-dd")||c[1]&&format(x,"yyyy-MM-dd")===format(c[1],"yyyy-MM-dd"))||!Array.isArray(c)&&format(x,"yyyy-MM-dd")===format(c,"yyyy-MM-dd")),Q=c&&Array.isArray(c)&&c[0]&&c[1]&&x>c[0]&&x<c[1],q=p&&differenceInDays(x,p)<0||h&&differenceInDays(x,h)>0||!R;return jsx(Ho,{date:x,isCurrentMonth:R,isCurrentDay:S,isSelected:!!k,isInRange:!!Q,isDisabled:!!q,onSelectDate:w},x.toISOString())})})]})},"DatePickerCalendar"),Ho=a(({date:r,isCurrentMonth:o,isCurrentDay:c,isSelected:p,isInRange:h,isDisabled:w,onSelectDate:f})=>jsx("div",{className:`text-center p-2 cursor-pointer rounded ${w?"text-gray-400 cursor-not-allowed":p?"bg-blue-500 text-white":h?"bg-blue-100":c?"text-blue-500":o?"text-black":"text-gray-400"} ${w?"":p?"hover:bg-blue-600":"hover:bg-gray-100"}`,onClick:a(L=>{w||f(r);},"handleClick"),children:format(r,"d")}),"CalendarDay");var Yo=a(r=>{switch(r){case "primary":return "bg-blue-100 border-blue-200 dark:bg-blue-800/10 dark:border-blue-900";case "error":return "bg-red-100 border-red-200 dark:bg-red-800/10 dark:border-red-900";case "warning":return "bg-yellow-100 border-yellow-200 dark:bg-yellow-800/10 dark:border-yellow-900";case "success":return "bg-teal-100 border-teal-200 dark:bg-teal-800/10 dark:border-teal-900";case "default":default:return "bg-white border border-gray-200 dark:bg-neutral-800 dark:border-neutral-700"}},"getColorStyle"),Go=a(r=>{switch(r){case "primary":return "text-blue-800 dark:text-blue-500";case "error":return "text-red-800 dark:text-red-500";case "warning":return "text-yellow-800 dark:text-yellow-500";case "success":return "text-teal-800 dark:text-teal-500";case "default":default:return "text-gray-800 dark:text-white"}},"getTextColor"),Vo=a(r=>{switch(r){case "bottom":return "translate-y-4";case "top":default:return "-translate-y-4"}},"getTransitionStarting"),nr=a(({id:r,color:o="default",message:c,duration:p,transitionDirection:h,cancelable:w=true,onClose:f})=>{let[P,L]=useState(false),[E,B]=useState(false),M=useRef(null),C=useCallback(()=>{L(true),M.current=setTimeout(()=>{f(r);},300);},[r,f]);return useEffect(()=>{if(B(true),p&&p<1/0){let $=setTimeout(()=>{C();},p);return ()=>clearTimeout($)}},[p,C]),useEffect(()=>()=>{M.current&&clearTimeout(M.current);},[]),jsx("div",{className:`max-w-xs
|
|
66
|
+
`);var jt=a(({url:r})=>{let[o,c]=useState(1),[p,h]=useState(),w=Rt.useRef(null),f=Rt.useRef(null),P=a(()=>{c(E=>Math.min(E+.25,4));},"handleZoomIn");return jsxs("div",{ref:f,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(()=>{c(E=>Math.max(E-.25,.25));},"handleZoomOut"),disabled:o<=.25,p:5}),jsxs(ob,{py:5,px:8,children:[o*100,"%"]}),jsx(z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsx(ma,{style:{width:14,height:14}}),onClick:P,disabled:o>=4,p:8})]}),jsx("div",{className:"h-full w-full overflow-auto",children:jsx("img",{src:r,ref:w,alt:"image",className:"block w-auto max-w-none object-contain",style:{transition:"all 0.2s ease-in-out",marginInline:"auto",marginBlock:10,flexShrink:0,...p==="width"&&{width:`calc(${o*100}% - 20px)`},...p==="height"&&{height:`calc(${o*100}% - 20px)`}},onLoad:()=>{if(w.current&&f.current){let E=w.current.width,B=w.current.height,M=E<B?"height":"width";h(M);}}})})]})},"ImageDriver");var Ft=a(({url:r})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full p-5.5",children:jsx("audio",{controls:true,src:r,className:"w-full"})}),"AudioDriver");var Ue=a(({url:r})=>{let[o,c]=useState(null),[p,h]=useState(false),[w,f]=useState(true),[P,L]=useState(null);return useEffect(()=>{h(true);},[]),useEffect(()=>{if(!p)return;a(async()=>{try{let B=await import('./PdfDriver-ETH7RNAG.mjs');c(()=>B.PdfDriver),f(!1);}catch(B){console.error("Failed to load PDF driver:",B),L("Failed to load PDF viewer"),f(false);}},"loadPdfDriver")();},[p]),p?w?jsx("div",{className:"flex items-center justify-center h-full w-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF viewer..."})}):P||!o?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:P||"PDF viewer unavailable"})})}):jsx(o,{url:r}):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 Ot=50,no=1e4,Wt=a(({url:r,blob:o})=>{let c=useRef(null),[p,h]=useState(null),[w,f]=useState(true);return useEffect(()=>{a(async()=>{if(c.current)try{if(f(!0),h(null),!o&&r&&(o=await(await fetch(r)).blob()),!o){h("\u041D\u0435 \u043D\u0430\u0434\u0430\u043D\u043E \u0434\u043B\u044F DOCX \u0444\u0430\u0439\u043B\u0443");return}if(o.size/(1024*1024)>Ot){h(`\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439 (> ${Ot} \u041C\u0411)`);return}c.current.innerHTML="";let E=renderAsync(o,c.current,void 0,{debug:!0,experimental:!0,hideWrapperOnPrint:!0}),B=new Promise((M,C)=>setTimeout(()=>C(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")),no));await Promise.race([E,B]),f(!1);}catch(L){h(L?.message||"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 DOCX \u0444\u0430\u0439\u043B"),f(false);}},"renderDocument")();},[r,o]),jsxs(Fragment$1,{children:[!!p&&!w&&jsx("div",{className:"text-red-500 p-5",children:p}),w&&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:c,className:"w-full h-full overflow-auto [&>div.docx-wrapper_table_*]:wrap-break-word! [&>div.docx-wrapper_table]:table-fixed! [&>div.docx-wrapper_table]:max-w-full! [&>div.docx-wrapper_table]:w-full! [&>div.docx-wrapper_img]:max-w-full! [&>div.docx-wrapper_img]:h-auto! [&>div.docx-wrapper_table]:border-collapse! [&>div.docx-wrapper]:w-full [&>div.docx-wrapper]:box-border [&>div.docx-wrapper]:min-w-fit [&>div.docx-wrapper>section]:max-w-full! [&>div.docx-wrapper>section]:min-w-fit",style:{boxSizing:"border-box",wordBreak:"break-word",overflowWrap:"break-word"}})]})},"DocxDriver");var wo=a(r=>({js:[javascript({jsx:false})],jsx:[javascript({jsx:true})],ts:[javascript({typescript:true,jsx:false})],tsx:[javascript({typescript:true,jsx:true})],json:[json()],html:[html()],css:[css()],scss:[css()],py:[python()],java:[java()],cpp:[cpp()],c:[cpp()],php:[php()],rs:[rust()],xml:[xml()],yaml:[yaml()],yml:[yaml()],md:[markdown()],sql:[sql()],sh:[markdown()],bash:[markdown()]})[r]||[],"getLanguageExtension"),Gt=a(({url:r,extension:o})=>{let[c,p]=useState(""),[h,w]=useState(true),[f,P]=useState(null),[L,E]=useState(0),B=useRef(null);if(useEffect(()=>{a(async()=>{try{w(!0),P(null);let $=await fetch(r);if(!$.ok)throw new Error(`Failed to load file: ${$.statusText}`);let t=await $.text();p(t);}catch($){P($ instanceof Error?$.message:"Failed to load text content");}finally{w(false);}},"loadTextContent")();},[r]),useEffect(()=>{let C=a(()=>{if(B.current){let $=B.current.clientHeight;E($);}},"updateHeight");return C(),window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C);}},[h]),h)return jsx("div",{className:"flex items-center justify-center p-8",children:jsx("div",{className:"text-gray-500",children:"Loading text content..."})});if(f)return jsx("div",{className:"flex items-center justify-center p-8",children:jsxs("div",{className:"text-red-500",children:["Error: ",f]})});let M=wo(o);return jsx("div",{ref:B,className:"h-full w-full",children:L>0&&jsx(co,{value:c,theme:vscodeDark,extensions:M,editable:false,height:`${L}px`,basicSetup:{lineNumbers:true,highlightActiveLineGutter:false,highlightActiveLine:false,foldGutter:true,dropCursor:false,indentOnInput:false,syntaxHighlighting:true,bracketMatching:true,closeBrackets:false,autocompletion:false,rectangularSelection:false,crosshairCursor:false,highlightSelectionMatches:false,closeBracketsKeymap:false,searchKeymap:false,foldKeymap:true,completionKeymap:false,lintKeymap:false}})})},"TextDriver");var qt=a(({url:r})=>jsx("div",{className:"flex flex-col justify-center items-center w-full h-full",children:jsx("video",{controls:true,src:r,className:"w-full max-h-full"})}),"VideoDriver");var Ut=memo(a(function({extension:o,blob:c,path:p,buffer:h,not_supported_message:w=" Sorry, this file type isn\u2019t supported yet."}){console.log("Driver props:",{extension:o,blob:c,path:p,buffer:h});let f=o.toLocaleLowerCase().trim(),P;if(p?P=p:c&&(P=URL.createObjectURL(c)),P){if(["jpeg","jpg","png","gif","bmp","webp"].includes(f))return jsx(jt,{url:P});if(["mp3","wav","ogg","flac"].includes(f))return jsx(Ft,{url:P});if(["mp4","webm"].includes(f))return jsx(qt,{url:P});if(o==="pdf")return jsx(Ue,{url:P});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(f))return jsx(Gt,{url:P,extension:f})}return f==="docx"?jsx(Wt,{url:P,blob:c}):jsx("div",{className:"h-full flex flex-col justify-center items-center",children:jsx(ob,{className:"mx-5",children:jsx(Ya,{variant:"h2",color:"text.light",weight:500,className:"text-center",children:w})})})},"Driver"));var Nc=a(r=>jsx("div",{className:"h-full w-full",children:jsx(Ut,{...r})}),"FileViewer");var Kt=250,Wc=a(({text:r,speed:o=50,onDone:c,markdown:p=false,markdownComponents:h={},className:w,...f})=>{let[P,L]=useState(""),E=useRef(null),B=useRef(null);return useEffect(()=>{let M=false;if(o>0){L(""),E.current=performance.now();let C=a($=>{if(M||!E.current)return;let t=$-E.current,O=t/o>Kt?o/2:o,U=t/o>Kt?1.5:1,x=Math.floor(t/O*U);if(x>=r.length){L(r),M=true,c?.();return}L(r.slice(0,x)),B.current=requestAnimationFrame(C);},"tick");B.current=requestAnimationFrame(C);}else L(r),c?.();return ()=>{B.current&&cancelAnimationFrame(B.current);}},[r,o,c]),p?jsx("div",{className:w,children:jsx(Po,{remarkPlugins:[So],components:h,...f,children:P})}):jsx(Ya,{className:w,...f,children:P})},"Typewriter");var Lo={timeout:2e3,message:"Copied!"},Jc=a(({text:r,children:o,format:c="text/plain",tooltip:p})=>{let[h,w]=useState(false),f=useRef(null),P={...Lo,...p},L=a(async()=>{"clipboard"in navigator?await navigator.clipboard.writeText(r):Mo(r,{format:c}),w(true),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>w(false),P.timeout);},"handleCopy");return useEffect(()=>()=>{f.current&&clearTimeout(f.current);},[]),jsx(Ab,{onMouseLeave:()=>w(false),className:h?"visible":"hidden",content:P.message,children:o({copy:L})})},"CopyToClipboard");var Qt=a(r=>new Date(r?Array.isArray(r)?r[1]||r[0]||new Date:r:new Date),"getInitValue"),$e=a((r,o)=>{let c;if(o){let h=parse(r||"",o,new Date);if(isValid(h)&&getYear(h)>=1970)return h}let p=new Date(r||"");return isNaN(p.getTime())?c:p},"parseDate"),$o=a((r,o)=>{let c=r?$e(r,o):void 0;return c&&o?format(c,o):r},"renderDate"),dl=a(({value:r,range:o,inline:c=false,minDate:p=new Date(getYear(new Date)-5,0,1),maxDate:h=new Date(getYear(new Date)+5,11,31),format:w="dd.MM.yyyy",onChange:f,...P})=>{let[L,E]=useState(getMonth(Qt(r))),[B,M]=useState(getYear(Qt(r))),C=useMemo(()=>{if(r){if(Array.isArray(r)){let t=$e(r[0],w),O=$e(r[1],w);return [t,O]}return $e(r,w)}},[r]),$=useCallback(t=>{if(o){let O=!!(C&&Array.isArray(C)&&C[0]),U=!!(C&&Array.isArray(C)&&C[1]);!O||O&&U?f?.([t.toString(),""]):O&&!U&&(t<C[0]?f?.([t.toString(),C[0].toString()]):f?.([C[0].toString(),t.toString()]));}else f?.(t.toString());},[o,C,f]);return c?jsx(er,{month:L,year:B,minDate:p,maxDate:h,selectedDate:C,onSelectDate:$,onChangeMonth:E,onChangeYear:M}):o?jsx(Oo,{range:true,value:r,onChange:f,...P}):jsx(Wo,{value:r,onChange:f,minDate:p,maxDate:h,month:L,year:B,selectedDate:C,onChangeMonth:E,onChangeYear:M,onSelectDate:$,formatStr:w,...P})},"DatePicker"),Oo=a(({minDate:r,maxDate:o,value:c,onChange:p})=>null,"DatePickerGroupInput"),Wo=a(({placeholder:r,value:o,onChange:c,inputProps:p,...h})=>{let[w,f]=useState(false),P=y();return jsx(Popover,{positions:["bottom","top","right","left"],align:"start",isOpen:w,onClickOutside:()=>f(false),content:jsx(ob,{children:jsx(er,{...h})}),containerStyle:{zIndex:`${P.zIndex.popover}`},children:jsx("div",{onClick:()=>f(true),children:jsx(kb,{...p,placeholder:r,value:$o(o,h.formatStr),onChange:L=>c?.(L.target.value)})})})},"DatePickerInput"),er=a(({month:r,year:o,selectedDate:c,minDate:p,maxDate:h,onSelectDate:w,onChangeMonth:f,onChangeYear:P})=>{let L=useMemo(()=>new Array(12).fill(null).map((x,R)=>{let S=new Date(0,R);return {value:R+1,inputDisplay:format(S,"MMMM")}}),[]),E=useMemo(()=>{let x=getYear(p),S=getYear(h)-x+1;return new Array(S).fill(null).map((k,Q)=>{let q=x+Q;return {value:q,inputDisplay:q.toString()}})},[p,h]),B=useMemo(()=>new Array(7).fill(null).map((x,R)=>{let S=startOfWeek(new Date,{weekStartsOn:R});return format(S,"EEE")}),[]),M=useMemo(()=>{let x=getWeeksInMonth(new Date(o,r)),R=startOfMonth(new Date(o,r)),S=previousMonday(R),k=differenceInDays(R,S);return new Array(x*7).fill(null).map((Q,q)=>new Date(o,r,q-k+1))},[r,o]),C=useCallback(()=>{r===0?(P(o-1),f(11)):f(r-1);},[r,o]),$=useCallback(()=>{r===11?(P(o+1),f(0)):f(r+1);},[r,o]),t=useMemo(()=>p?!(o<getYear(p)||o===getYear(p)&&r<=getMonth(p)):true,[r,o,p]),O=useMemo(()=>h?!(o>getYear(h)||o===getYear(h)&&r>=getMonth(h)):true,[r,o,h]),U=useCallback(x=>{x.stopPropagation();},[]);return jsxs("div",{className:"flex flex-col date-picker-calendar",onClick:U,children:[jsxs("div",{className:"flex justify-center items-center gap-2 pb-3",children:[t&&jsx(z,{size:"small",variant:"empty",icon:jsx(G,{}),onClick:C}),jsxs("div",{className:"flex-1 flex justify-center gap-1",children:[jsx(ib,{placeholder:"",hasBorder:false,selected:r+1,options:L,onSelect:x=>f(x-1),maxWidth:150,maxHeight:300}),jsx(ib,{placeholder:"",hasBorder:false,selected:o,options:E,onSelect:x=>P(x),maxWidth:100,maxHeight:300})]}),O&&jsx(z,{size:"small",variant:"empty",icon:jsx(H,{}),onClick:$})]}),jsx("div",{className:"grid grid-cols-7 gap-2",children:B.map(x=>jsx("div",{className:"text-center",children:x},x))}),jsx("div",{className:"grid grid-cols-7 gap-2 mt-2",children:M.map(x=>{let R=getMonth(x)===r,S=format(x,"yyyy-MM-dd")===format(new Date,"yyyy-MM-dd"),k=c&&(Array.isArray(c)&&(c[0]&&format(x,"yyyy-MM-dd")===format(c[0],"yyyy-MM-dd")||c[1]&&format(x,"yyyy-MM-dd")===format(c[1],"yyyy-MM-dd"))||!Array.isArray(c)&&format(x,"yyyy-MM-dd")===format(c,"yyyy-MM-dd")),Q=c&&Array.isArray(c)&&c[0]&&c[1]&&x>c[0]&&x<c[1],q=p&&differenceInDays(x,p)<0||h&&differenceInDays(x,h)>0||!R;return jsx(Ho,{date:x,isCurrentMonth:R,isCurrentDay:S,isSelected:!!k,isInRange:!!Q,isDisabled:!!q,onSelectDate:w},x.toISOString())})})]})},"DatePickerCalendar"),Ho=a(({date:r,isCurrentMonth:o,isCurrentDay:c,isSelected:p,isInRange:h,isDisabled:w,onSelectDate:f})=>jsx("div",{className:`text-center p-2 cursor-pointer rounded ${w?"text-gray-400 cursor-not-allowed":p?"bg-blue-500 text-white":h?"bg-blue-100":c?"text-blue-500":o?"text-black":"text-gray-400"} ${w?"":p?"hover:bg-blue-600":"hover:bg-gray-100"}`,onClick:a(L=>{w||f(r);},"handleClick"),children:format(r,"d")}),"CalendarDay");var Yo=a(r=>{switch(r){case "primary":return "bg-blue-100 border-blue-200 dark:bg-blue-800/10 dark:border-blue-900";case "error":return "bg-red-100 border-red-200 dark:bg-red-800/10 dark:border-red-900";case "warning":return "bg-yellow-100 border-yellow-200 dark:bg-yellow-800/10 dark:border-yellow-900";case "success":return "bg-teal-100 border-teal-200 dark:bg-teal-800/10 dark:border-teal-900";case "default":default:return "bg-white border border-gray-200 dark:bg-neutral-800 dark:border-neutral-700"}},"getColorStyle"),Go=a(r=>{switch(r){case "primary":return "text-blue-800 dark:text-blue-500";case "error":return "text-red-800 dark:text-red-500";case "warning":return "text-yellow-800 dark:text-yellow-500";case "success":return "text-teal-800 dark:text-teal-500";case "default":default:return "text-gray-800 dark:text-white"}},"getTextColor"),Vo=a(r=>{switch(r){case "bottom":return "translate-y-4";case "top":default:return "-translate-y-4"}},"getTransitionStarting"),nr=a(({id:r,color:o="default",message:c,duration:p,transitionDirection:h,cancelable:w=true,onClose:f})=>{let[P,L]=useState(false),[E,B]=useState(false),M=useRef(null),C=useCallback(()=>{L(true),M.current=setTimeout(()=>{f(r);},300);},[r,f]);return useEffect(()=>{if(B(true),p&&p<1/0){let $=setTimeout(()=>{C();},p);return ()=>clearTimeout($)}},[p,C]),useEffect(()=>()=>{M.current&&clearTimeout(M.current);},[]),jsx("div",{className:`max-w-xs
|
|
67
67
|
border
|
|
68
68
|
w-full
|
|
69
69
|
text-sm
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyber-harbour/ui",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.9",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
"react-force-graph-2d": "^1.27.1",
|
|
75
75
|
"react-markdown": "^10.1.0",
|
|
76
76
|
"react-tiny-popover": "^8.1.6",
|
|
77
|
+
"react-virtuoso": "^4.18.1",
|
|
77
78
|
"remark": "^15.0.1",
|
|
78
79
|
"remark-gfm": "^4.0.1",
|
|
79
80
|
"remark-parse": "^11.0.0",
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkACAR2CMA_js=require('./chunk-ACAR2CMA.js'),react=require('react'),F=require('lodash.debounce'),reactPdf=require('react-pdf');require('react-pdf/dist/Page/AnnotationLayer.css'),require('react-pdf/dist/Page/TextLayer.css');var jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var F__default=/*#__PURE__*/_interopDefault(F);var c="/pdfjs";typeof window<"u"&&typeof document<"u"&&(reactPdf.pdfjs.GlobalWorkerOptions.workerSrc=`${c}/pdf.worker.min.js`);var J=chunkACAR2CMA_js.a(({url:x})=>{let[s,y]=react.useState(0),[d,m]=react.useState(1),[N,f]=react.useState(true),[p,P]=react.useState(null),[k,L]=react.useState(400),[u,v]=react.useState(1),a=react.useRef(null),D=chunkACAR2CMA_js.a(()=>{v(t=>Math.min(t+.25,4));},"handleZoomIn"),j=chunkACAR2CMA_js.a(()=>{v(t=>Math.max(t-.25,.25));},"handleZoomOut");react.useEffect(()=>{if(!a.current)return;let t=F__default.default(()=>{a.current&&L(a.current.offsetWidth-70);},150);t();let n=new ResizeObserver(t);return n.observe(a.current),window.addEventListener("resize",t),()=>{n.disconnect(),window.removeEventListener("resize",t);}},[]);let z=react.useMemo(()=>({cMapPacked:true,cMapUrl:`${c}/cmaps/`,standardFontDataUrl:`${c}/standard_fonts/`,wasmUrl:`${c}/wasm/`,iccUrl:`${c}/icc/`}),[]);function E({numPages:t}){y(t),f(false);}chunkACAR2CMA_js.a(E,"onDocumentLoadSuccess");function C(t){P(`Failed to load PDF: ${t.message}`),f(false);}chunkACAR2CMA_js.a(C,"onDocumentLoadError");function g(t){m(n=>n+t);}chunkACAR2CMA_js.a(g,"changePage");function M(){g(-1);}chunkACAR2CMA_js.a(M,"previousPage");function S(){g(1);}return chunkACAR2CMA_js.a(S,"nextPage"),p?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:p})})}):jsxRuntime.jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden pb-5",children:[N&&jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full",children:jsxRuntime.jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),s>0&&jsxRuntime.jsxs("div",{className:"flex items-center justify-center md:justify-between flex-wrap gap-3 p-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:d<=1,onClick:M,p:5,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:s,value:d,onChange:t=>{let n=parseInt(t.target.value,10);n>=1&&n<=s&&m(n);},className:"w-15 px-1 py-1 border border-gray-400! rounded text-center"}),"/ ",s]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:d>=s,onClick:S,p:7,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.jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsxRuntime.jsx(chunkACAR2CMA_js.Pa,{style:{width:20,height:20}}),onClick:j,disabled:u<=.25,p:7}),jsxRuntime.jsxs(chunkACAR2CMA_js.ob,{py:5,px:8,children:[u*100,"%"]}),jsxRuntime.jsx(chunkACAR2CMA_js.z,{variant:"outlined","aria-label":"zoom-in",size:"small",color:"secondary",icon:jsxRuntime.jsx(chunkACAR2CMA_js.ma,{style:{width:14,height:14}}),onClick:D,disabled:u>=4,p:8})]})]}),jsxRuntime.jsx("div",{ref:a,className:"flex-1 overflow-auto min-h-0",children:jsxRuntime.jsx(reactPdf.Document,{options:z,file:x,onLoadSuccess:E,onLoadError:C,loading:"",className:"mx-auto w-fit",children:jsxRuntime.jsx(reactPdf.Page,{pageNumber:d,renderTextLayer:true,renderAnnotationLayer:true,width:k*u,className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out mx-auto"})})})]})},"PdfDriver");
|
|
2
|
-
exports.PdfDriver=J;//# sourceMappingURL=PdfDriver-LZZV7HEY.js.map
|
|
3
|
-
//# sourceMappingURL=PdfDriver-LZZV7HEY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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","width","setWidth","scale","setScale","containerRef","useRef","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","debounce","observer","options","useMemo","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","MinusIcon","Box","PlusIcon","Document","Page"],"mappings":"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","file":"PdfDriver-LZZV7HEY.js","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Box, Button, MinusIcon, PlusIcon } 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 const [width, setWidth] = useState<number>(400);\n const [scale, setScale] = useState(1);\n const containerRef = useRef<HTMLDivElement>(null);\n const handleZoomIn = () => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n };\n\n const handleZoomOut = () => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n };\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - 70);\n }\n }, 150);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n window.addEventListener('resize', updateSize);\n return () => {\n observer.disconnect();\n window.removeEventListener('resize', updateSize);\n };\n }, []);\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 overflow-hidden pb-5\">\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 md:justify-between flex-wrap gap-3 p-4\">\n <div className=\"flex items-center justify-center gap-3\">\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 p={5}\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-15 px-1 py-1 border border-gray-400! 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 p={7}\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 <div className=\"flex items-center justify-center gap-3\">\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-out\"\n color=\"secondary\"\n size=\"small\"\n icon={<MinusIcon style={{ width: 20, height: 20 }} />}\n onClick={handleZoomOut}\n disabled={scale <= 0.25}\n p={7}\n />\n <Box py={5} px={8}>\n {scale * 100}%\n </Box>\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-in\"\n size=\"small\"\n color=\"secondary\"\n icon={<PlusIcon style={{ width: 14, height: 14 }} />}\n onClick={handleZoomIn}\n disabled={scale >= 4}\n p={8}\n />\n </div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-auto min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n className=\"mx-auto w-fit\"\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out mx-auto\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {a,z,Pa,ob,ma}from'./chunk-IEXMV437.mjs';import {useState,useRef,useEffect,useMemo}from'react';import F from'lodash.debounce';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 c="/pdfjs";typeof window<"u"&&typeof document<"u"&&(pdfjs.GlobalWorkerOptions.workerSrc=`${c}/pdf.worker.min.js`);var q=a(({url:x})=>{let[s,y]=useState(0),[d,m]=useState(1),[N,f]=useState(true),[p,P]=useState(null),[k,L]=useState(400),[u,v]=useState(1),a$1=useRef(null),D=a(()=>{v(t=>Math.min(t+.25,4));},"handleZoomIn"),j=a(()=>{v(t=>Math.max(t-.25,.25));},"handleZoomOut");useEffect(()=>{if(!a$1.current)return;let t=F(()=>{a$1.current&&L(a$1.current.offsetWidth-70);},150);t();let n=new ResizeObserver(t);return n.observe(a$1.current),window.addEventListener("resize",t),()=>{n.disconnect(),window.removeEventListener("resize",t);}},[]);let z$1=useMemo(()=>({cMapPacked:true,cMapUrl:`${c}/cmaps/`,standardFontDataUrl:`${c}/standard_fonts/`,wasmUrl:`${c}/wasm/`,iccUrl:`${c}/icc/`}),[]);function E({numPages:t}){y(t),f(false);}a(E,"onDocumentLoadSuccess");function C(t){P(`Failed to load PDF: ${t.message}`),f(false);}a(C,"onDocumentLoadError");function g(t){m(n=>n+t);}a(g,"changePage");function M(){g(-1);}a(M,"previousPage");function S(){g(1);}return a(S,"nextPage"),p?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:p})})}):jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden pb-5",children:[N&&jsx("div",{className:"flex items-center justify-center h-full",children:jsx("div",{className:"text-gray-500",children:"Loading PDF..."})}),s>0&&jsxs("div",{className:"flex items-center justify-center md:justify-between flex-wrap gap-3 p-4",children:[jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsx(z,{variant:"outlined","aria-label":"previous page",color:"secondary",size:"small",type:"button",disabled:d<=1,onClick:M,p:5,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:s,value:d,onChange:t=>{let n=parseInt(t.target.value,10);n>=1&&n<=s&&m(n);},className:"w-15 px-1 py-1 border border-gray-400! rounded text-center"}),"/ ",s]}),jsx(z,{variant:"outlined","aria-label":"next page",color:"secondary",size:"small",type:"button",disabled:d>=s,onClick:S,p:7,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"})})})]}),jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsx(z,{variant:"outlined","aria-label":"zoom-out",color:"secondary",size:"small",icon:jsx(Pa,{style:{width:20,height:20}}),onClick:j,disabled:u<=.25,p:7}),jsxs(ob,{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:D,disabled:u>=4,p:8})]})]}),jsx("div",{ref:a$1,className:"flex-1 overflow-auto min-h-0",children:jsx(Document,{options:z$1,file:x,onLoadSuccess:E,onLoadError:C,loading:"",className:"mx-auto w-fit",children:jsx(Page,{pageNumber:d,renderTextLayer:true,renderAnnotationLayer:true,width:k*u,className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out mx-auto"})})})]})},"PdfDriver");
|
|
2
|
-
export{q as PdfDriver};//# sourceMappingURL=PdfDriver-WD2ZDGPD.mjs.map
|
|
3
|
-
//# sourceMappingURL=PdfDriver-WD2ZDGPD.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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","width","setWidth","scale","setScale","containerRef","useRef","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","debounce","observer","options","useMemo","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","prevPageNumber","previousPage","nextPage","jsx","jsxs","Button","e","page","MinusIcon","Box","PlusIcon","Document","Page"],"mappings":"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","file":"PdfDriver-WD2ZDGPD.mjs","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Box, Button, MinusIcon, PlusIcon } 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 const [width, setWidth] = useState<number>(400);\n const [scale, setScale] = useState(1);\n const containerRef = useRef<HTMLDivElement>(null);\n const handleZoomIn = () => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n };\n\n const handleZoomOut = () => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n };\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - 70);\n }\n }, 150);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n window.addEventListener('resize', updateSize);\n return () => {\n observer.disconnect();\n window.removeEventListener('resize', updateSize);\n };\n }, []);\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 overflow-hidden pb-5\">\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 md:justify-between flex-wrap gap-3 p-4\">\n <div className=\"flex items-center justify-center gap-3\">\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 p={5}\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-15 px-1 py-1 border border-gray-400! 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 p={7}\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 <div className=\"flex items-center justify-center gap-3\">\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-out\"\n color=\"secondary\"\n size=\"small\"\n icon={<MinusIcon style={{ width: 20, height: 20 }} />}\n onClick={handleZoomOut}\n disabled={scale <= 0.25}\n p={7}\n />\n <Box py={5} px={8}>\n {scale * 100}%\n </Box>\n <Button\n variant=\"outlined\"\n aria-label=\"zoom-in\"\n size=\"small\"\n color=\"secondary\"\n icon={<PlusIcon style={{ width: 14, height: 14 }} />}\n onClick={handleZoomIn}\n disabled={scale >= 4}\n p={8}\n />\n </div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-auto min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=\"\"\n className=\"mx-auto w-fit\"\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out mx-auto\"\n />\n </Document>\n </div>\n </div>\n );\n};\n"]}
|