mirror of
https://github.com/OpenListTeam/OpenList-Frontend.git
synced 2026-03-13 11:20:24 +00:00
refactor(preview): remove pdf (#278)
This commit is contained in:
@@ -62,7 +62,6 @@
|
||||
"@github/webauthn-json": "^2.1.1",
|
||||
"@hope-ui/solid": "0.6.7",
|
||||
"@monaco-editor/loader": "^1.5.0",
|
||||
"@pdfslick/solid": "^3.0.0",
|
||||
"@ruffle-rs/ruffle": "0.2.0-nightly.2025.8.3",
|
||||
"@solid-primitives/i18n": "^2.2.1",
|
||||
"@solid-primitives/keyboard": "^1.3.1",
|
||||
@@ -95,7 +94,6 @@
|
||||
"mitt": "^3.0.1",
|
||||
"monaco-editor": "^0.54.0",
|
||||
"mpegts.js": "^1.8.0",
|
||||
"pdfjs-dist": "^5.3.31",
|
||||
"qrcode": "^1.5.4",
|
||||
"rehype-katex": "6.0.3",
|
||||
"rehype-raw": "^7.0.0",
|
||||
@@ -114,10 +112,5 @@
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*.{js,ts,css,tsx,jsx,md,html,yml,yaml}": "prettier --write"
|
||||
},
|
||||
"pnpm": {
|
||||
"patchedDependencies": {
|
||||
"@pdfslick/core@3.0.0": "patches/@pdfslick__core@3.0.0.patch"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
diff --git a/dist/esm/index.js b/dist/esm/index.js
|
||||
index b1838349fa9644aa6034b1e88b00f8668d242994..fcac95798e8336abe60ab0d8527cb1dc7170ca3c 100644
|
||||
--- a/dist/esm/index.js
|
||||
+++ b/dist/esm/index.js
|
||||
@@ -1,5 +1,5 @@
|
||||
import { RenderingCancelledException, PixelsPerInch, getXfaPageViewport, AnnotationMode, AnnotationEditorType, GlobalWorkerOptions, AnnotationEditorParamsType, getPdfFilenameFromUrl, getDocument, PDFDateString } from 'pdfjs-dist';
|
||||
-import { SimpleLinkService, XfaLayerBuilder, GenericL10n, DownloadManager, EventBus, PDFLinkService, PDFFindController, PDFSinglePageViewer, PDFViewer } from 'pdfjs-dist/web/pdf_viewer.mjs';
|
||||
+import { SimpleLinkService, XfaLayerBuilder, GenericL10n, DownloadManager, EventBus, PDFLinkService, PDFFindController, PDFSinglePageViewer, PDFViewer } from 'pdfjs-dist/legacy/web/pdf_viewer.mjs';
|
||||
import { createStore } from 'zustand/vanilla';
|
||||
|
||||
/******************************************************************************
|
||||
@@ -2417,7 +2417,7 @@ class PDFSlickPrintDialog {
|
||||
}
|
||||
|
||||
var _PDFSlick_instances, _PDFSlick_renderingQueue, _PDFSlick_container, _PDFSlick_viewerContainer, _PDFSlick_thumbsContainer, _PDFSlick_printService, _PDFSlick_annotationMode, _PDFSlick_annotationEditorMode, _PDFSlick_onError, _PDFSlick_eventAbortController, _PDFSlick_initializePageLabels, _PDFSlick_parseDocumentInfo, _PDFSlick_parsePageSize, _PDFSlick_initInternalEventListeners, _PDFSlick_onDocumentReady, _PDFSlick_onRotationChanging, _PDFSlick_onSwitchSpreadMode, _PDFSlick_onSwitchScrollMode, _PDFSlick_onScaleChanging, _PDFSlick_onPageChanging, _PDFSlick_onPageRendered;
|
||||
-GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url).toString();
|
||||
+GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/legacy/build/pdf.worker.min.mjs', import.meta.url).toString();
|
||||
const US_PAGE_NAMES = {
|
||||
"8.5x11": "Letter",
|
||||
"8.5x14": "Legal",
|
||||
diff --git a/package.json b/package.json
|
||||
index 3962cc752d8ca79e5985133c0fdc0a7f6f6b9949..720d2b3beb1bce96f6ce47d90dda6e376ced9f0a 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -42,7 +42,7 @@
|
||||
"dev": "concurrently \"rollup --config node:@pdfslick/rollup-config --watch\" \"npm run css-watch\"",
|
||||
"devdev": "rollup --config node:@pdfslick/rollup-config && npm run css",
|
||||
"build": "rollup --config node:@pdfslick/rollup-config --environment NODE_ENV:production && npm run css",
|
||||
- "css": "cat ../../node_modules/pdfjs-dist/web/pdf_viewer.css ./styles/pdf_viewer.css | postcss -o dist/pdf_viewer.css",
|
||||
+ "css": "cat ../../node_modules/pdfjs-dist/legacy/web/pdf_viewer.css ./styles/pdf_viewer.css | postcss -o dist/pdf_viewer.css",
|
||||
"css-watch": "npm run css",
|
||||
"css-js": "node combine-css.js",
|
||||
"css-watch-js": "npm run css -- --watch"
|
||||
219
pnpm-lock.yaml
generated
219
pnpm-lock.yaml
generated
@@ -4,11 +4,6 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
patchedDependencies:
|
||||
'@pdfslick/core@3.0.0':
|
||||
hash: h4ua6dncpwke4tlcj36t6o7tvm
|
||||
path: patches/@pdfslick__core@3.0.0.patch
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
@@ -25,9 +20,6 @@ importers:
|
||||
'@monaco-editor/loader':
|
||||
specifier: ^1.5.0
|
||||
version: 1.6.1
|
||||
'@pdfslick/solid':
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0(solid-js@1.9.10)
|
||||
'@ruffle-rs/ruffle':
|
||||
specifier: 0.2.0-nightly.2025.8.3
|
||||
version: 0.2.0-nightly.2025.8.3
|
||||
@@ -124,9 +116,6 @@ importers:
|
||||
mpegts.js:
|
||||
specifier: ^1.8.0
|
||||
version: 1.8.0
|
||||
pdfjs-dist:
|
||||
specifier: ^5.3.31
|
||||
version: 5.4.54
|
||||
qrcode:
|
||||
specifier: ^1.5.4
|
||||
version: 1.5.4
|
||||
@@ -1067,78 +1056,6 @@ packages:
|
||||
'@motionone/utils@10.18.0':
|
||||
resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==}
|
||||
|
||||
'@napi-rs/canvas-android-arm64@0.1.74':
|
||||
resolution: {integrity: sha512-aq5ode+9Z/ZR0H485dI2jdRdttg/hl9Ob+iPCt0nj+QFiirpxDrbUHKeTZWQWEtkWyC7vI5R2dMTbDINBfl9eg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@napi-rs/canvas-darwin-arm64@0.1.74':
|
||||
resolution: {integrity: sha512-eO5Miz+ef1dEQyUMWDdcbAb1Wr7yMyxD9/CL9d4frQxO4pTTaCiMBUWup8XDPLr/g7XkSkGCZLP47xiXiyXSpQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@napi-rs/canvas-darwin-x64@0.1.74':
|
||||
resolution: {integrity: sha512-0EkO0IFkps7C3JpKC7lbM3IL+QDUYeUKagHLDbUry4PeQTghxp6JcgccpmU32ZbpFZgPnm7o0tTJO0J1d8S2rA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@napi-rs/canvas-linux-arm-gnueabihf@0.1.74':
|
||||
resolution: {integrity: sha512-qAVJEN2JqGayEI1kSpJy1Xr6ZmCFV9QhRyV35yWsS7e9X1jm+T4DAlCxI4PlKIlqVSzYMYhKrxchST20XBSzHg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-linux-arm64-gnu@0.1.74':
|
||||
resolution: {integrity: sha512-lOnop22qy6MYxI94GGunMMjo6D80I//2W/6pqKUfwXaDQtOfvHsTcVVzDu5cFXUTNrb9ZRfMCeol5YEd+9FJvg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-linux-arm64-musl@0.1.74':
|
||||
resolution: {integrity: sha512-tfFqLHGtSEabBigOnPUfZviSTGmW2xHv5tYZYPBWmgGiTkoNJ7lEWFUxHjwvV5HXGqLs8ok/O7g1enSpxO6lmQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-linux-riscv64-gnu@0.1.74':
|
||||
resolution: {integrity: sha512-j6H9dHTMtr1y3tu/zGm1ythYIL9vTl4EEv9f6CMx0n3Zn2M+OruUUwh9ylCj4afzSNEK9T8cr6zMnmTPzkpBvQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-linux-x64-gnu@0.1.74':
|
||||
resolution: {integrity: sha512-73DIV4E7Y9CpIJuUXVl9H6+MEQXyRy4VJQoUGA1tOlcKQiStxqhq6UErL4decI28NxjyQXBhtYZKj5q8AJEuOg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-linux-x64-musl@0.1.74':
|
||||
resolution: {integrity: sha512-FgDMEFdGIJT3I2xejflRJ82/ZgDphyirS43RgtoLaIXI6zihLiZcQ7rczpqeWgAwlJNjR0He2EustsKe1SkUOg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@napi-rs/canvas-win32-x64-msvc@0.1.74':
|
||||
resolution: {integrity: sha512-x6bhwlhn0wU7dfiP46mt5Bi6PowSUH4CJ4PTzGj58LRQ1HVasEIJgoMx7MLC48F738eJpzbfg3WR/D8+e9CeTA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@napi-rs/canvas@0.1.74':
|
||||
resolution: {integrity: sha512-pOIyzuS+5Bz1vAhD7tdhaw5/936mMJZUn4aVajojUdjYOGSWmfpDYSgt0nQLZPZVN5GLgWgutqXPOi7Jsm3k+Q==}
|
||||
engines: {node: '>= 10'}
|
||||
|
||||
'@pdfslick/core@3.0.0':
|
||||
resolution: {integrity: sha512-85LKCZTPKg1dM42rO9RMPmMNKRTG9XSCTX6+s76ffUgdCgniVH/8zduuHYNT8FBfA2Ktiol9f1wu3jMEs03UOQ==}
|
||||
|
||||
'@pdfslick/solid@3.0.0':
|
||||
resolution: {integrity: sha512-x9F8TPNfGU2HcN9e0zaTFgVIipY8zHe0SAL1vewhZ9TSYj61x2JDoWi9EDC8R7Uf+zldQKRMQuHkeq+4+p21Qw==}
|
||||
peerDependencies:
|
||||
solid-js: '>=1.5.0'
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.52.5':
|
||||
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
|
||||
cpu: [arm]
|
||||
@@ -1252,11 +1169,6 @@ packages:
|
||||
'@ruffle-rs/ruffle@0.2.0-nightly.2025.8.3':
|
||||
resolution: {integrity: sha512-3Xn0AEYt84bioRE4HQSALbB+5g/hP04j2P0eCB+fYFj06MGc+7AhlWFas9apE1S4UTJN3TR/WmRMVUGmeouspw==}
|
||||
|
||||
'@solid-primitives/event-listener@2.4.1':
|
||||
resolution: {integrity: sha512-Xc/lBCeuh9LwzR4lYbMDtopwWK7N9b4o+FmI4uoI8DOtVGYi0Ip20DG8PtwHk+g31lHgvwtFFVKfnUx2UaqZJg==}
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/event-listener@2.4.3':
|
||||
resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==}
|
||||
peerDependencies:
|
||||
@@ -1287,26 +1199,11 @@ packages:
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/resize-observer@2.1.1':
|
||||
resolution: {integrity: sha512-vb/VS9+YdUdVZ2V92JimFmFuaJ2MSyKOGnUay/mQvoQ0R+mtdT7FSylfQlVslCzm0ecx8Jkvsm1Sk2lopvMAdg==}
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/rootless@1.5.1':
|
||||
resolution: {integrity: sha512-G4eNC6F3ufRT2Mjbodl7rSOH7uq/Emqs3S7/BIBWgh+V/IFUtvu6WELeqSrk4FJX3T/kKKvC+T8gXhepExSWyg==}
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/rootless@1.5.2':
|
||||
resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==}
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/static-store@0.1.1':
|
||||
resolution: {integrity: sha512-daXWvpLjd+4hbYdGaaEJ2kKFuFhshvfIBFLveW7mfk2BWHl9lGQVwUuExp3qllkK9ONA9p+5D2cpwBQosv8odQ==}
|
||||
peerDependencies:
|
||||
solid-js: ^1.6.12
|
||||
|
||||
'@solid-primitives/storage@1.3.11':
|
||||
resolution: {integrity: sha512-PpQWR3TaTxHIJFbI9ZssYTM4Aa67g1vJIgps4TPhcXzHqqomrPAIveFC2FG7SDQoi9YQia8FVBjigELziJpfIg==}
|
||||
peerDependencies:
|
||||
@@ -2865,10 +2762,6 @@ packages:
|
||||
pathe@2.0.3:
|
||||
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
|
||||
|
||||
pdfjs-dist@5.4.54:
|
||||
resolution: {integrity: sha512-TBAiTfQw89gU/Z4LW98Vahzd2/LoCFprVGvGbTgFt+QCB1F+woyOPmNNVgLa6djX9Z9GGTnj7qE1UzpOVJiINw==}
|
||||
engines: {node: '>=20.16.0 || >=22.3.0'}
|
||||
|
||||
pend@1.2.0:
|
||||
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
|
||||
|
||||
@@ -3500,24 +3393,6 @@ packages:
|
||||
resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
zustand@5.0.5:
|
||||
resolution: {integrity: sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
peerDependencies:
|
||||
'@types/react': '>=18.0.0'
|
||||
immer: '>=9.0.6'
|
||||
react: '>=18.0.0'
|
||||
use-sync-external-store: '>=1.2.0'
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
immer:
|
||||
optional: true
|
||||
react:
|
||||
optional: true
|
||||
use-sync-external-store:
|
||||
optional: true
|
||||
|
||||
zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
|
||||
@@ -4518,71 +4393,6 @@ snapshots:
|
||||
hey-listen: 1.0.8
|
||||
tslib: 2.8.1
|
||||
|
||||
'@napi-rs/canvas-android-arm64@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-darwin-arm64@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-darwin-x64@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-arm-gnueabihf@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-arm64-gnu@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-arm64-musl@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-riscv64-gnu@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-x64-gnu@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-linux-x64-musl@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas-win32-x64-msvc@0.1.74':
|
||||
optional: true
|
||||
|
||||
'@napi-rs/canvas@0.1.74':
|
||||
optionalDependencies:
|
||||
'@napi-rs/canvas-android-arm64': 0.1.74
|
||||
'@napi-rs/canvas-darwin-arm64': 0.1.74
|
||||
'@napi-rs/canvas-darwin-x64': 0.1.74
|
||||
'@napi-rs/canvas-linux-arm-gnueabihf': 0.1.74
|
||||
'@napi-rs/canvas-linux-arm64-gnu': 0.1.74
|
||||
'@napi-rs/canvas-linux-arm64-musl': 0.1.74
|
||||
'@napi-rs/canvas-linux-riscv64-gnu': 0.1.74
|
||||
'@napi-rs/canvas-linux-x64-gnu': 0.1.74
|
||||
'@napi-rs/canvas-linux-x64-musl': 0.1.74
|
||||
'@napi-rs/canvas-win32-x64-msvc': 0.1.74
|
||||
optional: true
|
||||
|
||||
'@pdfslick/core@3.0.0(patch_hash=h4ua6dncpwke4tlcj36t6o7tvm)':
|
||||
dependencies:
|
||||
pdfjs-dist: 5.4.54
|
||||
zustand: 5.0.5
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- immer
|
||||
- react
|
||||
- use-sync-external-store
|
||||
|
||||
'@pdfslick/solid@3.0.0(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@pdfslick/core': 3.0.0(patch_hash=h4ua6dncpwke4tlcj36t6o7tvm)
|
||||
'@solid-primitives/resize-observer': 2.1.1(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- immer
|
||||
- react
|
||||
- use-sync-external-store
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.52.5':
|
||||
optional: true
|
||||
|
||||
@@ -4651,11 +4461,6 @@ snapshots:
|
||||
|
||||
'@ruffle-rs/ruffle@0.2.0-nightly.2025.8.3': {}
|
||||
|
||||
'@solid-primitives/event-listener@2.4.1(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.1(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/event-listener@2.4.3(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
|
||||
@@ -4687,29 +4492,11 @@ snapshots:
|
||||
'@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/resize-observer@2.1.1(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/event-listener': 2.4.1(solid-js@1.9.10)
|
||||
'@solid-primitives/rootless': 1.5.1(solid-js@1.9.10)
|
||||
'@solid-primitives/static-store': 0.1.1(solid-js@1.9.10)
|
||||
'@solid-primitives/utils': 6.3.1(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/rootless@1.5.1(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.1(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/rootless@1.5.2(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.2(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/static-store@0.1.1(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.1(solid-js@1.9.10)
|
||||
solid-js: 1.9.10
|
||||
|
||||
'@solid-primitives/storage@1.3.11(solid-js@1.9.10)':
|
||||
dependencies:
|
||||
'@solid-primitives/utils': 6.3.1(solid-js@1.9.10)
|
||||
@@ -6500,10 +6287,6 @@ snapshots:
|
||||
|
||||
pathe@2.0.3: {}
|
||||
|
||||
pdfjs-dist@5.4.54:
|
||||
optionalDependencies:
|
||||
'@napi-rs/canvas': 0.1.74
|
||||
|
||||
pend@1.2.0: {}
|
||||
|
||||
picocolors@1.1.1: {}
|
||||
@@ -7195,6 +6978,4 @@ snapshots:
|
||||
buffer-crc32: 0.2.13
|
||||
pend: 1.2.0
|
||||
|
||||
zustand@5.0.5: {}
|
||||
|
||||
zwitch@2.0.4: {}
|
||||
|
||||
@@ -22,31 +22,7 @@
|
||||
"tr-install": "TrollStore",
|
||||
"tr-installing": "TrollStore Installing",
|
||||
"open_in_new_window": "Open in new window",
|
||||
"auto_next": "Auto next",
|
||||
"pdf": {
|
||||
"document_outline": "Document Outline",
|
||||
"no_outline": "No outline available for this document",
|
||||
"loading": "Loading...",
|
||||
"prev_page": "Previous Page",
|
||||
"next_page": "Next Page",
|
||||
"toggle_sidebar": "Toggle Sidebar",
|
||||
"close_sidebar": "Close Sidebar",
|
||||
"toggle_pen": "Toggle Pen",
|
||||
"zoom_presets": "Zoom Presets",
|
||||
"zoom_levels": "Zoom Levels",
|
||||
"zoom_auto": "Auto",
|
||||
"zoom_actual": "Actual Size",
|
||||
"zoom_fit": "Page Fit",
|
||||
"zoom_width": "Page Width",
|
||||
"zoom_50": "50%",
|
||||
"zoom_75": "75%",
|
||||
"zoom_100": "100%",
|
||||
"zoom_125": "125%",
|
||||
"zoom_150": "150%",
|
||||
"zoom_200": "200%",
|
||||
"zoom_in": "Zoom In",
|
||||
"zoom_out": "Zoom Out"
|
||||
}
|
||||
"auto_next": "Auto next"
|
||||
},
|
||||
"layouts": {
|
||||
"list": "List View",
|
||||
|
||||
@@ -119,12 +119,6 @@ const previews: Preview[] = [
|
||||
component: lazy(() => import("./heic")),
|
||||
prior: true,
|
||||
},
|
||||
{
|
||||
name: "PDF Preview",
|
||||
exts: ["pdf"],
|
||||
component: lazy(() => import("./pdf")),
|
||||
prior: true,
|
||||
},
|
||||
{
|
||||
name: "PPT Preview",
|
||||
exts: ["pptx"],
|
||||
|
||||
@@ -1,478 +0,0 @@
|
||||
import { BoxWithFullScreen } from "~/components"
|
||||
import { AnnotationEditorType, AnnotationEditorParamsType } from "pdfjs-dist"
|
||||
import {
|
||||
PDFSlickState,
|
||||
TPDFDocumentOutline,
|
||||
usePDFSlick,
|
||||
} from "@pdfslick/solid"
|
||||
import { objStore } from "~/store"
|
||||
import "@pdfslick/solid/dist/pdf_viewer.css"
|
||||
import {
|
||||
Button,
|
||||
Divider,
|
||||
HStack,
|
||||
VStack,
|
||||
IconButton,
|
||||
Menu,
|
||||
MenuContent,
|
||||
MenuGroup,
|
||||
MenuItem,
|
||||
MenuLabel,
|
||||
MenuTrigger,
|
||||
Text,
|
||||
Input,
|
||||
ButtonGroup,
|
||||
Box,
|
||||
createDisclosure,
|
||||
Tooltip,
|
||||
} from "@hope-ui/solid"
|
||||
import {
|
||||
createSignal,
|
||||
createEffect,
|
||||
onCleanup,
|
||||
For,
|
||||
Show,
|
||||
createMemo,
|
||||
} from "solid-js"
|
||||
import {
|
||||
VsChevronUp,
|
||||
VsChevronDown,
|
||||
VsLayoutSidebarLeft,
|
||||
VsLayoutSidebarLeftOff,
|
||||
VsTriangleRight,
|
||||
VsClose,
|
||||
VsTriangleDown,
|
||||
VsZoomIn,
|
||||
VsZoomOut,
|
||||
} from "solid-icons/vs"
|
||||
import { useT } from "~/hooks"
|
||||
import { BsEraser, BsPen, BsPenFill } from "solid-icons/bs"
|
||||
|
||||
const PDFViewerApp = () => {
|
||||
const t = useT()
|
||||
const {
|
||||
viewerRef,
|
||||
pdfSlickStore: store,
|
||||
PDFSlickViewer,
|
||||
} = usePDFSlick(objStore.raw_url)
|
||||
const [wantedPageNumber, setWantedPageNumber] = createSignal<number | string>(
|
||||
1,
|
||||
)
|
||||
const { isOpen, onToggle, onClose } = createDisclosure()
|
||||
|
||||
const handlePageNumberSubmit = (e: Event) => {
|
||||
e.preventDefault()
|
||||
const newPageNumber = parseInt(wantedPageNumber() + "")
|
||||
if (
|
||||
Number.isInteger(newPageNumber) &&
|
||||
newPageNumber > 0 &&
|
||||
newPageNumber <= store.numPages
|
||||
) {
|
||||
store.pdfSlick?.linkService.goToPage(newPageNumber)
|
||||
} else {
|
||||
setWantedPageNumber(store.pageNumber)
|
||||
}
|
||||
}
|
||||
|
||||
const updatePageNumber = ({ pageNumber }: any) =>
|
||||
setWantedPageNumber(pageNumber)
|
||||
|
||||
createEffect(() => {
|
||||
if (store.pdfSlick) {
|
||||
store.pdfSlick.on("pagechanging", updatePageNumber)
|
||||
}
|
||||
})
|
||||
|
||||
onCleanup(() => {
|
||||
if (store.pdfSlick) {
|
||||
store.pdfSlick.off("pagechanging", updatePageNumber)
|
||||
}
|
||||
})
|
||||
|
||||
return (
|
||||
<Box w="$full" h="70vh" pos="relative" display="flex">
|
||||
<Sidebar store={store} isOpen={isOpen()} onClose={onClose} />
|
||||
|
||||
<BoxWithFullScreen w="$full" h="$full" pos="relative" flex={1}>
|
||||
<Toolbar
|
||||
store={store}
|
||||
isOpen={isOpen()}
|
||||
onToggle={onToggle}
|
||||
wantedPageNumber={wantedPageNumber}
|
||||
onPageNumberChange={setWantedPageNumber}
|
||||
onPageNumberSubmit={handlePageNumberSubmit}
|
||||
/>
|
||||
|
||||
<PDFSlickViewer {...{ store, viewerRef }} />
|
||||
</BoxWithFullScreen>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
const OutlineItem = (props: {
|
||||
item: TPDFDocumentOutline[number]
|
||||
level: number
|
||||
store: PDFSlickState
|
||||
}) => {
|
||||
const [isOpen, setIsOpen] = createSignal(true)
|
||||
const hasChildren = () => props.item.items && props.item.items.length > 0
|
||||
|
||||
const handleClick = () => {
|
||||
if (props.item.dest && props.store.pdfSlick?.linkService) {
|
||||
props.store.pdfSlick.linkService.goToDestination(props.item.dest)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Box mb="$1">
|
||||
<HStack spacing="$1" alignItems="center">
|
||||
<Show when={hasChildren()} fallback={<Box w="16px" />}>
|
||||
<IconButton
|
||||
size="xs"
|
||||
variant="ghost"
|
||||
aria-label="Toggle"
|
||||
icon={isOpen() ? <VsTriangleDown /> : <VsTriangleRight />}
|
||||
minW="16px"
|
||||
h="16px"
|
||||
onClick={() => setIsOpen(!isOpen())}
|
||||
/>
|
||||
</Show>
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
justifyContent="flex-start"
|
||||
flex={1}
|
||||
fontSize="$sm"
|
||||
fontWeight="$normal"
|
||||
py="$1"
|
||||
px="$2"
|
||||
h="auto"
|
||||
minH="$6"
|
||||
textAlign="left"
|
||||
overflow="hidden"
|
||||
onClick={handleClick}
|
||||
_hover={{ backgroundColor: "$neutral3" }}
|
||||
title={props.item.title}
|
||||
color="$neutral12"
|
||||
>
|
||||
{props.item.title}
|
||||
</Button>
|
||||
</HStack>
|
||||
<Show when={hasChildren() && isOpen()}>
|
||||
<Box pl={`${(props.level + 1) * 16}px`}>
|
||||
<OutlineItems
|
||||
items={props.item.items}
|
||||
level={props.level + 1}
|
||||
store={props.store}
|
||||
/>
|
||||
</Box>
|
||||
</Show>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
const OutlineItems = (props: {
|
||||
items: TPDFDocumentOutline | null
|
||||
level?: number
|
||||
store: PDFSlickState
|
||||
}) => {
|
||||
if (!props.items || props.items.length === 0) return null
|
||||
|
||||
return (
|
||||
<For each={props.items}>
|
||||
{(item) => (
|
||||
<OutlineItem item={item} level={props.level || 0} store={props.store} />
|
||||
)}
|
||||
</For>
|
||||
)
|
||||
}
|
||||
|
||||
const Sidebar = (props: {
|
||||
store: PDFSlickState
|
||||
isOpen: boolean
|
||||
onClose: () => void
|
||||
}) => {
|
||||
const t = useT()
|
||||
return (
|
||||
<Show when={props.isOpen}>
|
||||
<Box
|
||||
w="280px"
|
||||
h="$full"
|
||||
bgColor="$neutral1"
|
||||
borderRight="1px solid $neutral6"
|
||||
display="flex"
|
||||
flexDirection="column"
|
||||
transition="all 0.3s ease"
|
||||
zIndex="10"
|
||||
>
|
||||
<HStack
|
||||
spacing="$2"
|
||||
p="$3"
|
||||
borderBottom="1px solid $neutral6"
|
||||
bgColor="$neutral2"
|
||||
>
|
||||
<Text fontWeight="$semibold" color="$neutral12">
|
||||
{t("home.preview.pdf.document_outline")}
|
||||
</Text>
|
||||
<Box flex={1} />
|
||||
<Tooltip withArrow label={t("home.preview.pdf.close_sidebar")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.close_sidebar")}
|
||||
icon={<VsClose />}
|
||||
onClick={props.onClose}
|
||||
/>
|
||||
</Tooltip>
|
||||
</HStack>
|
||||
<Box flex={1} overflow="auto" p="$3">
|
||||
<VStack spacing="$2" alignItems="stretch">
|
||||
<Show
|
||||
when={
|
||||
props.store.documentOutline &&
|
||||
props.store.documentOutline.length > 0
|
||||
}
|
||||
fallback={
|
||||
<Text size="sm" color="$neutral11" textAlign="center" mt="$4">
|
||||
{t("home.preview.pdf.no_outline")}
|
||||
</Text>
|
||||
}
|
||||
>
|
||||
<OutlineItems
|
||||
items={props.store.documentOutline}
|
||||
store={props.store}
|
||||
/>
|
||||
</Show>
|
||||
</VStack>
|
||||
</Box>
|
||||
</Box>
|
||||
</Show>
|
||||
)
|
||||
}
|
||||
|
||||
const Toolbar = (props: {
|
||||
store: PDFSlickState
|
||||
isOpen: boolean
|
||||
onToggle: () => void
|
||||
wantedPageNumber: () => number | string
|
||||
onPageNumberChange: (value: string) => void
|
||||
onPageNumberSubmit: (e: Event) => void
|
||||
}) => {
|
||||
const t = useT()
|
||||
let pageNumberRef!: HTMLInputElement
|
||||
|
||||
const zoomPresets = [
|
||||
["auto", t("home.preview.pdf.zoom_auto")],
|
||||
["page-actual", t("home.preview.pdf.zoom_actual")],
|
||||
["page-fit", t("home.preview.pdf.zoom_fit")],
|
||||
["page-width", t("home.preview.pdf.zoom_width")],
|
||||
] as const
|
||||
const zoomLevels = [
|
||||
[0.5, t("home.preview.pdf.zoom_50")],
|
||||
[0.75, t("home.preview.pdf.zoom_75")],
|
||||
[1, t("home.preview.pdf.zoom_100")],
|
||||
[1.25, t("home.preview.pdf.zoom_125")],
|
||||
[1.5, t("home.preview.pdf.zoom_150")],
|
||||
[2, t("home.preview.pdf.zoom_200")],
|
||||
] as const
|
||||
|
||||
const getCurrentZoomLabel = createMemo(() => {
|
||||
if (props.store.scaleValue) {
|
||||
const preset = zoomPresets.find(
|
||||
([value]) => value === props.store.scaleValue,
|
||||
)
|
||||
if (preset) return preset[1]
|
||||
}
|
||||
return `${Math.floor(props.store.scale * 100)}%`
|
||||
})
|
||||
|
||||
const handleZoomPreset = (value: string) => {
|
||||
if (props.store.pdfSlick) {
|
||||
props.store.pdfSlick.currentScaleValue = value
|
||||
}
|
||||
}
|
||||
|
||||
const handleZoomLevel = (value: number) => {
|
||||
if (props.store.pdfSlick) {
|
||||
props.store.pdfSlick.currentScale = value
|
||||
}
|
||||
}
|
||||
|
||||
const isInkMode = () =>
|
||||
props.store.annotationEditorMode === AnnotationEditorType.INK
|
||||
|
||||
return (
|
||||
<Box
|
||||
pos="absolute"
|
||||
left="50%"
|
||||
transform="translateX(-50%)"
|
||||
display="flex"
|
||||
zIndex="1"
|
||||
css={{
|
||||
top: "$2",
|
||||
bottom: "auto",
|
||||
"@sm": {
|
||||
top: "auto",
|
||||
bottom: "$2",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<HStack
|
||||
spacing="$4"
|
||||
w="auto"
|
||||
p="$2"
|
||||
rounded="$lg"
|
||||
shadow="$lg"
|
||||
bgColor="$neutral1"
|
||||
opacity="0.7"
|
||||
transition="all 0.2s ease-in-out"
|
||||
_hover={{
|
||||
opacity: "1",
|
||||
}}
|
||||
css={{
|
||||
scale: "0.7",
|
||||
"@sm": {
|
||||
scale: "1",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<Show
|
||||
when={
|
||||
props.store.documentOutline &&
|
||||
props.store.documentOutline.length > 0
|
||||
}
|
||||
>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.toggle_sidebar")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
colorScheme="neutral"
|
||||
aria-label={t("home.preview.pdf.toggle_sidebar")}
|
||||
icon={
|
||||
props.isOpen ? (
|
||||
<VsLayoutSidebarLeftOff />
|
||||
) : (
|
||||
<VsLayoutSidebarLeft />
|
||||
)
|
||||
}
|
||||
onClick={props.onToggle}
|
||||
/>
|
||||
</Tooltip>
|
||||
</Show>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.toggle_pen")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.toggle_pen")}
|
||||
colorScheme={(isInkMode() && "primary") || "neutral"}
|
||||
onClick={() => {
|
||||
const mode = isInkMode()
|
||||
? AnnotationEditorType.NONE
|
||||
: AnnotationEditorType.INK
|
||||
props.store.pdfSlick?.setAnnotationEditorMode(mode)
|
||||
props.store.pdfSlick?.setAnnotationEditorParams({
|
||||
type: AnnotationEditorParamsType.INK_COLOR,
|
||||
value: "#ff0000",
|
||||
})
|
||||
}}
|
||||
icon={(isInkMode() && <BsPenFill />) || <BsPen />}
|
||||
/>
|
||||
</Tooltip>
|
||||
<Divider orientation="vertical" h="24px" />
|
||||
|
||||
<ButtonGroup colorScheme="neutral" attached>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.zoom_out")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.zoom_out")}
|
||||
disabled={!props.store.pdfSlick || props.store.scale <= 0.25}
|
||||
onClick={() => props.store.pdfSlick?.viewer?.decreaseScale()}
|
||||
icon={<VsZoomOut />}
|
||||
/>
|
||||
</Tooltip>
|
||||
<Menu motionPreset="scale-bottom-left">
|
||||
<MenuTrigger as={Button} size="sm" minW="60px">
|
||||
<Text size="sm">
|
||||
{props.store.pdfSlick
|
||||
? getCurrentZoomLabel()
|
||||
: t("home.preview.pdf.loading")}
|
||||
</Text>
|
||||
</MenuTrigger>
|
||||
<MenuContent>
|
||||
<MenuGroup>
|
||||
<MenuLabel>{t("home.preview.pdf.zoom_presets")}</MenuLabel>
|
||||
<For each={zoomPresets}>
|
||||
{(item) => (
|
||||
<MenuItem onSelect={() => handleZoomPreset(item[0])}>
|
||||
{item[1]}
|
||||
</MenuItem>
|
||||
)}
|
||||
</For>
|
||||
</MenuGroup>
|
||||
<Divider role="presentation" my="$1" />
|
||||
<MenuGroup>
|
||||
<MenuLabel>{t("home.preview.pdf.zoom_levels")}</MenuLabel>
|
||||
<For each={zoomLevels}>
|
||||
{(item) => (
|
||||
<MenuItem onSelect={() => handleZoomLevel(item[0])}>
|
||||
{item[1]}
|
||||
</MenuItem>
|
||||
)}
|
||||
</For>
|
||||
</MenuGroup>
|
||||
</MenuContent>
|
||||
</Menu>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.zoom_in")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.zoom_in")}
|
||||
disabled={!props.store.pdfSlick || props.store.scale >= 5}
|
||||
onClick={() => props.store.pdfSlick?.viewer?.increaseScale()}
|
||||
icon={<VsZoomIn />}
|
||||
/>
|
||||
</Tooltip>
|
||||
</ButtonGroup>
|
||||
<Divider orientation="vertical" h="24px" />
|
||||
<HStack spacing="$2" alignItems="center">
|
||||
<form onSubmit={props.onPageNumberSubmit}>
|
||||
<Input
|
||||
size="sm"
|
||||
ref={pageNumberRef}
|
||||
type="text"
|
||||
value={props.wantedPageNumber()}
|
||||
w="50px"
|
||||
textAlign="center"
|
||||
onFocus={() => pageNumberRef!.select()}
|
||||
onChange={(e) => props.onPageNumberChange(e.currentTarget.value)}
|
||||
/>
|
||||
</form>
|
||||
<Text size="sm" minW="$full">
|
||||
/ {props.store.numPages}
|
||||
</Text>
|
||||
</HStack>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.prev_page")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.prev_page")}
|
||||
colorScheme="neutral"
|
||||
disabled={props.store.pageNumber <= 1}
|
||||
onClick={() => props.store.pdfSlick?.viewer?.previousPage()}
|
||||
icon={<VsChevronUp />}
|
||||
/>
|
||||
</Tooltip>
|
||||
<Tooltip withArrow label={t("home.preview.pdf.next_page")}>
|
||||
<IconButton
|
||||
size="sm"
|
||||
aria-label={t("home.preview.pdf.next_page")}
|
||||
colorScheme="neutral"
|
||||
disabled={
|
||||
!props.store.pdfSlick ||
|
||||
props.store.pageNumber >= props.store.numPages
|
||||
}
|
||||
onClick={() => props.store.pdfSlick?.viewer?.nextPage()}
|
||||
icon={<VsChevronDown />}
|
||||
/>
|
||||
</Tooltip>
|
||||
</HStack>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
export default PDFViewerApp
|
||||
@@ -71,14 +71,6 @@ export default defineConfig({
|
||||
build: {
|
||||
// target: "es2015", //next
|
||||
// polyfillDynamicImport: false,
|
||||
rollupOptions: {
|
||||
output: {
|
||||
assetFileNames: (assetInfo) =>
|
||||
assetInfo.names?.some((name) => name.endsWith("pdf.worker.min.mjs"))
|
||||
? "assets/[name]-[hash].js"
|
||||
: "assets/[name]-[hash][extname]",
|
||||
},
|
||||
},
|
||||
},
|
||||
// experimental: {
|
||||
// renderBuiltUrl: (filename, { type, hostId, hostType }) => {
|
||||
|
||||
Reference in New Issue
Block a user