@yeepay/yee-boss-ui 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/components/file-preview/YeeFilePreview.vue.d.ts +23 -0
- package/dist/components/file-preview/index.d.ts +2 -0
- package/dist/components/file-preview/source.d.ts +8 -0
- package/dist/components/file-preview/types.d.ts +32 -0
- package/dist/components/file-preview/useFilePreview.d.ts +31 -0
- package/dist/docx-preview.min-lCFRKxYn.js +4852 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1295 -636
- package/dist/marked.esm-DaHdfxOj.js +1563 -0
- package/dist/postal-mime-CPJ2QXsD.js +3219 -0
- package/dist/purify.es-HJ4qIUVZ.js +869 -0
- package/dist/style.css +1 -1
- package/dist/utils/platform-message.d.ts +5 -0
- package/dist/xlsx-CF422ARu.js +24728 -0
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -137,6 +137,38 @@ export default {
|
|
|
137
137
|
/>
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
+
### YeeFilePreview
|
|
141
|
+
|
|
142
|
+
`YeeFilePreview` 不依赖业务请求层,支持传入文件地址、`Blob`、`File` 或 `ArrayBuffer`。解析器由组件库统一提供,并按文件类型动态加载;消费者不需要额外安装 `xlsx`、`docx-preview`、`postal-mime` 等解析依赖。
|
|
143
|
+
|
|
144
|
+
```vue
|
|
145
|
+
<script setup lang="ts">
|
|
146
|
+
import { ref } from 'vue'
|
|
147
|
+
import { YeeFilePreview } from '@yeepay/yee-boss-ui'
|
|
148
|
+
|
|
149
|
+
const source = ref<string | Blob>('https://example.com/report.pdf')
|
|
150
|
+
|
|
151
|
+
function handlePreviewError(error: { message: string }): void {
|
|
152
|
+
console.error(error.message)
|
|
153
|
+
}
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<template>
|
|
157
|
+
<YeeFilePreview
|
|
158
|
+
:source="source"
|
|
159
|
+
:max-file-size="50 * 1024 * 1024"
|
|
160
|
+
height="640"
|
|
161
|
+
@error="handlePreviewError"
|
|
162
|
+
/>
|
|
163
|
+
</template>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`source` 也可以直接传入 `Blob`、`File` 或 `ArrayBuffer`;需要兼容只提供地址的调用方时,可以使用 `url`。通常组件会根据文件名或 MIME 类型识别格式,也可以通过 `file-name`、`file-type` 显式指定。
|
|
167
|
+
|
|
168
|
+
当前支持图片、PDF、文本、JSON、XML、CSV、Markdown、HTML、音视频、DOCX、XLS/XLSX 和 EML。EML 会解析正文及 `cid:` 内嵌图片;DOCX 和 Excel 属于基础预览,不保证还原原始复杂排版。PPT/PPTX、DOC 等暂不支持在线解析,会提供下载回退。
|
|
169
|
+
|
|
170
|
+
远程地址的解析型文件需要服务端允许 CORS;图片、PDF、音视频仍由浏览器原生能力加载。远程下载会先读取为 Blob 再触发下载,不会主动打开新窗口。解析默认限制 50 MB、表格 200 行和 50 列,可通过 `max-file-size`、`max-rows`、`max-columns` 调整。
|
|
171
|
+
|
|
140
172
|
### YeeModal
|
|
141
173
|
|
|
142
174
|
使用标准 `v-model:open`。Modal 默认在 header 右侧显示全屏切换按钮,可通过 `v-model:fullscreen` 控制状态,或通过 `:fullscreen-button="false"` 隐藏。`type="drawer"` 适合长详情或复杂表单,不显示全屏按钮;`confirm` 只通知父组件,不会主动关闭,便于父组件在异步提交成功后再更新 `open`。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { YeeFilePreviewError, YeeFilePreviewLoadResult, YeeFilePreviewProps } from './types';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<YeeFilePreviewProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
3
|
+
error: (error: YeeFilePreviewError) => any;
|
|
4
|
+
unsupported: (error: YeeFilePreviewError) => any;
|
|
5
|
+
load: (result: YeeFilePreviewLoadResult) => any;
|
|
6
|
+
download: () => any;
|
|
7
|
+
}, string, import('vue').PublicProps, Readonly<YeeFilePreviewProps> & Readonly<{
|
|
8
|
+
onError?: (error: YeeFilePreviewError) => any;
|
|
9
|
+
onUnsupported?: (error: YeeFilePreviewError) => any;
|
|
10
|
+
onLoad?: (result: YeeFilePreviewLoadResult) => any;
|
|
11
|
+
onDownload?: () => any;
|
|
12
|
+
}>, {
|
|
13
|
+
maxFileSize: number | undefined;
|
|
14
|
+
maxRows: number | undefined;
|
|
15
|
+
maxColumns: number | undefined;
|
|
16
|
+
showHeader: boolean | undefined;
|
|
17
|
+
showDownload: boolean | undefined;
|
|
18
|
+
alt: string | undefined;
|
|
19
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
20
|
+
previewContainer: HTMLElement;
|
|
21
|
+
docxContainer: HTMLDivElement;
|
|
22
|
+
}, HTMLElement>;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { YeeFilePreviewKind, YeeFilePreviewSource } from './types';
|
|
2
|
+
export declare function extensionFromName(name: string | undefined): string;
|
|
3
|
+
export declare function fileNameFromSource(source: YeeFilePreviewSource | undefined): string;
|
|
4
|
+
export declare function kindFromType(type: string | undefined): YeeFilePreviewKind | undefined;
|
|
5
|
+
export declare function resolveFileKind(source: YeeFilePreviewSource | undefined, fileName: string | undefined, fileType: string | undefined): YeeFilePreviewKind;
|
|
6
|
+
export declare function supportedFileExtensions(): readonly string[];
|
|
7
|
+
export declare function isBlobLike(source: YeeFilePreviewSource | undefined): source is Blob | File | ArrayBuffer;
|
|
8
|
+
export declare function sourceToBlob(source: Blob | File | ArrayBuffer): Blob;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type YeeFilePreviewSource = string | Blob | File | ArrayBuffer;
|
|
2
|
+
export type YeeFilePreviewKind = 'image' | 'pdf' | 'text' | 'json' | 'xml' | 'csv' | 'markdown' | 'html' | 'video' | 'audio' | 'docx' | 'spreadsheet' | 'eml' | 'unsupported';
|
|
3
|
+
export type YeeFilePreviewStatus = 'idle' | 'loading' | 'ready' | 'error' | 'unsupported';
|
|
4
|
+
export interface YeeFilePreviewProps {
|
|
5
|
+
source?: YeeFilePreviewSource | undefined;
|
|
6
|
+
url?: string | undefined;
|
|
7
|
+
fileName?: string | undefined;
|
|
8
|
+
fileType?: string | undefined;
|
|
9
|
+
height?: string | number | undefined;
|
|
10
|
+
maxFileSize?: number | undefined;
|
|
11
|
+
maxRows?: number | undefined;
|
|
12
|
+
maxColumns?: number | undefined;
|
|
13
|
+
showHeader?: boolean | undefined;
|
|
14
|
+
showDownload?: boolean | undefined;
|
|
15
|
+
alt?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface YeeFilePreviewTableRow {
|
|
18
|
+
cells: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface YeeFilePreviewError {
|
|
21
|
+
kind: YeeFilePreviewKind;
|
|
22
|
+
message: string;
|
|
23
|
+
cause?: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface YeeFilePreviewLoadResult {
|
|
26
|
+
kind: YeeFilePreviewKind;
|
|
27
|
+
fileName: string;
|
|
28
|
+
}
|
|
29
|
+
export interface YeeFilePreviewEmailMeta {
|
|
30
|
+
label: string;
|
|
31
|
+
value: string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { YeeFilePreviewEmailMeta, YeeFilePreviewError, YeeFilePreviewKind, YeeFilePreviewLoadResult, YeeFilePreviewProps, YeeFilePreviewStatus, YeeFilePreviewTableRow } from './types';
|
|
3
|
+
interface PreviewTargets {
|
|
4
|
+
docxContainer: Readonly<Ref<HTMLElement | null>>;
|
|
5
|
+
}
|
|
6
|
+
interface PreviewEmit {
|
|
7
|
+
(event: 'load', result: YeeFilePreviewLoadResult): void;
|
|
8
|
+
(event: 'error', error: YeeFilePreviewError): void;
|
|
9
|
+
(event: 'unsupported', error: YeeFilePreviewError): void;
|
|
10
|
+
}
|
|
11
|
+
export declare function useFilePreview(props: Readonly<YeeFilePreviewProps>, targets: PreviewTargets, emit: PreviewEmit): {
|
|
12
|
+
displayUrl: import('vue').ShallowRef<string, string>;
|
|
13
|
+
emailHtml: import('vue').ShallowRef<string, string>;
|
|
14
|
+
emailMeta: import('vue').ShallowRef<YeeFilePreviewEmailMeta[], YeeFilePreviewEmailMeta[]>;
|
|
15
|
+
emailText: import('vue').ShallowRef<string, string>;
|
|
16
|
+
errorMessage: import('vue').ShallowRef<string, string>;
|
|
17
|
+
fileName: import('vue').ComputedRef<string>;
|
|
18
|
+
htmlContent: import('vue').ShallowRef<string, string>;
|
|
19
|
+
isError: import('vue').ComputedRef<boolean>;
|
|
20
|
+
isLoading: import('vue').ComputedRef<boolean>;
|
|
21
|
+
isReady: import('vue').ComputedRef<boolean>;
|
|
22
|
+
isUnsupported: import('vue').ComputedRef<boolean>;
|
|
23
|
+
kind: import('vue').ComputedRef<YeeFilePreviewKind>;
|
|
24
|
+
load: () => Promise<void>;
|
|
25
|
+
markdownHtml: import('vue').ShallowRef<string, string>;
|
|
26
|
+
status: import('vue').ShallowRef<YeeFilePreviewStatus, YeeFilePreviewStatus>;
|
|
27
|
+
tableRows: import('vue').ShallowRef<YeeFilePreviewTableRow[], YeeFilePreviewTableRow[]>;
|
|
28
|
+
textContent: import('vue').ShallowRef<string, string>;
|
|
29
|
+
truncated: import('vue').ShallowRef<boolean, boolean>;
|
|
30
|
+
};
|
|
31
|
+
export {};
|