@eternalheart/react-file-preview 1.3.9 → 1.3.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/README.md +10 -0
- package/README.zh-CN.md +10 -0
- package/lib/FilePreviewContent.d.ts.map +1 -1
- package/lib/chunks/{index-B-H9HQiI.mjs → index-B0JUZ5rS.mjs} +10 -10
- package/lib/chunks/{index-B-H9HQiI.mjs.map → index-B0JUZ5rS.mjs.map} +1 -1
- package/lib/chunks/{index-r3q2xCCI.mjs → index-BAYc4aBz.mjs} +2 -2
- package/lib/chunks/{index-r3q2xCCI.mjs.map → index-BAYc4aBz.mjs.map} +1 -1
- package/lib/chunks/{index-BNUiNUWa.mjs → index-BOQJNL71.mjs} +2 -2
- package/lib/chunks/{index-BNUiNUWa.mjs.map → index-BOQJNL71.mjs.map} +1 -1
- package/lib/chunks/{index-BdYkTSTt.mjs → index-BkU8rK-0.mjs} +3 -3
- package/lib/chunks/{index-BdYkTSTt.mjs.map → index-BkU8rK-0.mjs.map} +1 -1
- package/lib/chunks/{index-CgV8T0G5.mjs → index-BnDoXBnH.mjs} +2 -2
- package/lib/chunks/{index-CgV8T0G5.mjs.map → index-BnDoXBnH.mjs.map} +1 -1
- package/lib/chunks/index-C5YHI0Zs.mjs +160 -0
- package/lib/chunks/index-C5YHI0Zs.mjs.map +1 -0
- package/lib/chunks/{index-Bv93wiEK.mjs → index-CGNWXFy3.mjs} +716 -666
- package/lib/chunks/index-CGNWXFy3.mjs.map +1 -0
- package/lib/chunks/{index-DdOEWhrk.mjs → index-CwmZQ-JO.mjs} +16 -16
- package/lib/chunks/{index-DdOEWhrk.mjs.map → index-CwmZQ-JO.mjs.map} +1 -1
- package/lib/chunks/{index-CKirCT35.mjs → index-CzflrElZ.mjs} +5 -5
- package/lib/chunks/{index-CKirCT35.mjs.map → index-CzflrElZ.mjs.map} +1 -1
- package/lib/chunks/{index-D8GtNeDn.mjs → index-CztCCF7q.mjs} +2 -2
- package/lib/chunks/{index-D8GtNeDn.mjs.map → index-CztCCF7q.mjs.map} +1 -1
- package/lib/chunks/{index-BGeyzo6u.mjs → index-DKEcGewg.mjs} +2 -2
- package/lib/chunks/{index-BGeyzo6u.mjs.map → index-DKEcGewg.mjs.map} +1 -1
- package/lib/chunks/{index-DV5Jd7Qe.mjs → index-DN8BQIqo.mjs} +2 -2
- package/lib/chunks/{index-DV5Jd7Qe.mjs.map → index-DN8BQIqo.mjs.map} +1 -1
- package/lib/chunks/{index-zEVVgWCH.mjs → index-DPpUj8Yy.mjs} +2 -2
- package/lib/chunks/{index-zEVVgWCH.mjs.map → index-DPpUj8Yy.mjs.map} +1 -1
- package/lib/chunks/{index-BSD3w5eG.mjs → index-DSAXdrgU.mjs} +2 -2
- package/lib/chunks/{index-BSD3w5eG.mjs.map → index-DSAXdrgU.mjs.map} +1 -1
- package/lib/chunks/{index-DGuiWJr7.mjs → index-DveR0rOk.mjs} +15 -15
- package/lib/chunks/{index-DGuiWJr7.mjs.map → index-DveR0rOk.mjs.map} +1 -1
- package/lib/chunks/{index-BqEuP_8r.mjs → index-QfO-sASN.mjs} +2 -2
- package/lib/chunks/{index-BqEuP_8r.mjs.map → index-QfO-sASN.mjs.map} +1 -1
- package/lib/chunks/{index-BcBe6KW7.mjs → index-h9bO9wmq.mjs} +4 -4
- package/lib/chunks/{index-BcBe6KW7.mjs.map → index-h9bO9wmq.mjs.map} +1 -1
- package/lib/chunks/index-mvSVNKlQ.mjs +228 -0
- package/lib/chunks/index-mvSVNKlQ.mjs.map +1 -0
- package/lib/chunks/{index-U3w45GW8.mjs → index-tecGXW2S.mjs} +43 -43
- package/lib/chunks/{index-U3w45GW8.mjs.map → index-tecGXW2S.mjs.map} +1 -1
- package/lib/chunks/{useShikiHighlight-DzEAK0S7.mjs → useShikiHighlight-DHFYu0BU.mjs} +3 -3
- package/lib/chunks/{useShikiHighlight-DzEAK0S7.mjs.map → useShikiHighlight-DHFYu0BU.mjs.map} +1 -1
- package/lib/index.cjs +22 -18
- package/lib/index.cjs.map +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.mjs +13 -12
- package/lib/renderers/Font/index.d.ts +6 -0
- package/lib/renderers/Font/index.d.ts.map +1 -0
- package/lib/renderers/Pdf/index.d.ts +0 -1
- package/lib/renderers/Pdf/index.d.ts.map +1 -1
- package/lib/renderers/lazy.d.ts +2 -0
- package/lib/renderers/lazy.d.ts.map +1 -1
- package/lib/utils/pdfConfig.d.ts +2 -2
- package/lib/utils/pdfConfig.d.ts.map +1 -1
- package/package.json +3 -2
- package/lib/chunks/index-Bv93wiEK.mjs.map +0 -1
- package/lib/chunks/index-DmepcY31.mjs +0 -96
- package/lib/chunks/index-DmepcY31.mjs.map +0 -1
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { jsxs as m, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { useState as N, useRef as w, useEffect as R, useCallback as L } from "react";
|
|
3
|
-
import { Document as H, Page as M } from "react-pdf";
|
|
4
|
-
import { u as P } from "./index-Bv93wiEK.mjs";
|
|
5
|
-
const q = ({
|
|
6
|
-
url: u,
|
|
7
|
-
zoom: x,
|
|
8
|
-
currentPage: s,
|
|
9
|
-
onPageChange: o,
|
|
10
|
-
onTotalPagesChange: E,
|
|
11
|
-
onPageWidthChange: h
|
|
12
|
-
}) => {
|
|
13
|
-
const k = P(), [c, D] = N(0), [l, b] = N(null), p = w(null), a = w(/* @__PURE__ */ new Map());
|
|
14
|
-
R(() => {
|
|
15
|
-
b(null);
|
|
16
|
-
}, [u]);
|
|
17
|
-
const S = ({ numPages: r }) => {
|
|
18
|
-
D(r), E(r), o(1);
|
|
19
|
-
}, j = (r) => {
|
|
20
|
-
console.error("PDF 加载错误:", r), b(k("pdf.load_failed"));
|
|
21
|
-
}, i = L(() => {
|
|
22
|
-
if (!p.current) return;
|
|
23
|
-
const r = p.current, t = r.scrollTop, f = r.clientHeight, n = t + f / 2;
|
|
24
|
-
let d = 1, g = 1 / 0;
|
|
25
|
-
a.current.forEach((A, _) => {
|
|
26
|
-
const v = A.getBoundingClientRect(), B = r.getBoundingClientRect(), C = v.top - B.top + v.height / 2 + t, y = Math.abs(C - n);
|
|
27
|
-
y < g && (g = y, d = _);
|
|
28
|
-
}), d !== s && o(d);
|
|
29
|
-
}, [s, o]);
|
|
30
|
-
R(() => {
|
|
31
|
-
const r = p.current;
|
|
32
|
-
if (r)
|
|
33
|
-
return r.addEventListener("scroll", i), () => r.removeEventListener("scroll", i);
|
|
34
|
-
}, [i]);
|
|
35
|
-
const T = L((r, t) => {
|
|
36
|
-
t ? a.current.set(r, t) : a.current.delete(r);
|
|
37
|
-
}, []);
|
|
38
|
-
return /* @__PURE__ */ m(
|
|
39
|
-
"div",
|
|
40
|
-
{
|
|
41
|
-
ref: p,
|
|
42
|
-
className: "rfp-flex rfp-flex-col rfp-items-center rfp-w-full rfp-h-full rfp-overflow-auto rfp-py-4 md:rfp-py-8 rfp-px-2 md:rfp-px-4",
|
|
43
|
-
children: [
|
|
44
|
-
l && /* @__PURE__ */ e("div", { className: "rfp-text-fg-secondary rfp-text-center", children: /* @__PURE__ */ e("p", { className: "rfp-text-lg", children: l }) }),
|
|
45
|
-
!l && /* @__PURE__ */ e(
|
|
46
|
-
H,
|
|
47
|
-
{
|
|
48
|
-
file: u,
|
|
49
|
-
onLoadSuccess: S,
|
|
50
|
-
onLoadError: j,
|
|
51
|
-
loading: /* @__PURE__ */ e("div", { className: "rfp-flex rfp-items-center rfp-justify-center rfp-min-h-screen", children: /* @__PURE__ */ e("div", { className: "rfp-w-12 rfp-h-12 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin" }) }),
|
|
52
|
-
children: /* @__PURE__ */ e("div", { className: "rfp-flex rfp-flex-col rfp-gap-4", children: Array.from(new Array(c), (r, t) => {
|
|
53
|
-
const f = t + 1;
|
|
54
|
-
return /* @__PURE__ */ m(
|
|
55
|
-
"div",
|
|
56
|
-
{
|
|
57
|
-
ref: (n) => T(f, n),
|
|
58
|
-
className: "rfp-relative",
|
|
59
|
-
children: [
|
|
60
|
-
/* @__PURE__ */ e(
|
|
61
|
-
M,
|
|
62
|
-
{
|
|
63
|
-
pageNumber: f,
|
|
64
|
-
scale: x,
|
|
65
|
-
loading: /* @__PURE__ */ e("div", { className: "rfp-flex rfp-items-center rfp-justify-center rfp-p-8 rfp-bg-surface-1 rfp-rounded-lg rfp-min-h-[600px]", children: /* @__PURE__ */ e("div", { className: "rfp-w-8 rfp-h-8 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin" }) }),
|
|
66
|
-
renderTextLayer: !1,
|
|
67
|
-
renderAnnotationLayer: !1,
|
|
68
|
-
className: "rfp-shadow-2xl",
|
|
69
|
-
onRenderSuccess: (n) => {
|
|
70
|
-
f === 1 && h && h(n.originalWidth || n.width / x);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
),
|
|
74
|
-
/* @__PURE__ */ e("div", { className: "rfp-absolute rfp-top-2 rfp-right-2 rfp-bg-surface-nav-hover rfp-backdrop-blur-sm rfp-text-fg-primary rfp-text-xs rfp-px-3 rfp-py-1 rfp-rounded-full", children: f })
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
`page_${f}`
|
|
78
|
-
);
|
|
79
|
-
}) })
|
|
80
|
-
}
|
|
81
|
-
),
|
|
82
|
-
c > 0 && /* @__PURE__ */ m("div", { className: "rfp-sticky rfp-bottom-2 md:rfp-bottom-4 rfp-mt-4 md:rfp-mt-8 rfp-bg-surface-nav-hover rfp-backdrop-blur-xl rfp-text-fg-primary rfp-px-4 rfp-py-2 md:rfp-px-6 md:rfp-py-3 rfp-rounded-full rfp-text-xs md:rfp-text-sm rfp-font-medium rfp-shadow-2xl rfp-border rfp-border-line-weak", children: [
|
|
83
|
-
"第 ",
|
|
84
|
-
s,
|
|
85
|
-
" 页 / 共 ",
|
|
86
|
-
c,
|
|
87
|
-
" 页"
|
|
88
|
-
] })
|
|
89
|
-
]
|
|
90
|
-
}
|
|
91
|
-
);
|
|
92
|
-
};
|
|
93
|
-
export {
|
|
94
|
-
q as PdfRenderer
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=index-DmepcY31.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DmepcY31.mjs","sources":["../../src/renderers/Pdf/index.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\nimport { Document, Page } from 'react-pdf';\nimport { useTranslator } from '../../i18n/LocaleContext';\n\n// 导入 PDF.js 配置\nimport '../../utils/pdfConfig';\n\ninterface PdfRendererProps {\n url: string;\n zoom: number;\n currentPage: number;\n onPageChange: (page: number) => void;\n onTotalPagesChange: (total: number) => void;\n onPageWidthChange?: (width: number) => void;\n}\n\nexport const PdfRenderer: React.FC<PdfRendererProps> = ({\n url,\n zoom,\n currentPage,\n onPageChange,\n onTotalPagesChange,\n onPageWidthChange,\n}) => {\n const t = useTranslator();\n const [numPages, setNumPages] = useState<number>(0);\n const [error, setError] = useState<string | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const pageRefs = useRef<Map<number, HTMLDivElement>>(new Map());\n\n useEffect(() => {\n setError(null);\n }, [url]);\n\n const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => {\n setNumPages(numPages);\n onTotalPagesChange(numPages);\n onPageChange(1);\n };\n\n const onDocumentLoadError = (error: Error) => {\n console.error('PDF 加载错误:', error);\n setError(t('pdf.load_failed'));\n };\n\n // 滚动时更新当前页码\n const handleScroll = useCallback(() => {\n if (!containerRef.current) return;\n\n const container = containerRef.current;\n const scrollTop = container.scrollTop;\n const containerHeight = container.clientHeight;\n const scrollCenter = scrollTop + containerHeight / 2;\n\n // 找到当前可见的页面\n let currentVisiblePage = 1;\n let minDistance = Infinity;\n\n pageRefs.current.forEach((pageElement, pageNumber) => {\n const rect = pageElement.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const pageCenter = rect.top - containerRect.top + rect.height / 2 + scrollTop;\n const distance = Math.abs(pageCenter - scrollCenter);\n\n if (distance < minDistance) {\n minDistance = distance;\n currentVisiblePage = pageNumber;\n }\n });\n\n if (currentVisiblePage !== currentPage) {\n onPageChange(currentVisiblePage);\n }\n }, [currentPage, onPageChange]);\n\n // 监听滚动事件\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n container.addEventListener('scroll', handleScroll);\n return () => container.removeEventListener('scroll', handleScroll);\n }, [handleScroll]);\n\n // 设置页面引用\n const setPageRef = useCallback((pageNumber: number, element: HTMLDivElement | null) => {\n if (element) {\n pageRefs.current.set(pageNumber, element);\n } else {\n pageRefs.current.delete(pageNumber);\n }\n }, []);\n\n return (\n <div\n ref={containerRef}\n className=\"rfp-flex rfp-flex-col rfp-items-center rfp-w-full rfp-h-full rfp-overflow-auto rfp-py-4 md:rfp-py-8 rfp-px-2 md:rfp-px-4\"\n >\n {error && (\n <div className=\"rfp-text-fg-secondary rfp-text-center\">\n <p className=\"rfp-text-lg\">{error}</p>\n </div>\n )}\n\n {!error && (\n <Document\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading={\n <div className=\"rfp-flex rfp-items-center rfp-justify-center rfp-min-h-screen\">\n <div className=\"rfp-w-12 rfp-h-12 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin\" />\n </div>\n }\n >\n <div className=\"rfp-flex rfp-flex-col rfp-gap-4\">\n {Array.from(new Array(numPages), (_, index) => {\n const pageNumber = index + 1;\n return (\n <div\n key={`page_${pageNumber}`}\n ref={(el) => setPageRef(pageNumber, el)}\n className=\"rfp-relative\"\n >\n <Page\n pageNumber={pageNumber}\n scale={zoom}\n loading={\n <div className=\"rfp-flex rfp-items-center rfp-justify-center rfp-p-8 rfp-bg-surface-1 rfp-rounded-lg rfp-min-h-[600px]\">\n <div className=\"rfp-w-8 rfp-h-8 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin\" />\n </div>\n }\n renderTextLayer={false}\n renderAnnotationLayer={false}\n className=\"rfp-shadow-2xl\"\n onRenderSuccess={(page) => {\n if (pageNumber === 1 && onPageWidthChange) {\n // 上报 scale=1 时的原始页面宽度\n onPageWidthChange(page.originalWidth || page.width / zoom);\n }\n }}\n />\n {/* 页码标签 */}\n <div className=\"rfp-absolute rfp-top-2 rfp-right-2 rfp-bg-surface-nav-hover rfp-backdrop-blur-sm rfp-text-fg-primary rfp-text-xs rfp-px-3 rfp-py-1 rfp-rounded-full\">\n {pageNumber}\n </div>\n </div>\n );\n })}\n </div>\n </Document>\n )}\n\n {/* 底部页码指示器 */}\n {numPages > 0 && (\n <div className=\"rfp-sticky rfp-bottom-2 md:rfp-bottom-4 rfp-mt-4 md:rfp-mt-8 rfp-bg-surface-nav-hover rfp-backdrop-blur-xl rfp-text-fg-primary rfp-px-4 rfp-py-2 md:rfp-px-6 md:rfp-py-3 rfp-rounded-full rfp-text-xs md:rfp-text-sm rfp-font-medium rfp-shadow-2xl rfp-border rfp-border-line-weak\">\n 第 {currentPage} 页 / 共 {numPages} 页\n </div>\n )}\n </div>\n );\n};\n"],"names":["PdfRenderer","url","zoom","currentPage","onPageChange","onTotalPagesChange","onPageWidthChange","t","useTranslator","numPages","setNumPages","useState","error","setError","containerRef","useRef","pageRefs","useEffect","onDocumentLoadSuccess","onDocumentLoadError","handleScroll","useCallback","container","scrollTop","containerHeight","scrollCenter","currentVisiblePage","minDistance","pageElement","pageNumber","rect","containerRect","pageCenter","distance","setPageRef","element","jsxs","jsx","Document","_","index","el","Page","page"],"mappings":"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"}
|