diff --git a/package.json b/package.json index ae304fd..1d395d7 100644 --- a/package.json +++ b/package.json @@ -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" - } } } diff --git a/patches/@pdfslick__core@3.0.0.patch b/patches/@pdfslick__core@3.0.0.patch deleted file mode 100644 index 5cec5aa..0000000 --- a/patches/@pdfslick__core@3.0.0.patch +++ /dev/null @@ -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" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97c52f8..29ce39e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: {} diff --git a/src/lang/en/home.json b/src/lang/en/home.json index 9a8a13a..227a567 100644 --- a/src/lang/en/home.json +++ b/src/lang/en/home.json @@ -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", diff --git a/src/pages/home/previews/index.ts b/src/pages/home/previews/index.ts index 46061f9..efa27e2 100644 --- a/src/pages/home/previews/index.ts +++ b/src/pages/home/previews/index.ts @@ -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"], diff --git a/src/pages/home/previews/pdf.tsx b/src/pages/home/previews/pdf.tsx deleted file mode 100644 index fe284ac..0000000 --- a/src/pages/home/previews/pdf.tsx +++ /dev/null @@ -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( - 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 ( - - - - - - - - - - ) -} - -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 ( - - - }> - : } - minW="16px" - h="16px" - onClick={() => setIsOpen(!isOpen())} - /> - - - - - - - - - - ) -} - -const OutlineItems = (props: { - items: TPDFDocumentOutline | null - level?: number - store: PDFSlickState -}) => { - if (!props.items || props.items.length === 0) return null - - return ( - - {(item) => ( - - )} - - ) -} - -const Sidebar = (props: { - store: PDFSlickState - isOpen: boolean - onClose: () => void -}) => { - const t = useT() - return ( - - - - - {t("home.preview.pdf.document_outline")} - - - - } - onClick={props.onClose} - /> - - - - - 0 - } - fallback={ - - {t("home.preview.pdf.no_outline")} - - } - > - - - - - - - ) -} - -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 ( - - - 0 - } - > - - - ) : ( - - ) - } - onClick={props.onToggle} - /> - - - - { - const mode = isInkMode() - ? AnnotationEditorType.NONE - : AnnotationEditorType.INK - props.store.pdfSlick?.setAnnotationEditorMode(mode) - props.store.pdfSlick?.setAnnotationEditorParams({ - type: AnnotationEditorParamsType.INK_COLOR, - value: "#ff0000", - }) - }} - icon={(isInkMode() && ) || } - /> - - - - - - props.store.pdfSlick?.viewer?.decreaseScale()} - icon={} - /> - - - - - {props.store.pdfSlick - ? getCurrentZoomLabel() - : t("home.preview.pdf.loading")} - - - - - {t("home.preview.pdf.zoom_presets")} - - {(item) => ( - handleZoomPreset(item[0])}> - {item[1]} - - )} - - - - - {t("home.preview.pdf.zoom_levels")} - - {(item) => ( - handleZoomLevel(item[0])}> - {item[1]} - - )} - - - - - - = 5} - onClick={() => props.store.pdfSlick?.viewer?.increaseScale()} - icon={} - /> - - - - -
- pageNumberRef!.select()} - onChange={(e) => props.onPageNumberChange(e.currentTarget.value)} - /> -
- - / {props.store.numPages} - -
- - props.store.pdfSlick?.viewer?.previousPage()} - icon={} - /> - - - = props.store.numPages - } - onClick={() => props.store.pdfSlick?.viewer?.nextPage()} - icon={} - /> - -
-
- ) -} - -export default PDFViewerApp diff --git a/vite.config.ts b/vite.config.ts index 08fe5c8..4b0e7a4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -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 }) => {