@shahajimbhosle/local-doc-viewer 1.0.2 → 1.0.4
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 +46 -7
- package/dist/DocumentViewer.d.ts +1 -1
- package/dist/DocumentViewer.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11617 -10161
- package/dist/index.umd.cjs +164 -112
- package/dist/pdf.worker.min-THWjjfik.js +23109 -0
- package/dist/renderers/DocxRenderer.d.ts.map +1 -1
- package/dist/renderers/MarkdownRenderer.d.ts.map +1 -1
- package/dist/renderers/PdfRenderer.d.ts.map +1 -1
- package/dist/renderers/PptxRenderer.d.ts.map +1 -1
- package/dist/renderers/SpreadsheetRenderer.d.ts.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/ods.d.ts +3 -0
- package/dist/utils/ods.d.ts.map +1 -0
- package/dist/utils/xlsx.d.ts +12 -0
- package/dist/utils/xlsx.d.ts.map +1 -1
- package/package.json +37 -3
package/README.md
CHANGED
|
@@ -4,6 +4,12 @@ A privacy-first React document viewer that renders files in the browser without
|
|
|
4
4
|
|
|
5
5
|
The package is designed for confidential documents. It accepts `File`, `Blob`, `ArrayBuffer`, `Uint8Array`, `blob:` URLs, and `data:` URLs. `http://` and `https://` document URLs are rejected by default.
|
|
6
6
|
|
|
7
|
+
## Links
|
|
8
|
+
|
|
9
|
+
- npm: [@shahajimbhosle/local-doc-viewer](https://www.npmjs.com/package/@shahajimbhosle/local-doc-viewer)
|
|
10
|
+
- GitHub: [shahajimbhosle/DocViewer](https://github.com/shahajimbhosle/DocViewer)
|
|
11
|
+
- Issues: [GitHub issues](https://github.com/shahajimbhosle/DocViewer/issues)
|
|
12
|
+
|
|
7
13
|
## Built-In Formats
|
|
8
14
|
|
|
9
15
|
- PDF, rendered with a bundled PDF.js worker
|
|
@@ -12,12 +18,14 @@ The package is designed for confidential documents. It accepts `File`, `Blob`, `
|
|
|
12
18
|
- Markdown, rendered locally and sanitized
|
|
13
19
|
- CSV/TSV
|
|
14
20
|
- DOCX, rendered locally with Word-style layout and embedded styles where browser rendering permits
|
|
15
|
-
- XLS/XLSX, parsed locally in the browser
|
|
21
|
+
- XLS/XLSX/ODS, parsed locally in the browser
|
|
16
22
|
- PPTX, rendered locally to canvas with slide navigation and text search counts
|
|
17
|
-
- DOCX comments and XLSX notes/comments are shown locally when present
|
|
23
|
+
- DOCX comments and XLSX/ODS notes/comments are shown locally when present
|
|
18
24
|
- Audio/video formats supported by the browser
|
|
19
25
|
|
|
20
|
-
|
|
26
|
+
Spreadsheet previews use row and column virtualization so larger XLS/XLSX/ODS files do not mount every grid cell into the DOM at once.
|
|
27
|
+
|
|
28
|
+
Legacy binary Word/PowerPoint documents, OpenDocument text/presentation files, strict Office fidelity edge cases, encrypted documents, CAD files, and uncommon enterprise formats need a custom renderer or a private/on-prem conversion service. The viewer exposes a renderer registry for that purpose.
|
|
21
29
|
|
|
22
30
|
### About `.ppt`
|
|
23
31
|
|
|
@@ -40,7 +48,7 @@ export function SecurePreview({ file }: { file: File }) {
|
|
|
40
48
|
}
|
|
41
49
|
```
|
|
42
50
|
|
|
43
|
-
Blob sources are supported directly. If the Blob has no reliable `type`, pass a filename or MIME type; otherwise the viewer will sniff common local formats such as PDF, DOCX, XLSX, and PPTX from the bytes.
|
|
51
|
+
Blob sources are supported directly. If the Blob has no reliable `type`, pass a filename or MIME type; otherwise the viewer will sniff common local formats such as PDF, DOCX, XLSX, ODS, and PPTX from the bytes.
|
|
44
52
|
|
|
45
53
|
```tsx
|
|
46
54
|
<DocumentViewer source={blob} />
|
|
@@ -53,6 +61,19 @@ Blob sources are supported directly. If the Blob has no reliable `type`, pass a
|
|
|
53
61
|
/>
|
|
54
62
|
```
|
|
55
63
|
|
|
64
|
+
## Loading State
|
|
65
|
+
|
|
66
|
+
The viewer shows a compact built-in loader while it is resolving the local file, Blob, buffer, or allowed private URL. Built-in async renderers also use it while preparing heavier formats such as PDF, DOCX, XLSX/ODS, Markdown, and PPTX.
|
|
67
|
+
|
|
68
|
+
Provide `loader` to replace the default loading UI:
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
<DocumentViewer
|
|
72
|
+
loader={<div className="my-loader">Opening secure preview...</div>}
|
|
73
|
+
source={file}
|
|
74
|
+
/>
|
|
75
|
+
```
|
|
76
|
+
|
|
56
77
|
## Privacy Model
|
|
57
78
|
|
|
58
79
|
By default, the viewer:
|
|
@@ -83,18 +104,21 @@ For highly sensitive deployments, pair this with a strict Content Security Polic
|
|
|
83
104
|
|
|
84
105
|
### PDF Worker
|
|
85
106
|
|
|
86
|
-
|
|
107
|
+
PDF rendering works locally without a CDN or third-party worker URL. By default, the viewer registers PDF.js' packaged worker module before opening a PDF, which avoids Vite resolving the worker from `/node_modules/.vite/deps`.
|
|
108
|
+
|
|
109
|
+
The worker is also published as a separate package asset for advanced setups:
|
|
87
110
|
|
|
88
111
|
```text
|
|
89
112
|
@shahajimbhosle/local-doc-viewer/pdf.worker.min.mjs
|
|
90
113
|
```
|
|
91
114
|
|
|
92
|
-
|
|
115
|
+
If your application wants to provide its own worker URL, configure it once before rendering PDFs:
|
|
93
116
|
|
|
94
117
|
```tsx
|
|
95
118
|
import { configurePdfWorker } from '@shahajimbhosle/local-doc-viewer';
|
|
119
|
+
import pdfWorkerUrl from '@shahajimbhosle/local-doc-viewer/pdf.worker.min.mjs?url';
|
|
96
120
|
|
|
97
|
-
configurePdfWorker(
|
|
121
|
+
configurePdfWorker(pdfWorkerUrl);
|
|
98
122
|
```
|
|
99
123
|
|
|
100
124
|
The worker is intentionally not embedded as an inline base64 JavaScript data URL in the library bundle, because large inline executable payloads can trigger package malware scanners even when the code comes from PDF.js.
|
|
@@ -131,6 +155,21 @@ Disable controls selectively:
|
|
|
131
155
|
|
|
132
156
|
Every `controls` key is optional. Omitted controls use the default behavior.
|
|
133
157
|
|
|
158
|
+
## Text Selection
|
|
159
|
+
|
|
160
|
+
Document text is selectable by default where the browser renderer supports it. Use `userSelect` to control selection inside the document viewport without affecting toolbar controls:
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
<DocumentViewer source={file} userSelect="none" />
|
|
164
|
+
<DocumentViewer source={file} userSelect="text" />
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Boolean shorthand is also supported:
|
|
168
|
+
|
|
169
|
+
```tsx
|
|
170
|
+
<DocumentViewer source={file} userSelect={false} />
|
|
171
|
+
```
|
|
172
|
+
|
|
134
173
|
## Custom Renderers
|
|
135
174
|
|
|
136
175
|
Register a renderer for regulated formats or for a local conversion flow:
|
package/dist/DocumentViewer.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { DocumentViewerProps } from './types';
|
|
2
|
-
export declare function DocumentViewer({ source, fileName, mimeType, className, style, height, renderers, allowRemoteUrls, fetchCredentials, minZoom, maxZoom, initialZoom, initialPage, controls, labels, emptyState, onLoad, onError, }: DocumentViewerProps): import("react").JSX.Element;
|
|
2
|
+
export declare function DocumentViewer({ source, fileName, mimeType, className, style, height, renderers, allowRemoteUrls, fetchCredentials, minZoom, maxZoom, initialZoom, initialPage, controls, labels, emptyState, loader, userSelect, onLoad, onError, }: DocumentViewerProps): import("react").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=DocumentViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentViewer.d.ts","sourceRoot":"","sources":["../src/DocumentViewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKV,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DocumentViewer.d.ts","sourceRoot":"","sources":["../src/DocumentViewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKV,mBAAmB,EAMpB,MAAM,SAAS,CAAC;AAEjB,OAAO,cAAc,CAAC;AAoNtB,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAY,EACZ,SAAS,EACT,eAAuB,EACvB,gBAAgC,EAChC,OAAc,EACd,OAAW,EACX,WAAe,EACf,WAAe,EACf,QAAQ,EACR,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,+BA8SrB"}
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.ldv-root{--ldv-bg: #f4f6f8;--ldv-panel: #ffffff;--ldv-panel-muted: #f8fafc;--ldv-border: #d8dee6;--ldv-border-strong: #aab4c0;--ldv-text: #17202a;--ldv-muted: #5f6f82;--ldv-accent: #0f766e;--ldv-accent-soft: #d8f3ef;--ldv-danger: #b42318;--ldv-warning: #8a4b0f;--ldv-highlight: #fff1a8;box-sizing:border-box;display:flex;min-height:320px;flex-direction:column;overflow:hidden;border:1px solid var(--ldv-border);border-radius:8px;background:var(--ldv-bg);color:var(--ldv-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0}.ldv-root *,.ldv-root *:before,.ldv-root *:after{box-sizing:border-box}.ldv-root:fullscreen{width:100vw;height:100vh!important;border-radius:0}.ldv-toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:8px;min-height:52px;padding:8px;border-bottom:1px solid var(--ldv-border);background:var(--ldv-panel-muted)}.ldv-toolbar-spacer{flex:1 1 24px}.ldv-control-group{display:inline-flex;align-items:center;gap:4px;padding:2px;border:1px solid var(--ldv-border);border-radius:7px;background:var(--ldv-panel)}.ldv-file-name{display:inline-flex;min-width:160px;max-width:min(280px,35vw);align-items:center;gap:8px;color:var(--ldv-text);font-size:13px;font-weight:600;white-space:nowrap}.ldv-file-name span{overflow:hidden;text-overflow:ellipsis}.ldv-icon-button,.ldv-zoom-reset,.ldv-sheet-tab{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ldv-text);cursor:pointer;font:inherit}.ldv-icon-button{width:32px;height:32px;flex:0 0 32px;border-radius:6px}.ldv-icon-button:hover,.ldv-zoom-reset:hover,.ldv-sheet-tab:hover{background:#edf2f7}.ldv-icon-button:focus-visible,.ldv-zoom-reset:focus-visible,.ldv-sheet-tab:focus-visible,.ldv-page-control input:focus-visible,.ldv-search-control input:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-icon-button[aria-pressed=true]{background:var(--ldv-accent-soft);color:#075e57}.ldv-icon-button:disabled{color:#9aa6b2;cursor:not-allowed}.ldv-zoom-reset{min-width:76px;height:32px;gap:6px;padding:0 8px;border-radius:6px;color:var(--ldv-text);font-size:12px;font-weight:650}.ldv-page-control{display:inline-flex;align-items:center;gap:6px;padding:0 6px;color:var(--ldv-muted);font-size:12px;white-space:nowrap}.ldv-page-control input{width:58px;height:30px;border:1px solid var(--ldv-border);border-radius:5px;color:var(--ldv-text);font:inherit;text-align:center}.ldv-search-control{display:inline-flex;min-width:220px;max-width:360px;flex:1 1 240px;align-items:center;gap:8px;height:38px;padding:0 10px;border:1px solid var(--ldv-border);border-radius:7px;background:var(--ldv-panel);color:var(--ldv-muted)}.ldv-search-control input{min-width:80px;flex:1 1 auto;border:0;background:transparent;color:var(--ldv-text);font:inherit;outline:none}.ldv-search-status{max-width:120px;overflow:hidden;color:var(--ldv-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ldv-viewport{position:relative;flex:1 1 auto;overflow:auto;padding:4px;background:#e8edf2}.ldv-renderer-pptx .ldv-viewport,.ldv-renderer-spreadsheet .ldv-viewport,.ldv-renderer-csv .ldv-viewport{padding:0}.ldv-renderer-media .ldv-viewport{overflow:hidden;padding:0}.ldv-renderer-image:has(.ldv-image-fit-page) .ldv-viewport{overflow:hidden}.ldv-renderer-status,.ldv-empty-state,.ldv-error,.ldv-unsupported{display:grid;min-height:100%;place-items:center;align-content:center;justify-items:center;gap:10px;padding:28px;color:var(--ldv-muted);text-align:center}.ldv-error{color:var(--ldv-danger)}.ldv-error strong,.ldv-unsupported h2{color:var(--ldv-text);font-size:18px}.ldv-unsupported p{max-width:640px;margin:0;color:var(--ldv-muted);line-height:1.55}.ldv-pdf-stage,.ldv-image-stage,.ldv-media-stage{display:flex;min-height:100%;align-items:flex-start;justify-content:center}.ldv-media-stage{width:100%;height:100%;align-items:center;padding:12px}.ldv-pdf-canvas,.ldv-pptx-slide-frame,.ldv-image-document,.ldv-video-document,.ldv-rich-document,.ldv-text-document,.ldv-table-document table{background:var(--ldv-panel);box-shadow:0 10px 28px #0f172a29}.ldv-pdf-canvas{display:block}.ldv-pptx-shell{display:grid;width:100%;height:100%;min-height:100%;grid-template-columns:168px minmax(0,1fr);background:#e8edf2}.ldv-pptx-shell.ldv-pptx-sidebar-collapsed{grid-template-columns:44px minmax(0,1fr)}.ldv-pptx-shell.ldv-pptx-sidebar-disabled{grid-template-columns:minmax(0,1fr)}.ldv-pptx-sidebar{display:flex;min-width:0;flex-direction:column;overflow:hidden;border-right:1px solid var(--ldv-border);background:#f8fafc}.ldv-pptx-sidebar-toggle{display:inline-flex;width:32px;height:32px;flex:0 0 32px;align-items:center;justify-content:center;align-self:flex-end;margin:6px;border:0;border-radius:6px;background:transparent;color:var(--ldv-text);cursor:pointer}.ldv-pptx-sidebar-collapsed .ldv-pptx-sidebar-toggle{align-self:center}.ldv-pptx-sidebar-toggle:hover{background:#edf2f7}.ldv-pptx-sidebar-toggle:focus-visible,.ldv-pptx-thumbnail:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-pptx-thumbnail-list{display:grid;gap:8px;overflow:auto;padding:0 8px 12px}.ldv-pptx-thumbnail{display:grid;grid-template-columns:24px minmax(0,1fr);gap:6px;align-items:start;padding:6px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ldv-text);cursor:pointer;font:inherit;text-align:left}.ldv-pptx-thumbnail:hover{background:#eef3f8}.ldv-pptx-thumbnail[aria-current=page]{border-color:var(--ldv-accent);background:#e8f5f3}.ldv-pptx-thumbnail-number{display:inline-flex;min-height:24px;align-items:center;justify-content:center;color:#4a5868;font-size:12px;font-weight:700}.ldv-pptx-thumbnail-canvas{display:block;max-width:100%;border:1px solid #cfd8e3;background:var(--ldv-panel);box-shadow:0 2px 8px #0f172a1f}.ldv-pptx-main{min-width:0;overflow:auto;padding:12px}.ldv-pptx-stage{display:flex;min-height:100%;align-items:center;justify-content:flex-start}.ldv-pptx-slide-frame{position:relative;flex:0 0 auto;background:var(--ldv-panel)}.ldv-pptx-canvas{display:block;width:100%;height:100%;background:var(--ldv-panel)}.ldv-pptx-render-status{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffb8;color:var(--ldv-muted);font-size:13px;font-weight:600}.ldv-image-stage{align-items:center}.ldv-image-document{display:block;max-width:none;transform-origin:center}.ldv-image-fit-width .ldv-image-document{width:100%;height:auto}.ldv-image-fit-page .ldv-image-document{max-width:100%;object-fit:contain}.ldv-video-document{width:100%;height:100%;max-width:100%;max-height:100%;background:#000;object-fit:contain}.ldv-audio-document{width:min(100%,640px)}.ldv-text-shell{display:flex;min-height:100%;justify-content:center}.ldv-text-document{width:min(100%,980px);min-height:100%;margin:0;padding:4px;overflow:auto;border:1px solid var(--ldv-border);border-radius:4px;color:#1d2733;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;-moz-tab-size:2;tab-size:2;white-space:pre-wrap;word-break:break-word}.ldv-rich-document{width:min(100%,860px);min-height:100%;margin:0 auto;padding:4px;border:1px solid var(--ldv-border);border-radius:4px;color:#1d2733;line-height:1.65}.ldv-rich-document h1,.ldv-rich-document h2,.ldv-rich-document h3{color:#111827;line-height:1.2}.ldv-rich-document img{max-width:100%}.ldv-docx-preview-shell{width:max-content;max-width:none;margin:0 auto}.ldv-docx-document{color:#111827}.ldv-docx-document .docx-wrapper{padding:0!important;background:transparent!important}.ldv-docx-document .docx-wrapper>section.docx{margin:0 auto 20px!important;box-shadow:0 10px 28px #0f172a29!important}.ldv-docx-document img,.ldv-docx-document svg,.ldv-docx-document canvas{max-width:none}.ldv-docx-vml-textbox{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;padding:0 2pt;vertical-align:middle}.ldv-docx-vml-textbox p{width:100%;min-height:0!important;margin:0!important}.ldv-docx-vml-textbox span{line-height:1.05}.ldv-rich-document table{width:100%;border-collapse:collapse}.ldv-rich-document th,.ldv-rich-document td{padding:4px;border:1px solid var(--ldv-border);text-align:left;vertical-align:top}.ldv-warning{margin-bottom:18px;padding:10px 12px;border:1px solid #f4c27b;border-radius:6px;background:#fff8eb;color:var(--ldv-warning);font-size:13px}.ldv-spreadsheet-document{width:max-content;min-width:max-content}.ldv-sheet-tabs{position:sticky;top:0;z-index:1;display:flex;gap:4px;padding:8px 0;background:#e8edf2}.ldv-sheet-tab{height:30px;padding:0 10px;border:1px solid var(--ldv-border);border-radius:6px;background:var(--ldv-panel);color:var(--ldv-text);font-size:12px}.ldv-sheet-tab[aria-selected=true]{border-color:var(--ldv-accent);background:var(--ldv-accent-soft);color:#075e57}.ldv-table-document{display:flex;min-width:max-content;justify-content:center}.ldv-grid-document{display:block;justify-content:flex-start}.ldv-table-document table{border-collapse:collapse;border-spacing:0;color:#1d2733;empty-cells:show}.ldv-spreadsheet-grid{table-layout:fixed;background:var(--ldv-panel)}.ldv-table-document th,.ldv-table-document td{position:relative;min-width:96px;max-width:360px;padding:0!important;border:1px solid var(--ldv-border);overflow-wrap:anywhere;text-align:left;vertical-align:top}.ldv-spreadsheet-grid .ldv-sheet-corner,.ldv-spreadsheet-grid .ldv-row-header{width:48px;min-width:48px;max-width:48px;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center;vertical-align:middle}.ldv-spreadsheet-grid .ldv-sheet-corner{position:sticky;top:0;left:0;z-index:4;height:30px}.ldv-spreadsheet-grid .ldv-column-header{height:30px;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center;vertical-align:middle}.ldv-spreadsheet-grid .ldv-row-header{position:sticky;top:auto;left:0;z-index:2;height:30px}.ldv-spreadsheet-grid td{height:30px;background:#fff}.ldv-spreadsheet-grid .ldv-cell-has-comment{overflow:visible}.ldv-cell-comment{position:absolute;top:0;right:0;width:12px;height:12px;outline:none}.ldv-cell-comment-marker{position:absolute;top:0;right:0;width:0;height:0;border-top:10px solid #d83b01;border-left:10px solid transparent}.ldv-cell-comment-popover{position:absolute;top:12px;right:0;z-index:20;display:none;width:260px;max-width:min(320px,80vw);padding:8px 10px;border:1px solid #c8d1dc;border-radius:6px;background:#fff;box-shadow:0 8px 24px #0f172a2e;color:#1d2733;font-size:12px;line-height:1.4;white-space:pre-wrap}.ldv-cell-comment:hover .ldv-cell-comment-popover,.ldv-cell-comment:focus .ldv-cell-comment-popover,.ldv-cell-comment:focus-within .ldv-cell-comment-popover{display:grid;gap:8px}.ldv-cell-comment-item{display:grid;gap:2px}.ldv-cell-comment-item strong{color:#111827;font-size:12px}.ldv-cell-comment-item small{color:var(--ldv-muted);font-size:11px}.ldv-table-document th{position:sticky;top:0;z-index:1;background:#f2f6fa;color:#111827;font-weight:700}.ldv-spreadsheet-grid .ldv-sheet-corner{top:0;left:0;z-index:4}.ldv-spreadsheet-grid .ldv-column-header{top:0;z-index:3;text-align:center}.ldv-spreadsheet-grid .ldv-row-header{top:auto;left:0;z-index:2;color:#4a5868}.ldv-highlight{border-radius:3px;background:var(--ldv-highlight);color:inherit}.ldv-print-root{padding:4px}@media(max-width:720px){.ldv-root{border-radius:0}.ldv-toolbar{align-items:stretch}.ldv-file-name{max-width:100%;flex:1 1 100%}.ldv-search-control{max-width:none;flex-basis:100%}.ldv-viewport{padding:4px}.ldv-renderer-pptx .ldv-viewport,.ldv-renderer-spreadsheet .ldv-viewport,.ldv-renderer-csv .ldv-viewport{padding:0}.ldv-pptx-shell{grid-template-columns:148px minmax(280px,1fr)}.ldv-pptx-shell.ldv-pptx-sidebar-collapsed{grid-template-columns:44px minmax(280px,1fr)}.ldv-pptx-main{padding:8px}.ldv-rich-document,.ldv-text-document{padding:4px}}@media print{.ldv-toolbar{display:none}.ldv-root{height:auto!important;border:0}.ldv-viewport{overflow:visible;padding:0;background:#fff}.ldv-pdf-canvas,.ldv-image-document,.ldv-video-document,.ldv-rich-document,.ldv-text-document,.ldv-table-document table{box-shadow:none}}
|
|
1
|
+
.ldv-root{--ldv-bg: #f4f6f8;--ldv-panel: #ffffff;--ldv-panel-muted: #f8fafc;--ldv-border: #d8dee6;--ldv-border-strong: #aab4c0;--ldv-text: #17202a;--ldv-muted: #5f6f82;--ldv-accent: #0f766e;--ldv-accent-soft: #d8f3ef;--ldv-danger: #b42318;--ldv-warning: #8a4b0f;--ldv-highlight: #fff1a8;box-sizing:border-box;display:flex;min-height:320px;flex-direction:column;overflow:hidden;border:1px solid var(--ldv-border);border-radius:8px;background:var(--ldv-bg);color:var(--ldv-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0}.ldv-root *,.ldv-root *:before,.ldv-root *:after{box-sizing:border-box}.ldv-root:fullscreen{width:100vw;height:100vh!important;border-radius:0}.ldv-toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:8px;min-height:52px;padding:8px;border-bottom:1px solid var(--ldv-border);background:var(--ldv-panel-muted)}.ldv-toolbar-spacer{flex:1 1 24px}.ldv-control-group{display:inline-flex;align-items:center;gap:4px;padding:2px;border:1px solid var(--ldv-border);border-radius:7px;background:var(--ldv-panel)}.ldv-file-name{display:inline-flex;min-width:160px;max-width:min(280px,35vw);align-items:center;gap:8px;color:var(--ldv-text);font-size:13px;font-weight:600;white-space:nowrap}.ldv-file-name span{overflow:hidden;text-overflow:ellipsis}.ldv-icon-button,.ldv-zoom-reset,.ldv-sheet-tab{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ldv-text);cursor:pointer;font:inherit}.ldv-icon-button{width:32px;height:32px;flex:0 0 32px;border-radius:6px}.ldv-icon-button:hover,.ldv-zoom-reset:hover,.ldv-sheet-tab:hover{background:#edf2f7}.ldv-icon-button:focus-visible,.ldv-zoom-reset:focus-visible,.ldv-sheet-tab:focus-visible,.ldv-page-control input:focus-visible,.ldv-search-control input:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-icon-button[aria-pressed=true]{background:var(--ldv-accent-soft);color:#075e57}.ldv-icon-button:disabled{color:#9aa6b2;cursor:not-allowed}.ldv-zoom-reset{min-width:76px;height:32px;gap:6px;padding:0 8px;border-radius:6px;color:var(--ldv-text);font-size:12px;font-weight:650}.ldv-page-control{display:inline-flex;align-items:center;gap:6px;padding:0 6px;color:var(--ldv-muted);font-size:12px;white-space:nowrap}.ldv-page-control input{width:58px;height:30px;border:1px solid var(--ldv-border);border-radius:5px;color:var(--ldv-text);font:inherit;text-align:center}.ldv-search-control{display:inline-flex;min-width:220px;max-width:360px;flex:1 1 240px;align-items:center;gap:8px;height:38px;padding:0 10px;border:1px solid var(--ldv-border);border-radius:7px;background:var(--ldv-panel);color:var(--ldv-muted)}.ldv-search-control input{min-width:80px;flex:1 1 auto;border:0;background:transparent;color:var(--ldv-text);font:inherit;outline:none}.ldv-search-status{max-width:120px;overflow:hidden;color:var(--ldv-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ldv-viewport{position:relative;flex:1 1 auto;overflow:auto;padding:4px;background:#e8edf2}.ldv-renderer-pptx .ldv-viewport,.ldv-renderer-spreadsheet .ldv-viewport,.ldv-renderer-csv .ldv-viewport{padding:0}.ldv-renderer-spreadsheet .ldv-viewport{overflow:hidden}.ldv-renderer-media .ldv-viewport{overflow:hidden;padding:0}.ldv-renderer-image:has(.ldv-image-fit-page) .ldv-viewport{overflow:hidden}.ldv-renderer-status,.ldv-empty-state,.ldv-error,.ldv-unsupported{display:grid;min-height:100%;place-items:center;align-content:center;justify-items:center;gap:10px;padding:28px;color:var(--ldv-muted);text-align:center}.ldv-loader{display:flex;width:100%;min-height:100%;align-items:center;justify-content:center;gap:10px;padding:28px;color:var(--ldv-muted);font-weight:600}.ldv-loader-spinner{width:18px;height:18px;border:2px solid rgba(100,116,139,.28);border-top-color:var(--ldv-accent);border-radius:999px;animation:ldv-spin .7s linear infinite}.ldv-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;background:#e8edf2db}@keyframes ldv-spin{to{transform:rotate(360deg)}}.ldv-error{color:var(--ldv-danger)}.ldv-error strong,.ldv-unsupported h2{color:var(--ldv-text);font-size:18px}.ldv-unsupported p{max-width:640px;margin:0;color:var(--ldv-muted);line-height:1.55}.ldv-pdf-stage,.ldv-image-stage,.ldv-media-stage{display:flex;min-height:100%;align-items:flex-start;justify-content:center}.ldv-media-stage{width:100%;height:100%;align-items:center;padding:12px}.ldv-pdf-canvas,.ldv-pptx-slide-frame,.ldv-image-document,.ldv-video-document,.ldv-rich-document,.ldv-text-document,.ldv-table-document table{background:var(--ldv-panel);box-shadow:0 10px 28px #0f172a29}.ldv-pdf-canvas{display:block}.ldv-pptx-shell{display:grid;width:100%;height:100%;min-height:100%;grid-template-columns:168px minmax(0,1fr);background:#e8edf2}.ldv-pptx-shell.ldv-pptx-sidebar-collapsed{grid-template-columns:44px minmax(0,1fr)}.ldv-pptx-shell.ldv-pptx-sidebar-disabled{grid-template-columns:minmax(0,1fr)}.ldv-pptx-sidebar{display:flex;min-width:0;flex-direction:column;overflow:hidden;border-right:1px solid var(--ldv-border);background:#f8fafc}.ldv-pptx-sidebar-toggle{display:inline-flex;width:32px;height:32px;flex:0 0 32px;align-items:center;justify-content:center;align-self:flex-end;margin:6px;border:0;border-radius:6px;background:transparent;color:var(--ldv-text);cursor:pointer}.ldv-pptx-sidebar-collapsed .ldv-pptx-sidebar-toggle{align-self:center}.ldv-pptx-sidebar-toggle:hover{background:#edf2f7}.ldv-pptx-sidebar-toggle:focus-visible,.ldv-pptx-thumbnail:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-pptx-thumbnail-list{display:grid;gap:8px;overflow:auto;padding:0 8px 12px}.ldv-pptx-thumbnail{display:grid;grid-template-columns:24px minmax(0,1fr);gap:6px;align-items:start;padding:6px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ldv-text);cursor:pointer;font:inherit;text-align:left}.ldv-pptx-thumbnail:hover{background:#eef3f8}.ldv-pptx-thumbnail[aria-current=page]{border-color:var(--ldv-accent);background:#e8f5f3}.ldv-pptx-thumbnail-number{display:inline-flex;min-height:24px;align-items:center;justify-content:center;color:#4a5868;font-size:12px;font-weight:700}.ldv-pptx-thumbnail-canvas{display:block;max-width:100%;border:1px solid #cfd8e3;background:var(--ldv-panel);box-shadow:0 2px 8px #0f172a1f}.ldv-pptx-main{min-width:0;overflow:auto;padding:12px}.ldv-pptx-stage{display:flex;min-height:100%;align-items:center;justify-content:flex-start}.ldv-pptx-slide-frame{position:relative;flex:0 0 auto;background:var(--ldv-panel)}.ldv-pptx-canvas{display:block;width:100%;height:100%;background:var(--ldv-panel)}.ldv-pptx-render-status{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffb8;color:var(--ldv-muted);font-size:13px;font-weight:600}.ldv-image-stage{align-items:center}.ldv-image-document{display:block;max-width:none;transform-origin:center}.ldv-image-fit-width .ldv-image-document{width:100%;height:auto}.ldv-image-fit-page .ldv-image-document{max-width:100%;object-fit:contain}.ldv-video-document{width:100%;height:100%;max-width:100%;max-height:100%;background:#000;object-fit:contain}.ldv-audio-document{width:min(100%,640px)}.ldv-text-shell{display:flex;min-height:100%;justify-content:center}.ldv-text-document{width:min(100%,980px);min-height:100%;margin:0;padding:4px;overflow:auto;border:1px solid var(--ldv-border);border-radius:4px;color:#1d2733;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;-moz-tab-size:2;tab-size:2;white-space:pre-wrap;word-break:break-word}.ldv-rich-document{width:min(100%,860px);min-height:100%;margin:0 auto;padding:4px;border:1px solid var(--ldv-border);border-radius:4px;color:#1d2733;line-height:1.65}.ldv-rich-document h1,.ldv-rich-document h2,.ldv-rich-document h3{color:#111827;line-height:1.2}.ldv-rich-document img{max-width:100%}.ldv-docx-preview-shell{width:max-content;max-width:none;margin:0 auto}.ldv-docx-document{color:#111827}.ldv-docx-document .docx-wrapper{padding:0!important;background:transparent!important}.ldv-docx-document .docx-wrapper>section.docx{margin:0 auto 20px!important;box-shadow:0 10px 28px #0f172a29!important}.ldv-docx-document img,.ldv-docx-document svg,.ldv-docx-document canvas{max-width:none}.ldv-docx-vml-textbox{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;padding:0 2pt;vertical-align:middle}.ldv-docx-vml-textbox p{width:100%;min-height:0!important;margin:0!important}.ldv-docx-vml-textbox span{line-height:1.05}.ldv-rich-document table{width:100%;border-collapse:collapse}.ldv-rich-document th,.ldv-rich-document td{padding:4px;border:1px solid var(--ldv-border);text-align:left;vertical-align:top}.ldv-warning{margin-bottom:18px;padding:10px 12px;border:1px solid #f4c27b;border-radius:6px;background:#fff8eb;color:var(--ldv-warning);font-size:13px}.ldv-spreadsheet-document{display:flex;height:100%;min-height:100%;width:100%;min-width:100%;flex-direction:column;overflow:hidden}.ldv-spreadsheet-grid-scroll{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain}.ldv-spreadsheet-virtual-grid{position:relative;min-width:100%;background:var(--ldv-panel);color:#1d2733}.ldv-spreadsheet-virtual-header{position:sticky;top:0;z-index:6;min-width:100%;background:#f2f6fa}.ldv-spreadsheet-virtual-body{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible}.ldv-spreadsheet-virtual-row{position:absolute;top:0;left:0;overflow:visible}.ldv-spreadsheet-virtual-corner,.ldv-spreadsheet-virtual-column-header,.ldv-spreadsheet-virtual-row-header,.ldv-spreadsheet-virtual-cell{box-sizing:border-box;border:1px solid var(--ldv-border)}.ldv-spreadsheet-virtual-corner{position:sticky;top:0;left:0;z-index:8;background:#f2f6fa}.ldv-spreadsheet-virtual-column-header{position:absolute;top:0;display:flex;align-items:center;justify-content:center;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center}.ldv-spreadsheet-virtual-row-header{position:sticky;left:0;z-index:4;display:flex;align-items:center;justify-content:center;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center}.ldv-spreadsheet-virtual-cell{position:absolute;top:0;overflow:hidden;padding:0;background:#fff;line-height:1.18}.ldv-spreadsheet-virtual-cell.ldv-cell-has-comment{overflow:visible}.ldv-sheet-tabs{flex:0 0 38px;z-index:5;display:flex;height:38px;width:100%;min-width:0;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden;border-top:1px solid var(--ldv-border);background:#e8edf2;padding:4px 8px;overscroll-behavior-x:contain;white-space:nowrap}.ldv-sheet-tab{height:30px;max-width:180px;flex:0 0 auto;padding:0 10px;border:1px solid var(--ldv-border);border-radius:6px;background:var(--ldv-panel);color:var(--ldv-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldv-sheet-tab[aria-selected=true]{border-color:var(--ldv-accent);background:var(--ldv-accent-soft);color:#075e57}.ldv-table-document{display:flex;min-width:max-content;justify-content:center}.ldv-grid-document{display:block;justify-content:flex-start}.ldv-table-document table{border-collapse:collapse;border-spacing:0;color:#1d2733;empty-cells:show}.ldv-spreadsheet-grid{table-layout:fixed;background:var(--ldv-panel)}.ldv-table-document th,.ldv-table-document td{position:relative;min-width:96px;max-width:360px;padding:0;border:1px solid var(--ldv-border);overflow-wrap:anywhere;text-align:left;vertical-align:top}.ldv-spreadsheet-grid .ldv-sheet-corner,.ldv-spreadsheet-grid .ldv-row-header{width:48px;min-width:48px;max-width:48px;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center;vertical-align:middle}.ldv-spreadsheet-grid .ldv-sheet-corner{position:sticky;top:0;left:0;z-index:4;height:30px}.ldv-spreadsheet-grid .ldv-column-header{height:30px;background:#f2f6fa;color:#4a5868;font-weight:700;text-align:center;vertical-align:middle}.ldv-spreadsheet-grid .ldv-row-header{position:sticky;top:auto;left:0;z-index:2;height:30px}.ldv-spreadsheet-grid td{height:30px;background:#fff}.ldv-spreadsheet-grid .ldv-cell-has-comment{overflow:visible}.ldv-cell-comment{position:absolute;top:0;right:0;width:12px;height:12px;outline:none}.ldv-cell-comment-marker{position:absolute;top:0;right:0;width:0;height:0;border-top:10px solid #d83b01;border-left:10px solid transparent}.ldv-cell-comment-popover{position:absolute;top:12px;right:0;z-index:20;display:none;width:260px;max-width:min(320px,80vw);padding:8px 10px;border:1px solid #c8d1dc;border-radius:6px;background:#fff;box-shadow:0 8px 24px #0f172a2e;color:#1d2733;font-size:12px;line-height:1.4;white-space:pre-wrap}.ldv-cell-comment:hover .ldv-cell-comment-popover,.ldv-cell-comment:focus .ldv-cell-comment-popover,.ldv-cell-comment:focus-within .ldv-cell-comment-popover{display:grid;gap:8px}.ldv-cell-comment-item{display:grid;gap:2px}.ldv-cell-comment-item strong{color:#111827;font-size:12px}.ldv-cell-comment-item small{color:var(--ldv-muted);font-size:11px}.ldv-table-document th{position:sticky;top:0;z-index:1;background:#f2f6fa;color:#111827;font-weight:700}.ldv-spreadsheet-grid .ldv-sheet-corner{top:0;left:0;z-index:4}.ldv-spreadsheet-grid .ldv-column-header{top:0;z-index:3;text-align:center}.ldv-spreadsheet-grid .ldv-row-header{top:auto;left:0;z-index:2;color:#4a5868}.ldv-highlight{border-radius:3px;background:var(--ldv-highlight);color:inherit}.ldv-print-root{padding:4px}@media(max-width:720px){.ldv-root{border-radius:0}.ldv-toolbar{align-items:stretch}.ldv-file-name{max-width:100%;flex:1 1 100%}.ldv-search-control{max-width:none;flex-basis:100%}.ldv-viewport{padding:4px}.ldv-renderer-pptx .ldv-viewport,.ldv-renderer-spreadsheet .ldv-viewport,.ldv-renderer-csv .ldv-viewport{padding:0}.ldv-pptx-shell{grid-template-columns:148px minmax(280px,1fr)}.ldv-pptx-shell.ldv-pptx-sidebar-collapsed{grid-template-columns:44px minmax(280px,1fr)}.ldv-pptx-main{padding:8px}.ldv-rich-document,.ldv-text-document{padding:4px}}@media print{.ldv-toolbar{display:none}.ldv-root{height:auto!important;border:0}.ldv-viewport{overflow:visible;padding:0;background:#fff}.ldv-pdf-canvas,.ldv-image-document,.ldv-video-document,.ldv-rich-document,.ldv-text-document,.ldv-table-document table{box-shadow:none}}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DocumentViewer } from './DocumentViewer';
|
|
2
2
|
export { builtInRenderers } from './renderers';
|
|
3
3
|
export { configurePdfWorker } from './renderers/PdfRenderer';
|
|
4
|
-
export type { BinaryDocumentData, DocumentInfo, DocumentRenderer, DocumentRendererProps, DocumentSource, DocumentViewerControls, DocumentViewerLabels, DocumentViewerProps, FitMode, RendererActions, ResolvedDocument, ResolvedDocumentViewerControls, SearchStats, ViewerRuntimeState, } from './types';
|
|
4
|
+
export type { BinaryDocumentData, DocumentInfo, DocumentRenderer, DocumentRendererProps, DocumentSource, DocumentViewerControls, DocumentViewerLabels, DocumentViewerProps, DocumentViewerUserSelect, FitMode, RendererActions, ResolvedDocument, ResolvedDocumentViewerControls, SearchStats, ViewerRuntimeState, } from './types';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|