@shahajimbhosle/local-doc-viewer 1.0.4 → 1.0.6

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/CHANGELOG.md ADDED
@@ -0,0 +1,46 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@shahajimbhosle/local-doc-viewer` will be documented in this file.
4
+
5
+ This project follows semantic versioning. Dates use `YYYY-MM-DD`.
6
+
7
+ ## [1.0.6] - 2026-07-18
8
+
9
+ ### Added
10
+
11
+ - Added an inline password prompt for encrypted PDF files. Passwords are passed directly to PDF.js in the browser and are not uploaded.
12
+
13
+ ## [1.0.5] - 2026-07-18
14
+
15
+ ### Added
16
+
17
+ - Added `pdfOptions.showThumbnails` for PDF-specific thumbnail configuration.
18
+ - Added a virtualized, collapsible PDF page thumbnail drawer.
19
+ - Added continuous PDF scrolling when `controls.pageNavigation` is disabled, so users can still reach every page by scrolling.
20
+ - Added virtualized PPTX slide thumbnails with per-thumbnail loading states.
21
+ - Added search highlight overlays for PDF pages and PPTX slides.
22
+ - Added print preparation state so the print button can show progress while the browser print frame is prepared.
23
+
24
+ ### Changed
25
+
26
+ - Moved document-type-specific thumbnail settings out of generic controls and into `pdfOptions` for PDF behavior.
27
+ - Kept `controls.thumbnails` as the shared switch for showing or hiding supported thumbnail drawers.
28
+ - Improved print handling by preparing a hidden local print frame instead of relying on an immediate popup flow.
29
+ - Centered PPTX slide rendering inside the viewer surface.
30
+
31
+ ### Fixed
32
+
33
+ - Reflected spreadsheet cell borders from XLSX and ODS workbook styles.
34
+ - Prevented PDF thumbnail rendering from blocking the active PDF page render.
35
+ - Prevented PPTX thumbnail rendering from blocking the active slide render.
36
+ - Preserved the stable spreadsheet renderer by removing the experimental spreadsheet overflow mode path before release.
37
+
38
+ ## [1.0.0] - 2026-07-17
39
+
40
+ ### Added
41
+
42
+ - Initial public release of the privacy-first local React document viewer.
43
+ - Added local-only rendering for PDF, DOCX, XLSX, XLS, ODS, PPTX, images, video/audio, Markdown, CSV, JSON, and plain text where supported by browser-side renderers.
44
+ - Added built-in viewer controls for file name, page navigation, zoom, fit, rotation, search, print, download, fullscreen, and thumbnails where appropriate.
45
+ - Added Blob, File, ArrayBuffer, URL, and metadata object source support.
46
+ - Added TypeScript declarations, bundled CSS exports, and public npm package metadata.
package/README.md CHANGED
@@ -8,6 +8,7 @@ The package is designed for confidential documents. It accepts `File`, `Blob`, `
8
8
 
9
9
  - npm: [@shahajimbhosle/local-doc-viewer](https://www.npmjs.com/package/@shahajimbhosle/local-doc-viewer)
10
10
  - GitHub: [shahajimbhosle/DocViewer](https://github.com/shahajimbhosle/DocViewer)
11
+ - Example: [GitHub Pages demo](https://shahajimbhosle.github.io/DocViewer/)
11
12
  - Issues: [GitHub issues](https://github.com/shahajimbhosle/DocViewer/issues)
12
13
 
13
14
  ## Built-In Formats
@@ -123,6 +124,22 @@ configurePdfWorker(pdfWorkerUrl);
123
124
 
124
125
  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.
125
126
 
127
+ ### Password-Protected PDFs
128
+
129
+ Encrypted PDFs prompt for a password inside the viewer. The password is passed directly to PDF.js in the browser and is not uploaded or sent to any preview service.
130
+
131
+ Prompt labels can be customized through `labels`:
132
+
133
+ ```tsx
134
+ <DocumentViewer
135
+ labels={{
136
+ pdfPasswordTitle: 'Protected PDF',
137
+ pdfPasswordSubmit: 'Unlock',
138
+ }}
139
+ source={file}
140
+ />
141
+ ```
142
+
126
143
  ## Controls
127
144
 
128
145
  The default control surface includes:
@@ -137,9 +154,32 @@ The default control surface includes:
137
154
  - Download
138
155
  - Fullscreen
139
156
  - PPTX slide thumbnails
157
+ - Optional PDF page thumbnails
140
158
 
141
159
  Controls are also filtered by renderer capability. For example, media files hide zoom, fit, search, print, page navigation, and rotate; images hide search, page navigation, and rotate; text/table renderers hide fit/page navigation/rotate; legacy or unsupported files keep only the generic actions such as file name, download, and fullscreen.
142
160
 
161
+ For PDFs, hiding page navigation switches the document surface to continuous scrolling so every page remains reachable without toolbar page buttons:
162
+
163
+ ```tsx
164
+ <DocumentViewer
165
+ controls={{ pageNavigation: false }}
166
+ source={file}
167
+ />
168
+ ```
169
+
170
+ Show PDF page thumbnails in a collapsible left drawer:
171
+
172
+ ```tsx
173
+ <DocumentViewer
174
+ pdfOptions={{ showThumbnails: true }}
175
+ source={file}
176
+ />
177
+ ```
178
+
179
+ PDF and PPTX thumbnail drawers are virtualized. Only visible thumbnails are mounted and rendered, and each thumbnail shows its own loader while it is prepared. This keeps the active PDF page or slide usable while thumbnails continue loading.
180
+
181
+ Set `controls.thumbnails` to `false` to hide thumbnail drawers for both PPTX and PDF.
182
+
143
183
  Disable controls selectively:
144
184
 
145
185
  ```tsx
@@ -155,6 +195,17 @@ Disable controls selectively:
155
195
 
156
196
  Every `controls` key is optional. Omitted controls use the default behavior.
157
197
 
198
+ ## Document-Specific Options
199
+
200
+ Use document-specific option objects for behavior that only applies to one renderer type:
201
+
202
+ ```tsx
203
+ <DocumentViewer
204
+ pdfOptions={{ showThumbnails: true }}
205
+ source={file}
206
+ />
207
+ ```
208
+
158
209
  ## Text Selection
159
210
 
160
211
  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:
@@ -205,6 +256,19 @@ Build the package:
205
256
  npm run build
206
257
  ```
207
258
 
259
+ Build the GitHub Pages example:
260
+
261
+ ```bash
262
+ npm run build:pages
263
+ npm run preview:pages
264
+ ```
265
+
266
+ The example site is built from `examples/basic` into `dist-pages` and is deployed by `.github/workflows/pages.yml`. In GitHub, open the repository settings and set **Pages > Build and deployment > Source** to **GitHub Actions**. After that, every push to `main` deploys the example to:
267
+
268
+ ```text
269
+ https://shahajimbhosle.github.io/DocViewer/
270
+ ```
271
+
208
272
  ## License
209
273
 
210
274
  This package is released under the MIT License.
@@ -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, loader, userSelect, 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, pdfOptions, 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,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"}
1
+ {"version":3,"file":"DocumentViewer.d.ts","sourceRoot":"","sources":["../src/DocumentViewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAMV,mBAAmB,EAOpB,MAAM,SAAS,CAAC;AAEjB,OAAO,cAAc,CAAC;AAiStB,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,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,+BAmUrB"}
@@ -3,6 +3,7 @@ interface ToolbarProps {
3
3
  controls: ResolvedDocumentViewerControls;
4
4
  fileName?: string;
5
5
  isFullscreen: boolean;
6
+ isPrinting: boolean;
6
7
  labels: DocumentViewerLabels;
7
8
  searchStats: SearchStats;
8
9
  state: ViewerRuntimeState;
@@ -18,6 +19,6 @@ interface ToolbarProps {
18
19
  onZoomOut: () => void;
19
20
  onZoomReset: () => void;
20
21
  }
21
- export declare function Toolbar({ controls, fileName, isFullscreen, labels, searchStats, state, onDownload, onFitModeChange, onFullscreenToggle, onPageChange, onPrint, onRotateLeft, onRotateRight, onSearchChange, onZoomIn, onZoomOut, onZoomReset, }: ToolbarProps): import("react").JSX.Element;
22
+ export declare function Toolbar({ controls, fileName, isFullscreen, isPrinting, labels, searchStats, state, onDownload, onFitModeChange, onFullscreenToggle, onPageChange, onPrint, onRotateLeft, onRotateRight, onSearchChange, onZoomIn, onZoomOut, onZoomReset, }: ToolbarProps): import("react").JSX.Element;
22
23
  export {};
23
24
  //# sourceMappingURL=Toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,oBAAoB,EACpB,OAAO,EACP,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,UAAU,YAAY;IACpB,QAAQ,EAAE,8BAA8B,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AA0BD,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,EAAE,YAAY,+BA0Hd"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,oBAAoB,EACpB,OAAO,EACP,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,UAAU,YAAY;IACpB,QAAQ,EAAE,8BAA8B,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AA4BD,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,MAAM,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,EAAE,YAAY,+BA0Hd"}
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-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}}
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-icon-button[aria-busy=true]{cursor:progress}.ldv-icon-button-spinner{width:16px;height:16px;border:2px solid rgba(100,116,139,.28);border-top-color:var(--ldv-accent);border-radius:999px;animation:ldv-spin .7s linear infinite}.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-pdf .ldv-viewport{overflow:hidden;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}.ldv-pdf-password{display:grid;min-height:100%;place-items:center;padding:24px}.ldv-pdf-password-panel{display:grid;width:min(360px,100%);gap:12px;padding:20px;border:1px solid var(--ldv-border);border-radius:8px;background:var(--ldv-panel);box-shadow:0 12px 32px #0f172a1f}.ldv-pdf-password-panel h2{margin:0;color:var(--ldv-text);font-size:18px;line-height:1.2}.ldv-pdf-password-panel p{margin:0;color:var(--ldv-muted);font-size:13px;line-height:1.45}.ldv-pdf-password-field{display:grid;gap:6px;color:var(--ldv-text);font-size:13px;font-weight:650}.ldv-pdf-password-field input{height:36px;padding:0 10px;border:1px solid var(--ldv-border);border-radius:6px;color:var(--ldv-text);font:inherit}.ldv-pdf-password-field input:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-pdf-password-submit{display:inline-flex;height:36px;align-items:center;justify-content:center;justify-self:start;padding:0 14px;border:1px solid var(--ldv-accent);border-radius:6px;background:var(--ldv-accent);color:#fff;cursor:pointer;font:inherit;font-size:13px;font-weight:700}.ldv-pdf-password-submit:hover{background:#0b665f}@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-pdf-page-surface{position:relative;flex:0 0 auto}.ldv-pdf-highlight-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ldv-pdf-search-highlight{position:absolute;z-index:1;border-radius:2px;background:#fff1a8ad;mix-blend-mode:multiply}.ldv-pdf-shell{display:grid;width:100%;height:100%;min-height:100%;grid-template-columns:168px minmax(0,1fr);background:#e8edf2}.ldv-pdf-shell.ldv-pdf-sidebar-collapsed{grid-template-columns:44px minmax(0,1fr)}.ldv-pdf-shell.ldv-pdf-sidebar-disabled{grid-template-columns:minmax(0,1fr)}.ldv-pdf-sidebar{display:flex;min-width:0;flex-direction:column;overflow:hidden;border-right:1px solid var(--ldv-border);background:#f8fafc}.ldv-pdf-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-pdf-sidebar-collapsed .ldv-pdf-sidebar-toggle{align-self:center}.ldv-pdf-sidebar-toggle:hover{background:#edf2f7}.ldv-pdf-sidebar-toggle:focus-visible,.ldv-pdf-thumbnail:focus-visible{outline:2px solid var(--ldv-accent);outline-offset:2px}.ldv-pdf-thumbnail-list,.ldv-pptx-thumbnail-list{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 6px 12px}.ldv-pdf-thumbnail-virtual-space,.ldv-pptx-thumbnail-virtual-space{position:relative;width:100%}.ldv-pdf-thumbnail,.ldv-pptx-thumbnail{position:absolute;top:0;left:50%;width:max-content;max-width:calc(100% - 8px)}.ldv-pdf-thumbnail:hover{background:#eef3f8}.ldv-pdf-thumbnail[aria-current=page]{border-color:var(--ldv-accent);background:#e8f5f3}.ldv-pdf-thumbnail-number{display:inline-flex;min-height:24px;align-items:center;justify-content:center;color:#4a5868;font-size:12px;font-weight:700}.ldv-pdf-thumbnail-canvas,.ldv-pptx-thumbnail-canvas{display:block;max-width:100%;border:0;background:var(--ldv-panel)}.ldv-pdf-thumbnail-preview,.ldv-pptx-thumbnail-preview{position:relative;box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;border:1px solid #cfd8e3;background:var(--ldv-panel);overflow:hidden;box-shadow:0 2px 8px #0f172a1f}.ldv-thumbnail-loader,.ldv-thumbnail-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--ldv-muted);font-size:11px;font-weight:650}.ldv-thumbnail-loader-spinner{width:16px;height:16px;border:2px solid rgba(100,116,139,.28);border-top-color:var(--ldv-accent);border-radius:999px;animation:ldv-spin .7s linear infinite}.ldv-pdf-main{min-width:0;overflow:auto;padding:4px}.ldv-pdf-continuous-stage{display:flex;min-height:100%;flex-direction:column;align-items:center;gap:12px}.ldv-pdf-page-frame{display:flex;width:100%;justify-content:center}.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-pdf-thumbnail,.ldv-pptx-thumbnail{display:grid;grid-template-columns:20px auto;gap:4px;align-items:start;padding:4px 4px 10px;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:0;background:var(--ldv-panel)}.ldv-pptx-main{min-width:0;overflow:auto;padding:12px}.ldv-pptx-stage{display:flex;width:max-content;min-width:100%;min-height:100%;align-items:center;justify-content:center}.ldv-pptx-slide-frame{position:relative;flex:0 0 auto;background:var(--ldv-panel)}.ldv-pptx-highlight-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ldv-pptx-search-highlight{position:absolute;z-index:1;border:2px solid rgba(217,119,6,.65);border-radius:3px;background:#fff1a86b}.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;overflow-anchor:none;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, DocumentViewerUserSelect, FitMode, RendererActions, ResolvedDocument, ResolvedDocumentViewerControls, SearchStats, ViewerRuntimeState, } from './types';
4
+ export type { BinaryDocumentData, DocumentInfo, DocumentRenderer, DocumentRendererProps, DocumentSource, DocumentViewerControls, DocumentViewerLabels, DocumentViewerPdfOptions, DocumentViewerProps, DocumentViewerUserSelect, FitMode, RendererActions, ResolvedDocument, ResolvedDocumentViewerControls, ResolvedDocumentViewerPdfOptions, SearchStats, ViewerRuntimeState, } from './types';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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,wBAAwB,EACxB,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,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,gCAAgC,EAChC,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC"}