office-viewer-react 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +390 -0
- package/dist/client/assets/DocxViewer-NgAiZAEg.css +1 -0
- package/dist/client/assets/DocxViewer-gwdjm0mw.js +60 -0
- package/dist/client/assets/LogoIcon-BcnkueZW.js +1 -0
- package/dist/client/assets/PptxViewer-CLNaZa_4.js +59 -0
- package/dist/client/assets/PptxViewer-CYMXzyIj.css +1 -0
- package/dist/client/assets/XlsxViewer-BNso6L-X.css +1 -0
- package/dist/client/assets/XlsxViewer-C2ErMokS.js +64 -0
- package/dist/client/assets/_commonjs-dynamic-modules-DaXrHM_S.js +1 -0
- package/dist/client/assets/form-C1byQJR4.js +1 -0
- package/dist/client/assets/index-BDMLGHcR.js +2 -0
- package/dist/client/assets/index-CKjGwz9R.js +12 -0
- package/dist/client/assets/jszip.min-BwIaN_vk.js +2 -0
- package/dist/client/assets/login-DEy3R1iD.js +1 -0
- package/dist/client/assets/register-CUUVGLJE.js +1 -0
- package/dist/client/assets/styles-3a3CPFIV.css +1 -0
- package/dist/client/robots.txt +2 -0
- package/dist/index.cjs +1806 -0
- package/dist/index.d.cts +16 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +1769 -0
- package/dist/server/assets/DocxViewer-Bm8UJY-7.js +469 -0
- package/dist/server/assets/LogoIcon-Dx0LU3or.js +26 -0
- package/dist/server/assets/PptxViewer-DS7Atucw.js +213 -0
- package/dist/server/assets/XlsxViewer-jzIgKmN2.js +841 -0
- package/dist/server/assets/_tanstack-start-manifest_v-CpFqMvFH.js +4 -0
- package/dist/server/assets/empty-plugin-adapters-BFgPZ6_d.js +6 -0
- package/dist/server/assets/form-CD9otjw-.js +236 -0
- package/dist/server/assets/index-gQHSGxNv.js +365 -0
- package/dist/server/assets/login-DvbAXNSQ.js +81 -0
- package/dist/server/assets/register-C2G9K9kP.js +102 -0
- package/dist/server/assets/router-F5YKPXkV.js +229 -0
- package/dist/server/assets/server-6Sfy37dh.js +1523 -0
- package/dist/server/assets/start-dMGD6DUy.js +56 -0
- package/dist/server/server.js +94 -0
- package/package.json +120 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { c as createMiddleware } from "./server-6Sfy37dh.js";
|
|
2
|
+
import { r as renderErrorPage } from "../server.js";
|
|
3
|
+
import "node:async_hooks";
|
|
4
|
+
import "h3-v2";
|
|
5
|
+
import "@tanstack/router-core";
|
|
6
|
+
import "seroval";
|
|
7
|
+
import "@tanstack/history";
|
|
8
|
+
import "@tanstack/router-core/ssr/client";
|
|
9
|
+
import "@tanstack/router-core/ssr/server";
|
|
10
|
+
import "react";
|
|
11
|
+
import "@tanstack/react-router";
|
|
12
|
+
import "react/jsx-runtime";
|
|
13
|
+
import "@tanstack/react-router/ssr/server";
|
|
14
|
+
function dedupeSerializationAdapters(deduped, serializationAdapters) {
|
|
15
|
+
for (let i = 0, len = serializationAdapters.length; i < len; i++) {
|
|
16
|
+
const current = serializationAdapters[i];
|
|
17
|
+
if (!deduped.has(current)) {
|
|
18
|
+
deduped.add(current);
|
|
19
|
+
if (current.extends) dedupeSerializationAdapters(deduped, current.extends);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
var createStart = (getOptions) => {
|
|
24
|
+
return {
|
|
25
|
+
getOptions: async () => {
|
|
26
|
+
const options = await getOptions();
|
|
27
|
+
if (options.serializationAdapters) {
|
|
28
|
+
const deduped = /* @__PURE__ */ new Set();
|
|
29
|
+
dedupeSerializationAdapters(deduped, options.serializationAdapters);
|
|
30
|
+
options.serializationAdapters = Array.from(deduped);
|
|
31
|
+
}
|
|
32
|
+
return options;
|
|
33
|
+
},
|
|
34
|
+
createMiddleware
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const errorMiddleware = createMiddleware().server(async ({ next }) => {
|
|
38
|
+
try {
|
|
39
|
+
return await next();
|
|
40
|
+
} catch (error) {
|
|
41
|
+
if (error != null && typeof error === "object" && "statusCode" in error) {
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
console.error(error);
|
|
45
|
+
return new Response(renderErrorPage(), {
|
|
46
|
+
status: 500,
|
|
47
|
+
headers: { "content-type": "text/html; charset=utf-8" }
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const startInstance = createStart(() => ({
|
|
52
|
+
requestMiddleware: [errorMiddleware]
|
|
53
|
+
}));
|
|
54
|
+
export {
|
|
55
|
+
startInstance
|
|
56
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
let lastCapturedError;
|
|
2
|
+
const TTL_MS = 5e3;
|
|
3
|
+
function record(error) {
|
|
4
|
+
lastCapturedError = { error, at: Date.now() };
|
|
5
|
+
}
|
|
6
|
+
if (typeof globalThis.addEventListener === "function") {
|
|
7
|
+
globalThis.addEventListener("error", (event) => record(event.error ?? event));
|
|
8
|
+
globalThis.addEventListener(
|
|
9
|
+
"unhandledrejection",
|
|
10
|
+
(event) => record(event.reason)
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
function consumeLastCapturedError() {
|
|
14
|
+
if (!lastCapturedError) return void 0;
|
|
15
|
+
if (Date.now() - lastCapturedError.at > TTL_MS) {
|
|
16
|
+
lastCapturedError = void 0;
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
const { error } = lastCapturedError;
|
|
20
|
+
lastCapturedError = void 0;
|
|
21
|
+
return error;
|
|
22
|
+
}
|
|
23
|
+
function renderErrorPage() {
|
|
24
|
+
return `<!doctype html>
|
|
25
|
+
<html lang="en">
|
|
26
|
+
<head>
|
|
27
|
+
<meta charset="utf-8" />
|
|
28
|
+
<title>This page didn't load</title>
|
|
29
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
30
|
+
<style>
|
|
31
|
+
body { font: 15px/1.5 system-ui, -apple-system, sans-serif; background: #fafafa; color: #111; display: grid; place-items: center; min-height: 100vh; margin: 0; padding: 1.5rem; }
|
|
32
|
+
.card { max-width: 28rem; width: 100%; text-align: center; padding: 2rem; }
|
|
33
|
+
h1 { font-size: 1.25rem; margin: 0 0 0.5rem; }
|
|
34
|
+
p { color: #4b5563; margin: 0 0 1.5rem; }
|
|
35
|
+
.actions { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; }
|
|
36
|
+
a, button { padding: 0.5rem 1rem; border-radius: 0.375rem; font: inherit; cursor: pointer; text-decoration: none; border: 1px solid transparent; }
|
|
37
|
+
.primary { background: #111; color: #fff; }
|
|
38
|
+
.secondary { background: #fff; color: #111; border-color: #d1d5db; }
|
|
39
|
+
</style>
|
|
40
|
+
</head>
|
|
41
|
+
<body>
|
|
42
|
+
<div class="card">
|
|
43
|
+
<h1>This page didn't load</h1>
|
|
44
|
+
<p>Something went wrong on our end. You can try refreshing or head back home.</p>
|
|
45
|
+
<div class="actions">
|
|
46
|
+
<button class="primary" onclick="location.reload()">Try again</button>
|
|
47
|
+
<a class="secondary" href="/">Go home</a>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</body>
|
|
51
|
+
</html>`;
|
|
52
|
+
}
|
|
53
|
+
let serverEntryPromise;
|
|
54
|
+
async function getServerEntry() {
|
|
55
|
+
if (!serverEntryPromise) {
|
|
56
|
+
serverEntryPromise = import("./assets/server-6Sfy37dh.js").then((n) => n.s).then(
|
|
57
|
+
(m) => m.default ?? m
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return serverEntryPromise;
|
|
61
|
+
}
|
|
62
|
+
async function normalizeCatastrophicSsrResponse(response) {
|
|
63
|
+
if (response.status < 500) return response;
|
|
64
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
65
|
+
if (!contentType.includes("application/json")) return response;
|
|
66
|
+
const body = await response.clone().text();
|
|
67
|
+
if (!body.includes('"unhandled":true') || !body.includes('"message":"HTTPError"')) {
|
|
68
|
+
return response;
|
|
69
|
+
}
|
|
70
|
+
console.error(consumeLastCapturedError() ?? new Error(`h3 swallowed SSR error: ${body}`));
|
|
71
|
+
return new Response(renderErrorPage(), {
|
|
72
|
+
status: 500,
|
|
73
|
+
headers: { "content-type": "text/html; charset=utf-8" }
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const server = {
|
|
77
|
+
async fetch(request, env, ctx) {
|
|
78
|
+
try {
|
|
79
|
+
const handler = await getServerEntry();
|
|
80
|
+
const response = await handler.fetch(request, env, ctx);
|
|
81
|
+
return await normalizeCatastrophicSsrResponse(response);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
console.error(error);
|
|
84
|
+
return new Response(renderErrorPage(), {
|
|
85
|
+
status: 500,
|
|
86
|
+
headers: { "content-type": "text/html; charset=utf-8" }
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
export {
|
|
92
|
+
server as default,
|
|
93
|
+
renderErrorPage as r
|
|
94
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "office-viewer-react",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"sideEffects": true,
|
|
6
|
+
"type": "module",
|
|
7
|
+
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
|
|
12
|
+
"main": "./dist/index.cjs",
|
|
13
|
+
"module": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"require": "./dist/index.cjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "vite dev",
|
|
26
|
+
"build": "vite build",
|
|
27
|
+
"build:dev": "vite build --mode development",
|
|
28
|
+
"preview": "vite preview",
|
|
29
|
+
"lint": "eslint .",
|
|
30
|
+
"format": "prettier --write .",
|
|
31
|
+
"build:lib": "tsup"
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
36
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
37
|
+
"lucide-react": ">=0.400.0"
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"docx-preview": "^0.3.7",
|
|
42
|
+
"echarts": "^6.1.0",
|
|
43
|
+
"exceljs": "^4.4.0",
|
|
44
|
+
"jszip": "^3.10.1",
|
|
45
|
+
"pptx-preview": "^1.0.7",
|
|
46
|
+
"xlsx": "^0.18.5"
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"clsx": "^2.1.1",
|
|
51
|
+
"tailwind-merge": "^3.5.0",
|
|
52
|
+
"@eslint/js": "^9.32.0",
|
|
53
|
+
"@hookform/resolvers": "^5.2.2",
|
|
54
|
+
"@lovable.dev/vite-tanstack-config": "^2.1.1",
|
|
55
|
+
"@radix-ui/react-accordion": "^1.2.12",
|
|
56
|
+
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
57
|
+
"@radix-ui/react-aspect-ratio": "^1.1.8",
|
|
58
|
+
"@radix-ui/react-avatar": "^1.1.11",
|
|
59
|
+
"@radix-ui/react-checkbox": "^1.3.3",
|
|
60
|
+
"@radix-ui/react-collapsible": "^1.1.12",
|
|
61
|
+
"@radix-ui/react-context-menu": "^2.2.16",
|
|
62
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
63
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
64
|
+
"@radix-ui/react-hover-card": "^1.1.15",
|
|
65
|
+
"@radix-ui/react-label": "^2.1.8",
|
|
66
|
+
"@radix-ui/react-menubar": "^1.1.16",
|
|
67
|
+
"@radix-ui/react-navigation-menu": "^1.2.14",
|
|
68
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
69
|
+
"@radix-ui/react-progress": "^1.1.8",
|
|
70
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
71
|
+
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
72
|
+
"@radix-ui/react-select": "^2.2.6",
|
|
73
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
74
|
+
"@radix-ui/react-slider": "^1.3.6",
|
|
75
|
+
"@radix-ui/react-slot": "^1.2.4",
|
|
76
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
77
|
+
"@radix-ui/react-tabs": "^1.1.13",
|
|
78
|
+
"@radix-ui/react-toggle": "^1.1.10",
|
|
79
|
+
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
80
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
81
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
82
|
+
"@tanstack/react-query": "^5.83.0",
|
|
83
|
+
"@tanstack/react-router": "^1.168.25",
|
|
84
|
+
"@tanstack/react-start": "^1.167.50",
|
|
85
|
+
"@tanstack/router-plugin": "^1.167.28",
|
|
86
|
+
"@types/node": "^22.16.5",
|
|
87
|
+
"@types/react": "^19.2.0",
|
|
88
|
+
"@types/react-dom": "^19.2.0",
|
|
89
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
90
|
+
"class-variance-authority": "^0.7.1",
|
|
91
|
+
"cmdk": "^1.1.1",
|
|
92
|
+
"date-fns": "^4.1.0",
|
|
93
|
+
"embla-carousel-react": "^8.6.0",
|
|
94
|
+
"eslint": "^9.32.0",
|
|
95
|
+
"eslint-config-prettier": "^10.1.1",
|
|
96
|
+
"eslint-plugin-prettier": "^5.2.6",
|
|
97
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
98
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
99
|
+
"globals": "^15.15.0",
|
|
100
|
+
"input-otp": "^1.4.2",
|
|
101
|
+
"lucide-react": "^0.575.0",
|
|
102
|
+
"prettier": "^3.7.3",
|
|
103
|
+
"react": "^19.2.0",
|
|
104
|
+
"react-day-picker": "^9.14.0",
|
|
105
|
+
"react-dom": "^19.2.0",
|
|
106
|
+
"react-hook-form": "^7.71.2",
|
|
107
|
+
"react-resizable-panels": "^4.6.5",
|
|
108
|
+
"recharts": "^2.15.4",
|
|
109
|
+
"sonner": "^2.0.7",
|
|
110
|
+
"tailwindcss": "^4.2.1",
|
|
111
|
+
"tsup": "^8.5.1",
|
|
112
|
+
"tw-animate-css": "^1.3.4",
|
|
113
|
+
"typescript": "^5.8.3",
|
|
114
|
+
"typescript-eslint": "^8.56.1",
|
|
115
|
+
"vaul": "^1.1.2",
|
|
116
|
+
"vite": "^7.3.1",
|
|
117
|
+
"vite-tsconfig-paths": "^6.0.2",
|
|
118
|
+
"zod": "^3.24.2"
|
|
119
|
+
}
|
|
120
|
+
}
|