ssovee-os-web-ui 0.1.103 → 0.1.104

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/index.cjs CHANGED
@@ -7,7 +7,9 @@ var Editor = require('@monaco-editor/react');
7
7
  var react$1 = require('@tiptap/react');
8
8
  var StarterKit = require('@tiptap/starter-kit');
9
9
  var uaParserJs = require('ua-parser-js');
10
+ var reactPdf = require('react-pdf');
10
11
 
12
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
11
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
14
 
13
15
  function _interopNamespace(e) {
@@ -2318,6 +2320,10 @@ var Tabs = ({
2318
2320
  ] });
2319
2321
  };
2320
2322
  var Tabs_default = Tabs;
2323
+ reactPdf.pdfjs.GlobalWorkerOptions.workerSrc = new URL(
2324
+ "pdfjs-dist/build/pdf.worker.min.mjs",
2325
+ (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))
2326
+ ).toString();
2321
2327
  var imageExtensions = /\.(avif|bmp|gif|heic|jpe?g|png|svg|tiff?|webp)$/i;
2322
2328
  var textExtensions = /\.(c|cc|conf|cpp|css|csv|env|h|hpp|html?|ini|java|js|jsx|log|md|mjs|php|py|rb|rs|sh|sql|swift|ts|tsx|txt|xml|yaml|yml)$/i;
2323
2329
  var audioExtensions = /\.(aac|flac|m4a|mp3|ogg|wav|weba)$/i;
@@ -2390,56 +2396,48 @@ var toPdfBytes = (base64) => {
2390
2396
  var PreviewComponent = ({ fileName, base64, className }) => {
2391
2397
  const previewType = getPreviewType(fileName);
2392
2398
  const dataUrl = toDataUrl(base64, fileName);
2393
- const pdfContainerRef = React24.useRef(null);
2394
- const [pdfState, setPdfState] = React24.useState("loading");
2395
- React24.useEffect(() => {
2396
- if (previewType !== "pdf" || !pdfContainerRef.current) return;
2397
- let cancelled = false;
2398
- const container = pdfContainerRef.current;
2399
- setPdfState("loading");
2400
- container.replaceChildren();
2401
- import('pdfjs-dist/legacy/build/pdf.mjs').then(async ({ getDocument }) => {
2402
- const pdf = await getDocument({ data: toPdfBytes(base64) }).promise;
2403
- for (let pageNumber = 1; pageNumber <= pdf.numPages; pageNumber += 1) {
2404
- if (cancelled) return;
2405
- const page = await pdf.getPage(pageNumber);
2406
- const viewport = page.getViewport({ scale: 1.35 });
2407
- const canvas = document.createElement("canvas");
2408
- const context = canvas.getContext("2d");
2409
- if (!context) throw new Error("Canvas is not supported");
2410
- canvas.width = viewport.width;
2411
- canvas.height = viewport.height;
2412
- canvas.setAttribute("aria-label", `${fileName}, page ${pageNumber}`);
2413
- canvas.className = "mb-3 max-w-full shadow-sm";
2414
- container.appendChild(canvas);
2415
- await page.render({ canvas, canvasContext: context, viewport }).promise;
2416
- }
2417
- if (!cancelled) setPdfState("ready");
2418
- }).catch(() => {
2419
- if (!cancelled) setPdfState("error");
2420
- });
2421
- return () => {
2422
- cancelled = true;
2423
- container.replaceChildren();
2424
- };
2425
- }, [base64, fileName, previewType]);
2399
+ const [pageCount, setPageCount] = React24.useState(null);
2400
+ const [pdfError, setPdfError] = React24.useState(false);
2426
2401
  if (previewType === "image") {
2427
2402
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-full min-h-48 w-full items-center justify-center overflow-auto", className), children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: dataUrl, alt: fileName, className: "max-h-full max-w-full object-contain" }) });
2428
2403
  }
2429
2404
  if (previewType === "pdf") {
2430
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex min-h-96 flex-col items-center overflow-auto p-3", className), children: [
2431
- pdfState === "loading" && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2432
- "Loading ",
2433
- fileName,
2434
- "..."
2435
- ] }),
2436
- pdfState === "error" && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3", children: "Unable to render this PDF." }),
2437
- /* @__PURE__ */ jsxRuntime.jsx("div", { ref: pdfContainerRef, className: "flex w-full flex-col items-center" }),
2438
- /* @__PURE__ */ jsxRuntime.jsxs("a", { href: dataUrl, download: fileName, className: "mt-3", children: [
2439
- "Download ",
2440
- fileName
2441
- ] })
2442
- ] });
2405
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex min-h-96 flex-col items-center overflow-auto p-3", className), children: pdfError ? /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2406
+ "Unable to render ",
2407
+ fileName,
2408
+ ". The PDF may be invalid or corrupted."
2409
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
2410
+ reactPdf.Document,
2411
+ {
2412
+ file: { data: toPdfBytes(base64) },
2413
+ loading: /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2414
+ "Loading ",
2415
+ fileName,
2416
+ "..."
2417
+ ] }),
2418
+ error: /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2419
+ "Unable to render ",
2420
+ fileName,
2421
+ ". The PDF may be invalid or corrupted."
2422
+ ] }),
2423
+ onLoadSuccess: ({ numPages }) => {
2424
+ setPageCount(numPages);
2425
+ setPdfError(false);
2426
+ },
2427
+ onLoadError: () => setPdfError(true),
2428
+ className: "flex w-full flex-col items-center",
2429
+ children: pageCount !== null && Array.from({ length: pageCount }, (_, index) => /* @__PURE__ */ jsxRuntime.jsx(
2430
+ reactPdf.Page,
2431
+ {
2432
+ pageNumber: index + 1,
2433
+ renderAnnotationLayer: false,
2434
+ renderTextLayer: false,
2435
+ className: "mb-3 max-w-full shadow-sm"
2436
+ },
2437
+ `${fileName}-${index + 1}`
2438
+ ))
2439
+ }
2440
+ ) });
2443
2441
  }
2444
2442
  if (previewType === "audio") {
2445
2443
  return /* @__PURE__ */ jsxRuntime.jsx("audio", { controls: true, src: dataUrl, className: cn("w-full", className) });