jit-viewer 1.1.4 → 1.2.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.zh-CN.md CHANGED
@@ -1,38 +1,37 @@
1
1
  # jit-viewer 中文文档
2
2
 
3
- 跨框架文档预览 SDK,支持 PDFDOCX、XLSX/XLS、PPTX/PPT、OFD、TXT、Markdown、HTML、图片等多种格式,并内置文档水印能力。
3
+ JitViewer 是一个面向 Vue 3React 和原生 JavaScript 的文档预览 SDK。
4
4
 
5
- [Back to English](./README.md)
5
+ 当前支持 PDF、DOCX、XLSX/XLS、CSV/TSV、PPTX/PPT、OFD、TXT、Markdown、HTML、图片、视频预览,并内置水印能力与请求适配器机制。
6
6
 
7
- ## 更新日志
7
+ [English README](./README.md)
8
8
 
9
- ### 1.1.4 - 2026-03-31
9
+ ## 本次更新
10
10
 
11
- - 优化 HTML 预览渲染,支持本地文件和远程 HTML 内容的响应式注入样式,不再是生硬的原生 iframe 效果
12
- - Viewer 运行时补齐 `html` 和 `image` 渲染分支,动态切换文件时文件类型传递更稳定
13
- - 版权信息移动到 Viewer 底部并补齐独立样式,底部版权区域展示更稳定一致
14
- - 原生 HTML demo 增强了 SDK 资源加载容错,并支持在文件选择器中直接上传 `.html` / `.htm` 文件
11
+ ### 1.2.0 - 2026-04-02
12
+
13
+ - 新增 `CSV / TSV` 预览能力,支持分隔符识别与表格渲染
14
+ - 新增 `mp4 / webm / ogg / ogv / mov` 视频预览能力
15
+ - 优化 HTML、图片与文件类型路由逻辑,动态切换文件更稳定
16
+ - 修复 CSV 预览撑宽外层容器的问题
17
+ - 修复视频预览一直停留在加载中的问题
18
+ - 加固版权信息保护逻辑,CSS 隐藏场景下可更稳定触发提示并自愈
19
+
20
+ 完整变更见 [CHANGELOG.md](./CHANGELOG.md)。
15
21
 
16
22
  ## 特性
17
23
 
18
- - 多格式预览:PDF、Office、OFD、Markdown、HTML、图片
24
+ - 多格式预览:PDF、Office、OFD、Markdown、HTML、图片、视频、CSV
19
25
  - 跨框架使用:Vue 3、React、原生 HTML/JS
20
26
  - 内置工具栏:缩放、旋转、打印、下载、分页
21
- - 主题与国际化:浅色 / 深色,中文 / 英文
27
+ - 主题与国际化:浅色 / 深色,`zh-CN` / `en`
22
28
  - 水印能力:文本水印、图片水印、透明度、旋转、平铺间距、顶层/底层显示
23
- - 支持本地文件、远程 URL、Blob、ArrayBuffer、自定义请求适配器
29
+ - 文件源支持:本地文件、远程 URL、Blob、ArrayBuffer、代理地址、自定义请求适配器
24
30
 
25
31
  ## 安装
26
32
 
27
33
  ```bash
28
- # npm
29
34
  npm install jit-viewer
30
-
31
- # yarn
32
- yarn add jit-viewer
33
-
34
- # pnpm
35
- pnpm add jit-viewer
36
35
  ```
37
36
 
38
37
  ## 快速开始
@@ -55,10 +54,8 @@ let viewer: ReturnType<typeof createViewer> | null = null
55
54
  onMounted(() => {
56
55
  viewer = createViewer({
57
56
  target: containerRef.value!,
58
- file: '/demo/test.pdf',
57
+ file: '/demo/test.csv',
59
58
  toolbar: true,
60
- theme: 'light',
61
- locale: 'zh-CN',
62
59
  width: '100%',
63
60
  height: 640
64
61
  })
@@ -70,6 +67,13 @@ onUnmounted(() => {
70
67
  viewer?.destroy()
71
68
  })
72
69
  </script>
70
+
71
+ <style scoped>
72
+ .viewer-container {
73
+ width: 100%;
74
+ height: 640px;
75
+ }
76
+ </style>
73
77
  ```
74
78
 
75
79
  ### React
@@ -84,11 +88,12 @@ export default function App() {
84
88
  const viewerRef = useRef<ViewerInstance | null>(null)
85
89
 
86
90
  useEffect(() => {
87
- if (!containerRef.current) return
91
+ if (!containerRef.current)
92
+ return
88
93
 
89
94
  viewerRef.current = createViewer({
90
95
  target: containerRef.current,
91
- file: '/demo/test.pdf',
96
+ file: '/demo/test.mp4',
92
97
  toolbar: true,
93
98
  height: 640
94
99
  })
@@ -111,19 +116,17 @@ export default function App() {
111
116
  <meta charset="UTF-8" />
112
117
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
113
118
  <title>JitViewer Demo</title>
114
- <link rel="stylesheet" href="https://unpkg.com/jit-viewer/dist/iife/jit-viewer.min.css" />
119
+ <link rel="stylesheet" href="https://unpkg.com/jit-viewer@1.2.0/dist/iife/jit-viewer.min.css" />
115
120
  </head>
116
121
  <body>
117
122
  <div id="viewer" style="width:100%;height:640px;"></div>
118
123
 
119
- <script src="https://unpkg.com/jit-viewer/dist/iife/jit-viewer.min.js"></script>
124
+ <script src="https://unpkg.com/jit-viewer@1.2.0/dist/iife/jit-viewer.min.js"></script>
120
125
  <script>
121
126
  const viewer = JitViewer.createViewer({
122
127
  target: '#viewer',
123
128
  file: '/demo/test.pdf',
124
129
  toolbar: true,
125
- theme: 'light',
126
- locale: 'zh-CN',
127
130
  width: '100%',
128
131
  height: 640
129
132
  })
@@ -134,37 +137,54 @@ export default function App() {
134
137
  </html>
135
138
  ```
136
139
 
137
- ## 水印使用
140
+ ## 核心 API
138
141
 
139
- 水印通过 `ViewerOptions.watermark` 配置,支持文本水印和图片水印。水印只作用于预览层,不会修改原始文件内容。
142
+ ### `createViewer(options)`
140
143
 
141
- ### 文本水印
144
+ 创建预览器实例。
142
145
 
143
- ```ts
144
- import { createViewer } from 'jit-viewer'
145
- import 'jit-viewer/style.css'
146
+ `ViewerOptions` 里最常用的配置如下:
146
147
 
147
- const viewer = createViewer({
148
- target: '#viewer',
149
- file: '/demo/confidential.pdf',
150
- toolbar: true,
151
- watermark: {
152
- type: 'text',
153
- content: '内部资料 严禁外传',
154
- fontSize: 20,
155
- color: '#bfbfbf',
156
- opacity: 0.22,
157
- rotate: -25,
158
- gapX: 140,
159
- gapY: 90,
160
- position: 'top'
161
- }
162
- })
148
+ | 选项 | 类型 | 说明 |
149
+ | --- | --- | --- |
150
+ | `target` | `HTMLElement \| string` | 挂载目标 |
151
+ | `file` | `FileSource` | 文件源 |
152
+ | `type` | `FileType` | 当自动识别不够稳定时显式指定文件类型 |
153
+ | `filename` | `string` | 展示和下载时使用的文件名 |
154
+ | `toolbar` | `ToolbarConfig \| boolean` | 工具栏配置 |
155
+ | `theme` | `Theme` | `light`、`dark` 或自定义主题 |
156
+ | `locale` | `Locale` | `zh-CN`、`en` 或自定义语言 |
157
+ | `watermark` | `WatermarkConfig \| null` | 预览层水印配置 |
158
+ | `proxyUrl` | `string` | 自定义代理地址 |
159
+ | `requestAdapter` | `RequestAdapter` | 自定义请求适配器 |
160
+ | `renderOptions` | `{ zoom?: number; rotate?: number; page?: number }` | 初始渲染状态 |
163
161
 
164
- viewer.mount()
165
- ```
162
+ ### `ViewerInstance`
163
+
164
+ | 方法 | 说明 |
165
+ | --- | --- |
166
+ | `mount(target?)` | 挂载预览器 |
167
+ | `destroy()` | 销毁预览器 |
168
+ | `setFile(file, filename?)` | 替换当前文件 |
169
+ | `setOptions(options)` | 运行时更新文件、主题、工具栏、水印等配置 |
170
+ | `getFile()` | 获取当前文件信息 |
171
+ | `zoom(scale)` | 设置缩放 |
172
+ | `rotate(degree)` | 设置旋转 |
173
+ | `reset()` | 重置缩放和旋转 |
174
+ | `fullscreen(enable?)` | 切换全屏 |
175
+ | `prevPage()` / `nextPage()` / `gotoPage(page)` | 分页控制 |
176
+ | `getPageInfo()` | 获取页码状态 |
177
+ | `print()` | 打印当前内容 |
178
+ | `download()` | 下载当前文件 |
179
+ | `setTheme(theme)` | 切换主题 |
180
+ | `setLocale(locale)` | 切换语言 |
181
+ | `setToolbar(config)` | 更新工具栏 |
182
+ | `on(event, handler)` / `off(event, handler)` | 事件订阅 |
183
+ | `getState()` | 获取运行时状态 |
184
+
185
+ ## 水印
166
186
 
167
- ### 图片水印
187
+ 通过 `ViewerOptions.watermark` 配置水印。水印只作用于预览层,不会修改原始文件。
168
188
 
169
189
  ```ts
170
190
  import { createViewer } from 'jit-viewer'
@@ -173,297 +193,39 @@ import 'jit-viewer/style.css'
173
193
  const viewer = createViewer({
174
194
  target: '#viewer',
175
195
  file: '/demo/report.pdf',
176
- watermark: {
177
- type: 'image',
178
- image: '/assets/company-logo.png',
179
- imageWidth: 96,
180
- imageHeight: 96,
181
- opacity: 0.16,
182
- rotate: -20,
183
- gapX: 180,
184
- gapY: 120,
185
- position: 'bottom'
186
- }
187
- })
188
-
189
- viewer.mount()
190
- ```
191
-
192
- ### Vue 组件方式
193
-
194
- ```vue
195
- <template>
196
- <Viewer
197
- :file="file"
198
- :toolbar="true"
199
- :theme="'light'"
200
- :locale="'zh-CN'"
201
- :watermark="watermark"
202
- width="100%"
203
- height="640px"
204
- />
205
- </template>
206
-
207
- <script setup lang="ts">
208
- import { ref } from 'vue'
209
- import { Viewer } from 'jit-viewer'
210
- import 'jit-viewer/style.css'
211
-
212
- const file = ref('/demo/test.pdf')
213
-
214
- const watermark = ref({
215
- type: 'text' as const,
216
- content: 'JitViewer Demo',
217
- fontSize: 18,
218
- color: '#9aa5b1',
219
- opacity: 0.18,
220
- rotate: -30,
221
- gapX: 120,
222
- gapY: 80,
223
- position: 'top' as const
224
- })
225
- </script>
226
- ```
227
-
228
- ### 动态切换不同水印
229
-
230
- ```ts
231
- import { createViewer, type ViewerInstance, type ViewerOptions } from 'jit-viewer'
232
-
233
- let viewer: ViewerInstance | null = null
234
-
235
- const baseOptions: ViewerOptions = {
236
- target: '#viewer',
237
- file: '/demo/test.pdf',
238
- toolbar: true,
239
- width: '100%',
240
- height: 640
241
- }
242
-
243
- function renderWithWatermark(watermark: ViewerOptions['watermark']) {
244
- viewer?.destroy()
245
-
246
- viewer = createViewer({
247
- ...baseOptions,
248
- watermark
249
- })
250
-
251
- viewer.mount()
252
- }
253
-
254
- renderWithWatermark({
255
- type: 'text',
256
- content: '首次预览',
257
- opacity: 0.2,
258
- rotate: -20,
259
- gapX: 140,
260
- gapY: 90
261
- })
262
-
263
- document.querySelector('#switchImage')?.addEventListener('click', () => {
264
- renderWithWatermark({
265
- type: 'image',
266
- image: '/assets/logo.png',
267
- imageWidth: 88,
268
- imageHeight: 88,
269
- opacity: 0.14,
270
- rotate: -18,
271
- gapX: 170,
272
- gapY: 110
273
- })
274
- })
275
-
276
- document.querySelector('#clearWatermark')?.addEventListener('click', () => {
277
- renderWithWatermark(null)
278
- })
279
- ```
280
-
281
- ## 详细示例
282
-
283
- ### 示例 1:合同预览 + 顶层保密文本水印
284
-
285
- ```ts
286
- createViewer({
287
- target: '#viewer',
288
- file: '/contracts/nda.pdf',
289
- filename: 'nda.pdf',
290
- toolbar: true,
291
- pdfRender: 'inset',
292
196
  watermark: {
293
197
  type: 'text',
294
- content: 'CONFIDENTIAL',
295
- fontSize: 24,
296
- color: '#d4380d',
198
+ content: '内部资料',
297
199
  opacity: 0.18,
298
- rotate: -32,
299
- gapX: 130,
300
- gapY: 85,
200
+ rotate: -24,
201
+ gapX: 140,
202
+ gapY: 90,
301
203
  position: 'top'
302
204
  }
303
- }).mount()
304
- ```
305
-
306
- ### 示例 2:员工手册预览 + 底层品牌 Logo 水印
307
-
308
- ```ts
309
- createViewer({
310
- target: '#viewer',
311
- file: '/manuals/employee-handbook.docx',
312
- toolbar: true,
313
- watermark: {
314
- type: 'image',
315
- image: '/assets/brand-watermark.svg',
316
- imageWidth: 72,
317
- imageHeight: 72,
318
- opacity: 0.1,
319
- rotate: -15,
320
- gapX: 210,
321
- gapY: 140,
322
- position: 'bottom'
323
- }
324
- }).mount()
325
- ```
326
-
327
- ### 示例 3:自定义请求头 + 水印
328
-
329
- ```ts
330
- createViewer({
331
- target: '#viewer',
332
- file: {
333
- url: 'https://api.example.com/files/statement.pdf',
334
- headers: {
335
- Authorization: 'Bearer your-token'
336
- }
337
- },
338
- requestAdapter: async (url, options) => {
339
- const response = await fetch(url, {
340
- method: options?.method || 'GET',
341
- headers: options?.headers
342
- })
343
-
344
- if (!response.ok) {
345
- throw new Error(`Request failed: ${response.status}`)
346
- }
205
+ })
347
206
 
348
- return response.arrayBuffer()
349
- },
350
- watermark: {
351
- type: 'text',
352
- content: '审阅版',
353
- fontSize: 16,
354
- color: '#7d8b99',
355
- opacity: 0.16,
356
- rotate: -28,
357
- gapX: 150,
358
- gapY: 100
359
- }
360
- }).mount()
207
+ viewer.mount()
361
208
  ```
362
209
 
363
- ## API
364
-
365
- ### `createViewer(options)`
366
-
367
- 创建预览器实例,返回 `ViewerInstance`。
368
-
369
- ### `ViewerOptions`
370
-
371
- | 参数 | 类型 | 默认值 | 说明 |
372
- |------|------|--------|------|
373
- | `target` | `HTMLElement \| string` | - | 挂载目标元素 |
374
- | `file` | `FileSource` | - | 文件源,支持 URL、File、Blob、ArrayBuffer、带请求参数对象 |
375
- | `type` | `FileType` | 自动识别 | 手动指定文件类型 |
376
- | `filename` | `string` | - | 文件名,用于显示和下载 |
377
- | `toolbar` | `boolean \| ToolbarConfig` | `true` | 工具栏配置 |
378
- | `theme` | `'light' \| 'dark' \| ThemeConfig` | `'light'` | 主题配置 |
379
- | `locale` | `'zh-CN' \| 'en' \| LocaleConfig` | `'zh-CN'` | 语言配置 |
380
- | `width` | `string \| number` | `'100%'` | 预览器宽度 |
381
- | `height` | `string \| number` | `'100%'` | 预览器高度 |
382
- | `className` | `string` | - | 自定义类名 |
383
- | `style` | `Record<string, string>` | - | 自定义样式 |
384
- | `pdfRender` | `'native' \| 'inset'` | `'inset'` | PDF 预览方式 |
385
- | `watermark` | `WatermarkConfig \| null` | `null` | 文档水印配置 |
386
- | `proxyUrl` | `string` | - | 自定义代理地址 |
387
- | `requestAdapter` | `RequestAdapter` | - | 自定义请求适配器 |
388
- | `renderOptions` | `object` | - | 初始缩放、旋转、页码等渲染配置 |
389
- | `onReady` | `() => void` | - | 预览器就绪回调 |
390
- | `onLoad` | `() => void` | - | 文件加载完成回调 |
391
- | `onError` | `(error: Error) => void` | - | 错误回调 |
392
- | `onDestroy` | `() => void` | - | 销毁回调 |
393
-
394
- ### `WatermarkConfig`
395
-
396
- | 参数 | 类型 | 说明 |
397
- |------|------|------|
398
- | `type` | `'text' \| 'image'` | 水印类型 |
399
- | `content` | `string` | 文本水印内容,`type: 'text'` 时使用 |
400
- | `image` | `string` | 图片地址,`type: 'image'` 时使用 |
401
- | `fontSize` | `number` | 文字字号,单位 `px` |
402
- | `color` | `string` | 文字颜色 |
403
- | `fontFamily` | `string` | 文字字体 |
404
- | `fontWeight` | `string \| number` | 字重 |
405
- | `imageWidth` | `number` | 图片水印宽度,单位 `px` |
406
- | `imageHeight` | `number` | 图片水印高度,单位 `px` |
407
- | `opacity` | `number` | 透明度,范围建议 `0 ~ 1` |
408
- | `rotate` | `number` | 旋转角度,单位 `deg` |
409
- | `gapX` | `number` | 水平平铺间距 |
410
- | `gapY` | `number` | 垂直平铺间距 |
411
- | `position` | `'top' \| 'bottom'` | 显示在文档上方或下方 |
412
- | `width` | `string \| number` | 水印容器宽度 |
413
- | `height` | `string \| number` | 水印容器高度 |
414
-
415
- ### `ViewerInstance`
416
-
417
- | 方法 | 说明 |
418
- |------|------|
419
- | `mount(target?)` | 挂载到目标容器 |
420
- | `destroy()` | 销毁实例 |
421
- | `setFile(file, filename?)` | 动态切换文件 |
422
- | `getFile()` | 获取当前文件信息 |
423
- | `zoom(scale)` | 设置缩放比例 |
424
- | `rotate(degree)` | 设置旋转角度 |
425
- | `reset()` | 重置缩放和旋转 |
426
- | `fullscreen(enable?)` | 切换全屏 |
427
- | `prevPage()` | 上一页 |
428
- | `nextPage()` | 下一页 |
429
- | `gotoPage(page)` | 跳转到指定页 |
430
- | `getPageInfo()` | 获取页码信息 |
431
- | `print()` | 打印当前文档 |
432
- | `download()` | 下载当前文档 |
433
- | `setTheme(theme)` | 设置主题 |
434
- | `setLocale(locale)` | 设置语言 |
435
- | `setToolbar(config)` | 设置工具栏 |
436
- | `on(event, handler)` | 监听事件 |
437
- | `off(event, handler)` | 取消监听事件 |
438
- | `getState()` | 获取当前状态 |
439
-
440
- ## 支持的文件格式
441
-
442
- | 格式 | 扩展名 | 说明 |
443
- |------|--------|------|
444
- | PDF | `.pdf` | PDF 文档 |
445
- | Word | `.docx` | Microsoft Word 文档 |
446
- | Excel | `.xlsx`, `.xls` | Microsoft Excel 表格 |
447
- | PowerPoint | `.pptx`, `.ppt` | Microsoft PowerPoint 演示文稿 |
448
- | OFD | `.ofd` | 电子公文格式 |
449
- | 文本 | `.txt` | 纯文本文件 |
450
- | Markdown | `.md`, `.markdown` | Markdown 文档 |
451
- | HTML | `.html`, `.htm` | HTML 文件或网页内容 |
452
- | 图片 | `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.svg`, `.bmp`, `.tiff`, `.tif`, `.ico` | 图片预览 |
453
-
454
- ## 浏览器支持
455
-
456
- - Chrome >= 80
457
- - Firefox >= 75
458
- - Safari >= 13
459
- - Edge >= 80
460
-
461
- ## 许可证
462
-
463
- [Apache-2.0](./LICENSE)
464
-
465
- ## 链接
466
-
210
+ ## 支持格式
211
+
212
+ | 类型 | 扩展名 |
213
+ | --- | --- |
214
+ | PDF | `.pdf` |
215
+ | Word | `.docx` |
216
+ | Excel | `.xlsx`, `.xls` |
217
+ | CSV | `.csv`, `.tsv` |
218
+ | PowerPoint | `.pptx`, `.ppt` |
219
+ | OFD | `.ofd` |
220
+ | 文本 | `.txt` |
221
+ | Markdown | `.md`, `.markdown` |
222
+ | HTML | `.html`, `.htm` |
223
+ | 图片 | `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.svg`, `.bmp`, `.tiff`, `.tif`, `.ico` |
224
+ | 视频 | `.mp4`, `.webm`, `.ogg`, `.ogv`, `.mov` |
225
+
226
+ ## 相关链接
227
+
228
+ - [English README](./README.md)
229
+ - [更新日志](./CHANGELOG.md)
467
230
  - [GitHub](https://github.com/jitOffice/jit-viewer-sdk)
468
231
  - [主页](https://jitword.com/jit-viewer.html)
469
- - [问题反馈](https://github.com/jitOffice/jit-viewer-sdk/issues)
@@ -1 +1 @@
1
- .vue-office-docx{height:100%;overflow-y:auto}.vue-office-docx .docx-wrapper>section.docx{margin-bottom:5px}@media screen and (max-width: 800px){.vue-office-docx .docx-wrapper{padding:10px}.vue-office-docx .docx-wrapper>section.docx{padding:10px!important;width:100%!important}}.x-spreadsheet{font-size:13px;line-height:normal;-webkit-user-select:none;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:#4b89ff1a;z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{-webkit-user-select:none;user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:#0000000d}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:#00000014;border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-bottombar{position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{display:flex;overflow-x:auto;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#fff;-webkit-user-select:none;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:#00000014}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#e0e1e2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;-webkit-user-select:none;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;-webkit-user-select:none;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;transition:background-color .5s linear;-webkit-user-select:none;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:#00000014;font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}body{margin:0}.gray{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.textLayer{position:absolute;text-align:initial;top:0;right:0;bottom:0;left:0;overflow:hidden;opacity:1;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;align-content:end}.textLayer :is(span,br,div){color:transparent;white-space:pre;cursor:text;transform-origin:0 0}.textLayer .highlight{--highlight-bg-color: rgb(180 0 170 / .25);--highlight-selected-bg-color: rgb(0 100 0 / .25);--highlight-backdrop-filter: none;--highlight-selected-backdrop-filter: none}.textLayer::selection{background:#0000ff40;color:transparent;align-content:end}.selectNone::selection{background:#0000ff40;color:transparent}.highLighting{background-color:#00640040;-webkit-backdrop-filter:none;backdrop-filter:none}.selectHighLight{touch-action:none;margin:-1px;padding:1px;background-color:#00640040;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:4px}.selectHighLight::selection{background:#0000ff40;color:transparent}.pages-container{display:flex;flex-direction:column;justify-content:center;align-items:center}.jv-toolbar-btn[data-v-9abd52f0]{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:6px 10px;border:none;border-radius:var(--jv-radius);background:transparent;color:var(--jv-text-secondary);cursor:pointer;transition:all .2s ease}.jv-toolbar-btn[data-v-9abd52f0]:hover:not(:disabled){background:var(--jv-bg-secondary);color:var(--jv-text-primary)}.jv-toolbar-btn[data-v-9abd52f0]:active:not(:disabled){background:var(--jv-bg-tertiary)}.jv-toolbar-btn--disabled[data-v-9abd52f0],.jv-toolbar-btn[data-v-9abd52f0]:disabled{opacity:.5;cursor:not-allowed}.jv-toolbar-btn__icon[data-v-9abd52f0]{display:flex;align-items:center;justify-content:center;width:18px;height:18px}.jv-toolbar-btn__icon svg[data-v-9abd52f0]{width:100%;height:100%}.jv-toolbar-btn__label[data-v-9abd52f0]{font-size:13px;font-weight:500}.jv-zoom-control[data-v-874ddbac]{display:flex;align-items:center;gap:4px}.jv-zoom-control__value[data-v-874ddbac]{min-width:50px;text-align:center;font-size:13px;font-weight:500;color:var(--jv-text-primary)}.jv-rotate-control[data-v-ad291658]{display:flex;align-items:center;gap:4px}.jv-pagination[data-v-97c0759f]{display:flex;align-items:center;gap:8px}.jv-pagination__info[data-v-97c0759f]{font-size:13px;color:var(--jv-text-secondary);min-width:100px;text-align:center}.jv-toolbar[data-v-74d3b30f]{display:flex;flex-direction:column;background:var(--jv-toolbar-bg);border-bottom:1px solid var(--jv-toolbar-border)}.jv-toolbar--hidden[data-v-74d3b30f]{display:none}.jv-toolbar__top[data-v-74d3b30f],.jv-toolbar__bottom[data-v-74d3b30f]{display:flex;align-items:center;justify-content:space-between;height:var(--jv-toolbar-height);padding:0 16px}.jv-toolbar__top[data-v-74d3b30f]{border-bottom:1px solid var(--jv-toolbar-border)}.jv-toolbar__left[data-v-74d3b30f],.jv-toolbar__right[data-v-74d3b30f],.jv-toolbar__center[data-v-74d3b30f]{display:flex;align-items:center;gap:8px}.jv-toolbar__filename[data-v-74d3b30f]{font-size:14px;font-weight:500;color:var(--jv-text-primary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jv-toolbar--bottom .jv-toolbar__top[data-v-74d3b30f],.jv-toolbar--top .jv-toolbar__bottom[data-v-74d3b30f]{display:none}.jv-file-render--docx[data-v-9181c8b1]{width:100%;height:100%;overflow:auto;display:flex;justify-content:center;padding:20px}.jv-file-render--docx[data-v-9181c8b1] .vue-office-docx{background:#fff;box-shadow:var(--jv-shadow)}.jv-file-render--excel[data-v-a8c7c89f]{width:100%;height:100%;overflow:auto}.jv-file-render--pdf[data-v-32fed398]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-secondary)}.jv-file-render--pdf[data-v-32fed398] canvas{display:block;margin:10px auto;box-shadow:var(--jv-shadow)}.jv-pdf-iframe[data-v-32fed398]{width:100%;height:100%;display:block;border:none}.jv-file-render--pptx[data-v-b31abca4]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-secondary)}.jv-file-render--pptx[data-v-b31abca4] .pptx-wrapper{display:flex;flex-direction:column;align-items:center;gap:20px;padding:20px}.jv-file-render--pptx[data-v-b31abca4] .pptx-slide{background:#fff;box-shadow:var(--jv-shadow)}.jv-file-render--text[data-v-f5957104]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-primary);padding:20px}.jv-text-content[data-v-f5957104]{margin:0;padding:20px;font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.6;color:var(--jv-text-primary);white-space:pre-wrap;word-wrap:break-word;background:var(--jv-bg-secondary);border-radius:var(--jv-radius);min-height:100%}.jv-file-render--markdown[data-v-2d9fb509]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-primary);padding:20px}.jv-markdown-content[data-v-2d9fb509]{max-width:800px;margin:0 auto;padding:30px;background:var(--jv-bg-primary);border-radius:var(--jv-radius-lg);line-height:1.8;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] h1,.jv-markdown-content[data-v-2d9fb509] h2,.jv-markdown-content[data-v-2d9fb509] h3,.jv-markdown-content[data-v-2d9fb509] h4,.jv-markdown-content[data-v-2d9fb509] h5,.jv-markdown-content[data-v-2d9fb509] h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] h1{font-size:2em;border-bottom:1px solid var(--jv-border-color);padding-bottom:.3em}.jv-markdown-content[data-v-2d9fb509] h2{font-size:1.5em;border-bottom:1px solid var(--jv-border-color);padding-bottom:.3em}.jv-markdown-content[data-v-2d9fb509] h3{font-size:1.25em}.jv-markdown-content[data-v-2d9fb509] p{margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] code{padding:.2em .4em;background:var(--jv-bg-secondary);border-radius:3px;font-family:Consolas,Monaco,Courier New,monospace;font-size:85%}.jv-markdown-content[data-v-2d9fb509] pre{padding:16px;overflow:auto;background:var(--jv-bg-secondary);border-radius:var(--jv-radius);margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] pre code{padding:0;background:transparent}.jv-markdown-content[data-v-2d9fb509] ul,.jv-markdown-content[data-v-2d9fb509] ol{padding-left:2em;margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] li{margin-bottom:.25em}.jv-markdown-content[data-v-2d9fb509] blockquote{padding:0 1em;border-left:4px solid var(--jv-primary-color);margin-bottom:16px;color:var(--jv-text-secondary)}.jv-markdown-content[data-v-2d9fb509] a{color:var(--jv-primary-color);text-decoration:none}.jv-markdown-content[data-v-2d9fb509] a:hover{text-decoration:underline}.jv-markdown-content[data-v-2d9fb509] hr{border:none;border-top:1px solid var(--jv-border-color);margin:24px 0}.jv-markdown-content[data-v-2d9fb509] img{max-width:100%;height:auto;border-radius:var(--jv-radius)}.jv-markdown-content[data-v-2d9fb509] table{width:100%;border-collapse:collapse;margin-bottom:16px;border:1px solid var(--jv-border-color)}.jv-markdown-content[data-v-2d9fb509] th,.jv-markdown-content[data-v-2d9fb509] td{padding:12px 16px;border:1px solid var(--jv-border-color);text-align:left}.jv-markdown-content[data-v-2d9fb509] th{background:var(--jv-bg-secondary);font-weight:600;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] tr:nth-child(2n){background:var(--jv-bg-secondary)}.jv-markdown-content[data-v-2d9fb509] tr:hover{background:var(--jv-bg-hover, rgba(0, 0, 0, .05))}.jv-markdown-content[data-v-2d9fb509] del{text-decoration:line-through;color:var(--jv-text-secondary)}.jv-file-render--ofd[data-v-f933a20c]{width:100%;height:100%;position:relative;background:var(--jv-bg-secondary, #f5f5f5)}.jv-ofd-scroll[data-v-f933a20c]{width:100%;height:100%;overflow:auto;padding:20px 0}.jv-ofd-stage[data-v-f933a20c]{min-height:100%;display:flex;justify-content:center}.jv-ofd-container[data-v-f933a20c]{min-height:100%;display:flex;flex-direction:column;align-items:center}.jv-ofd-loading[data-v-f933a20c],.jv-ofd-error[data-v-f933a20c]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--jv-text-secondary, #666);font-size:14px;background:#ffffffe0;z-index:1}.jv-ofd-error[data-v-f933a20c]{color:var(--jv-error, #f56c6c)}.jv-ofd-container[data-v-f933a20c] .page-container{margin:12px auto;box-shadow:0 2px 8px #0000001a;background:#fff}.jv-ofd-container[data-v-f933a20c] canvas{display:block}.jv-file-render--html[data-v-be7a9198]{width:100%;height:100%;overflow:hidden;background:linear-gradient(180deg,#f8fbfd,#eef3f7);position:relative}.jv-html-iframe[data-v-be7a9198]{width:100%;height:100%;border:none;display:block;background:#fff}.jv-html-loading[data-v-be7a9198]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#ffffffe6;color:#666;font-size:14px}.jv-loading-spinner[data-v-be7a9198]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#1677ff;border-radius:50%;animation:jv-spin-be7a9198 1s linear infinite}@keyframes jv-spin-be7a9198{to{transform:rotate(360deg)}}.jv-html-error[data-v-be7a9198]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;color:#ff4d4f;font-size:14px}.jv-file-render--image[data-v-40d06872]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--jv-bg-secondary);position:relative;overflow:hidden}.jv-image-loading[data-v-40d06872],.jv-image-error[data-v-40d06872]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--jv-text-secondary)}.jv-image-error svg[data-v-40d06872]{width:48px;height:48px;color:#ff4d4f}.jv-loading-spinner[data-v-40d06872]{width:40px;height:40px;border:3px solid var(--jv-border-color);border-top-color:var(--jv-primary-color);border-radius:50%;animation:jv-spin-40d06872 1s linear infinite}@keyframes jv-spin-40d06872{to{transform:rotate(360deg)}}.jv-image-wrapper[data-v-40d06872]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden}.jv-image-wrapper--dragging[data-v-40d06872]{-webkit-user-select:none;user-select:none}.jv-image[data-v-40d06872]{max-width:100%;max-height:100%;object-fit:contain;will-change:transform}.jv-image-controls[data-v-40d06872]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:8px;padding:8px 12px;background:#000000b3;border-radius:8px;opacity:0;transition:opacity .3s ease}.jv-file-render--image:hover .jv-image-controls[data-v-40d06872]{opacity:1}.jv-image-btn[data-v-40d06872]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:#fff;cursor:pointer;transition:background .2s ease}.jv-image-btn[data-v-40d06872]:hover{background:#fff3}.jv-image-btn svg[data-v-40d06872]{width:18px;height:18px}.jv-image-info[data-v-40d06872]{position:absolute;top:12px;right:12px;padding:6px 12px;background:#0009;color:#fff;font-size:12px;border-radius:4px;opacity:0;transition:opacity .3s ease}.jv-file-render--image:hover .jv-image-info[data-v-40d06872]{opacity:1}:fullscreen .jv-file-render--image[data-v-40d06872]{background:#000}.jv-watermark-container[data-v-3c7535d0]{position:relative;width:100%;height:100%;overflow:hidden}.jv-watermark-layer[data-v-3c7535d0]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px;overflow:hidden}.jv-watermark-line[data-v-3c7535d0]{text-align:center;line-height:1.5}.jv-watermark-row[data-v-3c7535d0]{display:flex;gap:100px}.jv-watermark-image[data-v-3c7535d0]{opacity:.3}.jv-watermark--top[data-v-3c7535d0]{z-index:9999}.jv-viewer[data-v-4a7f7368]{display:flex;flex-direction:column;background:var(--jv-bg-primary);border-radius:var(--jv-radius-lg);overflow:hidden;box-shadow:var(--jv-shadow)}.jv-viewer--fullscreen[data-v-4a7f7368]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;border-radius:0}.jv-viewer__content[data-v-4a7f7368]{flex:1;min-height:0;overflow:hidden;position:relative}.jv-viewer__render[data-v-4a7f7368]{width:100%;height:100%;transition:transform .3s ease;position:relative}.jv-viewer__loading-overlay[data-v-4a7f7368]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--jv-text-secondary);background:var(--jv-bg-primary);z-index:10}.jv-viewer__loading[data-v-4a7f7368],.jv-viewer__error[data-v-4a7f7368],.jv-viewer__empty[data-v-4a7f7368],.jv-viewer__unsupported[data-v-4a7f7368]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:var(--jv-text-secondary)}.jv-loading-spinner[data-v-4a7f7368]{width:40px;height:40px;border:3px solid var(--jv-border-color);border-top-color:var(--jv-primary-color);border-radius:50%;animation:jv-spin-4a7f7368 1s linear infinite}@keyframes jv-spin-4a7f7368{to{transform:rotate(360deg)}}.jv-loading-text[data-v-4a7f7368],.jv-error-text[data-v-4a7f7368],.jv-empty-text[data-v-4a7f7368]{font-size:14px}.jv-error-icon[data-v-4a7f7368]{width:48px;height:48px;color:#ff4d4f}.jv-viewer__branding[data-v-4a7f7368]{flex-shrink:0;padding:8px 16px;text-align:center;font-size:12px;color:var(--jv-text-secondary);background:var(--jv-bg-secondary);border-top:1px solid var(--jv-border-color);display:flex;align-items:center;justify-content:center;gap:4px}.jv-branding-link[data-v-4a7f7368]{color:var(--jv-primary-color);text-decoration:none;font-weight:500}.jv-branding-text[data-v-4a7f7368]{color:var(--jv-text-secondary)}.jv-branding-link[data-v-4a7f7368]:hover{text-decoration:underline}
1
+ .vue-office-docx{height:100%;overflow-y:auto}.vue-office-docx .docx-wrapper>section.docx{margin-bottom:5px}@media screen and (max-width: 800px){.vue-office-docx .docx-wrapper{padding:10px}.vue-office-docx .docx-wrapper>section.docx{padding:10px!important;width:100%!important}}.x-spreadsheet{font-size:13px;line-height:normal;-webkit-user-select:none;user-select:none;-moz-user-select:none;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;box-sizing:content-box;background:#fff;-webkit-font-smoothing:antialiased}.x-spreadsheet textarea{font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif}.x-spreadsheet-sheet{position:relative;overflow:hidden}.x-spreadsheet-table{vertical-align:bottom}.x-spreadsheet-tooltip{font-family:inherit;position:absolute;padding:5px 10px;color:#fff;border-radius:1px;background:#000;font-size:12px;z-index:201}.x-spreadsheet-tooltip:before{pointer-events:none;position:absolute;left:calc(50% - 4px);top:-4px;content:"";width:8px;height:8px;background:inherit;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:1;box-shadow:1px 1px 3px -1px #0000004d}.x-spreadsheet-color-palette{padding:5px}.x-spreadsheet-color-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:2;background:#fff}.x-spreadsheet-color-palette table td{margin:0;cursor:pointer;border:1px solid transparent}.x-spreadsheet-color-palette table td:hover{border-color:#ddd}.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell{width:16px;height:16px}.x-spreadsheet-border-palette{padding:6px}.x-spreadsheet-border-palette table{margin:0;padding:0;border-collapse:separate;border-spacing:0;background:#fff;table-layout:fixed}.x-spreadsheet-border-palette table td{margin:0}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left{border-right:1px solid #eee;padding-right:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell{width:30px;height:30px;cursor:pointer;text-align:center}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover{background-color:#eee}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right{padding-left:6px}.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type{position:relative;left:0;top:-3px}.x-spreadsheet-dropdown{position:relative}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content{position:absolute;z-index:200;background:#fff;box-shadow:1px 2px 5px 2px #33333326}.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content{top:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content{top:calc(100% + 5px);right:0}.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);left:0}.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content{bottom:calc(100% + 5px);right:0}.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title{padding:0 5px;display:inline-block}.x-spreadsheet-resizer{position:absolute;z-index:11}.x-spreadsheet-resizer .x-spreadsheet-resizer-hover{background-color:#4b89ff40}.x-spreadsheet-resizer .x-spreadsheet-resizer-line{position:absolute}.x-spreadsheet-resizer.horizontal{cursor:row-resize}.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line{border-bottom:2px dashed #4b89ff;left:0;bottom:0}.x-spreadsheet-resizer.vertical{cursor:col-resize}.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line{border-right:2px dashed #4b89ff;top:0;right:0}.x-spreadsheet-scrollbar{position:absolute;bottom:0;right:0;background-color:#f4f5f8;opacity:.9;z-index:12}.x-spreadsheet-scrollbar.horizontal{right:15px;overflow-x:scroll;overflow-y:hidden}.x-spreadsheet-scrollbar.horizontal>div{height:1px;background:#ddd}.x-spreadsheet-scrollbar.vertical{bottom:15px;overflow-x:hidden;overflow-y:scroll}.x-spreadsheet-scrollbar.vertical>div{width:1px;background:#ddd}.x-spreadsheet-overlayer{position:absolute;left:0;top:0;z-index:10}.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content{position:absolute;overflow:hidden;pointer-events:none;width:100%;height:100%}.x-spreadsheet-editor,.x-spreadsheet-selector{box-sizing:content-box;position:absolute;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;height:100%}.x-spreadsheet-selector .hide-input{position:absolute;z-index:0}.x-spreadsheet-selector .hide-input input{padding:0;width:0;border:none!important}.x-spreadsheet-selector .x-spreadsheet-selector-area{position:absolute;border:2px solid #4b89ff;background:#4b89ff1a;z-index:5}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,.x-spreadsheet-selector .x-spreadsheet-selector-autofill{position:absolute;background:transparent;z-index:100}.x-spreadsheet-selector .x-spreadsheet-selector-clipboard{border:2px dashed #4b89ff}.x-spreadsheet-selector .x-spreadsheet-selector-autofill{border:1px dashed rgba(0,0,0,.45)}.x-spreadsheet-selector .x-spreadsheet-selector-corner{pointer-events:auto;position:absolute;cursor:crosshair;font-size:0;height:5px;width:5px;right:-5px;bottom:-5px;border:2px solid #ffffff;background:#4b89ff}.x-spreadsheet-editor{z-index:20}.x-spreadsheet-editor .x-spreadsheet-editor-area{position:absolute;text-align:left;border:2px solid #4b89ff;line-height:0;z-index:100;pointer-events:auto}.x-spreadsheet-editor .x-spreadsheet-editor-area textarea{box-sizing:content-box;border:none;padding:0 3px;outline:none;resize:none;text-align:start;overflow-y:hidden;font:400 13px Arial,Lato,Source Sans Pro,Roboto,Helvetica,sans-serif;color:inherit;white-space:normal;word-wrap:break-word;line-height:22px;margin:0}.x-spreadsheet-editor .x-spreadsheet-editor-area .textline{overflow:hidden;visibility:hidden;position:fixed;top:0;left:0}.x-spreadsheet-item{-webkit-user-select:none;user-select:none;background:0;border:1px solid transparent;outline:none;height:26px;color:#000000e6;line-height:26px;list-style:none;padding:2px 10px;cursor:default;text-align:left;overflow:hidden}.x-spreadsheet-item.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-item:hover,.x-spreadsheet-item.active{background:#0000000d}.x-spreadsheet-item.divider{height:0;padding:0;margin:5px 0;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.x-spreadsheet-item .label{float:right;opacity:.65;font-size:1em}.x-spreadsheet-item.state,.x-spreadsheet-header.state{padding-left:35px!important;position:relative}.x-spreadsheet-item.state:before,.x-spreadsheet-header.state:before{content:"";position:absolute;width:10px;height:10px;left:12px;top:calc(50% - 5px);background:#00000014;border-radius:2px}.x-spreadsheet-item.state.checked:before,.x-spreadsheet-header.state.checked:before{background:#4b89ff}.x-spreadsheet-checkbox{position:relative;display:inline-block;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;font-size:1rem;line-height:1em}.x-spreadsheet-checkbox>input{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.x-spreadsheet-suggest,.x-spreadsheet-contextmenu,.x-spreadsheet-sort-filter{position:absolute;box-shadow:1px 2px 5px 2px #33333326;background:#fff;z-index:100;width:260px;pointer-events:auto;overflow:auto}.x-spreadsheet-suggest{width:200px}.x-spreadsheet-filter{border:1px solid #e9e9e9;font-size:12px;margin:10px}.x-spreadsheet-filter .x-spreadsheet-header{padding:.5em .75em;background:#f8f8f9;border-bottom:1px solid #e9e9e9;border-left:1px solid transparent}.x-spreadsheet-filter .x-spreadsheet-body{height:200px;overflow-y:auto}.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item{height:20px;line-height:20px}.x-spreadsheet-sort-filter .x-spreadsheet-buttons{margin:10px}.x-spreadsheet-bottombar{height:40px;padding:0 30px;text-align:left;background:#f5f6f7;display:flex}.x-spreadsheet-bottombar{position:relative;border-top:1px solid #e0e2e4}.x-spreadsheet-bottombar .x-spreadsheet-menu>li{line-height:40px;height:40px;padding-top:0;padding-bottom:0;vertical-align:middle;border-right:1px solid #e8eaed}.x-spreadsheet-menu{display:flex;overflow-x:auto;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.x-spreadsheet-menu>li{float:left;line-height:1.25em;padding:.785em 1em;margin:0;vertical-align:middle;text-align:left;font-weight:400;color:#80868b;white-space:nowrap;cursor:pointer;transition:all .3s;font-weight:700}.x-spreadsheet-menu>li.active{background-color:#fff;color:#000000a6}.x-spreadsheet-menu>li .x-spreadsheet-dropdown{display:inline-block}.x-spreadsheet-print{position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;display:flex;flex-direction:column}.x-spreadsheet-print-bar{background:#424242;height:60px;line-height:60px;padding:0 30px}.x-spreadsheet-print-bar .-title{color:#fff;font-weight:700;font-size:1.2em;float:left}.x-spreadsheet-print-bar .-right{float:right;margin-top:12px}.x-spreadsheet-print-content{display:flex;flex:auto;flex-direction:row;background:#d0d0d0;height:calc(100% - 60px)}.x-spreadsheet-print-content .-sider{flex:0 0 300px;width:300px;border-left:2px solid #ccc;background:#fff}.x-spreadsheet-print-content .-content{flex:auto;overflow-x:auto;overflow-y:scroll;height:100%}.x-spreadsheet-canvas-card-wraper{margin:40px 20px}.x-spreadsheet-canvas-card{background:#fff;margin:auto;page-break-before:auto;page-break-after:always;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 3px #0000001f,0 4px 5px #0003}.x-spreadsheet-calendar{color:#000000a6;background:#fff;-webkit-user-select:none;user-select:none}.x-spreadsheet-calendar .calendar-header{font-weight:700;line-height:30px;text-align:center;width:100%;float:left;background:#f9fafb}.x-spreadsheet-calendar .calendar-header .calendar-header-left{padding-left:5px;float:left}.x-spreadsheet-calendar .calendar-header .calendar-header-right{float:right}.x-spreadsheet-calendar .calendar-header .calendar-header-right a{padding:3px 0;margin-right:2px;border-radius:2px}.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover{background:#00000014}.x-spreadsheet-calendar .calendar-body{border-collapse:collapse;border-spacing:0}.x-spreadsheet-calendar .calendar-body th,.x-spreadsheet-calendar .calendar-body td{width:14.28571429%;min-width:32px;text-align:center;font-weight:700;line-height:30px;padding:0}.x-spreadsheet-calendar .calendar-body td>.cell:hover{background:#ecf6fd}.x-spreadsheet-calendar .calendar-body td>.cell.active,.x-spreadsheet-calendar .calendar-body td>.cell.active:hover{background:#ecf6fd;color:#2185d0}.x-spreadsheet-calendar .calendar-body td>.cell.disabled{pointer-events:none;opacity:.5}.x-spreadsheet-datepicker{box-shadow:2px 2px 5px #0003;position:absolute;left:0;top:calc(100% + 5px);z-index:10;width:auto}.x-spreadsheet-buttons{display:flex;justify-content:flex-end}.x-spreadsheet-buttons .x-spreadsheet-button{margin-left:8px}.x-spreadsheet-button{display:inline-block;border-radius:3px;line-height:1em;min-height:1em;white-space:nowrap;text-align:center;cursor:pointer;font-size:1em;font-weight:700;padding:.75em 1em;color:#0009;background:#e0e1e2;text-decoration:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;outline:none;vertical-align:baseline;zoom:1;-webkit-user-select:none;user-select:none;transition:all .1s linear}.x-spreadsheet-button.active,.x-spreadsheet-button:hover{background-color:#c0c1c2;color:#000c}.x-spreadsheet-button.primary{color:#fff;background-color:#2185d0}.x-spreadsheet-button.primary:hover,.x-spreadsheet-button.primary.active{color:#fff;background-color:#1678c2}.x-spreadsheet-form-input{font-size:1em;position:relative;font-weight:400;display:inline-flex;color:#000000de}.x-spreadsheet-form-input input{z-index:1;margin:0;max-width:100%;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:30px;height:30px;padding:0 8px;background:#fff;border:1px solid #e9e9e9;border-radius:3px;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-input input:focus{border-color:#4b89ff;box-shadow:inset 0 1px 2px #4b89ff33}.x-spreadsheet-form-select{position:relative;display:inline-block;background:#fff;border:1px solid #e9e9e9;border-radius:2px;cursor:pointer;color:#000000de;-webkit-user-select:none;user-select:none;box-shadow:inset 0 1px 2px #0a0a0a0f}.x-spreadsheet-form-select .input-text{text-overflow:ellipsis;white-space:nowrap;min-width:60px;width:auto;height:30px;line-height:30px;padding:0 8px}.x-spreadsheet-form-fields{display:flex;flex-direction:row;flex-wrap:wrap}.x-spreadsheet-form-fields .x-spreadsheet-form-field{flex:0 1 auto}.x-spreadsheet-form-fields .x-spreadsheet-form-field .label{display:inline-block;margin:0 10px 0 0}.x-spreadsheet-form-field{display:block;vertical-align:middle;margin-left:10px;margin-bottom:10px}.x-spreadsheet-form-field:first-child{margin-left:0}.x-spreadsheet-form-field.error .x-spreadsheet-form-select,.x-spreadsheet-form-field.error input{border-color:#f04134}.x-spreadsheet-form-field .tip{color:#f04134;font-size:.9em}.x-spreadsheet-dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:#0009;opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;transition:background-color .5s linear;-webkit-user-select:none;user-select:none;z-index:1000}.x-spreadsheet-dimmer.active{display:block;opacity:1}form fieldset{border:none}form fieldset label{display:block;margin-bottom:.5em;font-size:1em;color:#666}form fieldset select{font-size:1.1em;width:100%;background-color:#fff;border:none;border-bottom:2px solid #ddd;padding:.5em .85em;border-radius:2px}.x-spreadsheet-modal,.x-spreadsheet-toast{font-size:13px;position:fixed;z-index:1001;text-align:left;line-height:1.25em;min-width:360px;color:#000000de;font-family:Lato,Source Sans Pro,Roboto,Helvetica,Arial,sans-serif;border-radius:4px;border:1px solid rgba(0,0,0,.1);background-color:#fff;background-clip:padding-box;box-shadow:#0003 0 2px 8px}.x-spreadsheet-toast{background-color:#ffffffd9}.x-spreadsheet-modal-header,.x-spreadsheet-toast-header{font-weight:600;background-clip:padding-box;background-color:#ffffffd9;border-bottom:1px solid rgba(0,0,0,.05);border-radius:4px 4px 0 0}.x-spreadsheet-toast-header{color:#f2711c}.x-spreadsheet-modal-header{border-bottom:1px solid #e0e2e4;background:#00000014;font-size:1.0785em}.x-spreadsheet-modal-header,.x-spreadsheet-modal-content,.x-spreadsheet-toast-header,.x-spreadsheet-toast-content{padding:.75em 1em}.x-spreadsheet-menu li:first-child{display:none}.vue-office-excel{height:100%}body{margin:0}.gray{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.textLayer{position:absolute;text-align:initial;top:0;right:0;bottom:0;left:0;overflow:hidden;opacity:1;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;align-content:end}.textLayer :is(span,br,div){color:transparent;white-space:pre;cursor:text;transform-origin:0 0}.textLayer .highlight{--highlight-bg-color: rgb(180 0 170 / .25);--highlight-selected-bg-color: rgb(0 100 0 / .25);--highlight-backdrop-filter: none;--highlight-selected-backdrop-filter: none}.textLayer::selection{background:#0000ff40;color:transparent;align-content:end}.selectNone::selection{background:#0000ff40;color:transparent}.highLighting{background-color:#00640040;-webkit-backdrop-filter:none;backdrop-filter:none}.selectHighLight{touch-action:none;margin:-1px;padding:1px;background-color:#00640040;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:4px}.selectHighLight::selection{background:#0000ff40;color:transparent}.pages-container{display:flex;flex-direction:column;justify-content:center;align-items:center}.jv-toolbar-btn[data-v-9abd52f0]{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:6px 10px;border:none;border-radius:var(--jv-radius);background:transparent;color:var(--jv-text-secondary);cursor:pointer;transition:all .2s ease}.jv-toolbar-btn[data-v-9abd52f0]:hover:not(:disabled){background:var(--jv-bg-secondary);color:var(--jv-text-primary)}.jv-toolbar-btn[data-v-9abd52f0]:active:not(:disabled){background:var(--jv-bg-tertiary)}.jv-toolbar-btn--disabled[data-v-9abd52f0],.jv-toolbar-btn[data-v-9abd52f0]:disabled{opacity:.5;cursor:not-allowed}.jv-toolbar-btn__icon[data-v-9abd52f0]{display:flex;align-items:center;justify-content:center;width:18px;height:18px}.jv-toolbar-btn__icon svg[data-v-9abd52f0]{width:100%;height:100%}.jv-toolbar-btn__label[data-v-9abd52f0]{font-size:13px;font-weight:500}.jv-zoom-control[data-v-874ddbac]{display:flex;align-items:center;gap:4px}.jv-zoom-control__value[data-v-874ddbac]{min-width:50px;text-align:center;font-size:13px;font-weight:500;color:var(--jv-text-primary)}.jv-rotate-control[data-v-ad291658]{display:flex;align-items:center;gap:4px}.jv-pagination[data-v-97c0759f]{display:flex;align-items:center;gap:8px}.jv-pagination__info[data-v-97c0759f]{font-size:13px;color:var(--jv-text-secondary);min-width:100px;text-align:center}.jv-toolbar[data-v-74d3b30f]{display:flex;flex-direction:column;background:var(--jv-toolbar-bg);border-bottom:1px solid var(--jv-toolbar-border)}.jv-toolbar--hidden[data-v-74d3b30f]{display:none}.jv-toolbar__top[data-v-74d3b30f],.jv-toolbar__bottom[data-v-74d3b30f]{display:flex;align-items:center;justify-content:space-between;height:var(--jv-toolbar-height);padding:0 16px}.jv-toolbar__top[data-v-74d3b30f]{border-bottom:1px solid var(--jv-toolbar-border)}.jv-toolbar__left[data-v-74d3b30f],.jv-toolbar__right[data-v-74d3b30f],.jv-toolbar__center[data-v-74d3b30f]{display:flex;align-items:center;gap:8px}.jv-toolbar__filename[data-v-74d3b30f]{font-size:14px;font-weight:500;color:var(--jv-text-primary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jv-toolbar--bottom .jv-toolbar__top[data-v-74d3b30f],.jv-toolbar--top .jv-toolbar__bottom[data-v-74d3b30f]{display:none}.jv-file-render--docx[data-v-9181c8b1]{width:100%;height:100%;overflow:auto;display:flex;justify-content:center;padding:20px}.jv-file-render--docx[data-v-9181c8b1] .vue-office-docx{background:#fff;box-shadow:var(--jv-shadow)}.jv-file-render--excel[data-v-a8c7c89f]{width:100%;height:100%;overflow:auto}.jv-file-render--csv[data-v-0dc1ca7d]{width:100%;height:100%;min-width:0;max-width:100%;overflow:hidden;background:var(--jv-bg-primary);display:flex;flex-direction:column}.jv-csv-toolbar[data-v-0dc1ca7d]{position:sticky;top:0;z-index:2;display:flex;gap:16px;align-items:center;padding:12px 16px;background:color-mix(in srgb,var(--jv-bg-secondary) 92%,white);border-bottom:1px solid var(--jv-border-color, #e5e7eb)}.jv-csv-meta[data-v-0dc1ca7d]{font-size:13px;color:var(--jv-text-secondary)}.jv-csv-scroll[data-v-0dc1ca7d]{flex:1;min-height:0;min-width:0;max-width:100%;overflow:hidden}.jv-csv-stage[data-v-0dc1ca7d]{padding:16px;width:100%;height:100%;min-width:0;max-width:100%}.jv-csv-empty[data-v-0dc1ca7d]{padding:24px;color:var(--jv-text-secondary)}.jv-csv-fit-scroll[data-v-0dc1ca7d]{width:100%;height:100%;min-width:0;max-width:100%;overflow:auto}.jv-csv-fit-shell[data-v-0dc1ca7d]{position:relative;width:100%;min-width:100%;max-width:100%}.jv-csv-fit-content[data-v-0dc1ca7d]{position:absolute;top:0;left:0}.jv-csv-table[data-v-0dc1ca7d]{border-collapse:collapse;width:max-content;background:#fff;box-shadow:var(--jv-shadow)}.jv-csv-table th[data-v-0dc1ca7d],.jv-csv-table td[data-v-0dc1ca7d]{min-width:140px;max-width:280px;padding:10px 12px;border:1px solid #e5e7eb;text-align:left;vertical-align:top;white-space:pre-wrap;word-break:break-word;font-size:13px;color:var(--jv-text-primary)}.jv-csv-table thead th[data-v-0dc1ca7d]{position:sticky;top:0;z-index:2;background:#f8fafc;font-weight:600}.jv-csv-index[data-v-0dc1ca7d]{min-width:60px!important;width:60px;text-align:center!important;color:var(--jv-text-secondary)!important;background:#f8fafc}.jv-csv-table tbody tr[data-v-0dc1ca7d]:nth-child(2n){background:#fcfcfd}.jv-file-render--pdf[data-v-32fed398]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-secondary)}.jv-file-render--pdf[data-v-32fed398] canvas{display:block;margin:10px auto;box-shadow:var(--jv-shadow)}.jv-pdf-iframe[data-v-32fed398]{width:100%;height:100%;display:block;border:none}.jv-file-render--pptx[data-v-b31abca4]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-secondary)}.jv-file-render--pptx[data-v-b31abca4] .pptx-wrapper{display:flex;flex-direction:column;align-items:center;gap:20px;padding:20px}.jv-file-render--pptx[data-v-b31abca4] .pptx-slide{background:#fff;box-shadow:var(--jv-shadow)}.jv-file-render--text[data-v-f5957104]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-primary);padding:20px}.jv-text-content[data-v-f5957104]{margin:0;padding:20px;font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.6;color:var(--jv-text-primary);white-space:pre-wrap;word-wrap:break-word;background:var(--jv-bg-secondary);border-radius:var(--jv-radius);min-height:100%}.jv-file-render--markdown[data-v-2d9fb509]{width:100%;height:100%;overflow:auto;background:var(--jv-bg-primary);padding:20px}.jv-markdown-content[data-v-2d9fb509]{max-width:800px;margin:0 auto;padding:30px;background:var(--jv-bg-primary);border-radius:var(--jv-radius-lg);line-height:1.8;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] h1,.jv-markdown-content[data-v-2d9fb509] h2,.jv-markdown-content[data-v-2d9fb509] h3,.jv-markdown-content[data-v-2d9fb509] h4,.jv-markdown-content[data-v-2d9fb509] h5,.jv-markdown-content[data-v-2d9fb509] h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] h1{font-size:2em;border-bottom:1px solid var(--jv-border-color);padding-bottom:.3em}.jv-markdown-content[data-v-2d9fb509] h2{font-size:1.5em;border-bottom:1px solid var(--jv-border-color);padding-bottom:.3em}.jv-markdown-content[data-v-2d9fb509] h3{font-size:1.25em}.jv-markdown-content[data-v-2d9fb509] p{margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] code{padding:.2em .4em;background:var(--jv-bg-secondary);border-radius:3px;font-family:Consolas,Monaco,Courier New,monospace;font-size:85%}.jv-markdown-content[data-v-2d9fb509] pre{padding:16px;overflow:auto;background:var(--jv-bg-secondary);border-radius:var(--jv-radius);margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] pre code{padding:0;background:transparent}.jv-markdown-content[data-v-2d9fb509] ul,.jv-markdown-content[data-v-2d9fb509] ol{padding-left:2em;margin-bottom:16px}.jv-markdown-content[data-v-2d9fb509] li{margin-bottom:.25em}.jv-markdown-content[data-v-2d9fb509] blockquote{padding:0 1em;border-left:4px solid var(--jv-primary-color);margin-bottom:16px;color:var(--jv-text-secondary)}.jv-markdown-content[data-v-2d9fb509] a{color:var(--jv-primary-color);text-decoration:none}.jv-markdown-content[data-v-2d9fb509] a:hover{text-decoration:underline}.jv-markdown-content[data-v-2d9fb509] hr{border:none;border-top:1px solid var(--jv-border-color);margin:24px 0}.jv-markdown-content[data-v-2d9fb509] img{max-width:100%;height:auto;border-radius:var(--jv-radius)}.jv-markdown-content[data-v-2d9fb509] table{width:100%;border-collapse:collapse;margin-bottom:16px;border:1px solid var(--jv-border-color)}.jv-markdown-content[data-v-2d9fb509] th,.jv-markdown-content[data-v-2d9fb509] td{padding:12px 16px;border:1px solid var(--jv-border-color);text-align:left}.jv-markdown-content[data-v-2d9fb509] th{background:var(--jv-bg-secondary);font-weight:600;color:var(--jv-text-primary)}.jv-markdown-content[data-v-2d9fb509] tr:nth-child(2n){background:var(--jv-bg-secondary)}.jv-markdown-content[data-v-2d9fb509] tr:hover{background:var(--jv-bg-hover, rgba(0, 0, 0, .05))}.jv-markdown-content[data-v-2d9fb509] del{text-decoration:line-through;color:var(--jv-text-secondary)}.jv-file-render--ofd[data-v-f933a20c]{width:100%;height:100%;position:relative;background:var(--jv-bg-secondary, #f5f5f5)}.jv-ofd-scroll[data-v-f933a20c]{width:100%;height:100%;overflow:auto;padding:20px 0}.jv-ofd-stage[data-v-f933a20c]{min-height:100%;display:flex;justify-content:center}.jv-ofd-container[data-v-f933a20c]{min-height:100%;display:flex;flex-direction:column;align-items:center}.jv-ofd-loading[data-v-f933a20c],.jv-ofd-error[data-v-f933a20c]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--jv-text-secondary, #666);font-size:14px;background:#ffffffe0;z-index:1}.jv-ofd-error[data-v-f933a20c]{color:var(--jv-error, #f56c6c)}.jv-ofd-container[data-v-f933a20c] .page-container{margin:12px auto;box-shadow:0 2px 8px #0000001a;background:#fff}.jv-ofd-container[data-v-f933a20c] canvas{display:block}.jv-file-render--html[data-v-be7a9198]{width:100%;height:100%;overflow:hidden;background:linear-gradient(180deg,#f8fbfd,#eef3f7);position:relative}.jv-html-iframe[data-v-be7a9198]{width:100%;height:100%;border:none;display:block;background:#fff}.jv-html-loading[data-v-be7a9198]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#ffffffe6;color:#666;font-size:14px}.jv-loading-spinner[data-v-be7a9198]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#1677ff;border-radius:50%;animation:jv-spin-be7a9198 1s linear infinite}@keyframes jv-spin-be7a9198{to{transform:rotate(360deg)}}.jv-html-error[data-v-be7a9198]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;color:#ff4d4f;font-size:14px}.jv-file-render--image[data-v-4810f73a]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--jv-bg-secondary);position:relative;overflow:hidden}.jv-image-loading[data-v-4810f73a],.jv-image-error[data-v-4810f73a]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--jv-text-secondary)}.jv-image-error svg[data-v-4810f73a]{width:48px;height:48px;color:#ff4d4f}.jv-loading-spinner[data-v-4810f73a]{width:40px;height:40px;border:3px solid var(--jv-border-color);border-top-color:var(--jv-primary-color);border-radius:50%;animation:jv-spin-4810f73a 1s linear infinite}@keyframes jv-spin-4810f73a{to{transform:rotate(360deg)}}.jv-image-wrapper[data-v-4810f73a]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden}.jv-image-wrapper--dragging[data-v-4810f73a]{-webkit-user-select:none;user-select:none}.jv-image[data-v-4810f73a]{max-width:100%;max-height:100%;object-fit:contain;will-change:transform}.jv-image-controls[data-v-4810f73a]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:8px;padding:8px 12px;background:#000000b3;border-radius:8px;opacity:0;transition:opacity .3s ease}.jv-file-render--image:hover .jv-image-controls[data-v-4810f73a]{opacity:1}.jv-image-btn[data-v-4810f73a]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;padding:0;background:transparent;border:none;border-radius:4px;color:#fff;cursor:pointer;transition:background .2s ease;-moz-appearance:none;appearance:none;-webkit-appearance:none;line-height:1}.jv-image-btn[data-v-4810f73a]:hover{background:#fff3}.jv-image-btn svg[data-v-4810f73a]{display:block;flex:0 0 auto;width:18px;height:18px;stroke:currentColor;fill:none}.jv-image-info[data-v-4810f73a]{position:absolute;top:12px;right:12px;padding:6px 12px;background:#0009;color:#fff;font-size:12px;border-radius:4px;opacity:0;transition:opacity .3s ease}.jv-file-render--image:hover .jv-image-info[data-v-4810f73a]{opacity:1}:fullscreen .jv-file-render--image[data-v-4810f73a]{background:#000}.jv-file-render--video[data-v-39a588be]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto;position:relative}.jv-video-loading[data-v-39a588be],.jv-video-error[data-v-39a588be]{display:flex;flex-direction:column;align-items:center;gap:12px;color:#e2e8f0}.jv-video-error svg[data-v-39a588be]{width:40px;height:40px}.jv-loading-spinner[data-v-39a588be]{width:36px;height:36px;border:3px solid rgba(255,255,255,.24);border-top-color:#fff;border-radius:50%;animation:jv-video-spin-39a588be .8s linear infinite}.jv-video-stage[data-v-39a588be]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;position:relative}.jv-video-stage__inner[data-v-39a588be]{max-width:100%;max-height:100%}.jv-video-loading[data-v-39a588be]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#0f172ab8;z-index:1}.jv-video-player[data-v-39a588be]{max-width:min(100%,1200px);max-height:calc(100vh - 220px);border-radius:16px;background:#000;box-shadow:0 20px 40px #00000059}.jv-video-info[data-v-39a588be]{display:inline-flex;gap:16px;flex-wrap:wrap;justify-content:center;padding:10px 14px;border-radius:999px;background:#0f172ab3;color:#cbd5e1;font-size:13px}@keyframes jv-video-spin-39a588be{to{transform:rotate(360deg)}}.jv-watermark-container[data-v-3c7535d0]{position:relative;width:100%;height:100%;overflow:hidden}.jv-watermark-layer[data-v-3c7535d0]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px;overflow:hidden}.jv-watermark-line[data-v-3c7535d0]{text-align:center;line-height:1.5}.jv-watermark-row[data-v-3c7535d0]{display:flex;gap:100px}.jv-watermark-image[data-v-3c7535d0]{opacity:.3}.jv-watermark--top[data-v-3c7535d0]{z-index:9999}.jv-viewer[data-v-b10b4a5f]{display:flex;flex-direction:column;background:var(--jv-bg-primary);border-radius:var(--jv-radius-lg);overflow:hidden;box-shadow:var(--jv-shadow);min-width:0}.jv-viewer--fullscreen[data-v-b10b4a5f]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;border-radius:0}.jv-viewer__content[data-v-b10b4a5f]{flex:1;min-height:0;min-width:0;overflow:hidden;position:relative}.jv-viewer__render[data-v-b10b4a5f]{width:100%;height:100%;min-width:0;transition:transform .3s ease;position:relative}.jv-viewer__loading-overlay[data-v-b10b4a5f]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--jv-text-secondary);background:var(--jv-bg-primary);z-index:10}.jv-viewer__loading[data-v-b10b4a5f],.jv-viewer__error[data-v-b10b4a5f],.jv-viewer__empty[data-v-b10b4a5f],.jv-viewer__unsupported[data-v-b10b4a5f]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:var(--jv-text-secondary)}.jv-loading-spinner[data-v-b10b4a5f]{width:40px;height:40px;border:3px solid var(--jv-border-color);border-top-color:var(--jv-primary-color);border-radius:50%;animation:jv-spin-b10b4a5f 1s linear infinite}@keyframes jv-spin-b10b4a5f{to{transform:rotate(360deg)}}.jv-loading-text[data-v-b10b4a5f],.jv-error-text[data-v-b10b4a5f],.jv-empty-text[data-v-b10b4a5f]{font-size:14px}.jv-error-icon[data-v-b10b4a5f]{width:48px;height:48px;color:#ff4d4f}.jv-viewer__branding[data-v-b10b4a5f]{flex-shrink:0;padding:8px 16px;text-align:center;font-size:12px;color:var(--jv-text-secondary);background:var(--jv-bg-secondary);border-top:1px solid var(--jv-border-color);display:flex;align-items:center;justify-content:center;gap:4px}.jv-branding-link[data-v-b10b4a5f]{color:var(--jv-primary-color);text-decoration:none;font-weight:500}.jv-branding-text[data-v-b10b4a5f]{color:var(--jv-text-secondary)}.jv-branding-link[data-v-b10b4a5f]:hover{text-decoration:underline}