@hkyhy/marsun-components-core 0.1.5 → 0.1.10
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/dist/components/File/FilePreview/FilePreviewContent.d.ts +9 -0
- package/dist/components/File/FilePreview/FilePreviewContent.js +83 -0
- package/dist/components/File/FilePreview/FilePreviewContent.js.map +1 -0
- package/dist/components/File/FilePreview/index.d.ts +2 -0
- package/dist/components/File/FilePreview/index.js +46 -39
- package/dist/components/File/FilePreview/index.js.map +1 -1
- package/dist/components/File/FilePreview/style.module.scss.js +19 -2
- package/dist/components/File/FilePreview/style.module.scss.js.map +1 -1
- package/dist/components/File/FilePreviewLink/index.d.ts +13 -0
- package/dist/components/File/FilePreviewLink/index.js +61 -0
- package/dist/components/File/FilePreviewLink/index.js.map +1 -0
- package/dist/components/File/FilePreviewLink/style.module.scss.js +11 -0
- package/dist/components/File/FilePreviewLink/style.module.scss.js.map +1 -0
- package/dist/components/File/FilePreviewModal/index.d.ts +3 -0
- package/dist/components/File/FilePreviewModal/index.js +37 -8
- package/dist/components/File/FilePreviewModal/index.js.map +1 -1
- package/dist/components/File/fileDisplay.d.ts +2 -0
- package/dist/components/File/fileDisplay.js +25 -21
- package/dist/components/File/fileDisplay.js.map +1 -1
- package/dist/components/File/index.d.ts +3 -1
- package/dist/components/File/previewKind.d.ts +6 -0
- package/dist/components/File/previewKind.js +42 -0
- package/dist/components/File/previewKind.js.map +1 -0
- package/dist/index.js +98 -95
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { FileDisplayItem } from '../types';
|
|
3
|
+
interface FilePreviewContentProps {
|
|
4
|
+
file: FileDisplayItem;
|
|
5
|
+
previewUrl?: string;
|
|
6
|
+
unsupportedMessage?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const FilePreviewContent: React.FC<FilePreviewContentProps>;
|
|
9
|
+
export default FilePreviewContent;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { Empty as u, Spin as N } from "antd";
|
|
3
|
+
import { useRef as v, useState as h, useEffect as x } from "react";
|
|
4
|
+
import { getPreviewKind as E, needsBlobPreview as P } from "../previewKind.js";
|
|
5
|
+
import s from "./style.module.scss.js";
|
|
6
|
+
import b from "classnames";
|
|
7
|
+
async function B(i) {
|
|
8
|
+
const e = await fetch(i);
|
|
9
|
+
if (!e.ok) throw new Error(`预览加载失败 (${e.status})`);
|
|
10
|
+
return e.arrayBuffer();
|
|
11
|
+
}
|
|
12
|
+
async function T(i, e) {
|
|
13
|
+
const [{ default: o }] = await Promise.all([
|
|
14
|
+
import("@js-preview/excel"),
|
|
15
|
+
Promise.resolve({ })
|
|
16
|
+
]), n = o.init(i);
|
|
17
|
+
return await n.preview(e), () => n.destroy();
|
|
18
|
+
}
|
|
19
|
+
async function W(i, e) {
|
|
20
|
+
const { renderAsync: o } = await import("docx-preview"), n = new Blob([e]);
|
|
21
|
+
await o(n, i, i, {
|
|
22
|
+
inWrapper: !0,
|
|
23
|
+
ignoreWidth: !1,
|
|
24
|
+
ignoreHeight: !1,
|
|
25
|
+
breakPages: !0
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async function k(i, e, o) {
|
|
29
|
+
const { init: n } = await import("pptx-preview"), a = n(i, { width: o, height: Math.round(o * 0.5625), mode: "list" });
|
|
30
|
+
return await a.preview(e), () => a.destroy();
|
|
31
|
+
}
|
|
32
|
+
function C(i, e) {
|
|
33
|
+
const o = new TextDecoder("utf-8"), n = document.createElement("pre");
|
|
34
|
+
n.className = s["file-preview-text"], n.textContent = o.decode(e), i.appendChild(n);
|
|
35
|
+
}
|
|
36
|
+
const F = ({
|
|
37
|
+
file: i,
|
|
38
|
+
previewUrl: e,
|
|
39
|
+
unsupportedMessage: o = "暂不支持预览此文件类型"
|
|
40
|
+
}) => {
|
|
41
|
+
const n = v(null), a = v(void 0), [g, l] = h(!1), [m, p] = h(null), r = E(i);
|
|
42
|
+
return x(() => {
|
|
43
|
+
var w;
|
|
44
|
+
const f = n.current;
|
|
45
|
+
if (!f || !e) return;
|
|
46
|
+
let d = !1;
|
|
47
|
+
return (w = a.current) == null || w.call(a), a.current = void 0, f.innerHTML = "", p(null), (async () => {
|
|
48
|
+
if (r !== "image" && !(r === "pdf" || r === "iframe") && !(r === "video" || r === "audio") && r !== "unsupported") {
|
|
49
|
+
l(!0);
|
|
50
|
+
try {
|
|
51
|
+
const c = await B(e);
|
|
52
|
+
if (d) return;
|
|
53
|
+
if (r === "excel")
|
|
54
|
+
a.current = await T(f, c);
|
|
55
|
+
else if (r === "word")
|
|
56
|
+
await W(f, c);
|
|
57
|
+
else if (r === "ppt") {
|
|
58
|
+
const y = f.clientWidth || 852;
|
|
59
|
+
a.current = await k(f, c, y);
|
|
60
|
+
} else r === "text" && C(f, c);
|
|
61
|
+
} catch (c) {
|
|
62
|
+
d || p(c instanceof Error ? c.message : "预览加载失败");
|
|
63
|
+
} finally {
|
|
64
|
+
d || l(!1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
})(), () => {
|
|
68
|
+
var c;
|
|
69
|
+
d = !0, (c = a.current) == null || c.call(a), a.current = void 0, f.innerHTML = "";
|
|
70
|
+
};
|
|
71
|
+
}, [e, r, i.id, i.name]), e ? r === "image" ? /* @__PURE__ */ t("div", { className: s["file-preview-media-wrap"], children: /* @__PURE__ */ t("img", { src: e, alt: i.name, className: s["file-preview-image"] }) }) : r === "pdf" || r === "iframe" ? /* @__PURE__ */ t(
|
|
72
|
+
"iframe",
|
|
73
|
+
{
|
|
74
|
+
src: e,
|
|
75
|
+
title: i.name,
|
|
76
|
+
className: s["file-preview-iframe"]
|
|
77
|
+
}
|
|
78
|
+
) : r === "video" ? /* @__PURE__ */ t("div", { className: s["file-preview-media-wrap"], children: /* @__PURE__ */ t("video", { src: e, controls: !0, className: s["file-preview-video"] }) }) : r === "audio" ? /* @__PURE__ */ t("div", { className: s["file-preview-audio-wrap"], children: /* @__PURE__ */ t("audio", { src: e, controls: !0, className: s["file-preview-audio"] }) }) : r === "unsupported" ? /* @__PURE__ */ t(u, { description: o }) : P(r) ? /* @__PURE__ */ t("div", { className: b(s["file-preview-office"], s["file-preview-office-wrap"]), children: /* @__PURE__ */ t(N, { spinning: g, children: m ? /* @__PURE__ */ t(u, { description: m }) : /* @__PURE__ */ t("div", { ref: n, className: s["file-preview-office-inner"] }) }) }) : /* @__PURE__ */ t(u, { description: o }) : /* @__PURE__ */ t(u, { description: "无可预览地址" });
|
|
79
|
+
};
|
|
80
|
+
export {
|
|
81
|
+
F as default
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=FilePreviewContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilePreviewContent.js","sources":["../../../../src/components/File/FilePreview/FilePreviewContent.tsx"],"sourcesContent":["import { Empty, Spin } from 'antd';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { getPreviewKind, needsBlobPreview } from '../previewKind';\nimport type { FileDisplayItem } from '../types';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\ninterface FilePreviewContentProps {\n file: FileDisplayItem;\n previewUrl?: string;\n unsupportedMessage?: string;\n}\n\nasync function fetchPreviewBlob(url: string): Promise<ArrayBuffer> {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`预览加载失败 (${res.status})`);\n return res.arrayBuffer();\n}\n\nasync function renderExcel(container: HTMLElement, data: ArrayBuffer) {\n const [{ default: jsPreviewExcel }] = await Promise.all([\n import('@js-preview/excel'),\n import('@js-preview/excel/lib/index.css'),\n ]);\n const instance = jsPreviewExcel.init(container);\n await instance.preview(data);\n return () => instance.destroy();\n}\n\nasync function renderWord(container: HTMLElement, data: ArrayBuffer) {\n const { renderAsync } = await import('docx-preview');\n const blob = new Blob([data]);\n await renderAsync(blob, container, container, {\n inWrapper: true,\n ignoreWidth: false,\n ignoreHeight: false,\n breakPages: true,\n });\n}\n\nasync function renderPpt(container: HTMLElement, data: ArrayBuffer, width: number) {\n const { init } = await import('pptx-preview');\n const previewer = init(container, { width, height: Math.round(width * 0.5625), mode: 'list' });\n await previewer.preview(data);\n return () => previewer.destroy();\n}\n\nfunction renderText(container: HTMLElement, data: ArrayBuffer) {\n const decoder = new TextDecoder('utf-8');\n const pre = document.createElement('pre');\n pre.className = styles['file-preview-text'] ?? '';\n pre.textContent = decoder.decode(data);\n container.appendChild(pre);\n}\n\nconst FilePreviewContent: React.FC<FilePreviewContentProps> = ({\n file,\n previewUrl,\n unsupportedMessage = '暂不支持预览此文件类型',\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const cleanupRef = useRef<(() => void) | void>(undefined);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const kind = getPreviewKind(file);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !previewUrl) return undefined;\n\n let cancelled = false;\n cleanupRef.current?.();\n cleanupRef.current = undefined;\n container.innerHTML = '';\n setError(null);\n\n const run = async () => {\n if (kind === 'image') return;\n if (kind === 'pdf' || kind === 'iframe') return;\n if (kind === 'video' || kind === 'audio') return;\n if (kind === 'unsupported') return;\n\n setLoading(true);\n try {\n const data = await fetchPreviewBlob(previewUrl);\n if (cancelled) return;\n\n if (kind === 'excel') {\n cleanupRef.current = await renderExcel(container, data);\n } else if (kind === 'word') {\n await renderWord(container, data);\n } else if (kind === 'ppt') {\n const width = container.clientWidth || 852;\n cleanupRef.current = await renderPpt(container, data, width);\n } else if (kind === 'text') {\n renderText(container, data);\n }\n } catch (err) {\n if (!cancelled) {\n setError(err instanceof Error ? err.message : '预览加载失败');\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n };\n\n void run();\n\n return () => {\n cancelled = true;\n cleanupRef.current?.();\n cleanupRef.current = undefined;\n container.innerHTML = '';\n };\n }, [previewUrl, kind, file.id, file.name]);\n\n if (!previewUrl) {\n return <Empty description=\"无可预览地址\" />;\n }\n\n if (kind === 'image') {\n return (\n <div className={styles['file-preview-media-wrap']}>\n <img src={previewUrl} alt={file.name} className={styles['file-preview-image']} />\n </div>\n );\n }\n\n if (kind === 'pdf' || kind === 'iframe') {\n return (\n <iframe\n src={previewUrl}\n title={file.name}\n className={styles['file-preview-iframe']}\n />\n );\n }\n\n if (kind === 'video') {\n return (\n <div className={styles['file-preview-media-wrap']}>\n <video src={previewUrl} controls className={styles['file-preview-video']} />\n </div>\n );\n }\n\n if (kind === 'audio') {\n return (\n <div className={styles['file-preview-audio-wrap']}>\n <audio src={previewUrl} controls className={styles['file-preview-audio']} />\n </div>\n );\n }\n\n if (kind === 'unsupported') {\n return <Empty description={unsupportedMessage} />;\n }\n\n if (needsBlobPreview(kind)) {\n return (\n <div className={classNames(styles['file-preview-office'], styles['file-preview-office-wrap'])}>\n <Spin spinning={loading}>\n {error ? <Empty description={error} /> : <div ref={containerRef} className={styles['file-preview-office-inner']} />}\n </Spin>\n </div>\n );\n }\n\n return <Empty description={unsupportedMessage} />;\n};\n\nexport default FilePreviewContent;\n"],"names":["fetchPreviewBlob","url","res","renderExcel","container","data","jsPreviewExcel","instance","renderWord","renderAsync","blob","renderPpt","width","init","previewer","renderText","decoder","pre","styles","FilePreviewContent","file","previewUrl","unsupportedMessage","containerRef","useRef","cleanupRef","loading","setLoading","useState","error","setError","kind","getPreviewKind","useEffect","cancelled","_a","err","jsx","Empty","needsBlobPreview","classNames","Spin"],"mappings":";;;;;;AAaA,eAAeA,EAAiBC,GAAmC;AACjE,QAAMC,IAAM,MAAM,MAAMD,CAAG;AAC3B,MAAI,CAACC,EAAI,GAAI,OAAM,IAAI,MAAM,WAAWA,EAAI,MAAM,GAAG;AACrD,SAAOA,EAAI,YAAA;AACb;AAEA,eAAeC,EAAYC,GAAwBC,GAAmB;AACpE,QAAM,CAAC,EAAE,SAASC,EAAA,CAAgB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACtD,OAAO,mBAAmB;AAAA,IAC1B,OAAO,0DAAiC;AAAA,EAAA,CACzC,GACKC,IAAWD,EAAe,KAAKF,CAAS;AAC9C,eAAMG,EAAS,QAAQF,CAAI,GACpB,MAAME,EAAS,QAAA;AACxB;AAEA,eAAeC,EAAWJ,GAAwBC,GAAmB;AACnE,QAAM,EAAE,aAAAI,EAAA,IAAgB,MAAM,OAAO,cAAc,GAC7CC,IAAO,IAAI,KAAK,CAACL,CAAI,CAAC;AAC5B,QAAMI,EAAYC,GAAMN,GAAWA,GAAW;AAAA,IAC5C,WAAW;AAAA,IACX,aAAa;AAAA,IACb,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACb;AACH;AAEA,eAAeO,EAAUP,GAAwBC,GAAmBO,GAAe;AACjF,QAAM,EAAE,MAAAC,EAAA,IAAS,MAAM,OAAO,cAAc,GACtCC,IAAYD,EAAKT,GAAW,EAAE,OAAAQ,GAAO,QAAQ,KAAK,MAAMA,IAAQ,MAAM,GAAG,MAAM,QAAQ;AAC7F,eAAME,EAAU,QAAQT,CAAI,GACrB,MAAMS,EAAU,QAAA;AACzB;AAEA,SAASC,EAAWX,GAAwBC,GAAmB;AAC7D,QAAMW,IAAU,IAAI,YAAY,OAAO,GACjCC,IAAM,SAAS,cAAc,KAAK;AACxC,EAAAA,EAAI,YAAYC,EAAO,mBAAmB,GAC1CD,EAAI,cAAcD,EAAQ,OAAOX,CAAI,GACrCD,EAAU,YAAYa,CAAG;AAC3B;AAEA,MAAME,IAAwD,CAAC;AAAA,EAC7D,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC,IAAqB;AACvB,MAAM;AACJ,QAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAaD,EAA4B,MAAS,GAClD,CAACE,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtC,CAACC,GAAOC,CAAQ,IAAIF,EAAwB,IAAI,GAChDG,IAAOC,EAAeZ,CAAI;AAoDhC,SAlDAa,EAAU,MAAM;;AACd,UAAM7B,IAAYmB,EAAa;AAC/B,QAAI,CAACnB,KAAa,CAACiB,EAAY;AAE/B,QAAIa,IAAY;AAChB,YAAAC,IAAAV,EAAW,YAAX,QAAAU,EAAA,KAAAV,IACAA,EAAW,UAAU,QACrBrB,EAAU,YAAY,IACtB0B,EAAS,IAAI,IAED,YAAY;AACtB,UAAIC,MAAS,WACT,EAAAA,MAAS,SAASA,MAAS,aAC3B,EAAAA,MAAS,WAAWA,MAAS,YAC7BA,MAAS,eAEb;AAAA,QAAAJ,EAAW,EAAI;AACf,YAAI;AACF,gBAAMtB,IAAO,MAAML,EAAiBqB,CAAU;AAC9C,cAAIa,EAAW;AAEf,cAAIH,MAAS;AACX,YAAAN,EAAW,UAAU,MAAMtB,EAAYC,GAAWC,CAAI;AAAA,mBAC7C0B,MAAS;AAClB,kBAAMvB,EAAWJ,GAAWC,CAAI;AAAA,mBACvB0B,MAAS,OAAO;AACzB,kBAAMnB,IAAQR,EAAU,eAAe;AACvC,YAAAqB,EAAW,UAAU,MAAMd,EAAUP,GAAWC,GAAMO,CAAK;AAAA,UAC7D,MAAA,CAAWmB,MAAS,UAClBhB,EAAWX,GAAWC,CAAI;AAAA,QAE9B,SAAS+B,GAAK;AACZ,UAAKF,KACHJ,EAASM,aAAe,QAAQA,EAAI,UAAU,QAAQ;AAAA,QAE1D,UAAA;AACE,UAAKF,KAAWP,EAAW,EAAK;AAAA,QAClC;AAAA;AAAA,IACF,GAEK,GAEE,MAAM;;AACX,MAAAO,IAAY,KACZC,IAAAV,EAAW,YAAX,QAAAU,EAAA,KAAAV,IACAA,EAAW,UAAU,QACrBrB,EAAU,YAAY;AAAA,IACxB;AAAA,EACF,GAAG,CAACiB,GAAYU,GAAMX,EAAK,IAAIA,EAAK,IAAI,CAAC,GAEpCC,IAIDU,MAAS,4BAER,OAAA,EAAI,WAAWb,EAAO,yBAAyB,GAC9C,UAAA,gBAAAmB,EAAC,OAAA,EAAI,KAAKhB,GAAY,KAAKD,EAAK,MAAM,WAAWF,EAAO,oBAAoB,GAAG,GACjF,IAIAa,MAAS,SAASA,MAAS,WAE3B,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKhB;AAAA,MACL,OAAOD,EAAK;AAAA,MACZ,WAAWF,EAAO,qBAAqB;AAAA,IAAA;AAAA,EAAA,IAKzCa,MAAS,4BAER,OAAA,EAAI,WAAWb,EAAO,yBAAyB,GAC9C,UAAA,gBAAAmB,EAAC,SAAA,EAAM,KAAKhB,GAAY,UAAQ,IAAC,WAAWH,EAAO,oBAAoB,GAAG,GAC5E,IAIAa,MAAS,4BAER,OAAA,EAAI,WAAWb,EAAO,yBAAyB,GAC9C,UAAA,gBAAAmB,EAAC,SAAA,EAAM,KAAKhB,GAAY,UAAQ,IAAC,WAAWH,EAAO,oBAAoB,GAAG,GAC5E,IAIAa,MAAS,gBACJ,gBAAAM,EAACC,GAAA,EAAM,aAAahB,EAAA,CAAoB,IAG7CiB,EAAiBR,CAAI,IAErB,gBAAAM,EAAC,OAAA,EAAI,WAAWG,EAAWtB,EAAO,qBAAqB,GAAGA,EAAO,0BAA0B,CAAC,GAC1F,UAAA,gBAAAmB,EAACI,KAAK,UAAUf,GACb,UAAAG,IAAQ,gBAAAQ,EAACC,GAAA,EAAM,aAAaT,EAAA,CAAO,IAAK,gBAAAQ,EAAC,OAAA,EAAI,KAAKd,GAAc,WAAWL,EAAO,2BAA2B,EAAA,CAAG,GACnH,GACF,IAIG,gBAAAmB,EAACC,GAAA,EAAM,aAAahB,EAAA,CAAoB,IAnDtC,gBAAAe,EAACC,GAAA,EAAM,aAAY,SAAA,CAAS;AAoDvC;"}
|
|
@@ -3,6 +3,8 @@ import { FileDisplayItem } from '../types';
|
|
|
3
3
|
export interface FilePreviewProps {
|
|
4
4
|
file: FileDisplayItem;
|
|
5
5
|
url?: string;
|
|
6
|
+
downloadUrl?: string;
|
|
7
|
+
onDownload?: (file: FileDisplayItem) => void;
|
|
6
8
|
unsupportedMessage?: string;
|
|
7
9
|
title?: React.ReactNode;
|
|
8
10
|
extra?: React.ReactNode;
|
|
@@ -1,49 +1,56 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { formatFileSize as
|
|
3
|
-
import { CloudDownload as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
1
|
+
import { jsxs as o, Fragment as y, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { formatFileSize as F } from "../../../utils/format.js";
|
|
3
|
+
import { CloudDownload as N } from "../../Icons/index.js";
|
|
4
|
+
import g from "../../Tag/SemanticTag.js";
|
|
5
|
+
import { Button as T } from "antd";
|
|
6
|
+
import { normalizeFileDisplayItem as b, getFileTypeName as z, getFileIcon as C } from "../fileDisplay.js";
|
|
7
|
+
import { getPreviewKind as P, getFileTypeTagColor as U } from "../previewKind.js";
|
|
8
|
+
import k from "./FilePreviewContent.js";
|
|
6
9
|
import r from "./style.module.scss.js";
|
|
7
|
-
import
|
|
8
|
-
function
|
|
9
|
-
return
|
|
10
|
+
import t from "classnames";
|
|
11
|
+
function x(l, n) {
|
|
12
|
+
return n ?? l.url ?? l.thumbnailUrl;
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
var n;
|
|
13
|
-
if ((l.mimeType ?? "").startsWith("image/")) return !0;
|
|
14
|
-
const s = ((n = (l.name ?? "").split(".").pop()) == null ? void 0 : n.toLowerCase()) ?? "";
|
|
15
|
-
return ["png", "jpg", "jpeg", "gif", "webp", "svg"].includes(s);
|
|
16
|
-
}
|
|
17
|
-
const k = ({
|
|
14
|
+
const E = ({
|
|
18
15
|
file: l,
|
|
19
|
-
url:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
url: n,
|
|
17
|
+
downloadUrl: p,
|
|
18
|
+
onDownload: a,
|
|
19
|
+
unsupportedMessage: c = "暂不支持预览此文件类型",
|
|
20
|
+
title: d,
|
|
21
|
+
extra: f
|
|
23
22
|
}) => {
|
|
24
|
-
const e =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
const e = b(l), s = x(e, n), m = p ?? s, v = !!(a || m), w = P(e), h = z(e.name, e.mimeType), u = () => {
|
|
24
|
+
if (a) {
|
|
25
|
+
a(e);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
m && window.open(m, "_blank", "noopener,noreferrer");
|
|
29
|
+
};
|
|
30
|
+
return /* @__PURE__ */ o("div", { className: t("file-preview", r["file-preview"]), children: [
|
|
31
|
+
/* @__PURE__ */ o("div", { className: t("file-preview-header", r["file-preview-header"]), children: [
|
|
32
|
+
d ?? /* @__PURE__ */ o(y, { children: [
|
|
33
|
+
/* @__PURE__ */ o("div", { className: r["file-preview-info"], children: [
|
|
34
|
+
/* @__PURE__ */ i("span", { className: r["file-preview-icon"], children: C(e.name, e.mimeType) }),
|
|
35
|
+
/* @__PURE__ */ i("span", { className: r["file-preview-name"], title: e.name, children: e.name }),
|
|
36
|
+
/* @__PURE__ */ i(g, { color: U(w), children: h }),
|
|
37
|
+
e.size != null && /* @__PURE__ */ i("span", { className: r["file-preview-size"], children: F(e.size) })
|
|
38
|
+
] }),
|
|
39
|
+
v && /* @__PURE__ */ i(T, { type: "link", icon: /* @__PURE__ */ i(N, {}), onClick: u, children: "下载" })
|
|
40
|
+
] }),
|
|
41
|
+
f
|
|
37
42
|
] }),
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
/* @__PURE__ */ i("div", { className: t("file-preview-body", r["file-preview-body"]), children: /* @__PURE__ */ i(
|
|
44
|
+
k,
|
|
45
|
+
{
|
|
46
|
+
file: e,
|
|
47
|
+
previewUrl: s,
|
|
48
|
+
unsupportedMessage: c
|
|
49
|
+
}
|
|
50
|
+
) })
|
|
44
51
|
] });
|
|
45
52
|
};
|
|
46
53
|
export {
|
|
47
|
-
|
|
54
|
+
E as default
|
|
48
55
|
};
|
|
49
56
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/File/FilePreview/index.tsx"],"sourcesContent":["import { formatFileSize } from '@/utils/format';\nimport { CloudDownload } from '@/components/Icons';\nimport { Button
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/File/FilePreview/index.tsx"],"sourcesContent":["import { formatFileSize } from '@/utils/format';\nimport { CloudDownload } from '@/components/Icons';\nimport SemanticTag from '@/components/Tag/SemanticTag';\nimport { Button } from 'antd';\nimport React from 'react';\nimport { getFileIcon, getFileTypeName, normalizeFileDisplayItem } from '../fileDisplay';\nimport { getFileTypeTagColor, getPreviewKind } from '../previewKind';\nimport type { FileDisplayItem } from '../types';\nimport FilePreviewContent from './FilePreviewContent';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nexport interface FilePreviewProps {\n file: FileDisplayItem;\n url?: string;\n downloadUrl?: string;\n onDownload?: (file: FileDisplayItem) => void;\n unsupportedMessage?: string;\n title?: React.ReactNode;\n extra?: React.ReactNode;\n}\n\nfunction resolvePreviewUrl(file: FileDisplayItem, url?: string): string | undefined {\n return url ?? file.url ?? file.thumbnailUrl;\n}\n\nconst FilePreview: React.FC<FilePreviewProps> = ({\n file,\n url,\n downloadUrl,\n onDownload,\n unsupportedMessage = '暂不支持预览此文件类型',\n title,\n extra,\n}) => {\n const resolvedFile = normalizeFileDisplayItem(file);\n const previewUrl = resolvePreviewUrl(resolvedFile, url);\n const resolvedDownloadUrl = downloadUrl ?? previewUrl;\n const canDownload = Boolean(onDownload || resolvedDownloadUrl);\n const previewKind = getPreviewKind(resolvedFile);\n const typeLabel = getFileTypeName(resolvedFile.name, resolvedFile.mimeType);\n\n const handleDownload = () => {\n if (onDownload) {\n onDownload(resolvedFile);\n return;\n }\n if (resolvedDownloadUrl) {\n window.open(resolvedDownloadUrl, '_blank', 'noopener,noreferrer');\n }\n };\n\n return (\n <div className={classNames('file-preview', styles['file-preview'])}>\n <div className={classNames('file-preview-header', styles['file-preview-header'])}>\n {title ?? (\n <>\n <div className={styles['file-preview-info']}>\n <span className={styles['file-preview-icon']}>\n {getFileIcon(resolvedFile.name, resolvedFile.mimeType)}\n </span>\n <span className={styles['file-preview-name']} title={resolvedFile.name}>\n {resolvedFile.name}\n </span>\n <SemanticTag color={getFileTypeTagColor(previewKind)}>{typeLabel}</SemanticTag>\n {resolvedFile.size != null && (\n <span className={styles['file-preview-size']}>{formatFileSize(resolvedFile.size)}</span>\n )}\n </div>\n {canDownload && (\n <Button type=\"link\" icon={<CloudDownload />} onClick={handleDownload}>\n 下载\n </Button>\n )}\n </>\n )}\n {extra}\n </div>\n <div className={classNames('file-preview-body', styles['file-preview-body'])}>\n <FilePreviewContent\n file={resolvedFile}\n previewUrl={previewUrl}\n unsupportedMessage={unsupportedMessage}\n />\n </div>\n </div>\n );\n};\n\nexport default FilePreview;\n"],"names":["resolvePreviewUrl","file","url","FilePreview","downloadUrl","onDownload","unsupportedMessage","title","extra","resolvedFile","normalizeFileDisplayItem","previewUrl","resolvedDownloadUrl","canDownload","previewKind","getPreviewKind","typeLabel","getFileTypeName","handleDownload","jsxs","classNames","styles","Fragment","jsx","SemanticTag","getFileTypeTagColor","formatFileSize","Button","CloudDownload","FilePreviewContent"],"mappings":";;;;;;;;;;AAsBA,SAASA,EAAkBC,GAAuBC,GAAkC;AAClF,SAAOA,KAAOD,EAAK,OAAOA,EAAK;AACjC;AAEA,MAAME,IAA0C,CAAC;AAAA,EAC/C,MAAAF;AAAA,EACA,KAAAC;AAAA,EACA,aAAAE;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC,IAAqB;AAAA,EACrB,OAAAC;AAAA,EACA,OAAAC;AACF,MAAM;AACJ,QAAMC,IAAeC,EAAyBT,CAAI,GAC5CU,IAAaX,EAAkBS,GAAcP,CAAG,GAChDU,IAAsBR,KAAeO,GACrCE,IAAc,GAAQR,KAAcO,IACpCE,IAAcC,EAAeN,CAAY,GACzCO,IAAYC,EAAgBR,EAAa,MAAMA,EAAa,QAAQ,GAEpES,IAAiB,MAAM;AAC3B,QAAIb,GAAY;AACd,MAAAA,EAAWI,CAAY;AACvB;AAAA,IACF;AACA,IAAIG,KACF,OAAO,KAAKA,GAAqB,UAAU,qBAAqB;AAAA,EAEpE;AAEA,SACE,gBAAAO,EAAC,SAAI,WAAWC,EAAW,gBAAgBC,EAAO,cAAc,CAAC,GAC/D,UAAA;AAAA,IAAA,gBAAAF,EAAC,SAAI,WAAWC,EAAW,uBAAuBC,EAAO,qBAAqB,CAAC,GAC5E,UAAA;AAAA,MAAAd,KACC,gBAAAY,EAAAG,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EAAI,WAAWE,EAAO,mBAAmB,GACxC,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAWF,EAAO,mBAAmB,GACxC,YAAYZ,EAAa,MAAMA,EAAa,QAAQ,EAAA,CACvD;AAAA,UACA,gBAAAc,EAAC,QAAA,EAAK,WAAWF,EAAO,mBAAmB,GAAG,OAAOZ,EAAa,MAC/D,UAAAA,EAAa,KAAA,CAChB;AAAA,4BACCe,GAAA,EAAY,OAAOC,EAAoBX,CAAW,GAAI,UAAAE,GAAU;AAAA,UAChEP,EAAa,QAAQ,QACpB,gBAAAc,EAAC,QAAA,EAAK,WAAWF,EAAO,mBAAmB,GAAI,UAAAK,EAAejB,EAAa,IAAI,EAAA,CAAE;AAAA,QAAA,GAErF;AAAA,QACCI,KACC,gBAAAU,EAACI,GAAA,EAAO,MAAK,QAAO,MAAM,gBAAAJ,EAACK,GAAA,CAAA,CAAc,GAAI,SAASV,GAAgB,UAAA,KAAA,CAEtE;AAAA,MAAA,GAEJ;AAAA,MAEDV;AAAA,IAAA,GACH;AAAA,IACA,gBAAAe,EAAC,SAAI,WAAWH,EAAW,qBAAqBC,EAAO,mBAAmB,CAAC,GACzE,UAAA,gBAAAE;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,MAAMpB;AAAA,QACN,YAAAE;AAAA,QACA,oBAAAL;AAAA,MAAA;AAAA,IAAA,EACF,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
const
|
|
1
|
+
const e = {
|
|
2
|
+
"file-preview": "_file-preview_irbqy_1",
|
|
3
|
+
"file-preview-header": "_file-preview-header_irbqy_139",
|
|
4
|
+
"file-preview-info": "_file-preview-info_irbqy_148",
|
|
5
|
+
"file-preview-icon": "_file-preview-icon_irbqy_156",
|
|
6
|
+
"file-preview-name": "_file-preview-name_irbqy_161",
|
|
7
|
+
"file-preview-size": "_file-preview-size_irbqy_168",
|
|
8
|
+
"file-preview-body": "_file-preview-body_irbqy_174",
|
|
9
|
+
"file-preview-iframe": "_file-preview-iframe_irbqy_178",
|
|
10
|
+
"file-preview-media-wrap": "_file-preview-media-wrap_irbqy_186",
|
|
11
|
+
"file-preview-image": "_file-preview-image_irbqy_192",
|
|
12
|
+
"file-preview-video": "_file-preview-video_irbqy_198",
|
|
13
|
+
"file-preview-audio-wrap": "_file-preview-audio-wrap_irbqy_204",
|
|
14
|
+
"file-preview-audio": "_file-preview-audio_irbqy_204",
|
|
15
|
+
"file-preview-office-wrap": "_file-preview-office-wrap_irbqy_216",
|
|
16
|
+
"file-preview-office-inner": "_file-preview-office-inner_irbqy_221",
|
|
17
|
+
"file-preview-text": "_file-preview-text_irbqy_228"
|
|
18
|
+
};
|
|
2
19
|
export {
|
|
3
|
-
|
|
20
|
+
e as default
|
|
4
21
|
};
|
|
5
22
|
//# sourceMappingURL=style.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FileDisplayItem } from '../types';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
export interface FilePreviewLinkProps {
|
|
4
|
+
file: FileDisplayItem;
|
|
5
|
+
url?: string;
|
|
6
|
+
downloadUrl?: string;
|
|
7
|
+
onDownload?: (file: FileDisplayItem) => void;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
showType?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const FilePreviewLink: React.FC<FilePreviewLinkProps>;
|
|
13
|
+
export default FilePreviewLink;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsxs as n, jsx as l, Fragment as h } from "react/jsx-runtime";
|
|
2
|
+
import { normalizeFileDisplayItem as N, getFileIcon as p, getFileTypeName as t } from "../fileDisplay.js";
|
|
3
|
+
import y from "../FilePreviewModal/index.js";
|
|
4
|
+
import { useState as u } from "react";
|
|
5
|
+
import i from "./style.module.scss.js";
|
|
6
|
+
import f from "classnames";
|
|
7
|
+
const D = ({
|
|
8
|
+
file: o,
|
|
9
|
+
url: a,
|
|
10
|
+
downloadUrl: c,
|
|
11
|
+
onDownload: d,
|
|
12
|
+
disabled: v = !1,
|
|
13
|
+
showType: r = !0,
|
|
14
|
+
className: m
|
|
15
|
+
}) => {
|
|
16
|
+
const [k, s] = u(!1), e = N(o);
|
|
17
|
+
return v ? /* @__PURE__ */ n(
|
|
18
|
+
"span",
|
|
19
|
+
{
|
|
20
|
+
className: f(i["file-preview-link-disabled"], m),
|
|
21
|
+
title: e.name,
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ l("span", { className: i["file-preview-link-inner"], children: p(e.name, e.mimeType) }),
|
|
24
|
+
/* @__PURE__ */ l("span", { className: i["file-preview-link-name"], children: e.name }),
|
|
25
|
+
r && /* @__PURE__ */ l("span", { className: i["file-preview-link-type"], children: t(e.name, e.mimeType) })
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
) : /* @__PURE__ */ n(h, { children: [
|
|
29
|
+
/* @__PURE__ */ n(
|
|
30
|
+
"a",
|
|
31
|
+
{
|
|
32
|
+
className: f("file-preview-link", i["file-preview-link"], m),
|
|
33
|
+
onClick: (w) => {
|
|
34
|
+
w.preventDefault(), s(!0);
|
|
35
|
+
},
|
|
36
|
+
href: a ?? e.url ?? "#",
|
|
37
|
+
title: e.name,
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ l("span", { className: i["file-preview-link-inner"], children: p(e.name, e.mimeType) }),
|
|
40
|
+
/* @__PURE__ */ l("span", { className: i["file-preview-link-name"], children: e.name }),
|
|
41
|
+
r && /* @__PURE__ */ l("span", { className: i["file-preview-link-type"], children: t(e.name, e.mimeType) })
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
/* @__PURE__ */ l(
|
|
46
|
+
y,
|
|
47
|
+
{
|
|
48
|
+
open: k,
|
|
49
|
+
file: e,
|
|
50
|
+
url: a,
|
|
51
|
+
downloadUrl: c,
|
|
52
|
+
onDownload: d,
|
|
53
|
+
onClose: () => s(!1)
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
] });
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
D as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/File/FilePreviewLink/index.tsx"],"sourcesContent":["import type { FileDisplayItem } from '../types';\nimport { getFileIcon, getFileTypeName, normalizeFileDisplayItem } from '../fileDisplay';\nimport FilePreviewModal from '../FilePreviewModal';\nimport React, { useState } from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nexport interface FilePreviewLinkProps {\n file: FileDisplayItem;\n url?: string;\n downloadUrl?: string;\n onDownload?: (file: FileDisplayItem) => void;\n disabled?: boolean;\n showType?: boolean;\n className?: string;\n}\n\nconst FilePreviewLink: React.FC<FilePreviewLinkProps> = ({\n file,\n url,\n downloadUrl,\n onDownload,\n disabled = false,\n showType = true,\n className,\n}) => {\n const [open, setOpen] = useState(false);\n const resolvedFile = normalizeFileDisplayItem(file);\n\n if (disabled) {\n return (\n <span\n className={classNames(styles['file-preview-link-disabled'], className)}\n title={resolvedFile.name}\n >\n <span className={styles['file-preview-link-inner']}>\n {getFileIcon(resolvedFile.name, resolvedFile.mimeType)}\n </span>\n <span className={styles['file-preview-link-name']}>{resolvedFile.name}</span>\n {showType && (\n <span className={styles['file-preview-link-type']}>\n {getFileTypeName(resolvedFile.name, resolvedFile.mimeType)}\n </span>\n )}\n </span>\n );\n }\n\n return (\n <>\n <a\n className={classNames('file-preview-link', styles['file-preview-link'], className)}\n onClick={(e) => {\n e.preventDefault();\n setOpen(true);\n }}\n href={url ?? resolvedFile.url ?? '#'}\n title={resolvedFile.name}\n >\n <span className={styles['file-preview-link-inner']}>\n {getFileIcon(resolvedFile.name, resolvedFile.mimeType)}\n </span>\n <span className={styles['file-preview-link-name']}>{resolvedFile.name}</span>\n {showType && (\n <span className={styles['file-preview-link-type']}>\n {getFileTypeName(resolvedFile.name, resolvedFile.mimeType)}\n </span>\n )}\n </a>\n <FilePreviewModal\n open={open}\n file={resolvedFile}\n url={url}\n downloadUrl={downloadUrl}\n onDownload={onDownload}\n onClose={() => setOpen(false)}\n />\n </>\n );\n};\n\nexport default FilePreviewLink;\n"],"names":["FilePreviewLink","file","url","downloadUrl","onDownload","disabled","showType","className","open","setOpen","useState","resolvedFile","normalizeFileDisplayItem","jsxs","classNames","styles","jsx","getFileTypeName","Fragment","e","FilePreviewModal"],"mappings":";;;;;;AAiBA,MAAMA,IAAkD,CAAC;AAAA,EACvD,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,WAAAC;AACF,MAAM;AACJ,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAeC,EAAyBX,CAAI;AAElD,SAAII,IAEA,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAWC,EAAO,4BAA4B,GAAGR,CAAS;AAAA,MACrE,OAAOI,EAAa;AAAA,MAEpB,UAAA;AAAA,QAAA,gBAAAK,EAAC,QAAA,EAAK,WAAWD,EAAO,yBAAyB,GAC9C,YAAYJ,EAAa,MAAMA,EAAa,QAAQ,EAAA,CACvD;AAAA,0BACC,QAAA,EAAK,WAAWI,EAAO,wBAAwB,GAAI,YAAa,MAAK;AAAA,QACrET,KACC,gBAAAU,EAAC,QAAA,EAAK,WAAWD,EAAO,wBAAwB,GAC7C,UAAAE,EAAgBN,EAAa,MAAMA,EAAa,QAAQ,EAAA,CAC3D;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAON,gBAAAE,EAAAK,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAW,qBAAqBC,EAAO,mBAAmB,GAAGR,CAAS;AAAA,QACjF,SAAS,CAACY,MAAM;AACd,UAAAA,EAAE,eAAA,GACFV,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,MAAMP,KAAOS,EAAa,OAAO;AAAA,QACjC,OAAOA,EAAa;AAAA,QAEpB,UAAA;AAAA,UAAA,gBAAAK,EAAC,QAAA,EAAK,WAAWD,EAAO,yBAAyB,GAC9C,YAAYJ,EAAa,MAAMA,EAAa,QAAQ,EAAA,CACvD;AAAA,4BACC,QAAA,EAAK,WAAWI,EAAO,wBAAwB,GAAI,YAAa,MAAK;AAAA,UACrET,KACC,gBAAAU,EAAC,QAAA,EAAK,WAAWD,EAAO,wBAAwB,GAC7C,UAAAE,EAAgBN,EAAa,MAAMA,EAAa,QAAQ,EAAA,CAC3D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,gBAAAK;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAAZ;AAAA,QACA,MAAMG;AAAA,QACN,KAAAT;AAAA,QACA,aAAAC;AAAA,QACA,YAAAC;AAAA,QACA,SAAS,MAAMK,EAAQ,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9B,GACF;AAEJ;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
"file-preview-link": "_file-preview-link_1rk52_1",
|
|
3
|
+
"file-preview-link-disabled": "_file-preview-link-disabled_1rk52_12",
|
|
4
|
+
"file-preview-link-inner": "_file-preview-link-inner_1rk52_21",
|
|
5
|
+
"file-preview-link-name": "_file-preview-link-name_1rk52_25",
|
|
6
|
+
"file-preview-link-type": "_file-preview-link-type_1rk52_31"
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
e as default
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=style.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -4,6 +4,9 @@ export interface FilePreviewModalProps {
|
|
|
4
4
|
open: boolean;
|
|
5
5
|
file: FileDisplayItem;
|
|
6
6
|
url?: string;
|
|
7
|
+
downloadUrl?: string;
|
|
8
|
+
onDownload?: (file: FileDisplayItem) => void;
|
|
9
|
+
unsupportedMessage?: string;
|
|
7
10
|
onClose: () => void;
|
|
8
11
|
}
|
|
9
12
|
declare const FilePreviewModal: React.FC<FilePreviewModalProps>;
|
|
@@ -1,12 +1,41 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Modal as
|
|
3
|
-
import
|
|
4
|
-
import { normalizeFileDisplayItem as
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Modal as s } from "antd";
|
|
3
|
+
import a from "../FilePreview/index.js";
|
|
4
|
+
import { normalizeFileDisplayItem as p } from "../fileDisplay.js";
|
|
5
|
+
const F = ({
|
|
6
|
+
open: o,
|
|
7
|
+
file: r,
|
|
8
|
+
url: i,
|
|
9
|
+
downloadUrl: l,
|
|
10
|
+
onDownload: t,
|
|
11
|
+
unsupportedMessage: d,
|
|
12
|
+
onClose: n
|
|
13
|
+
}) => {
|
|
14
|
+
const m = p(r);
|
|
15
|
+
return /* @__PURE__ */ e(
|
|
16
|
+
s,
|
|
17
|
+
{
|
|
18
|
+
open: o,
|
|
19
|
+
onCancel: n,
|
|
20
|
+
footer: null,
|
|
21
|
+
width: 900,
|
|
22
|
+
destroyOnHidden: !0,
|
|
23
|
+
title: "文件预览",
|
|
24
|
+
styles: { body: { paddingTop: 12 } },
|
|
25
|
+
children: /* @__PURE__ */ e(
|
|
26
|
+
a,
|
|
27
|
+
{
|
|
28
|
+
file: m,
|
|
29
|
+
url: i,
|
|
30
|
+
downloadUrl: l,
|
|
31
|
+
onDownload: t,
|
|
32
|
+
unsupportedMessage: d
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
);
|
|
8
37
|
};
|
|
9
38
|
export {
|
|
10
|
-
|
|
39
|
+
F as default
|
|
11
40
|
};
|
|
12
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/File/FilePreviewModal/index.tsx"],"sourcesContent":["import { Modal } from 'antd';\nimport React from 'react';\nimport FilePreview from '../FilePreview';\nimport { normalizeFileDisplayItem } from '../fileDisplay';\nimport type { FileDisplayItem } from '../types';\n\nexport interface FilePreviewModalProps {\n open: boolean;\n file: FileDisplayItem;\n url?: string;\n onClose: () => void;\n}\n\nconst FilePreviewModal: React.FC<FilePreviewModalProps> = ({
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/File/FilePreviewModal/index.tsx"],"sourcesContent":["import { Modal } from 'antd';\nimport React from 'react';\nimport FilePreview from '../FilePreview';\nimport { normalizeFileDisplayItem } from '../fileDisplay';\nimport type { FileDisplayItem } from '../types';\n\nexport interface FilePreviewModalProps {\n open: boolean;\n file: FileDisplayItem;\n url?: string;\n downloadUrl?: string;\n onDownload?: (file: FileDisplayItem) => void;\n unsupportedMessage?: string;\n onClose: () => void;\n}\n\nconst FilePreviewModal: React.FC<FilePreviewModalProps> = ({\n open,\n file,\n url,\n downloadUrl,\n onDownload,\n unsupportedMessage,\n onClose,\n}) => {\n const resolvedFile = normalizeFileDisplayItem(file);\n\n return (\n <Modal\n open={open}\n onCancel={onClose}\n footer={null}\n width={900}\n destroyOnHidden\n title=\"文件预览\"\n styles={{ body: { paddingTop: 12 } }}\n >\n <FilePreview\n file={resolvedFile}\n url={url}\n downloadUrl={downloadUrl}\n onDownload={onDownload}\n unsupportedMessage={unsupportedMessage}\n />\n </Modal>\n );\n};\n\nexport default FilePreviewModal;\n"],"names":["FilePreviewModal","open","file","url","downloadUrl","onDownload","unsupportedMessage","onClose","resolvedFile","normalizeFileDisplayItem","jsx","Modal","FilePreview"],"mappings":";;;;AAgBA,MAAMA,IAAoD,CAAC;AAAA,EACzD,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACJ,QAAMC,IAAeC,EAAyBP,CAAI;AAElD,SACA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAV;AAAA,MACA,UAAUM;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAe;AAAA,MACf,OAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,YAAY,KAAG;AAAA,MAEjC,UAAA,gBAAAG;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMJ;AAAA,UACN,KAAAL;AAAA,UACA,aAAAC;AAAA,UACA,YAAAC;AAAA,UACA,oBAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGJ;"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { FileDisplayItem } from './types';
|
|
3
3
|
export declare function getFileExtension(name: string): string;
|
|
4
|
+
/** 规范化扩展名:去除前导点并转小写(兼容 .xlsx 与 xlsx) */
|
|
5
|
+
export declare function normalizeExtension(extension?: string | null): string;
|
|
4
6
|
/** 从 URL 路径解析文件名(decodeURIComponent,失败时回退为「未命名文件」) */
|
|
5
7
|
export declare function parseFileNameFromUrl(url: string): string;
|
|
6
8
|
/** 补全 name / extension:name 缺省时从 url 解析 */
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
-
import { FileArchive as p, FileImage as r, Presentation as
|
|
2
|
+
import { FileArchive as p, FileImage as r, Presentation as d, FileSpreadsheet as s, FileText as c, File as u } from "../Icons/index.js";
|
|
3
3
|
const x = {
|
|
4
4
|
pdf: c,
|
|
5
5
|
doc: c,
|
|
6
6
|
docx: c,
|
|
7
7
|
txt: c,
|
|
8
8
|
md: c,
|
|
9
|
-
xls:
|
|
10
|
-
xlsx:
|
|
11
|
-
csv:
|
|
12
|
-
ppt:
|
|
13
|
-
pptx:
|
|
9
|
+
xls: s,
|
|
10
|
+
xlsx: s,
|
|
11
|
+
csv: s,
|
|
12
|
+
ppt: d,
|
|
13
|
+
pptx: d,
|
|
14
14
|
png: r,
|
|
15
15
|
jpg: r,
|
|
16
16
|
jpeg: r,
|
|
@@ -20,16 +20,19 @@ const x = {
|
|
|
20
20
|
rar: p,
|
|
21
21
|
"7z": p
|
|
22
22
|
};
|
|
23
|
-
function
|
|
23
|
+
function a(e) {
|
|
24
24
|
const t = e.lastIndexOf(".");
|
|
25
25
|
return t >= 0 ? e.slice(t + 1).toLowerCase() : "";
|
|
26
26
|
}
|
|
27
|
+
function f(e) {
|
|
28
|
+
return e ? e.replace(/^\./, "").toLowerCase() : "";
|
|
29
|
+
}
|
|
27
30
|
function F(e) {
|
|
28
31
|
const t = e.trim();
|
|
29
32
|
if (!t) return "未命名文件";
|
|
30
33
|
try {
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
34
|
+
const i = new URL(t, "http://placeholder.local").pathname.split("/").filter(Boolean).pop() ?? "", l = decodeURIComponent(i);
|
|
35
|
+
if (l) return l;
|
|
33
36
|
} catch {
|
|
34
37
|
}
|
|
35
38
|
const n = t.split(/[/?#]/).filter(Boolean).pop() ?? "";
|
|
@@ -39,29 +42,30 @@ function F(e) {
|
|
|
39
42
|
return n || "未命名文件";
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
|
-
function
|
|
43
|
-
var
|
|
44
|
-
const t = ((
|
|
45
|
+
function h(e) {
|
|
46
|
+
var i;
|
|
47
|
+
const t = ((i = e.name) == null ? void 0 : i.trim()) || (e.url ? F(e.url) : "未命名文件"), n = e.extension ?? a(t), o = f(n) || void 0;
|
|
45
48
|
return {
|
|
46
49
|
...e,
|
|
47
50
|
name: t,
|
|
48
|
-
extension:
|
|
51
|
+
extension: o
|
|
49
52
|
};
|
|
50
53
|
}
|
|
51
|
-
function
|
|
52
|
-
const n =
|
|
54
|
+
function C(e, t) {
|
|
55
|
+
const n = a(e), o = x[n] ?? u;
|
|
53
56
|
return /* @__PURE__ */ m(o, {});
|
|
54
57
|
}
|
|
55
|
-
function
|
|
58
|
+
function E(e, t) {
|
|
56
59
|
var o;
|
|
57
|
-
const n =
|
|
60
|
+
const n = a(e);
|
|
58
61
|
return n ? n.toUpperCase() : t ? ((o = t.split("/").pop()) == null ? void 0 : o.toUpperCase()) ?? "FILE" : "FILE";
|
|
59
62
|
}
|
|
60
63
|
export {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
a as getFileExtension,
|
|
65
|
+
C as getFileIcon,
|
|
66
|
+
E as getFileTypeName,
|
|
67
|
+
f as normalizeExtension,
|
|
68
|
+
h as normalizeFileDisplayItem,
|
|
65
69
|
F as parseFileNameFromUrl
|
|
66
70
|
};
|
|
67
71
|
//# sourceMappingURL=fileDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileDisplay.js","sources":["../../../src/components/File/fileDisplay.tsx"],"sourcesContent":["import React from 'react';\nimport {\n File,\n FileArchive,\n FileImage,\n FileSpreadsheet,\n FileText,\n Presentation,\n} from '@/components/Icons';\nimport type { FileDisplayItem } from './types';\n\nconst EXT_ICON_MAP: Record<string, React.FC<{ className?: string }>> = {\n pdf: FileText,\n doc: FileText,\n docx: FileText,\n txt: FileText,\n md: FileText,\n xls: FileSpreadsheet,\n xlsx: FileSpreadsheet,\n csv: FileSpreadsheet,\n ppt: Presentation,\n pptx: Presentation,\n png: FileImage,\n jpg: FileImage,\n jpeg: FileImage,\n gif: FileImage,\n webp: FileImage,\n zip: FileArchive,\n rar: FileArchive,\n '7z': FileArchive,\n};\n\nexport function getFileExtension(name: string): string {\n const dot = name.lastIndexOf('.');\n return dot >= 0 ? name.slice(dot + 1).toLowerCase() : '';\n}\n\n/** 从 URL 路径解析文件名(decodeURIComponent,失败时回退为「未命名文件」) */\nexport function parseFileNameFromUrl(url: string): string {\n const trimmed = url.trim();\n if (!trimmed) return '未命名文件';\n\n try {\n const pathname = new URL(trimmed, 'http://placeholder.local').pathname;\n const segment = pathname.split('/').filter(Boolean).pop() ?? '';\n const decoded = decodeURIComponent(segment);\n if (decoded) return decoded;\n } catch {\n // fall through\n }\n\n const fallback = trimmed.split(/[/?#]/).filter(Boolean).pop() ?? '';\n try {\n const decoded = decodeURIComponent(fallback);\n return decoded || '未命名文件';\n } catch {\n return fallback || '未命名文件';\n }\n}\n\n/** 补全 name / extension:name 缺省时从 url 解析 */\nexport function normalizeFileDisplayItem(file: FileDisplayItem): FileDisplayItem & { name: string } {\n const name = file.name?.trim() || (file.url ? parseFileNameFromUrl(file.url) : '未命名文件');\n const
|
|
1
|
+
{"version":3,"file":"fileDisplay.js","sources":["../../../src/components/File/fileDisplay.tsx"],"sourcesContent":["import React from 'react';\nimport {\n File,\n FileArchive,\n FileImage,\n FileSpreadsheet,\n FileText,\n Presentation,\n} from '@/components/Icons';\nimport type { FileDisplayItem } from './types';\n\nconst EXT_ICON_MAP: Record<string, React.FC<{ className?: string }>> = {\n pdf: FileText,\n doc: FileText,\n docx: FileText,\n txt: FileText,\n md: FileText,\n xls: FileSpreadsheet,\n xlsx: FileSpreadsheet,\n csv: FileSpreadsheet,\n ppt: Presentation,\n pptx: Presentation,\n png: FileImage,\n jpg: FileImage,\n jpeg: FileImage,\n gif: FileImage,\n webp: FileImage,\n zip: FileArchive,\n rar: FileArchive,\n '7z': FileArchive,\n};\n\nexport function getFileExtension(name: string): string {\n const dot = name.lastIndexOf('.');\n return dot >= 0 ? name.slice(dot + 1).toLowerCase() : '';\n}\n\n/** 规范化扩展名:去除前导点并转小写(兼容 .xlsx 与 xlsx) */\nexport function normalizeExtension(extension?: string | null): string {\n if (!extension) return '';\n return extension.replace(/^\\./, '').toLowerCase();\n}\n\n/** 从 URL 路径解析文件名(decodeURIComponent,失败时回退为「未命名文件」) */\nexport function parseFileNameFromUrl(url: string): string {\n const trimmed = url.trim();\n if (!trimmed) return '未命名文件';\n\n try {\n const pathname = new URL(trimmed, 'http://placeholder.local').pathname;\n const segment = pathname.split('/').filter(Boolean).pop() ?? '';\n const decoded = decodeURIComponent(segment);\n if (decoded) return decoded;\n } catch {\n // fall through\n }\n\n const fallback = trimmed.split(/[/?#]/).filter(Boolean).pop() ?? '';\n try {\n const decoded = decodeURIComponent(fallback);\n return decoded || '未命名文件';\n } catch {\n return fallback || '未命名文件';\n }\n}\n\n/** 补全 name / extension:name 缺省时从 url 解析 */\nexport function normalizeFileDisplayItem(file: FileDisplayItem): FileDisplayItem & { name: string } {\n const name = file.name?.trim() || (file.url ? parseFileNameFromUrl(file.url) : '未命名文件');\n const rawExtension = file.extension ?? getFileExtension(name);\n const extension = normalizeExtension(rawExtension) || undefined;\n\n return {\n ...file,\n name,\n extension,\n };\n}\n\nexport function getFileIcon(name: string, _mimeType?: string): React.ReactNode {\n const ext = getFileExtension(name);\n const Icon = EXT_ICON_MAP[ext] ?? File;\n return <Icon />;\n}\n\nexport function getFileTypeName(name: string, mimeType?: string): string {\n const ext = getFileExtension(name);\n if (ext) return ext.toUpperCase();\n if (mimeType) return mimeType.split('/').pop()?.toUpperCase() ?? 'FILE';\n return 'FILE';\n}\n"],"names":["EXT_ICON_MAP","FileText","FileSpreadsheet","Presentation","FileImage","FileArchive","getFileExtension","name","dot","normalizeExtension","extension","parseFileNameFromUrl","url","trimmed","segment","decoded","fallback","normalizeFileDisplayItem","file","_a","rawExtension","getFileIcon","_mimeType","ext","Icon","File","getFileTypeName","mimeType"],"mappings":";;AAWA,MAAMA,IAAiE;AAAA,EACrE,KAAKC;AAAA,EACL,KAAKA;AAAA,EACL,MAAMA;AAAA,EACN,KAAKA;AAAA,EACL,IAAIA;AAAA,EACJ,KAAKC;AAAA,EACL,MAAMA;AAAA,EACN,KAAKA;AAAA,EACL,KAAKC;AAAA,EACL,MAAMA;AAAA,EACN,KAAKC;AAAA,EACL,KAAKA;AAAA,EACL,MAAMA;AAAA,EACN,KAAKA;AAAA,EACL,MAAMA;AAAA,EACN,KAAKC;AAAA,EACL,KAAKA;AAAA,EACL,MAAMA;AACR;AAEO,SAASC,EAAiBC,GAAsB;AACrD,QAAMC,IAAMD,EAAK,YAAY,GAAG;AAChC,SAAOC,KAAO,IAAID,EAAK,MAAMC,IAAM,CAAC,EAAE,gBAAgB;AACxD;AAGO,SAASC,EAAmBC,GAAmC;AACpE,SAAKA,IACEA,EAAU,QAAQ,OAAO,EAAE,EAAE,YAAA,IADb;AAEzB;AAGO,SAASC,EAAqBC,GAAqB;AACxD,QAAMC,IAAUD,EAAI,KAAA;AACpB,MAAI,CAACC,EAAS,QAAO;AAErB,MAAI;AAEF,UAAMC,IADW,IAAI,IAAID,GAAS,0BAA0B,EAAE,SACrC,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,IAAA,KAAS,IACvDE,IAAU,mBAAmBD,CAAO;AAC1C,QAAIC,EAAS,QAAOA;AAAA,EACtB,QAAQ;AAAA,EAER;AAEA,QAAMC,IAAWH,EAAQ,MAAM,OAAO,EAAE,OAAO,OAAO,EAAE,IAAA,KAAS;AACjE,MAAI;AAEF,WADgB,mBAAmBG,CAAQ,KACzB;AAAA,EACpB,QAAQ;AACN,WAAOA,KAAY;AAAA,EACrB;AACF;AAGO,SAASC,EAAyBC,GAA2D;;AAClG,QAAMX,MAAOY,IAAAD,EAAK,SAAL,gBAAAC,EAAW,YAAWD,EAAK,MAAMP,EAAqBO,EAAK,GAAG,IAAI,UACzEE,IAAeF,EAAK,aAAaZ,EAAiBC,CAAI,GACtDG,IAAYD,EAAmBW,CAAY,KAAK;AAEtD,SAAO;AAAA,IACL,GAAGF;AAAA,IACH,MAAAX;AAAA,IACA,WAAAG;AAAA,EAAA;AAEJ;AAEO,SAASW,EAAYd,GAAce,GAAqC;AAC7E,QAAMC,IAAMjB,EAAiBC,CAAI,GAC3BiB,IAAOxB,EAAauB,CAAG,KAAKE;AAClC,2BAAQD,GAAA,EAAK;AACf;AAEO,SAASE,EAAgBnB,GAAcoB,GAA2B;;AACvE,QAAMJ,IAAMjB,EAAiBC,CAAI;AACjC,SAAIgB,IAAYA,EAAI,YAAA,IAChBI,MAAiBR,IAAAQ,EAAS,MAAM,GAAG,EAAE,IAAA,MAApB,gBAAAR,EAA2B,kBAAiB,SAC1D;AACT;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { FileDisplayItem, FileItemAction } from './types';
|
|
2
|
-
export { getFileExtension, getFileIcon, getFileTypeName, normalizeFileDisplayItem, parseFileNameFromUrl, } from './fileDisplay';
|
|
2
|
+
export { getFileExtension, getFileIcon, getFileTypeName, normalizeExtension, normalizeFileDisplayItem, parseFileNameFromUrl, } from './fileDisplay';
|
|
3
3
|
export { FileItem as FileItemView } from './FileItem';
|
|
4
4
|
export type { FileItemProps } from './FileItem';
|
|
5
5
|
export { default as FileLink } from './FileLink';
|
|
@@ -8,3 +8,5 @@ export { default as FilePreview } from './FilePreview';
|
|
|
8
8
|
export type { FilePreviewProps } from './FilePreview';
|
|
9
9
|
export { default as FilePreviewModal } from './FilePreviewModal';
|
|
10
10
|
export type { FilePreviewModalProps } from './FilePreviewModal';
|
|
11
|
+
export { default as FilePreviewLink } from './FilePreviewLink';
|
|
12
|
+
export type { FilePreviewLinkProps } from './FilePreviewLink';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FileDisplayItem } from './types';
|
|
2
|
+
export type PreviewKind = 'image' | 'pdf' | 'excel' | 'word' | 'ppt' | 'video' | 'audio' | 'text' | 'iframe' | 'unsupported';
|
|
3
|
+
export declare function getPreviewKind(file: FileDisplayItem): PreviewKind;
|
|
4
|
+
export declare function getFileTypeTagColor(kind: PreviewKind): string;
|
|
5
|
+
/** Office / 文本类需 fetch blob 后客户端渲染,避免 iframe 触发下载 */
|
|
6
|
+
export declare function needsBlobPreview(kind: PreviewKind): boolean;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { SEMANTIC_COLORS as t } from "../Tag/SemanticTag.js";
|
|
2
|
+
import { normalizeExtension as i, getFileExtension as o } from "./fileDisplay.js";
|
|
3
|
+
const s = ["png", "jpg", "jpeg", "gif", "webp", "svg", "bmp"], c = ["pdf"], u = ["xls", "xlsx", "csv"], a = ["doc", "docx"], d = ["ppt", "pptx"], p = ["mp4", "webm", "mov", "m4v"], m = ["mp3", "wav", "ogg", "aac", "flac"], l = ["txt", "md", "json", "xml", "html", "htm", "log", "yaml", "yml"];
|
|
4
|
+
function x(n) {
|
|
5
|
+
const r = n.mimeType ?? "";
|
|
6
|
+
if (r.startsWith("image/")) return "image";
|
|
7
|
+
if (r === "application/pdf") return "pdf";
|
|
8
|
+
if (r.startsWith("video/")) return "video";
|
|
9
|
+
if (r.startsWith("audio/")) return "audio";
|
|
10
|
+
const e = i(n.extension) || o(n.name ?? "");
|
|
11
|
+
return s.includes(e) ? "image" : c.includes(e) ? "pdf" : u.includes(e) ? "excel" : a.includes(e) ? "word" : d.includes(e) ? "ppt" : p.includes(e) ? "video" : m.includes(e) ? "audio" : l.includes(e) ? "text" : "iframe";
|
|
12
|
+
}
|
|
13
|
+
function T(n) {
|
|
14
|
+
switch (n) {
|
|
15
|
+
case "pdf":
|
|
16
|
+
return t.INFO;
|
|
17
|
+
case "word":
|
|
18
|
+
return t.PROCESSING;
|
|
19
|
+
case "excel":
|
|
20
|
+
return t.SUCCESS;
|
|
21
|
+
case "ppt":
|
|
22
|
+
return t.WARNING;
|
|
23
|
+
case "image":
|
|
24
|
+
return t.CYAN;
|
|
25
|
+
case "video":
|
|
26
|
+
case "audio":
|
|
27
|
+
return t.PRIMARY;
|
|
28
|
+
case "text":
|
|
29
|
+
return t.DEFAULT;
|
|
30
|
+
default:
|
|
31
|
+
return t.DEFAULT;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function g(n) {
|
|
35
|
+
return ["excel", "word", "ppt", "text"].includes(n);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
T as getFileTypeTagColor,
|
|
39
|
+
x as getPreviewKind,
|
|
40
|
+
g as needsBlobPreview
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=previewKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewKind.js","sources":["../../../src/components/File/previewKind.ts"],"sourcesContent":["import { SEMANTIC_COLORS } from '@/components/Tag/SemanticTag';\nimport { getFileExtension, normalizeExtension } from './fileDisplay';\nimport type { FileDisplayItem } from './types';\n\nexport type PreviewKind =\n | 'image'\n | 'pdf'\n | 'excel'\n | 'word'\n | 'ppt'\n | 'video'\n | 'audio'\n | 'text'\n | 'iframe'\n | 'unsupported';\n\nconst IMAGE_EXTS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp'];\nconst PDF_EXTS = ['pdf'];\nconst EXCEL_EXTS = ['xls', 'xlsx', 'csv'];\nconst WORD_EXTS = ['doc', 'docx'];\nconst PPT_EXTS = ['ppt', 'pptx'];\nconst VIDEO_EXTS = ['mp4', 'webm', 'mov', 'm4v'];\nconst AUDIO_EXTS = ['mp3', 'wav', 'ogg', 'aac', 'flac'];\nconst TEXT_EXTS = ['txt', 'md', 'json', 'xml', 'html', 'htm', 'log', 'yaml', 'yml'];\n\nexport function getPreviewKind(file: FileDisplayItem): PreviewKind {\n const mime = file.mimeType ?? '';\n if (mime.startsWith('image/')) return 'image';\n if (mime === 'application/pdf') return 'pdf';\n if (mime.startsWith('video/')) return 'video';\n if (mime.startsWith('audio/')) return 'audio';\n\n const ext = normalizeExtension(file.extension) || getFileExtension(file.name ?? '');\n if (IMAGE_EXTS.includes(ext)) return 'image';\n if (PDF_EXTS.includes(ext)) return 'pdf';\n if (EXCEL_EXTS.includes(ext)) return 'excel';\n if (WORD_EXTS.includes(ext)) return 'word';\n if (PPT_EXTS.includes(ext)) return 'ppt';\n if (VIDEO_EXTS.includes(ext)) return 'video';\n if (AUDIO_EXTS.includes(ext)) return 'audio';\n if (TEXT_EXTS.includes(ext)) return 'text';\n return 'iframe';\n}\n\nexport function getFileTypeTagColor(kind: PreviewKind): string {\n switch (kind) {\n case 'pdf':\n return SEMANTIC_COLORS.INFO;\n case 'word':\n return SEMANTIC_COLORS.PROCESSING;\n case 'excel':\n return SEMANTIC_COLORS.SUCCESS;\n case 'ppt':\n return SEMANTIC_COLORS.WARNING;\n case 'image':\n return SEMANTIC_COLORS.CYAN;\n case 'video':\n case 'audio':\n return SEMANTIC_COLORS.PRIMARY;\n case 'text':\n return SEMANTIC_COLORS.DEFAULT;\n default:\n return SEMANTIC_COLORS.DEFAULT;\n }\n}\n\n/** Office / 文本类需 fetch blob 后客户端渲染,避免 iframe 触发下载 */\nexport function needsBlobPreview(kind: PreviewKind): boolean {\n return ['excel', 'word', 'ppt', 'text'].includes(kind);\n}\n"],"names":["IMAGE_EXTS","PDF_EXTS","EXCEL_EXTS","WORD_EXTS","PPT_EXTS","VIDEO_EXTS","AUDIO_EXTS","TEXT_EXTS","getPreviewKind","file","mime","ext","normalizeExtension","getFileExtension","getFileTypeTagColor","kind","SEMANTIC_COLORS","needsBlobPreview"],"mappings":";;AAgBA,MAAMA,IAAa,CAAC,OAAO,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,GAC/DC,IAAW,CAAC,KAAK,GACjBC,IAAa,CAAC,OAAO,QAAQ,KAAK,GAClCC,IAAY,CAAC,OAAO,MAAM,GAC1BC,IAAW,CAAC,OAAO,MAAM,GACzBC,IAAa,CAAC,OAAO,QAAQ,OAAO,KAAK,GACzCC,IAAa,CAAC,OAAO,OAAO,OAAO,OAAO,MAAM,GAChDC,IAAY,CAAC,OAAO,MAAM,QAAQ,OAAO,QAAQ,OAAO,OAAO,QAAQ,KAAK;AAE3E,SAASC,EAAeC,GAAoC;AACjE,QAAMC,IAAOD,EAAK,YAAY;AAC9B,MAAIC,EAAK,WAAW,QAAQ,EAAG,QAAO;AACtC,MAAIA,MAAS,kBAAmB,QAAO;AACvC,MAAIA,EAAK,WAAW,QAAQ,EAAG,QAAO;AACtC,MAAIA,EAAK,WAAW,QAAQ,EAAG,QAAO;AAEtC,QAAMC,IAAMC,EAAmBH,EAAK,SAAS,KAAKI,EAAiBJ,EAAK,QAAQ,EAAE;AAClF,SAAIT,EAAW,SAASW,CAAG,IAAU,UACjCV,EAAS,SAASU,CAAG,IAAU,QAC/BT,EAAW,SAASS,CAAG,IAAU,UACjCR,EAAU,SAASQ,CAAG,IAAU,SAChCP,EAAS,SAASO,CAAG,IAAU,QAC/BN,EAAW,SAASM,CAAG,IAAU,UACjCL,EAAW,SAASK,CAAG,IAAU,UACjCJ,EAAU,SAASI,CAAG,IAAU,SAC7B;AACT;AAEO,SAASG,EAAoBC,GAA2B;AAC7D,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAOC,EAAgB;AAAA,IACzB,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB,KAAK;AAAA,IACL,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB,KAAK;AACH,aAAOA,EAAgB;AAAA,IACzB;AACE,aAAOA,EAAgB;AAAA,EAAA;AAE7B;AAGO,SAASC,EAAiBF,GAA4B;AAC3D,SAAO,CAAC,SAAS,QAAQ,OAAO,MAAM,EAAE,SAASA,CAAI;AACvD;"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { applyThemeToCssVariables as o, generateTheme as t } from "./theme/theme.js";
|
|
2
2
|
import { DEFAULT_PRIMARY_COLOR as l, PALETTE as s } from "./theme/constants.js";
|
|
3
|
-
import { fetchWithTimeout as i, useFetchData as
|
|
3
|
+
import { fetchWithTimeout as i, useFetchData as m } from "./hooks/useFetchData.js";
|
|
4
4
|
import { resolveMaybeFn as d, resolveVisible as u } from "./utils/resolveMaybeFn.js";
|
|
5
5
|
import { formatFileSize as x } from "./utils/format.js";
|
|
6
6
|
import { default as C } from "./components/Upload/index.js";
|
|
7
|
-
import { ArrowLeft as h, ArrowLeftRight as S, BarChart3 as g, BookOpen as
|
|
7
|
+
import { ArrowLeft as h, ArrowLeftRight as S, BarChart3 as g, BookOpen as P, Bot as T, Check as L, ChevronDown as I, ChevronLeft as R, ChevronRight as A, ChevronUp as w, CircleAlert as b, CircleCheck as v, CircleHelp as M, CirclePlay as U, CircleX as y, ClipboardCheck as D, Clock as O, CloudDownload as k, CloudUpload as E, Code as H, Copy as N, Crown as G, Database as _, Download as z, Eye as B, File as V, FileArchive as q, FileImage as X, FileSpreadsheet as Y, FileText as W, Flag as j, Flame as J, Folder as K, FolderOpen as Q, Hash as Z, House as $, ICON_NAMES as ee, ICON_REGISTRY as re, Import as oe, Inbox as te, Info as ae, LayoutDashboard as le, LayoutGrid as se, Loader2 as fe, Lock as ie, LogOut as me, MessageCircle as pe, MessageSquare as de, PanelLeftClose as ue, PanelLeftOpen as ne, Pause as xe, Pencil as Fe, Plus as Ce, Presentation as ce, RefreshCw as he, RotateCw as Se, Send as ge, Settings as Pe, Shield as Te, ShieldCheck as Le, SlidersHorizontal as Ie, Square as Re, Star as Ae, ThumbsDown as we, ThumbsUp as be, Trash2 as ve, Trophy as Me, Undo2 as Ue, Upload as ye, User as De, UserPlus as Oe, UserRoundCog as ke, Users as Ee, X as He, createIcon as Ne } from "./components/Icons/index.js";
|
|
8
8
|
import { default as _e } from "./components/AgentHub/AgentHubAccessGuard.js";
|
|
9
|
-
import { default as
|
|
9
|
+
import { default as Be } from "./components/AgentHub/AgentHubIndexRedirect.js";
|
|
10
10
|
import { default as qe } from "./components/AgentHub/ChatSessionAccessGuard.js";
|
|
11
11
|
import { default as Ye } from "./components/Tour/AppTour/index.js";
|
|
12
12
|
import { default as je } from "./components/Descriptions/CommonDescriptions.js";
|
|
@@ -15,52 +15,53 @@ import { default as Ze } from "./components/Form/FetchSelect.js";
|
|
|
15
15
|
import { default as er } from "./components/Form/FetchTreeSelect.js";
|
|
16
16
|
import { default as or } from "./components/File/FileLink/index.js";
|
|
17
17
|
import { default as ar } from "./components/File/FilePreview/index.js";
|
|
18
|
-
import { default as sr } from "./components/File/
|
|
19
|
-
import { default as ir } from "./components/
|
|
20
|
-
import { default as
|
|
21
|
-
import { default as ur } from "./components/Filter/
|
|
22
|
-
import { default as xr } from "./components/Filter/
|
|
23
|
-
import { default as Cr } from "./components/Filter/
|
|
24
|
-
import { default as hr } from "./components/Filter/
|
|
25
|
-
import { default as gr } from "./components/Filter/
|
|
26
|
-
import { default as
|
|
27
|
-
import { default as
|
|
28
|
-
import { default as Ar } from "./
|
|
29
|
-
import { default as
|
|
30
|
-
import { default as Mr } from "./components/
|
|
31
|
-
import { default as yr } from "./components/
|
|
32
|
-
import { default as Or } from "./components/
|
|
33
|
-
import {
|
|
34
|
-
import { default as Gr } from "./components/
|
|
35
|
-
import { default as
|
|
36
|
-
import { default as
|
|
37
|
-
import { default as Xr } from "./components/
|
|
38
|
-
import { default as Wr } from "./components/
|
|
39
|
-
import { default as Jr } from "./components/
|
|
40
|
-
import { default as Qr } from "./components/
|
|
41
|
-
import { default as $r } from "./components/
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
18
|
+
import { default as sr } from "./components/File/FilePreviewLink/index.js";
|
|
19
|
+
import { default as ir } from "./components/File/FilePreviewModal/index.js";
|
|
20
|
+
import { default as pr } from "./components/Tag/FileTags.js";
|
|
21
|
+
import { default as ur } from "./components/Filter/FilterDateRange/index.js";
|
|
22
|
+
import { default as xr } from "./components/Filter/FilterInput/index.js";
|
|
23
|
+
import { default as Cr } from "./components/Filter/FilterNumberRange/index.js";
|
|
24
|
+
import { default as hr } from "./components/Filter/FilterPanel/index.js";
|
|
25
|
+
import { default as gr } from "./components/Filter/FilterPopover/index.js";
|
|
26
|
+
import { default as Tr } from "./components/Filter/FilterSelect/index.js";
|
|
27
|
+
import { default as Ir } from "./components/Filter/FilterTreeSelect/index.js";
|
|
28
|
+
import { default as Ar } from "./components/Filter/FilterTrigger/index.js";
|
|
29
|
+
import { default as br } from "./provider/MarsunCoreProvider.js";
|
|
30
|
+
import { default as Mr } from "./components/Layout/PageHeaderLayout/index.js";
|
|
31
|
+
import { default as yr } from "./components/Auth/PermissionGuard.js";
|
|
32
|
+
import { default as Or } from "./components/Form/PersonOptionRow/index.js";
|
|
33
|
+
import { default as Er } from "./components/Auth/ProtectedRoute.js";
|
|
34
|
+
import { SEMANTIC_COLORS as Nr, default as Gr } from "./components/Tag/SemanticTag.js";
|
|
35
|
+
import { default as zr } from "./components/Stat/StatCard/index.js";
|
|
36
|
+
import { default as Vr } from "./components/Stat/StatCardList.js";
|
|
37
|
+
import { default as Xr } from "./components/Stat/StatPendingBreakdown/index.js";
|
|
38
|
+
import { default as Wr } from "./components/Form/StepForm.js";
|
|
39
|
+
import { default as Jr } from "./components/Modal/StepModal/index.js";
|
|
40
|
+
import { default as Qr } from "./components/Tag/Tags/index.js";
|
|
41
|
+
import { default as $r } from "./components/TooltipInfo/TooltipInfo.js";
|
|
42
|
+
import { default as ro } from "./components/VirtualScrollbar/VirtualScrollbar/index.js";
|
|
43
|
+
import { FileItem as to } from "./components/File/FileItem/index.js";
|
|
44
|
+
import { FilterProvider as lo, useFilterRegister as so, useFilterState as fo } from "./components/Filter/useFilterState.js";
|
|
45
|
+
import { getFileExtension as mo, getFileIcon as po, getFileTypeName as uo, normalizeExtension as no, normalizeFileDisplayItem as xo, parseFileNameFromUrl as Fo } from "./components/File/fileDisplay.js";
|
|
46
|
+
import { hasPermission as co } from "./components/Auth/hasPermission.js";
|
|
47
|
+
import { resolveHidden as So } from "./components/Filter/types.js";
|
|
48
|
+
import { useMarsunAuth as Po, useMarsunCore as To, useMarsunFetch as Lo } from "./provider/context.js";
|
|
48
49
|
export {
|
|
49
50
|
_e as AgentHubAccessGuard,
|
|
50
|
-
|
|
51
|
+
Be as AgentHubIndexRedirect,
|
|
51
52
|
qe as AgentHubSessionAccessGuard,
|
|
52
53
|
Ye as AppTour,
|
|
53
54
|
h as ArrowLeft,
|
|
54
55
|
S as ArrowLeftRight,
|
|
55
56
|
g as BarChart3,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
P as BookOpen,
|
|
58
|
+
T as Bot,
|
|
59
|
+
L as Check,
|
|
60
|
+
I as ChevronDown,
|
|
60
61
|
R as ChevronLeft,
|
|
61
62
|
A as ChevronRight,
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
w as ChevronUp,
|
|
64
|
+
b as CircleAlert,
|
|
64
65
|
v as CircleCheck,
|
|
65
66
|
M as CircleHelp,
|
|
66
67
|
U as CirclePlay,
|
|
@@ -68,8 +69,8 @@ export {
|
|
|
68
69
|
D as ClipboardCheck,
|
|
69
70
|
O as Clock,
|
|
70
71
|
k as CloudDownload,
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
E as CloudUpload,
|
|
73
|
+
H as Code,
|
|
73
74
|
je as CommonDescriptions,
|
|
74
75
|
Ke as CommonFilter,
|
|
75
76
|
C as CommonUpload,
|
|
@@ -77,29 +78,30 @@ export {
|
|
|
77
78
|
G as Crown,
|
|
78
79
|
l as DEFAULT_PRIMARY_COLOR,
|
|
79
80
|
_ as Database,
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
z as Download,
|
|
82
|
+
B as Eye,
|
|
82
83
|
Ze as FetchSelect,
|
|
83
84
|
er as FetchTreeSelect,
|
|
84
|
-
|
|
85
|
+
V as File,
|
|
85
86
|
q as FileArchive,
|
|
86
87
|
X as FileImage,
|
|
87
|
-
|
|
88
|
+
to as FileItemView,
|
|
88
89
|
or as FileLink,
|
|
89
90
|
ar as FilePreview,
|
|
90
|
-
sr as
|
|
91
|
+
sr as FilePreviewLink,
|
|
92
|
+
ir as FilePreviewModal,
|
|
91
93
|
Y as FileSpreadsheet,
|
|
92
|
-
|
|
94
|
+
pr as FileTags,
|
|
93
95
|
W as FileText,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
ur as FilterDateRange,
|
|
97
|
+
xr as FilterInput,
|
|
98
|
+
Cr as FilterNumberRange,
|
|
99
|
+
hr as FilterPanel,
|
|
100
|
+
gr as FilterPopover,
|
|
101
|
+
lo as FilterProvider,
|
|
102
|
+
Tr as FilterSelect,
|
|
103
|
+
Ir as FilterTreeSelect,
|
|
104
|
+
Ar as FilterTrigger,
|
|
103
105
|
j as Flag,
|
|
104
106
|
J as Flame,
|
|
105
107
|
K as Folder,
|
|
@@ -115,41 +117,41 @@ export {
|
|
|
115
117
|
se as LayoutGrid,
|
|
116
118
|
fe as Loader2,
|
|
117
119
|
ie as Lock,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
me as LogOut,
|
|
121
|
+
br as MarsunCoreProvider,
|
|
122
|
+
pe as MessageCircle,
|
|
121
123
|
de as MessageSquare,
|
|
122
124
|
s as PALETTE,
|
|
123
|
-
|
|
125
|
+
Mr as PageHeaderLayout,
|
|
124
126
|
ue as PanelLeftClose,
|
|
125
127
|
ne as PanelLeftOpen,
|
|
126
128
|
xe as Pause,
|
|
127
129
|
Fe as Pencil,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
+
yr as PermissionGuard,
|
|
131
|
+
Or as PersonOptionRow,
|
|
130
132
|
Ce as Plus,
|
|
131
133
|
ce as Presentation,
|
|
132
|
-
|
|
134
|
+
Er as ProtectedRoute,
|
|
133
135
|
he as RefreshCw,
|
|
134
136
|
Se as RotateCw,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
+
Nr as SEMANTIC_COLORS,
|
|
138
|
+
Gr as SemanticTag,
|
|
137
139
|
ge as Send,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
Pe as Settings,
|
|
141
|
+
Te as Shield,
|
|
142
|
+
Le as ShieldCheck,
|
|
143
|
+
Ie as SlidersHorizontal,
|
|
142
144
|
Re as Square,
|
|
143
145
|
Ae as Star,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
146
|
+
zr as StatCard,
|
|
147
|
+
Vr as StatCardList,
|
|
148
|
+
Xr as StatPendingBreakdown,
|
|
149
|
+
Wr as StepForm,
|
|
150
|
+
Jr as StepModal,
|
|
151
|
+
Qr as Tags,
|
|
152
|
+
we as ThumbsDown,
|
|
153
|
+
be as ThumbsUp,
|
|
154
|
+
$r as TooltipInfo,
|
|
153
155
|
ve as Trash2,
|
|
154
156
|
Me as Trophy,
|
|
155
157
|
Ue as Undo2,
|
|
@@ -157,28 +159,29 @@ export {
|
|
|
157
159
|
De as User,
|
|
158
160
|
Oe as UserPlus,
|
|
159
161
|
ke as UserRoundCog,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
Ee as Users,
|
|
163
|
+
ro as VirtualScrollbar,
|
|
164
|
+
He as X,
|
|
163
165
|
o as applyThemeToCssVariables,
|
|
164
166
|
Ne as createIcon,
|
|
165
167
|
i as fetchWithTimeout,
|
|
166
168
|
x as formatFileSize,
|
|
167
169
|
t as generateTheme,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
170
|
+
mo as getFileExtension,
|
|
171
|
+
po as getFileIcon,
|
|
172
|
+
uo as getFileTypeName,
|
|
173
|
+
co as hasPermission,
|
|
174
|
+
no as normalizeExtension,
|
|
175
|
+
xo as normalizeFileDisplayItem,
|
|
176
|
+
Fo as parseFileNameFromUrl,
|
|
177
|
+
So as resolveHidden,
|
|
175
178
|
d as resolveMaybeFn,
|
|
176
179
|
u as resolveVisible,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
m as useFetchData,
|
|
181
|
+
so as useFilterRegister,
|
|
182
|
+
fo as useFilterState,
|
|
183
|
+
Po as useMarsunAuth,
|
|
184
|
+
To as useMarsunCore,
|
|
185
|
+
Lo as useMarsunFetch
|
|
183
186
|
};
|
|
184
187
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._upload-root_xoraq_1{max-width:xl}._upload-container_xoraq_5{font-size:12px;color:var(--font-color-grey)}._upload-wrapper_xoraq_10{color:var(--primary-color);cursor:pointer}._upload-wrapper_xoraq_10:hover{text-decoration:underline}._upload-inner_xoraq_18{display:block}._upload-header_xoraq_22{font-size:var(--font-size-small);color:var(--font-color-grey)}._upload-body_xoraq_27{border-radius:8px;border-width:1px;border-style:solid;padding:16px}._upload-footer_xoraq_34{font-size:var(--font-size-small);font-weight:500;color:var(--font-color-grey)}._upload-row_xoraq_40{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-small)}._upload-col_xoraq_47{display:flex;align-items:center;gap:8px;font-size:var(--font-size-small)}._upload-wrap_xoraq_10{display:block}._upload-panel_xoraq_58{font-size:12px}._upload-card_xoraq_62{padding:12px;font-size:var(--font-size-small)}._upload-item_xoraq_67{font-size:var(--font-size-small);margin-top:8px;display:block}._upload-link_xoraq_73{margin-top:12px}._upload-label_xoraq_77{display:flex;align-items:center;gap:8px;min-width:0}._upload-value_xoraq_84{color:var(--font-color-grey-1);flex-shrink:0}._upload-meta_xoraq_89{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._upload-icon_xoraq_95{margin:0!important;flex-shrink:0}._upload-title_xoraq_100{font-size:12px;margin-left:0!important;flex-shrink:0}._upload-desc_xoraq_106{flex-shrink:0}._upload-actions_xoraq_110{font-size:30px;margin-bottom:8px}._upload-toolbar_xoraq_115{color:var(--font-color-grey)}._upload-toolbar_xoraq_115:hover{border-color:var(--primary-color)}._upload-toolbar_xoraq_115:hover{color:var(--primary-color)}._upload-list_xoraq_125{margin-top:8px}._upload-file-row_xoraq_129{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-radius:4px;background-color:var(--bg-color-grey);border:1px solid var(--font-color-grey-4)}._upload-file-row-error_xoraq_140{border-color:#f53f3f59;color:var(--error-color)}._upload-drag-icon_xoraq_145{font-size:30px;margin-bottom:8px;color:var(--primary-color)}._app-tour-root_ybirw_1{font-size:12px;color:var(--font-color-grey-1)}._common-filter-root_kdoz3_1{background-color:var(--bg-color-white);margin-bottom:16px}._common-filter-container_kdoz3_6{display:flex;align-items:center;gap:12px}._common-filter-label_kdoz3_12{flex-shrink:0;font-size:var(--font-size-default);font-weight:500;color:#374151}._common-filter-content_kdoz3_19{display:flex;flex:1;align-items:flex-start;justify-content:space-between}._common-filter-items_kdoz3_26{display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:8px}._common-filter-extra_kdoz3_34{flex-shrink:0;margin-left:16px}._common-filter-selected_kdoz3_39{display:flex;align-items:center;justify-content:space-between;padding-top:12px}._common-filter-selected-main_kdoz3_46{display:flex;align-items:baseline;gap:8px}._common-filter-selected-title_kdoz3_52{font-size:12px;font-weight:500;color:var(--font-color-grey)}._common-filter-selected-tags_kdoz3_58{flex:1}._common-filter-tag_kdoz3_62{display:flex;align-items:center;gap:4px}._common-filter-tag-label_kdoz3_68{font-size:12px}._common-filter-tag-close_kdoz3_72{font-size:12px;cursor:pointer;margin-left:2px;opacity:.6}._common-filter-tag-close_kdoz3_72:hover{opacity:1}._common-filter-clear-btn_kdoz3_82{padding:0!important;height:auto!important;font-size:12px}._file-link-inner_uetzp_1{flex-shrink:0}._file-link-row_uetzp_5{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-link-actions_uetzp_11{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease,background-color .2s ease}._file-link-actions_uetzp_11:hover{color:var(--primary-color)}._file-link-toolbar_uetzp_22{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-list_1yfht_1{position:relative}._file-preview-empty_1yfht_5{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-white)}._file-preview-loading_1yfht_15{width:100%;padding-top:80px;padding-bottom:80px}._file-preview-content_1yfht_21{padding:16px;font-size:var(--font-size-small);white-space:pre-wrap;overflow:auto;max-height:70vh;background-color:var(--bg-color-grey)}._file-preview-aside_1yfht_30{padding:24px;overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-main_1yfht_37{display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;max-height:70vh}._file-preview-section_1yfht_46{max-width:100%;max-height:65vh;object-fit:contain}._file-preview-group_1yfht_52{width:100%}._file-preview-cell_1yfht_56{overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-overlay_1yfht_62{position:relative;display:flex;align-items:center;justify-content:center}._file-preview-badge_1yfht_69{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:48px;padding-bottom:48px;gap:16px}._file-preview-tag_1yfht_79{position:relative;display:flex;align-items:center;justify-content:center;padding:16px}._file-preview-hint_1yfht_87{max-width:100%;max-height:65vh}._file-preview-sider_1yfht_92{font-size:48px}._file-preview-nav_1yfht_96{text-align:center}._file-preview-menu_1yfht_100{color:var(--font-color-grey);margin-bottom:4px}._file-preview-user-menu_1yfht_105{font-size:12px;color:var(--font-color-grey-1)}._file-preview-avatar_1yfht_110{display:flex;align-items:center;justify-content:center;padding:32px}._file-preview-upload_1yfht_117{width:100%;max-width:1024px}._file-preview-filter_1yfht_122{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--font-color-grey-4)}._file-preview-table_1yfht_133{font-weight:500}._tags-tag-list_d5l57_1{display:flex;align-items:center;gap:4px;flex-wrap:wrap}._tags-tag-list-nowrap_d5l57_8{flex-wrap:nowrap}._tags-tag-list-tooltip_d5l57_12{max-width:320px}._filter-panel-body_tjvgz_1{margin-bottom:12px}._filter-panel-actions_tjvgz_5{display:flex;justify-content:flex-end;gap:8px}._filter-trigger-root_115kh_1{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border-radius:4px;padding:2px 6px;font-size:12px;transition:color .2s ease,background-color .2s ease}._filter-trigger-active_115kh_12{background-color:var(--primary-color);color:var(--bg-color-white)}._filter-trigger-inactive_115kh_17{color:#374151}._filter-trigger-inactive_115kh_17:hover{color:var(--primary-color);background-color:var(--primary-color-bg)}._filter-trigger-chevron_115kh_25{font-size:10px}._filter-date-range-quick-options_ctl7u_1{margin-bottom:12px;display:flex;flex-wrap:wrap;gap:8px}._filter-date-range-quick-option_ctl7u_1{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:var(--font-size-small)}._filter-date-range-quick-option_ctl7u_1:hover{background-color:var(--primary-color-bg)}._filter-date-range-quick-option-active_ctl7u_18{background-color:var(--primary-color);color:var(--bg-color-white);font-weight:500}._filter-date-range-picker_ctl7u_24{width:100%}._filter-number-range-inputs_y3pfu_1{display:flex;align-items:center;gap:8px}._filter-number-range-separator_y3pfu_7{color:var(--font-color-grey-1)}._filter-number-range-unit_y3pfu_11{font-size:var(--font-size-small);color:var(--font-color-grey)}._person-option-row-root_lf6i9_1{font-size:var(--font-size-small)}._person-option-row-container_lf6i9_5{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._person-option-row-wrapper_lf6i9_11{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--font-color-grey-1);font-size:12px}._person-option-row-inner_lf6i9_19{margin-left:auto;flex-shrink:0;color:var(--font-color-grey-1)}._person-option-row-inner_lf6i9_19:hover{color:var(--primary-color)}._person-option-row-person-row_lf6i9_28{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._filter-select-search_1esgk_1{margin-bottom:12px}._filter-select-options_1esgk_5{max-height:300px;overflow:auto}._filter-select-option_1esgk_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-select-option_1esgk_5:hover{background-color:var(--bg-color-grey)}._filter-select-option-selected_1esgk_23{color:var(--primary-color);font-weight:500}._filter-select-option-check_1esgk_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-select-empty_1esgk_34{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-select-selected-bar_1esgk_42{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-select-selected-label_1esgk_49{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-select-selected-tag_1esgk_55{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-select-selected-remove_1esgk_68{font-size:10px}._filter-tree-select-search_he1ck_1{margin-bottom:12px}._filter-tree-select-options_he1ck_5{max-height:300px;overflow:auto}._filter-tree-select-option_he1ck_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-tree-select-option_he1ck_5:hover{background-color:var(--bg-color-grey)}._filter-tree-select-option-selected_he1ck_23{color:var(--primary-color);font-weight:500}._filter-tree-select-option-check_he1ck_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-tree-select-expand-icon_he1ck_34{display:inline-flex;width:16px;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;color:var(--font-color-grey-1)}._filter-tree-select-expand-placeholder_he1ck_44{display:inline-flex;width:16px;flex-shrink:0}._filter-tree-select-node-label_he1ck_50{flex:1}._filter-tree-select-empty_he1ck_54{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-tree-select-selected-bar_he1ck_62{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-tree-select-selected-label_he1ck_69{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-tree-select-selected-tag_he1ck_75{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-tree-select-selected-remove_he1ck_88{font-size:10px}._page-header-layout-root_13o9c_1{display:flex;align-items:center;justify-content:space-between}._page-header-layout-container_13o9c_7{display:flex;align-items:center}._page-header-layout-wrapper_13o9c_12{font-size:var(--font-size-18);font-weight:600}._page-header-layout-inner_13o9c_17{margin-bottom:16px;padding:8px 12px;background-color:var(--primary-color-bg);border:1px solid var(--primary-color-border);border-radius:4px;font-size:var(--font-size-small);color:var(--primary-color)}._stat-card-clickable_xovsh_1{cursor:pointer}._stat-card-clickable_xovsh_1 .ant-statistic-content,._stat-card-clickable_xovsh_1 .ant-statistic-content .ant-statistic-content-prefix{display:flex!important;align-items:center}._stat-pending-breakdown-root_85di3_1{font-size:12px;color:var(--font-color-grey-1);margin-bottom:8px}._stat-pending-breakdown-container_85di3_7{font-size:12px;font-weight:400;color:var(--font-color-grey-1);margin-top:4px;line-height:var(--line-height-default)}._stat-pending-breakdown-detail-divider_85di3_15{margin-top:12px;padding-top:12px;border-top:1px solid var(--font-color-grey-4)}._step-modal-root_1ccyj_1{display:flex;align-items:center;gap:8px}._step-modal-container_1ccyj_7{flex:1}._step-modal-wrapper_1ccyj_11{margin-bottom:24px}._virtual-scrollbar-root_hy6p8_1{position:relative;display:flex;flex-direction:column;overflow:hidden;min-height:0;min-width:0}._virtual-scrollbar-viewport_hy6p8_14{flex:1 1 auto;width:100%;height:100%;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}._virtual-scrollbar-viewport_hy6p8_14::-webkit-scrollbar{display:none}._virtual-scrollbar-track_hy6p8_27{opacity:1;pointer-events:auto}._virtual-scrollbar-track-vertical_hy6p8_32{position:absolute;z-index:2;opacity:0;pointer-events:none;transition:opacity .2s ease;top:2px;right:2px;bottom:2px;width:6px}._virtual-scrollbar-track-horizontal_hy6p8_44{opacity:1;pointer-events:auto}._virtual-scrollbar-thumb_hy6p8_49{top:0;bottom:0;min-width:24px}._file-item-root_lmij6_1{transition:color .2s ease,background-color .2s ease}._file-item-root_lmij6_1:hover{background-color:var(--bg-color-grey)}._file-item-container_lmij6_8{display:flex;align-items:center;justify-content:space-between;padding:6px 8px}._file-item-wrapper_lmij6_18{display:flex;gap:8px;min-width:0;flex:1}._file-item-inner_lmij6_25{flex-shrink:0}._file-item-header_lmij6_29{min-width:0;flex:1}._file-item-body_lmij6_34{display:flex;align-items:center;gap:8px}._file-item-footer_lmij6_40{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-small)}._file-item-row_lmij6_47{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-item-col_lmij6_53{margin-top:2px;gap:2px}._file-item-wrap_lmij6_18{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:8px}._file-item-panel_lmij6_66{display:flex;align-items:center}._file-item-action-group_lmij6_71{display:flex;align-items:center;gap:4px}._file-item-action-group-disabled_lmij6_77{opacity:.45;pointer-events:none}
|
|
1
|
+
._upload-root_xoraq_1{max-width:xl}._upload-container_xoraq_5{font-size:12px;color:var(--font-color-grey)}._upload-wrapper_xoraq_10{color:var(--primary-color);cursor:pointer}._upload-wrapper_xoraq_10:hover{text-decoration:underline}._upload-inner_xoraq_18{display:block}._upload-header_xoraq_22{font-size:var(--font-size-small);color:var(--font-color-grey)}._upload-body_xoraq_27{border-radius:8px;border-width:1px;border-style:solid;padding:16px}._upload-footer_xoraq_34{font-size:var(--font-size-small);font-weight:500;color:var(--font-color-grey)}._upload-row_xoraq_40{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-small)}._upload-col_xoraq_47{display:flex;align-items:center;gap:8px;font-size:var(--font-size-small)}._upload-wrap_xoraq_10{display:block}._upload-panel_xoraq_58{font-size:12px}._upload-card_xoraq_62{padding:12px;font-size:var(--font-size-small)}._upload-item_xoraq_67{font-size:var(--font-size-small);margin-top:8px;display:block}._upload-link_xoraq_73{margin-top:12px}._upload-label_xoraq_77{display:flex;align-items:center;gap:8px;min-width:0}._upload-value_xoraq_84{color:var(--font-color-grey-1);flex-shrink:0}._upload-meta_xoraq_89{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._upload-icon_xoraq_95{margin:0!important;flex-shrink:0}._upload-title_xoraq_100{font-size:12px;margin-left:0!important;flex-shrink:0}._upload-desc_xoraq_106{flex-shrink:0}._upload-actions_xoraq_110{font-size:30px;margin-bottom:8px}._upload-toolbar_xoraq_115{color:var(--font-color-grey)}._upload-toolbar_xoraq_115:hover{border-color:var(--primary-color)}._upload-toolbar_xoraq_115:hover{color:var(--primary-color)}._upload-list_xoraq_125{margin-top:8px}._upload-file-row_xoraq_129{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-radius:4px;background-color:var(--bg-color-grey);border:1px solid var(--font-color-grey-4)}._upload-file-row-error_xoraq_140{border-color:#f53f3f59;color:var(--error-color)}._upload-drag-icon_xoraq_145{font-size:30px;margin-bottom:8px;color:var(--primary-color)}._app-tour-root_ybirw_1{font-size:12px;color:var(--font-color-grey-1)}._common-filter-root_kdoz3_1{background-color:var(--bg-color-white);margin-bottom:16px}._common-filter-container_kdoz3_6{display:flex;align-items:center;gap:12px}._common-filter-label_kdoz3_12{flex-shrink:0;font-size:var(--font-size-default);font-weight:500;color:#374151}._common-filter-content_kdoz3_19{display:flex;flex:1;align-items:flex-start;justify-content:space-between}._common-filter-items_kdoz3_26{display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:8px}._common-filter-extra_kdoz3_34{flex-shrink:0;margin-left:16px}._common-filter-selected_kdoz3_39{display:flex;align-items:center;justify-content:space-between;padding-top:12px}._common-filter-selected-main_kdoz3_46{display:flex;align-items:baseline;gap:8px}._common-filter-selected-title_kdoz3_52{font-size:12px;font-weight:500;color:var(--font-color-grey)}._common-filter-selected-tags_kdoz3_58{flex:1}._common-filter-tag_kdoz3_62{display:flex;align-items:center;gap:4px}._common-filter-tag-label_kdoz3_68{font-size:12px}._common-filter-tag-close_kdoz3_72{font-size:12px;cursor:pointer;margin-left:2px;opacity:.6}._common-filter-tag-close_kdoz3_72:hover{opacity:1}._common-filter-clear-btn_kdoz3_82{padding:0!important;height:auto!important;font-size:12px}._file-link-inner_uetzp_1{flex-shrink:0}._file-link-row_uetzp_5{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-link-actions_uetzp_11{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease,background-color .2s ease}._file-link-actions_uetzp_11:hover{color:var(--primary-color)}._file-link-toolbar_uetzp_22{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-list_irbqy_1{position:relative}._file-preview-empty_irbqy_5{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-white)}._file-preview-loading_irbqy_15{width:100%;padding-top:80px;padding-bottom:80px}._file-preview-content_irbqy_21{padding:16px;font-size:var(--font-size-small);white-space:pre-wrap;overflow:auto;max-height:70vh;background-color:var(--bg-color-grey)}._file-preview-aside_irbqy_30{padding:24px;overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-main_irbqy_37{display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;max-height:70vh}._file-preview-section_irbqy_46{max-width:100%;max-height:65vh;object-fit:contain}._file-preview-group_irbqy_52{width:100%}._file-preview-cell_irbqy_56{overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-overlay_irbqy_62{position:relative;display:flex;align-items:center;justify-content:center}._file-preview-badge_irbqy_69{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:48px;padding-bottom:48px;gap:16px}._file-preview-tag_irbqy_79{position:relative;display:flex;align-items:center;justify-content:center;padding:16px}._file-preview-hint_irbqy_87{max-width:100%;max-height:65vh}._file-preview-sider_irbqy_92{font-size:48px}._file-preview-nav_irbqy_96{text-align:center}._file-preview-menu_irbqy_100{color:var(--font-color-grey);margin-bottom:4px}._file-preview-user-menu_irbqy_105{font-size:12px;color:var(--font-color-grey-1)}._file-preview-avatar_irbqy_110{display:flex;align-items:center;justify-content:center;padding:32px}._file-preview-upload_irbqy_117{width:100%;max-width:1024px}._file-preview-filter_irbqy_122{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--font-color-grey-4)}._file-preview_irbqy_1{display:flex;flex-direction:column;width:100%}._file-preview-header_irbqy_139{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;width:100%}._file-preview-info_irbqy_148{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._file-preview-icon_irbqy_156{display:inline-flex;flex-shrink:0}._file-preview-name_irbqy_161{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}._file-preview-size_irbqy_168{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-preview-body_irbqy_174{width:100%}._file-preview-iframe_irbqy_178{display:block;width:100%;height:70vh;border:none;background:var(--bg-color-grey)}._file-preview-media-wrap_irbqy_186{display:flex;justify-content:center;width:100%}._file-preview-image_irbqy_192{width:100%;max-height:70vh;object-fit:contain}._file-preview-video_irbqy_198{width:100%;max-height:70vh;background:#000}._file-preview-audio-wrap_irbqy_204{display:flex;align-items:center;justify-content:center;width:100%;padding:48px 16px}._file-preview-audio_irbqy_204{width:100%}._file-preview-office-wrap_irbqy_216{width:100%;min-height:400px}._file-preview-office-inner_irbqy_221{width:100%;min-height:400px;overflow:auto;max-height:70vh}._file-preview-text_irbqy_228{margin:0;padding:16px;width:100%;max-height:70vh;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:var(--font-size-small);background:var(--bg-color-grey);box-sizing:border-box}._file-preview-table_irbqy_241{font-weight:500}._file-preview-link_1rk52_1{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease}._file-preview-link_1rk52_1:hover{color:var(--primary-color)}._file-preview-link-disabled_1rk52_12{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);color:var(--font-color-grey-1);cursor:not-allowed}._file-preview-link-inner_1rk52_21{flex-shrink:0}._file-preview-link-name_1rk52_25{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-link-type_1rk52_31{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._tags-tag-list_d5l57_1{display:flex;align-items:center;gap:4px;flex-wrap:wrap}._tags-tag-list-nowrap_d5l57_8{flex-wrap:nowrap}._tags-tag-list-tooltip_d5l57_12{max-width:320px}._filter-panel-body_tjvgz_1{margin-bottom:12px}._filter-panel-actions_tjvgz_5{display:flex;justify-content:flex-end;gap:8px}._filter-trigger-root_115kh_1{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border-radius:4px;padding:2px 6px;font-size:12px;transition:color .2s ease,background-color .2s ease}._filter-trigger-active_115kh_12{background-color:var(--primary-color);color:var(--bg-color-white)}._filter-trigger-inactive_115kh_17{color:#374151}._filter-trigger-inactive_115kh_17:hover{color:var(--primary-color);background-color:var(--primary-color-bg)}._filter-trigger-chevron_115kh_25{font-size:10px}._filter-date-range-quick-options_ctl7u_1{margin-bottom:12px;display:flex;flex-wrap:wrap;gap:8px}._filter-date-range-quick-option_ctl7u_1{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:var(--font-size-small)}._filter-date-range-quick-option_ctl7u_1:hover{background-color:var(--primary-color-bg)}._filter-date-range-quick-option-active_ctl7u_18{background-color:var(--primary-color);color:var(--bg-color-white);font-weight:500}._filter-date-range-picker_ctl7u_24{width:100%}._filter-number-range-inputs_y3pfu_1{display:flex;align-items:center;gap:8px}._filter-number-range-separator_y3pfu_7{color:var(--font-color-grey-1)}._filter-number-range-unit_y3pfu_11{font-size:var(--font-size-small);color:var(--font-color-grey)}._person-option-row-root_lf6i9_1{font-size:var(--font-size-small)}._person-option-row-container_lf6i9_5{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._person-option-row-wrapper_lf6i9_11{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--font-color-grey-1);font-size:12px}._person-option-row-inner_lf6i9_19{margin-left:auto;flex-shrink:0;color:var(--font-color-grey-1)}._person-option-row-inner_lf6i9_19:hover{color:var(--primary-color)}._person-option-row-person-row_lf6i9_28{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._filter-select-search_1esgk_1{margin-bottom:12px}._filter-select-options_1esgk_5{max-height:300px;overflow:auto}._filter-select-option_1esgk_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-select-option_1esgk_5:hover{background-color:var(--bg-color-grey)}._filter-select-option-selected_1esgk_23{color:var(--primary-color);font-weight:500}._filter-select-option-check_1esgk_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-select-empty_1esgk_34{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-select-selected-bar_1esgk_42{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-select-selected-label_1esgk_49{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-select-selected-tag_1esgk_55{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-select-selected-remove_1esgk_68{font-size:10px}._filter-tree-select-search_he1ck_1{margin-bottom:12px}._filter-tree-select-options_he1ck_5{max-height:300px;overflow:auto}._filter-tree-select-option_he1ck_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-tree-select-option_he1ck_5:hover{background-color:var(--bg-color-grey)}._filter-tree-select-option-selected_he1ck_23{color:var(--primary-color);font-weight:500}._filter-tree-select-option-check_he1ck_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-tree-select-expand-icon_he1ck_34{display:inline-flex;width:16px;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;color:var(--font-color-grey-1)}._filter-tree-select-expand-placeholder_he1ck_44{display:inline-flex;width:16px;flex-shrink:0}._filter-tree-select-node-label_he1ck_50{flex:1}._filter-tree-select-empty_he1ck_54{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-tree-select-selected-bar_he1ck_62{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-tree-select-selected-label_he1ck_69{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-tree-select-selected-tag_he1ck_75{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-tree-select-selected-remove_he1ck_88{font-size:10px}._page-header-layout-root_13o9c_1{display:flex;align-items:center;justify-content:space-between}._page-header-layout-container_13o9c_7{display:flex;align-items:center}._page-header-layout-wrapper_13o9c_12{font-size:var(--font-size-18);font-weight:600}._page-header-layout-inner_13o9c_17{margin-bottom:16px;padding:8px 12px;background-color:var(--primary-color-bg);border:1px solid var(--primary-color-border);border-radius:4px;font-size:var(--font-size-small);color:var(--primary-color)}._stat-card-clickable_xovsh_1{cursor:pointer}._stat-card-clickable_xovsh_1 .ant-statistic-content,._stat-card-clickable_xovsh_1 .ant-statistic-content .ant-statistic-content-prefix{display:flex!important;align-items:center}._stat-pending-breakdown-root_85di3_1{font-size:12px;color:var(--font-color-grey-1);margin-bottom:8px}._stat-pending-breakdown-container_85di3_7{font-size:12px;font-weight:400;color:var(--font-color-grey-1);margin-top:4px;line-height:var(--line-height-default)}._stat-pending-breakdown-detail-divider_85di3_15{margin-top:12px;padding-top:12px;border-top:1px solid var(--font-color-grey-4)}._step-modal-root_1ccyj_1{display:flex;align-items:center;gap:8px}._step-modal-container_1ccyj_7{flex:1}._step-modal-wrapper_1ccyj_11{margin-bottom:24px}._virtual-scrollbar-root_hy6p8_1{position:relative;display:flex;flex-direction:column;overflow:hidden;min-height:0;min-width:0}._virtual-scrollbar-viewport_hy6p8_14{flex:1 1 auto;width:100%;height:100%;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}._virtual-scrollbar-viewport_hy6p8_14::-webkit-scrollbar{display:none}._virtual-scrollbar-track_hy6p8_27{opacity:1;pointer-events:auto}._virtual-scrollbar-track-vertical_hy6p8_32{position:absolute;z-index:2;opacity:0;pointer-events:none;transition:opacity .2s ease;top:2px;right:2px;bottom:2px;width:6px}._virtual-scrollbar-track-horizontal_hy6p8_44{opacity:1;pointer-events:auto}._virtual-scrollbar-thumb_hy6p8_49{top:0;bottom:0;min-width:24px}._file-item-root_lmij6_1{transition:color .2s ease,background-color .2s ease}._file-item-root_lmij6_1:hover{background-color:var(--bg-color-grey)}._file-item-container_lmij6_8{display:flex;align-items:center;justify-content:space-between;padding:6px 8px}._file-item-wrapper_lmij6_18{display:flex;gap:8px;min-width:0;flex:1}._file-item-inner_lmij6_25{flex-shrink:0}._file-item-header_lmij6_29{min-width:0;flex:1}._file-item-body_lmij6_34{display:flex;align-items:center;gap:8px}._file-item-footer_lmij6_40{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-small)}._file-item-row_lmij6_47{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-item-col_lmij6_53{margin-top:2px;gap:2px}._file-item-wrap_lmij6_18{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:8px}._file-item-panel_lmij6_66{display:flex;align-items:center}._file-item-action-group_lmij6_71{display:flex;align-items:center;gap:4px}._file-item-action-group-disabled_lmij6_77{opacity:.45;pointer-events:none}.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{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%}
|
package/dist/styles/global.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
._upload-root_xoraq_1{max-width:xl}._upload-container_xoraq_5{font-size:12px;color:var(--font-color-grey)}._upload-wrapper_xoraq_10{color:var(--primary-color);cursor:pointer}._upload-wrapper_xoraq_10:hover{text-decoration:underline}._upload-inner_xoraq_18{display:block}._upload-header_xoraq_22{font-size:var(--font-size-small);color:var(--font-color-grey)}._upload-body_xoraq_27{border-radius:8px;border-width:1px;border-style:solid;padding:16px}._upload-footer_xoraq_34{font-size:var(--font-size-small);font-weight:500;color:var(--font-color-grey)}._upload-row_xoraq_40{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-small)}._upload-col_xoraq_47{display:flex;align-items:center;gap:8px;font-size:var(--font-size-small)}._upload-wrap_xoraq_10{display:block}._upload-panel_xoraq_58{font-size:12px}._upload-card_xoraq_62{padding:12px;font-size:var(--font-size-small)}._upload-item_xoraq_67{font-size:var(--font-size-small);margin-top:8px;display:block}._upload-link_xoraq_73{margin-top:12px}._upload-label_xoraq_77{display:flex;align-items:center;gap:8px;min-width:0}._upload-value_xoraq_84{color:var(--font-color-grey-1);flex-shrink:0}._upload-meta_xoraq_89{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._upload-icon_xoraq_95{margin:0!important;flex-shrink:0}._upload-title_xoraq_100{font-size:12px;margin-left:0!important;flex-shrink:0}._upload-desc_xoraq_106{flex-shrink:0}._upload-actions_xoraq_110{font-size:30px;margin-bottom:8px}._upload-toolbar_xoraq_115{color:var(--font-color-grey)}._upload-toolbar_xoraq_115:hover{border-color:var(--primary-color)}._upload-toolbar_xoraq_115:hover{color:var(--primary-color)}._upload-list_xoraq_125{margin-top:8px}._upload-file-row_xoraq_129{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-radius:4px;background-color:var(--bg-color-grey);border:1px solid var(--font-color-grey-4)}._upload-file-row-error_xoraq_140{border-color:#f53f3f59;color:var(--error-color)}._upload-drag-icon_xoraq_145{font-size:30px;margin-bottom:8px;color:var(--primary-color)}._app-tour-root_ybirw_1{font-size:12px;color:var(--font-color-grey-1)}._common-filter-root_kdoz3_1{background-color:var(--bg-color-white);margin-bottom:16px}._common-filter-container_kdoz3_6{display:flex;align-items:center;gap:12px}._common-filter-label_kdoz3_12{flex-shrink:0;font-size:var(--font-size-default);font-weight:500;color:#374151}._common-filter-content_kdoz3_19{display:flex;flex:1;align-items:flex-start;justify-content:space-between}._common-filter-items_kdoz3_26{display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:8px}._common-filter-extra_kdoz3_34{flex-shrink:0;margin-left:16px}._common-filter-selected_kdoz3_39{display:flex;align-items:center;justify-content:space-between;padding-top:12px}._common-filter-selected-main_kdoz3_46{display:flex;align-items:baseline;gap:8px}._common-filter-selected-title_kdoz3_52{font-size:12px;font-weight:500;color:var(--font-color-grey)}._common-filter-selected-tags_kdoz3_58{flex:1}._common-filter-tag_kdoz3_62{display:flex;align-items:center;gap:4px}._common-filter-tag-label_kdoz3_68{font-size:12px}._common-filter-tag-close_kdoz3_72{font-size:12px;cursor:pointer;margin-left:2px;opacity:.6}._common-filter-tag-close_kdoz3_72:hover{opacity:1}._common-filter-clear-btn_kdoz3_82{padding:0!important;height:auto!important;font-size:12px}._file-link-inner_uetzp_1{flex-shrink:0}._file-link-row_uetzp_5{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-link-actions_uetzp_11{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease,background-color .2s ease}._file-link-actions_uetzp_11:hover{color:var(--primary-color)}._file-link-toolbar_uetzp_22{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-list_1yfht_1{position:relative}._file-preview-empty_1yfht_5{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-white)}._file-preview-loading_1yfht_15{width:100%;padding-top:80px;padding-bottom:80px}._file-preview-content_1yfht_21{padding:16px;font-size:var(--font-size-small);white-space:pre-wrap;overflow:auto;max-height:70vh;background-color:var(--bg-color-grey)}._file-preview-aside_1yfht_30{padding:24px;overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-main_1yfht_37{display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;max-height:70vh}._file-preview-section_1yfht_46{max-width:100%;max-height:65vh;object-fit:contain}._file-preview-group_1yfht_52{width:100%}._file-preview-cell_1yfht_56{overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-overlay_1yfht_62{position:relative;display:flex;align-items:center;justify-content:center}._file-preview-badge_1yfht_69{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:48px;padding-bottom:48px;gap:16px}._file-preview-tag_1yfht_79{position:relative;display:flex;align-items:center;justify-content:center;padding:16px}._file-preview-hint_1yfht_87{max-width:100%;max-height:65vh}._file-preview-sider_1yfht_92{font-size:48px}._file-preview-nav_1yfht_96{text-align:center}._file-preview-menu_1yfht_100{color:var(--font-color-grey);margin-bottom:4px}._file-preview-user-menu_1yfht_105{font-size:12px;color:var(--font-color-grey-1)}._file-preview-avatar_1yfht_110{display:flex;align-items:center;justify-content:center;padding:32px}._file-preview-upload_1yfht_117{width:100%;max-width:1024px}._file-preview-filter_1yfht_122{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--font-color-grey-4)}._file-preview-table_1yfht_133{font-weight:500}._tags-tag-list_d5l57_1{display:flex;align-items:center;gap:4px;flex-wrap:wrap}._tags-tag-list-nowrap_d5l57_8{flex-wrap:nowrap}._tags-tag-list-tooltip_d5l57_12{max-width:320px}._filter-panel-body_tjvgz_1{margin-bottom:12px}._filter-panel-actions_tjvgz_5{display:flex;justify-content:flex-end;gap:8px}._filter-trigger-root_115kh_1{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border-radius:4px;padding:2px 6px;font-size:12px;transition:color .2s ease,background-color .2s ease}._filter-trigger-active_115kh_12{background-color:var(--primary-color);color:var(--bg-color-white)}._filter-trigger-inactive_115kh_17{color:#374151}._filter-trigger-inactive_115kh_17:hover{color:var(--primary-color);background-color:var(--primary-color-bg)}._filter-trigger-chevron_115kh_25{font-size:10px}._filter-date-range-quick-options_ctl7u_1{margin-bottom:12px;display:flex;flex-wrap:wrap;gap:8px}._filter-date-range-quick-option_ctl7u_1{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:var(--font-size-small)}._filter-date-range-quick-option_ctl7u_1:hover{background-color:var(--primary-color-bg)}._filter-date-range-quick-option-active_ctl7u_18{background-color:var(--primary-color);color:var(--bg-color-white);font-weight:500}._filter-date-range-picker_ctl7u_24{width:100%}._filter-number-range-inputs_y3pfu_1{display:flex;align-items:center;gap:8px}._filter-number-range-separator_y3pfu_7{color:var(--font-color-grey-1)}._filter-number-range-unit_y3pfu_11{font-size:var(--font-size-small);color:var(--font-color-grey)}._person-option-row-root_lf6i9_1{font-size:var(--font-size-small)}._person-option-row-container_lf6i9_5{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._person-option-row-wrapper_lf6i9_11{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--font-color-grey-1);font-size:12px}._person-option-row-inner_lf6i9_19{margin-left:auto;flex-shrink:0;color:var(--font-color-grey-1)}._person-option-row-inner_lf6i9_19:hover{color:var(--primary-color)}._person-option-row-person-row_lf6i9_28{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._filter-select-search_1esgk_1{margin-bottom:12px}._filter-select-options_1esgk_5{max-height:300px;overflow:auto}._filter-select-option_1esgk_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-select-option_1esgk_5:hover{background-color:var(--bg-color-grey)}._filter-select-option-selected_1esgk_23{color:var(--primary-color);font-weight:500}._filter-select-option-check_1esgk_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-select-empty_1esgk_34{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-select-selected-bar_1esgk_42{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-select-selected-label_1esgk_49{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-select-selected-tag_1esgk_55{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-select-selected-remove_1esgk_68{font-size:10px}._filter-tree-select-search_he1ck_1{margin-bottom:12px}._filter-tree-select-options_he1ck_5{max-height:300px;overflow:auto}._filter-tree-select-option_he1ck_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-tree-select-option_he1ck_5:hover{background-color:var(--bg-color-grey)}._filter-tree-select-option-selected_he1ck_23{color:var(--primary-color);font-weight:500}._filter-tree-select-option-check_he1ck_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-tree-select-expand-icon_he1ck_34{display:inline-flex;width:16px;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;color:var(--font-color-grey-1)}._filter-tree-select-expand-placeholder_he1ck_44{display:inline-flex;width:16px;flex-shrink:0}._filter-tree-select-node-label_he1ck_50{flex:1}._filter-tree-select-empty_he1ck_54{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-tree-select-selected-bar_he1ck_62{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-tree-select-selected-label_he1ck_69{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-tree-select-selected-tag_he1ck_75{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-tree-select-selected-remove_he1ck_88{font-size:10px}._page-header-layout-root_13o9c_1{display:flex;align-items:center;justify-content:space-between}._page-header-layout-container_13o9c_7{display:flex;align-items:center}._page-header-layout-wrapper_13o9c_12{font-size:var(--font-size-18);font-weight:600}._page-header-layout-inner_13o9c_17{margin-bottom:16px;padding:8px 12px;background-color:var(--primary-color-bg);border:1px solid var(--primary-color-border);border-radius:4px;font-size:var(--font-size-small);color:var(--primary-color)}._stat-card-clickable_xovsh_1{cursor:pointer}._stat-card-clickable_xovsh_1 .ant-statistic-content,._stat-card-clickable_xovsh_1 .ant-statistic-content .ant-statistic-content-prefix{display:flex!important;align-items:center}._stat-pending-breakdown-root_85di3_1{font-size:12px;color:var(--font-color-grey-1);margin-bottom:8px}._stat-pending-breakdown-container_85di3_7{font-size:12px;font-weight:400;color:var(--font-color-grey-1);margin-top:4px;line-height:var(--line-height-default)}._stat-pending-breakdown-detail-divider_85di3_15{margin-top:12px;padding-top:12px;border-top:1px solid var(--font-color-grey-4)}._step-modal-root_1ccyj_1{display:flex;align-items:center;gap:8px}._step-modal-container_1ccyj_7{flex:1}._step-modal-wrapper_1ccyj_11{margin-bottom:24px}._virtual-scrollbar-root_hy6p8_1{position:relative;display:flex;flex-direction:column;overflow:hidden;min-height:0;min-width:0}._virtual-scrollbar-viewport_hy6p8_14{flex:1 1 auto;width:100%;height:100%;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}._virtual-scrollbar-viewport_hy6p8_14::-webkit-scrollbar{display:none}._virtual-scrollbar-track_hy6p8_27{opacity:1;pointer-events:auto}._virtual-scrollbar-track-vertical_hy6p8_32{position:absolute;z-index:2;opacity:0;pointer-events:none;transition:opacity .2s ease;top:2px;right:2px;bottom:2px;width:6px}._virtual-scrollbar-track-horizontal_hy6p8_44{opacity:1;pointer-events:auto}._virtual-scrollbar-thumb_hy6p8_49{top:0;bottom:0;min-width:24px}._file-item-root_lmij6_1{transition:color .2s ease,background-color .2s ease}._file-item-root_lmij6_1:hover{background-color:var(--bg-color-grey)}._file-item-container_lmij6_8{display:flex;align-items:center;justify-content:space-between;padding:6px 8px}._file-item-wrapper_lmij6_18{display:flex;gap:8px;min-width:0;flex:1}._file-item-inner_lmij6_25{flex-shrink:0}._file-item-header_lmij6_29{min-width:0;flex:1}._file-item-body_lmij6_34{display:flex;align-items:center;gap:8px}._file-item-footer_lmij6_40{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-small)}._file-item-row_lmij6_47{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-item-col_lmij6_53{margin-top:2px;gap:2px}._file-item-wrap_lmij6_18{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:8px}._file-item-panel_lmij6_66{display:flex;align-items:center}._file-item-action-group_lmij6_71{display:flex;align-items:center;gap:4px}._file-item-action-group-disabled_lmij6_77{opacity:.45;pointer-events:none}
|
|
1
|
+
._upload-root_xoraq_1{max-width:xl}._upload-container_xoraq_5{font-size:12px;color:var(--font-color-grey)}._upload-wrapper_xoraq_10{color:var(--primary-color);cursor:pointer}._upload-wrapper_xoraq_10:hover{text-decoration:underline}._upload-inner_xoraq_18{display:block}._upload-header_xoraq_22{font-size:var(--font-size-small);color:var(--font-color-grey)}._upload-body_xoraq_27{border-radius:8px;border-width:1px;border-style:solid;padding:16px}._upload-footer_xoraq_34{font-size:var(--font-size-small);font-weight:500;color:var(--font-color-grey)}._upload-row_xoraq_40{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-small)}._upload-col_xoraq_47{display:flex;align-items:center;gap:8px;font-size:var(--font-size-small)}._upload-wrap_xoraq_10{display:block}._upload-panel_xoraq_58{font-size:12px}._upload-card_xoraq_62{padding:12px;font-size:var(--font-size-small)}._upload-item_xoraq_67{font-size:var(--font-size-small);margin-top:8px;display:block}._upload-link_xoraq_73{margin-top:12px}._upload-label_xoraq_77{display:flex;align-items:center;gap:8px;min-width:0}._upload-value_xoraq_84{color:var(--font-color-grey-1);flex-shrink:0}._upload-meta_xoraq_89{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._upload-icon_xoraq_95{margin:0!important;flex-shrink:0}._upload-title_xoraq_100{font-size:12px;margin-left:0!important;flex-shrink:0}._upload-desc_xoraq_106{flex-shrink:0}._upload-actions_xoraq_110{font-size:30px;margin-bottom:8px}._upload-toolbar_xoraq_115{color:var(--font-color-grey)}._upload-toolbar_xoraq_115:hover{border-color:var(--primary-color)}._upload-toolbar_xoraq_115:hover{color:var(--primary-color)}._upload-list_xoraq_125{margin-top:8px}._upload-file-row_xoraq_129{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-radius:4px;background-color:var(--bg-color-grey);border:1px solid var(--font-color-grey-4)}._upload-file-row-error_xoraq_140{border-color:#f53f3f59;color:var(--error-color)}._upload-drag-icon_xoraq_145{font-size:30px;margin-bottom:8px;color:var(--primary-color)}._app-tour-root_ybirw_1{font-size:12px;color:var(--font-color-grey-1)}._common-filter-root_kdoz3_1{background-color:var(--bg-color-white);margin-bottom:16px}._common-filter-container_kdoz3_6{display:flex;align-items:center;gap:12px}._common-filter-label_kdoz3_12{flex-shrink:0;font-size:var(--font-size-default);font-weight:500;color:#374151}._common-filter-content_kdoz3_19{display:flex;flex:1;align-items:flex-start;justify-content:space-between}._common-filter-items_kdoz3_26{display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:8px}._common-filter-extra_kdoz3_34{flex-shrink:0;margin-left:16px}._common-filter-selected_kdoz3_39{display:flex;align-items:center;justify-content:space-between;padding-top:12px}._common-filter-selected-main_kdoz3_46{display:flex;align-items:baseline;gap:8px}._common-filter-selected-title_kdoz3_52{font-size:12px;font-weight:500;color:var(--font-color-grey)}._common-filter-selected-tags_kdoz3_58{flex:1}._common-filter-tag_kdoz3_62{display:flex;align-items:center;gap:4px}._common-filter-tag-label_kdoz3_68{font-size:12px}._common-filter-tag-close_kdoz3_72{font-size:12px;cursor:pointer;margin-left:2px;opacity:.6}._common-filter-tag-close_kdoz3_72:hover{opacity:1}._common-filter-clear-btn_kdoz3_82{padding:0!important;height:auto!important;font-size:12px}._file-link-inner_uetzp_1{flex-shrink:0}._file-link-row_uetzp_5{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-link-actions_uetzp_11{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease,background-color .2s ease}._file-link-actions_uetzp_11:hover{color:var(--primary-color)}._file-link-toolbar_uetzp_22{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-list_irbqy_1{position:relative}._file-preview-empty_irbqy_5{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-white)}._file-preview-loading_irbqy_15{width:100%;padding-top:80px;padding-bottom:80px}._file-preview-content_irbqy_21{padding:16px;font-size:var(--font-size-small);white-space:pre-wrap;overflow:auto;max-height:70vh;background-color:var(--bg-color-grey)}._file-preview-aside_irbqy_30{padding:24px;overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-main_irbqy_37{display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;max-height:70vh}._file-preview-section_irbqy_46{max-width:100%;max-height:65vh;object-fit:contain}._file-preview-group_irbqy_52{width:100%}._file-preview-cell_irbqy_56{overflow:auto;max-height:70vh;background-color:var(--bg-color-white)}._file-preview-overlay_irbqy_62{position:relative;display:flex;align-items:center;justify-content:center}._file-preview-badge_irbqy_69{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:48px;padding-bottom:48px;gap:16px}._file-preview-tag_irbqy_79{position:relative;display:flex;align-items:center;justify-content:center;padding:16px}._file-preview-hint_irbqy_87{max-width:100%;max-height:65vh}._file-preview-sider_irbqy_92{font-size:48px}._file-preview-nav_irbqy_96{text-align:center}._file-preview-menu_irbqy_100{color:var(--font-color-grey);margin-bottom:4px}._file-preview-user-menu_irbqy_105{font-size:12px;color:var(--font-color-grey-1)}._file-preview-avatar_irbqy_110{display:flex;align-items:center;justify-content:center;padding:32px}._file-preview-upload_irbqy_117{width:100%;max-width:1024px}._file-preview-filter_irbqy_122{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--font-color-grey-4)}._file-preview_irbqy_1{display:flex;flex-direction:column;width:100%}._file-preview-header_irbqy_139{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;width:100%}._file-preview-info_irbqy_148{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._file-preview-icon_irbqy_156{display:inline-flex;flex-shrink:0}._file-preview-name_irbqy_161{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}._file-preview-size_irbqy_168{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-preview-body_irbqy_174{width:100%}._file-preview-iframe_irbqy_178{display:block;width:100%;height:70vh;border:none;background:var(--bg-color-grey)}._file-preview-media-wrap_irbqy_186{display:flex;justify-content:center;width:100%}._file-preview-image_irbqy_192{width:100%;max-height:70vh;object-fit:contain}._file-preview-video_irbqy_198{width:100%;max-height:70vh;background:#000}._file-preview-audio-wrap_irbqy_204{display:flex;align-items:center;justify-content:center;width:100%;padding:48px 16px}._file-preview-audio_irbqy_204{width:100%}._file-preview-office-wrap_irbqy_216{width:100%;min-height:400px}._file-preview-office-inner_irbqy_221{width:100%;min-height:400px;overflow:auto;max-height:70vh}._file-preview-text_irbqy_228{margin:0;padding:16px;width:100%;max-height:70vh;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:var(--font-size-small);background:var(--bg-color-grey);box-sizing:border-box}._file-preview-table_irbqy_241{font-weight:500}._file-preview-link_1rk52_1{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);transition:color .2s ease}._file-preview-link_1rk52_1:hover{color:var(--primary-color)}._file-preview-link-disabled_1rk52_12{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-small);color:var(--font-color-grey-1);cursor:not-allowed}._file-preview-link-inner_1rk52_21{flex-shrink:0}._file-preview-link-name_1rk52_25{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._file-preview-link-type_1rk52_31{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._tags-tag-list_d5l57_1{display:flex;align-items:center;gap:4px;flex-wrap:wrap}._tags-tag-list-nowrap_d5l57_8{flex-wrap:nowrap}._tags-tag-list-tooltip_d5l57_12{max-width:320px}._filter-panel-body_tjvgz_1{margin-bottom:12px}._filter-panel-actions_tjvgz_5{display:flex;justify-content:flex-end;gap:8px}._filter-trigger-root_115kh_1{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border-radius:4px;padding:2px 6px;font-size:12px;transition:color .2s ease,background-color .2s ease}._filter-trigger-active_115kh_12{background-color:var(--primary-color);color:var(--bg-color-white)}._filter-trigger-inactive_115kh_17{color:#374151}._filter-trigger-inactive_115kh_17:hover{color:var(--primary-color);background-color:var(--primary-color-bg)}._filter-trigger-chevron_115kh_25{font-size:10px}._filter-date-range-quick-options_ctl7u_1{margin-bottom:12px;display:flex;flex-wrap:wrap;gap:8px}._filter-date-range-quick-option_ctl7u_1{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:var(--font-size-small)}._filter-date-range-quick-option_ctl7u_1:hover{background-color:var(--primary-color-bg)}._filter-date-range-quick-option-active_ctl7u_18{background-color:var(--primary-color);color:var(--bg-color-white);font-weight:500}._filter-date-range-picker_ctl7u_24{width:100%}._filter-number-range-inputs_y3pfu_1{display:flex;align-items:center;gap:8px}._filter-number-range-separator_y3pfu_7{color:var(--font-color-grey-1)}._filter-number-range-unit_y3pfu_11{font-size:var(--font-size-small);color:var(--font-color-grey)}._person-option-row-root_lf6i9_1{font-size:var(--font-size-small)}._person-option-row-container_lf6i9_5{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._person-option-row-wrapper_lf6i9_11{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--font-color-grey-1);font-size:12px}._person-option-row-inner_lf6i9_19{margin-left:auto;flex-shrink:0;color:var(--font-color-grey-1)}._person-option-row-inner_lf6i9_19:hover{color:var(--primary-color)}._person-option-row-person-row_lf6i9_28{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._filter-select-search_1esgk_1{margin-bottom:12px}._filter-select-options_1esgk_5{max-height:300px;overflow:auto}._filter-select-option_1esgk_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-select-option_1esgk_5:hover{background-color:var(--bg-color-grey)}._filter-select-option-selected_1esgk_23{color:var(--primary-color);font-weight:500}._filter-select-option-check_1esgk_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-select-empty_1esgk_34{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-select-selected-bar_1esgk_42{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-select-selected-label_1esgk_49{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-select-selected-tag_1esgk_55{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-select-selected-remove_1esgk_68{font-size:10px}._filter-tree-select-search_he1ck_1{margin-bottom:12px}._filter-tree-select-options_he1ck_5{max-height:300px;overflow:auto}._filter-tree-select-option_he1ck_5{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:4px;padding:6px 8px;font-size:var(--font-size-small)}._filter-tree-select-option_he1ck_5:hover{background-color:var(--bg-color-grey)}._filter-tree-select-option-selected_he1ck_23{color:var(--primary-color);font-weight:500}._filter-tree-select-option-check_he1ck_28{margin-left:auto;font-size:12px;color:var(--primary-color)}._filter-tree-select-expand-icon_he1ck_34{display:inline-flex;width:16px;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;color:var(--font-color-grey-1)}._filter-tree-select-expand-placeholder_he1ck_44{display:inline-flex;width:16px;flex-shrink:0}._filter-tree-select-node-label_he1ck_50{flex:1}._filter-tree-select-empty_he1ck_54{padding-top:16px;padding-bottom:16px;text-align:center;font-size:var(--font-size-small);color:var(--font-color-grey-1)}._filter-tree-select-selected-bar_he1ck_62{margin-top:8px;border-top-width:1px;border-top-style:solid;padding-top:8px}._filter-tree-select-selected-label_he1ck_69{margin-bottom:4px;font-size:12px;color:var(--font-color-grey-1)}._filter-tree-select-selected-tag_he1ck_75{display:inline-flex;cursor:pointer;align-items:center;gap:4px;background-color:var(--bg-color-grey-1);padding:2px 6px;font-size:12px}._filter-tree-select-selected-remove_he1ck_88{font-size:10px}._page-header-layout-root_13o9c_1{display:flex;align-items:center;justify-content:space-between}._page-header-layout-container_13o9c_7{display:flex;align-items:center}._page-header-layout-wrapper_13o9c_12{font-size:var(--font-size-18);font-weight:600}._page-header-layout-inner_13o9c_17{margin-bottom:16px;padding:8px 12px;background-color:var(--primary-color-bg);border:1px solid var(--primary-color-border);border-radius:4px;font-size:var(--font-size-small);color:var(--primary-color)}._stat-card-clickable_xovsh_1{cursor:pointer}._stat-card-clickable_xovsh_1 .ant-statistic-content,._stat-card-clickable_xovsh_1 .ant-statistic-content .ant-statistic-content-prefix{display:flex!important;align-items:center}._stat-pending-breakdown-root_85di3_1{font-size:12px;color:var(--font-color-grey-1);margin-bottom:8px}._stat-pending-breakdown-container_85di3_7{font-size:12px;font-weight:400;color:var(--font-color-grey-1);margin-top:4px;line-height:var(--line-height-default)}._stat-pending-breakdown-detail-divider_85di3_15{margin-top:12px;padding-top:12px;border-top:1px solid var(--font-color-grey-4)}._step-modal-root_1ccyj_1{display:flex;align-items:center;gap:8px}._step-modal-container_1ccyj_7{flex:1}._step-modal-wrapper_1ccyj_11{margin-bottom:24px}._virtual-scrollbar-root_hy6p8_1{position:relative;display:flex;flex-direction:column;overflow:hidden;min-height:0;min-width:0}._virtual-scrollbar-viewport_hy6p8_14{flex:1 1 auto;width:100%;height:100%;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}._virtual-scrollbar-viewport_hy6p8_14::-webkit-scrollbar{display:none}._virtual-scrollbar-track_hy6p8_27{opacity:1;pointer-events:auto}._virtual-scrollbar-track-vertical_hy6p8_32{position:absolute;z-index:2;opacity:0;pointer-events:none;transition:opacity .2s ease;top:2px;right:2px;bottom:2px;width:6px}._virtual-scrollbar-track-horizontal_hy6p8_44{opacity:1;pointer-events:auto}._virtual-scrollbar-thumb_hy6p8_49{top:0;bottom:0;min-width:24px}._file-item-root_lmij6_1{transition:color .2s ease,background-color .2s ease}._file-item-root_lmij6_1:hover{background-color:var(--bg-color-grey)}._file-item-container_lmij6_8{display:flex;align-items:center;justify-content:space-between;padding:6px 8px}._file-item-wrapper_lmij6_18{display:flex;gap:8px;min-width:0;flex:1}._file-item-inner_lmij6_25{flex-shrink:0}._file-item-header_lmij6_29{min-width:0;flex:1}._file-item-body_lmij6_34{display:flex;align-items:center;gap:8px}._file-item-footer_lmij6_40{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-small)}._file-item-row_lmij6_47{flex-shrink:0;font-size:12px;color:var(--font-color-grey-1)}._file-item-col_lmij6_53{margin-top:2px;gap:2px}._file-item-wrap_lmij6_18{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:8px}._file-item-panel_lmij6_66{display:flex;align-items:center}._file-item-action-group_lmij6_71{display:flex;align-items:center;gap:4px}._file-item-action-group-disabled_lmij6_77{opacity:.45;pointer-events:none}.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{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%}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hkyhy/marsun-components-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "Marsun pure UI component library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -58,12 +58,15 @@
|
|
|
58
58
|
"react-router-dom": "^6.28.0 || ^7.0.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
+
"@js-preview/excel": "^1.7.14",
|
|
61
62
|
"@kne/button-group": "^0.1.24",
|
|
62
63
|
"ahooks": "^3.8.1",
|
|
63
64
|
"classnames": "^2.5.1",
|
|
64
65
|
"dayjs": "^1.11.13",
|
|
66
|
+
"docx-preview": "^0.3.7",
|
|
65
67
|
"lucide-react": "^1.18.0",
|
|
66
68
|
"mermaid": "^11.15.0",
|
|
69
|
+
"pptx-preview": "^1.0.7",
|
|
67
70
|
"prism-react-renderer": "^2.4.1",
|
|
68
71
|
"react-markdown": "^10.1.0",
|
|
69
72
|
"remark-gfm": "^4.0.1"
|