web-doc 0.3.0
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/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +148 -0
- package/THIRD_PARTY_NOTICES.md +20 -0
- package/bin/copy-assets.mjs +27 -0
- package/dist/abort.d.ts +1 -0
- package/dist/abort.js +18 -0
- package/dist/adapters/bitmap.d.ts +9 -0
- package/dist/adapters/bitmap.js +63 -0
- package/dist/adapters/csv-parser.d.ts +7 -0
- package/dist/adapters/csv-parser.js +124 -0
- package/dist/adapters/csv.d.ts +26 -0
- package/dist/adapters/csv.js +231 -0
- package/dist/adapters/image.d.ts +41 -0
- package/dist/adapters/image.js +198 -0
- package/dist/adapters/office.d.ts +211 -0
- package/dist/adapters/office.js +672 -0
- package/dist/adapters/pdf.d.ts +32 -0
- package/dist/adapters/pdf.js +429 -0
- package/dist/adapters/svg.d.ts +17 -0
- package/dist/adapters/svg.js +123 -0
- package/dist/assets/image/index.d.ts +75 -0
- package/dist/assets/image/index.js +289 -0
- package/dist/assets/image/index_bg.wasm +0 -0
- package/dist/assets/image/index_bg.wasm.d.ts +12 -0
- package/dist/assets/legacy/index.d.ts +54 -0
- package/dist/assets/legacy/index.js +306 -0
- package/dist/assets/legacy/index_bg.wasm +0 -0
- package/dist/assets/legacy/index_bg.wasm.d.ts +9 -0
- package/dist/assets/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/dist/assets/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/dist/assets/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/dist/assets/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/LICENSE +36 -0
- package/dist/assets/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/Roman.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/V.bcmap +0 -0
- package/dist/assets/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/dist/assets/pdfjs/iccs/CGATS001Compat-v2-micro.icc +0 -0
- package/dist/assets/pdfjs/iccs/LICENSE +116 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/dist/assets/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/dist/assets/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
- package/dist/assets/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/dist/assets/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/dist/assets/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/dist/assets/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/dist/assets/pdfjs/wasm/LICENSE_JBIG2 +196 -0
- package/dist/assets/pdfjs/wasm/LICENSE_OPENJPEG +39 -0
- package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_JBIG2 +13 -0
- package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
- package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_QCMS +22 -0
- package/dist/assets/pdfjs/wasm/LICENSE_QCMS +21 -0
- package/dist/assets/pdfjs/wasm/jbig2.wasm +0 -0
- package/dist/assets/pdfjs/wasm/jbig2_nowasm_fallback.js +15 -0
- package/dist/assets/pdfjs/wasm/openjpeg.wasm +0 -0
- package/dist/assets/pdfjs/wasm/openjpeg_nowasm_fallback.js +17 -0
- package/dist/assets/pdfjs/wasm/qcms_bg.wasm +0 -0
- package/dist/assets/pdfjs/wasm/quickjs-eval.js +16 -0
- package/dist/assets/pdfjs/wasm/quickjs-eval.wasm +0 -0
- package/dist/client.d.ts +20 -0
- package/dist/client.js +82 -0
- package/dist/contracts.d.ts +379 -0
- package/dist/contracts.js +22 -0
- package/dist/csv-worker.d.ts +1 -0
- package/dist/csv-worker.js +17 -0
- package/dist/detect.d.ts +15 -0
- package/dist/detect.js +290 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.js +40 -0
- package/dist/font-manifest.d.ts +11 -0
- package/dist/font-manifest.js +31 -0
- package/dist/fonts/OFL-1.1.txt +88 -0
- package/dist/fonts/THIRD_PARTY_NOTICES.md +10 -0
- package/dist/fonts/manifest.json +83 -0
- package/dist/fonts/noto-sans-arabic.woff2 +0 -0
- package/dist/fonts/noto-sans-bengali.woff2 +0 -0
- package/dist/fonts/noto-sans-cjk.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari.woff2 +0 -0
- package/dist/fonts/noto-sans-gujarati.woff2 +0 -0
- package/dist/fonts/noto-sans-gurmukhi.woff2 +0 -0
- package/dist/fonts/noto-sans-japanese.woff2 +0 -0
- package/dist/fonts/noto-sans-kannada.woff2 +0 -0
- package/dist/fonts/noto-sans-korean.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-cyrillic.woff2 +0 -0
- package/dist/fonts/noto-sans-malayalam.woff2 +0 -0
- package/dist/fonts/noto-sans-odia.woff2 +0 -0
- package/dist/fonts/noto-sans-tamil.woff2 +0 -0
- package/dist/fonts/noto-sans-telugu.woff2 +0 -0
- package/dist/fonts.d.ts +20 -0
- package/dist/fonts.js +238 -0
- package/dist/format.d.ts +1 -0
- package/dist/format.js +1 -0
- package/dist/headless.d.ts +18 -0
- package/dist/headless.js +18 -0
- package/dist/i18n.d.ts +4 -0
- package/dist/i18n.js +55 -0
- package/dist/image-worker.d.ts +1 -0
- package/dist/image-worker.js +41 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +29 -0
- package/dist/interaction.d.ts +24 -0
- package/dist/interaction.js +183 -0
- package/dist/legacy-converter-worker.d.ts +1 -0
- package/dist/legacy-converter-worker.js +19 -0
- package/dist/limits.d.ts +4 -0
- package/dist/limits.js +162 -0
- package/dist/registry.d.ts +8 -0
- package/dist/registry.js +35 -0
- package/dist/render-scheduler.d.ts +8 -0
- package/dist/render-scheduler.js +63 -0
- package/dist/source.d.ts +14 -0
- package/dist/source.js +116 -0
- package/dist/spreadsheet-viewport.d.ts +34 -0
- package/dist/spreadsheet-viewport.js +1035 -0
- package/dist/styles.css +137 -0
- package/dist/ui-styles.d.ts +1 -0
- package/dist/ui-styles.js +139 -0
- package/dist/ui.d.ts +8 -0
- package/dist/ui.js +390 -0
- package/dist/viewer.d.ts +52 -0
- package/dist/viewer.js +901 -0
- package/dist/viewport.d.ts +54 -0
- package/dist/viewport.js +907 -0
- package/dist/worker-adapter.d.ts +24 -0
- package/dist/worker-adapter.js +97 -0
- package/dist/worker-client.d.ts +23 -0
- package/dist/worker-client.js +105 -0
- package/dist/worker-endpoint.d.ts +13 -0
- package/dist/worker-endpoint.js +57 -0
- package/dist/worker-protocol.d.ts +48 -0
- package/dist/worker-protocol.js +14 -0
- package/dist/worker.d.ts +4 -0
- package/dist/worker.js +4 -0
- package/dist/workers/csv-worker.js +160 -0
- package/dist/workers/image-worker.js +41 -0
- package/dist/workers/legacy-converter-worker.js +19 -0
- package/dist/workers/pdf.worker.min.mjs +28 -0
- package/package.json +74 -0
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* THIS FILE IS GENERATED - DO NOT EDIT */
|
|
2
|
+
async function QuickJS(moduleArg={}){var moduleRtn;var e=moduleArg,aa=import.meta.url,h="",m;try{h=(new URL(".",aa)).href}catch{}m=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);};var q=console.error.bind(console),r,t=!1,u,v,w,x=!1;function y(){var a=z.buffer;A=new Int8Array(a);new Int16Array(a);B=new Uint8Array(a);new Uint16Array(a);C=new Int32Array(a);D=new Uint32Array(a);new Float32Array(a);new Float64Array(a);new BigInt64Array(a);new BigUint64Array(a)}
|
|
3
|
+
function E(a){e.onAbort?.(a);a=`Aborted(${a})`;q(a);t=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");w?.(a);throw a;}var F;async function ba(a){if(!r)try{var b=await m(a);return new Uint8Array(b)}catch{}if(a==F&&r)a=new Uint8Array(r);else throw"both async and sync fetching of the wasm failed";return a}async function ca(a,b){try{var c=await ba(a);return await WebAssembly.instantiate(c,b)}catch(d){q(`failed to asynchronously prepare wasm: ${d}`),E(d)}}
|
|
4
|
+
async function da(a){var b=F;if(!r)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){q(`wasm streaming compile failed: ${d}`),q("falling back to ArrayBuffer instantiation")}return ca(b,a)}class G{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}
|
|
5
|
+
var C,A,D,B,H=a=>{for(;a.length>0;)a.shift()(e)},I=[],J=[],ea=()=>{var a=e.preRun.shift();J.push(a)},K=!0,L=0,fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],M={},N=a=>{if(!(a instanceof G||a=="unwind"))throw a;},O=a=>{u=a;K||L>0||(e.onExit?.(a),t=!0);throw new G(a);},ia=a=>{if(!t)try{a()}catch(b){N(b)}finally{if(!(K||L>0))try{u=a=u,O(a)}catch(b){N(b)}}},P=(a,b,c)=>{var d=B;if(c>0){c=b+c-1;for(var g=0;g<a.length;++g){var f=a.codePointAt(g);if(f<=127){if(b>=
|
|
6
|
+
c)break;d[b++]=f}else if(f<=2047){if(b+1>=c)break;d[b++]=192|f>>6;d[b++]=128|f&63}else if(f<=65535){if(b+2>=c)break;d[b++]=224|f>>12;d[b++]=128|f>>6&63;d[b++]=128|f&63}else{if(b+3>=c)break;d[b++]=240|f>>18;d[b++]=128|f>>12&63;d[b++]=128|f>>6&63;d[b++]=128|f&63;g++}}d[b]=0}},ja=new TextDecoder,Q=a=>{if(a){for(var b=a,c=B,d=b+void 0;c[b]&&!(b>=d);)++b;a=ja.decode(B.subarray(a,b))}else a="";return a},R=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);d<=127?b++:d<=2047?b+=2:d>=55296&&d<=57343?
|
|
7
|
+
(b+=4,++c):b+=3}return b},T=a=>{var b=R(a)+1,c=S(b);c&&P(a,c,b);return c};function U(){}var la=(a,b,c,d)=>{var g={string:k=>{var n=0;if(k!==null&&k!==void 0&&k!==0){n=R(k)+1;var X=V(n);P(k,X,n);n=X}return n},array:k=>{var n=V(k.length);A.set(k,n);return n}};a=e["_"+a];var f=[],p=0;if(d)for(var l=0;l<d.length;l++){var Y=g[c[l]];Y?(p===0&&(p=W()),f[l]=Y(d[l])):f[l]=d[l]}c=a(...f);return c=function(k){p!==0&&ka(p);return b==="string"?Q(k):b==="boolean"?!!k:k}(c)};
|
|
8
|
+
U=(a,b,c)=>{a=Q(a);b=b!==null?JSON.parse(Q(b)):[];try{let d=e.externalCall(a,b);return d?T(d):null}catch(d){return e.HEAPU8[c]=1,T(d.message)}};e.noExitRuntime&&(K=e.noExitRuntime);e.printErr&&(q=e.printErr);e.wasmBinary&&(r=e.wasmBinary);if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.shift()();e.ccall=la;e.cwrap=(a,b,c,d)=>{var g=!c||c.every(f=>f==="number"||f==="boolean");return b!=="string"&&g&&!d?e["_"+a]:(...f)=>la(a,b,c,f,d)};
|
|
9
|
+
e.stringToNewUTF8=T;
|
|
10
|
+
var S,ma,ka,V,W,z,na={e:()=>E(""),a:()=>{K=!1;L=0},b:function(a,b){a=a<-9007199254740992||a>9007199254740992?NaN:Number(a);a=new Date(a*1E3);C[b>>2]=a.getSeconds();C[b+4>>2]=a.getMinutes();C[b+8>>2]=a.getHours();C[b+12>>2]=a.getDate();C[b+16>>2]=a.getMonth();C[b+20>>2]=a.getFullYear()-1900;C[b+24>>2]=a.getDay();var c=a.getFullYear();C[b+28>>2]=(c%4!==0||c%100===0&&c%400!==0?ha:fa)[a.getMonth()]+a.getDate()-1|0;C[b+36>>2]=-(a.getTimezoneOffset()*60);c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();
|
|
11
|
+
var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();C[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},i:(a,b)=>{M[a]&&(clearTimeout(M[a].id),delete M[a]);if(!b)return 0;var c=setTimeout(()=>{delete M[a];ia(()=>ma(a,performance.now()))},b);M[a]={id:c,A:b};return 0},c:(a,b,c,d)=>{var g=(new Date).getFullYear(),f=(new Date(g,0,1)).getTimezoneOffset();g=(new Date(g,6,1)).getTimezoneOffset();D[a>>2]=Math.max(f,g)*60;C[b>>2]=Number(f!=g);b=p=>{var l=Math.abs(p);return`UTC${p>=0?"-":"+"}${String(Math.floor(l/
|
|
12
|
+
60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};a=b(f);b=b(g);g<f?(P(a,c,17),P(b,d,17)):(P(a,d,17),P(b,c,17))},g:U,f:function(a,b){a=Q(a);try{var c=window.JSON.parse(a)}catch(d){c=a}b!==0?window.alert(a):window.console.log("DUMP",c)},d:()=>Date.now(),j:a=>{var b=B.length;a>>>=0;if(a>2147483648)return!1;for(var c=1;c<=4;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,Math.ceil(Math.max(a,d)/65536)*65536)-z.buffer.byteLength+65535)/65536|0;try{z.grow(d);y();var g=1;
|
|
13
|
+
break a}catch(f){}g=void 0}if(g)return!0}return!1},m:function(a){a=Q(a);window.console.log(a)},h:function(a){a=Q(a);return Date.parse(a)},l:function(a,b,c,d){a=Q(a);b=Q(b);c=Q(c);c=`Quickjs -- ${a}: ${b}\n${c}`;d!==0?window.alert(c):window.console.error(c)},k:O},Z;
|
|
14
|
+
Z=await (async function(){function a(c){c=Z=c.exports;e._evalInSandbox=c.p;e._nukeSandbox=c.q;e._init=c.r;e._commFun=c.s;e._dumpMemoryUse=c.t;S=c.u;e._free=c.v;ma=c.w;ka=c.x;V=c.y;W=c.z;z=c.n;y();return Z}var b={a:na};if(e.instantiateWasm)return new Promise(c=>{e.instantiateWasm(b,(d,g)=>{c(a(d,g))})});F??=e.locateFile?e.locateFile?e.locateFile("quickjs-eval.wasm",h):h+"quickjs-eval.wasm":(new URL("quickjs-eval.wasm",import.meta.url)).href;return function(c){return a(c.instance)}(await da(b))}());
|
|
15
|
+
(function(){function a(){e.calledRun=!0;if(!t){x=!0;Z.o();v?.(e);e.onRuntimeInitialized?.();if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();I.push(b)}H(I)}}if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)ea();H(J);e.setStatus?(e.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>e.setStatus(""),1);a()},1)):a()})();x?moduleRtn=e:moduleRtn=new Promise((a,b)=>{v=a;w=b});
|
|
16
|
+
;return moduleRtn}export default QuickJS;
|
|
Binary file
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DocumentAdapter, ResourceLimits, ViewerClientOptions, ViewerFetch, ViewerLogger, ViewerOptions } from "./contracts.js";
|
|
2
|
+
import { AdapterRegistry } from "./registry.js";
|
|
3
|
+
import { DocumentViewer } from "./viewer.js";
|
|
4
|
+
import { FontManager } from "./fonts.js";
|
|
5
|
+
import { RenderScheduler } from "./render-scheduler.js";
|
|
6
|
+
export declare class ViewerClient {
|
|
7
|
+
#private;
|
|
8
|
+
readonly registry: AdapterRegistry;
|
|
9
|
+
readonly fetch: ViewerFetch;
|
|
10
|
+
readonly logger?: ViewerLogger;
|
|
11
|
+
readonly assetBaseUrl?: URL;
|
|
12
|
+
readonly limits: ResourceLimits;
|
|
13
|
+
readonly fonts: FontManager;
|
|
14
|
+
readonly renderScheduler: RenderScheduler;
|
|
15
|
+
static create(options?: ViewerClientOptions): ViewerClient;
|
|
16
|
+
constructor(options?: ViewerClientOptions);
|
|
17
|
+
createViewer(options?: ViewerOptions): DocumentViewer;
|
|
18
|
+
registerAdapter(adapter: DocumentAdapter): () => void;
|
|
19
|
+
destroy(): Promise<void>;
|
|
20
|
+
}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ViewerError } from "./errors.js";
|
|
2
|
+
import { defaultResourceLimits, resolveLimits } from "./limits.js";
|
|
3
|
+
import { AdapterRegistry } from "./registry.js";
|
|
4
|
+
import { DocumentViewer } from "./viewer.js";
|
|
5
|
+
import { createOfficeAdapter } from "./adapters/office.js";
|
|
6
|
+
import { createPdfAdapter } from "./adapters/pdf.js";
|
|
7
|
+
import { createImageAdapter } from "./adapters/image.js";
|
|
8
|
+
import { createCsvAdapter } from "./adapters/csv.js";
|
|
9
|
+
import { createSvgAdapter } from "./adapters/svg.js";
|
|
10
|
+
import { FontManager } from "./fonts.js";
|
|
11
|
+
import { RenderScheduler } from "./render-scheduler.js";
|
|
12
|
+
export class ViewerClient {
|
|
13
|
+
registry;
|
|
14
|
+
fetch;
|
|
15
|
+
logger;
|
|
16
|
+
assetBaseUrl;
|
|
17
|
+
limits;
|
|
18
|
+
fonts;
|
|
19
|
+
renderScheduler;
|
|
20
|
+
#viewers = new Set();
|
|
21
|
+
#destroyed = false;
|
|
22
|
+
static create(options = {}) {
|
|
23
|
+
return new ViewerClient(options);
|
|
24
|
+
}
|
|
25
|
+
constructor(options = {}) {
|
|
26
|
+
this.registry = new AdapterRegistry(options.adapters ?? [
|
|
27
|
+
createOfficeAdapter(),
|
|
28
|
+
createPdfAdapter(),
|
|
29
|
+
createImageAdapter(),
|
|
30
|
+
createCsvAdapter(),
|
|
31
|
+
createSvgAdapter(),
|
|
32
|
+
]);
|
|
33
|
+
this.fetch = options.fetch ?? globalThis.fetch?.bind(globalThis);
|
|
34
|
+
if (!this.fetch)
|
|
35
|
+
throw new ViewerError("network-error", "No global fetch implementation is available; supply options.fetch");
|
|
36
|
+
if (options.logger)
|
|
37
|
+
this.logger = options.logger;
|
|
38
|
+
if (options.assetBaseUrl)
|
|
39
|
+
this.assetBaseUrl = new URL(options.assetBaseUrl, globalThis.location?.href ?? "http://localhost/");
|
|
40
|
+
this.limits = resolveLimits(defaultResourceLimits, options.limits);
|
|
41
|
+
this.fonts = new FontManager({
|
|
42
|
+
fetch: this.fetch,
|
|
43
|
+
...(this.assetBaseUrl ? { assetBaseUrl: this.assetBaseUrl } : {}),
|
|
44
|
+
...(options.fontPolicy ? { policy: options.fontPolicy } : {}),
|
|
45
|
+
...(options.fonts ? { registered: options.fonts } : {}),
|
|
46
|
+
});
|
|
47
|
+
this.renderScheduler = new RenderScheduler(this.limits.maxConcurrentRenders);
|
|
48
|
+
}
|
|
49
|
+
createViewer(options = {}) {
|
|
50
|
+
this.#assertAlive();
|
|
51
|
+
const runtime = {
|
|
52
|
+
registry: this.registry,
|
|
53
|
+
fetch: this.fetch,
|
|
54
|
+
limits: this.limits,
|
|
55
|
+
fonts: this.fonts,
|
|
56
|
+
renderScheduler: this.renderScheduler,
|
|
57
|
+
...(this.logger ? { logger: this.logger } : {}),
|
|
58
|
+
...(this.assetBaseUrl ? { assetBaseUrl: this.assetBaseUrl } : {}),
|
|
59
|
+
release: (viewer) => this.#viewers.delete(viewer),
|
|
60
|
+
};
|
|
61
|
+
const viewer = new DocumentViewer(options, runtime);
|
|
62
|
+
this.#viewers.add(viewer);
|
|
63
|
+
return viewer;
|
|
64
|
+
}
|
|
65
|
+
registerAdapter(adapter) {
|
|
66
|
+
this.#assertAlive();
|
|
67
|
+
return this.registry.register(adapter);
|
|
68
|
+
}
|
|
69
|
+
async destroy() {
|
|
70
|
+
if (this.#destroyed)
|
|
71
|
+
return;
|
|
72
|
+
this.#destroyed = true;
|
|
73
|
+
await Promise.all([...this.#viewers].map(async (viewer) => viewer.destroy()));
|
|
74
|
+
this.#viewers.clear();
|
|
75
|
+
await this.registry.destroy();
|
|
76
|
+
await this.fonts.destroy();
|
|
77
|
+
}
|
|
78
|
+
#assertAlive() {
|
|
79
|
+
if (this.#destroyed)
|
|
80
|
+
throw new ViewerError("lifecycle-error", "ViewerClient is destroyed");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
export declare const supportedFormats: readonly ["docx", "docm", "xlsx", "xlsm", "pptx", "pptm", "ppsx", "doc", "xls", "ppt", "pdf", "csv", "tsv", "png", "jpeg", "gif", "webp", "svg", "bmp", "tiff"];
|
|
2
|
+
export type DocumentFormat = (typeof supportedFormats)[number];
|
|
3
|
+
export type ViewerLocale = "en" | "ru";
|
|
4
|
+
export type FitMode = "none" | "page" | "width";
|
|
5
|
+
export type ViewerStatus = "idle" | "loading" | "ready" | "error" | "destroyed";
|
|
6
|
+
export type RenderUnit = "page" | "slide" | "sheet" | "image";
|
|
7
|
+
export type ViewerErrorCode = "unsupported-format" | "fidelity-unsupported" | "invalid-file" | "encrypted-document" | "resource-limit" | "network-error" | "aborted" | "font-unavailable" | "render-failed" | "worker-crashed" | "lifecycle-error" | "internal";
|
|
8
|
+
export type ViewerWarningCode = "format-hint-mismatch" | "unsupported-feature" | "font-substitution" | "font-unavailable" | "external-resource-blocked" | "fidelity-degraded";
|
|
9
|
+
export interface ViewerErrorData {
|
|
10
|
+
readonly name: "ViewerError";
|
|
11
|
+
readonly code: ViewerErrorCode;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
readonly details?: Readonly<Record<string, unknown>>;
|
|
14
|
+
}
|
|
15
|
+
export interface ViewerWarning {
|
|
16
|
+
readonly code: ViewerWarningCode;
|
|
17
|
+
readonly message: string;
|
|
18
|
+
readonly details?: Readonly<Record<string, unknown>>;
|
|
19
|
+
}
|
|
20
|
+
export interface ViewerProgress {
|
|
21
|
+
readonly phase: "loading" | "detecting" | "parsing" | "converting" | "rendering";
|
|
22
|
+
readonly loaded?: number;
|
|
23
|
+
readonly total?: number;
|
|
24
|
+
readonly ratio?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ResourceLimits {
|
|
27
|
+
readonly maxInputBytes: number;
|
|
28
|
+
readonly maxExpandedOfficeBytes: number;
|
|
29
|
+
readonly maxZipEntryBytes: number;
|
|
30
|
+
readonly maxDecodedPixels: number;
|
|
31
|
+
readonly maxSvgBytes: number;
|
|
32
|
+
readonly maxCsvCells: number;
|
|
33
|
+
readonly maxTextMapBytes: number;
|
|
34
|
+
readonly maxDocumentUnits: number;
|
|
35
|
+
readonly maxConcurrentRenders: number;
|
|
36
|
+
readonly maxOperationMs: number;
|
|
37
|
+
}
|
|
38
|
+
export type BinaryDocumentSource = ArrayBuffer | Uint8Array | Blob;
|
|
39
|
+
export type DocumentSource = BinaryDocumentSource | URL | string;
|
|
40
|
+
export interface OpenDocumentOptions {
|
|
41
|
+
readonly fileName?: string;
|
|
42
|
+
readonly contentType?: string;
|
|
43
|
+
readonly format?: DocumentFormat;
|
|
44
|
+
readonly signal?: AbortSignal;
|
|
45
|
+
readonly limits?: Partial<ResourceLimits>;
|
|
46
|
+
}
|
|
47
|
+
export type ViewerFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
48
|
+
export type FontPolicyMode = "auto" | "offline" | "custom";
|
|
49
|
+
export type FontStyle = "normal" | "italic" | "oblique";
|
|
50
|
+
export type FontScript = "latin" | "cyrillic" | "cjk" | "japanese" | "korean" | "arabic" | "devanagari" | "bengali" | "gujarati" | "gurmukhi" | "odia" | "tamil" | "telugu" | "kannada" | "malayalam" | "unknown";
|
|
51
|
+
export type FontBinarySource = ArrayBuffer | Uint8Array;
|
|
52
|
+
export type FontSource = FontBinarySource | URL | string;
|
|
53
|
+
export interface FontRequest {
|
|
54
|
+
readonly family?: string;
|
|
55
|
+
readonly weight: number;
|
|
56
|
+
readonly style: FontStyle;
|
|
57
|
+
readonly script: FontScript;
|
|
58
|
+
readonly codepoints: readonly number[];
|
|
59
|
+
}
|
|
60
|
+
export interface FontResolution {
|
|
61
|
+
readonly family?: string;
|
|
62
|
+
readonly source: FontSource;
|
|
63
|
+
readonly weight?: number;
|
|
64
|
+
readonly style?: FontStyle;
|
|
65
|
+
}
|
|
66
|
+
export type FontResolver = (request: FontRequest, signal: AbortSignal) => FontResolution | null | Promise<FontResolution | null>;
|
|
67
|
+
export interface FontPolicy {
|
|
68
|
+
readonly mode?: FontPolicyMode;
|
|
69
|
+
readonly resolver?: FontResolver;
|
|
70
|
+
}
|
|
71
|
+
export interface RegisteredFont {
|
|
72
|
+
readonly family: string;
|
|
73
|
+
readonly source: FontSource;
|
|
74
|
+
readonly weight?: number;
|
|
75
|
+
readonly style?: FontStyle;
|
|
76
|
+
readonly scripts?: readonly FontScript[];
|
|
77
|
+
}
|
|
78
|
+
export interface ViewerTranslations {
|
|
79
|
+
readonly previous: string;
|
|
80
|
+
readonly next: string;
|
|
81
|
+
readonly page: string;
|
|
82
|
+
readonly of: string;
|
|
83
|
+
readonly zoomIn: string;
|
|
84
|
+
readonly zoomOut: string;
|
|
85
|
+
readonly fitWidth: string;
|
|
86
|
+
readonly fitPage: string;
|
|
87
|
+
readonly search: string;
|
|
88
|
+
readonly searchPlaceholder: string;
|
|
89
|
+
readonly matches: string;
|
|
90
|
+
readonly thumbnails: string;
|
|
91
|
+
readonly fullscreen: string;
|
|
92
|
+
readonly exitFullscreen: string;
|
|
93
|
+
readonly download: string;
|
|
94
|
+
readonly sheets: string;
|
|
95
|
+
readonly selectedRange: string;
|
|
96
|
+
readonly loading: string;
|
|
97
|
+
readonly close: string;
|
|
98
|
+
readonly noMatches: string;
|
|
99
|
+
}
|
|
100
|
+
export interface ViewerLogger {
|
|
101
|
+
debug?(message: string, details?: Readonly<Record<string, unknown>>): void;
|
|
102
|
+
warn?(message: string, details?: Readonly<Record<string, unknown>>): void;
|
|
103
|
+
error?(message: string, details?: Readonly<Record<string, unknown>>): void;
|
|
104
|
+
}
|
|
105
|
+
export interface ViewerOptions {
|
|
106
|
+
readonly container?: HTMLElement;
|
|
107
|
+
readonly locale?: ViewerLocale;
|
|
108
|
+
readonly ui?: boolean;
|
|
109
|
+
readonly initialZoom?: number;
|
|
110
|
+
readonly fit?: FitMode;
|
|
111
|
+
readonly useWorker?: boolean;
|
|
112
|
+
readonly layout?: "continuous" | "single";
|
|
113
|
+
readonly overscan?: number;
|
|
114
|
+
readonly translations?: Partial<ViewerTranslations>;
|
|
115
|
+
}
|
|
116
|
+
export interface ViewerClientOptions {
|
|
117
|
+
readonly fetch?: ViewerFetch;
|
|
118
|
+
readonly logger?: ViewerLogger;
|
|
119
|
+
readonly assetBaseUrl?: string | URL;
|
|
120
|
+
readonly limits?: Partial<ResourceLimits>;
|
|
121
|
+
readonly adapters?: readonly DocumentAdapter[];
|
|
122
|
+
readonly fontPolicy?: FontPolicy;
|
|
123
|
+
readonly fonts?: readonly RegisteredFont[];
|
|
124
|
+
}
|
|
125
|
+
export interface ViewerState {
|
|
126
|
+
readonly status: ViewerStatus;
|
|
127
|
+
readonly format?: DocumentFormat;
|
|
128
|
+
readonly pageIndex: number;
|
|
129
|
+
readonly pageCount: number;
|
|
130
|
+
readonly zoom: number;
|
|
131
|
+
readonly fit: FitMode;
|
|
132
|
+
readonly panX: number;
|
|
133
|
+
readonly panY: number;
|
|
134
|
+
}
|
|
135
|
+
export interface TextRun {
|
|
136
|
+
readonly text: string;
|
|
137
|
+
readonly x: number;
|
|
138
|
+
readonly y: number;
|
|
139
|
+
readonly width: number;
|
|
140
|
+
readonly height: number;
|
|
141
|
+
readonly direction?: "ltr" | "rtl";
|
|
142
|
+
readonly fontFamily?: string;
|
|
143
|
+
readonly fontWeight?: number;
|
|
144
|
+
readonly fontStyle?: FontStyle;
|
|
145
|
+
/** Exact CSS font shorthand used by a canvas renderer. */
|
|
146
|
+
readonly font?: string;
|
|
147
|
+
/** Font size in the run coordinate space, in CSS pixels. */
|
|
148
|
+
readonly fontSize?: number;
|
|
149
|
+
/** Uniform canvas letter spacing in the run coordinate space. */
|
|
150
|
+
readonly letterSpacingPx?: number;
|
|
151
|
+
/** Renderer-provided CSS transform for rotated/vertical glyph runs. */
|
|
152
|
+
readonly transform?: string;
|
|
153
|
+
/** True for a horizontal-in-vertical (tate-chu-yoko) run. */
|
|
154
|
+
readonly eastAsianVert?: boolean;
|
|
155
|
+
/** Selectable overlay implementation that owns this run's geometry. */
|
|
156
|
+
readonly textLayer?: "docx" | "pdf" | "pptx" | "generic";
|
|
157
|
+
/** Unscaled coordinate-space width/height shared by all runs on a unit. */
|
|
158
|
+
readonly coordinateWidth?: number;
|
|
159
|
+
readonly coordinateHeight?: number;
|
|
160
|
+
/** UTF-16 offsets in the page's logical text stream. */
|
|
161
|
+
readonly logicalStart?: number;
|
|
162
|
+
readonly logicalEnd?: number;
|
|
163
|
+
readonly hyperlink?: HyperlinkTarget;
|
|
164
|
+
readonly row?: number;
|
|
165
|
+
readonly column?: number;
|
|
166
|
+
}
|
|
167
|
+
export type HyperlinkTarget = {
|
|
168
|
+
readonly kind: "external";
|
|
169
|
+
readonly url: string;
|
|
170
|
+
} | {
|
|
171
|
+
readonly kind: "internal";
|
|
172
|
+
readonly ref: string;
|
|
173
|
+
readonly pageIndex?: number;
|
|
174
|
+
};
|
|
175
|
+
export interface TextSelection {
|
|
176
|
+
readonly pageIndex: number;
|
|
177
|
+
readonly endPageIndex?: number;
|
|
178
|
+
readonly startOffset?: number;
|
|
179
|
+
readonly endOffset?: number;
|
|
180
|
+
readonly text: string;
|
|
181
|
+
readonly runs: readonly TextRun[];
|
|
182
|
+
}
|
|
183
|
+
export interface TextSelectionRange {
|
|
184
|
+
readonly startPageIndex: number;
|
|
185
|
+
readonly startOffset: number;
|
|
186
|
+
readonly endPageIndex: number;
|
|
187
|
+
readonly endOffset: number;
|
|
188
|
+
}
|
|
189
|
+
export interface CellRange {
|
|
190
|
+
readonly sheetIndex: number;
|
|
191
|
+
readonly startRow: number;
|
|
192
|
+
readonly startColumn: number;
|
|
193
|
+
readonly endRow: number;
|
|
194
|
+
readonly endColumn: number;
|
|
195
|
+
}
|
|
196
|
+
/** A non-contiguous spreadsheet selection, ordered by interaction order. */
|
|
197
|
+
export interface CellSelection {
|
|
198
|
+
readonly sheetIndex: number;
|
|
199
|
+
readonly ranges: readonly CellRange[];
|
|
200
|
+
}
|
|
201
|
+
export interface ViewerEventMap {
|
|
202
|
+
readonly statechange: ViewerState;
|
|
203
|
+
readonly ready: ViewerState;
|
|
204
|
+
readonly error: ViewerErrorData;
|
|
205
|
+
readonly warning: ViewerWarning;
|
|
206
|
+
readonly progress: ViewerProgress;
|
|
207
|
+
readonly selectionchange: TextSelection | CellRange | CellSelection | null;
|
|
208
|
+
readonly pagechange: {
|
|
209
|
+
readonly pageIndex: number;
|
|
210
|
+
readonly pageCount: number;
|
|
211
|
+
};
|
|
212
|
+
readonly zoomchange: {
|
|
213
|
+
readonly zoom: number;
|
|
214
|
+
readonly fit: FitMode;
|
|
215
|
+
};
|
|
216
|
+
readonly viewchange: ViewerState;
|
|
217
|
+
readonly searchchange: SearchResult | null;
|
|
218
|
+
}
|
|
219
|
+
export interface SearchOptions {
|
|
220
|
+
readonly caseSensitive?: boolean;
|
|
221
|
+
/**
|
|
222
|
+
* Inclusive 0-based page range to scan, as `[first, last]`. Restricts both
|
|
223
|
+
* the pages whose text is read and the returned matches; omit to search the
|
|
224
|
+
* whole document. A reversed range is normalized; an out-of-range endpoint
|
|
225
|
+
* is rejected.
|
|
226
|
+
*/
|
|
227
|
+
readonly pageRange?: readonly [number, number];
|
|
228
|
+
}
|
|
229
|
+
export interface SearchMatch {
|
|
230
|
+
readonly pageIndex: number;
|
|
231
|
+
readonly start: number;
|
|
232
|
+
readonly end: number;
|
|
233
|
+
readonly text: string;
|
|
234
|
+
}
|
|
235
|
+
export interface SearchResult {
|
|
236
|
+
readonly query: string;
|
|
237
|
+
readonly matches: readonly SearchMatch[];
|
|
238
|
+
readonly activeIndex: number;
|
|
239
|
+
}
|
|
240
|
+
export interface HeadlessRenderOptions {
|
|
241
|
+
readonly zoom?: number;
|
|
242
|
+
readonly devicePixelRatio?: number;
|
|
243
|
+
readonly width?: number;
|
|
244
|
+
readonly height?: number;
|
|
245
|
+
/** Unscaled pixels hidden before the first rendered spreadsheet column. */
|
|
246
|
+
readonly scrollOffsetX?: number;
|
|
247
|
+
/** Unscaled pixels hidden before the first rendered spreadsheet row. */
|
|
248
|
+
readonly scrollOffsetY?: number;
|
|
249
|
+
/** View-only spreadsheet column widths in unscaled CSS pixels, keyed from 1. */
|
|
250
|
+
readonly columnWidths?: Readonly<Record<number, number>>;
|
|
251
|
+
readonly signal?: AbortSignal;
|
|
252
|
+
readonly priority?: "visible" | "adjacent" | "background";
|
|
253
|
+
}
|
|
254
|
+
export interface ThumbnailRenderOptions {
|
|
255
|
+
readonly maxWidth?: number;
|
|
256
|
+
readonly maxHeight?: number;
|
|
257
|
+
readonly devicePixelRatio?: number;
|
|
258
|
+
readonly signal?: AbortSignal;
|
|
259
|
+
}
|
|
260
|
+
export interface RenderViewport {
|
|
261
|
+
readonly pageIndex: number;
|
|
262
|
+
readonly zoom: number;
|
|
263
|
+
readonly devicePixelRatio: number;
|
|
264
|
+
readonly width?: number;
|
|
265
|
+
readonly height?: number;
|
|
266
|
+
readonly scrollOffsetX?: number;
|
|
267
|
+
readonly scrollOffsetY?: number;
|
|
268
|
+
readonly columnWidths?: Readonly<Record<number, number>>;
|
|
269
|
+
readonly sheetRange?: SpreadsheetViewportRange;
|
|
270
|
+
}
|
|
271
|
+
export interface SpreadsheetViewportRange {
|
|
272
|
+
readonly row: number;
|
|
273
|
+
readonly column: number;
|
|
274
|
+
readonly rowCount: number;
|
|
275
|
+
readonly columnCount: number;
|
|
276
|
+
}
|
|
277
|
+
export interface SpreadsheetMergedRange {
|
|
278
|
+
readonly startRow: number;
|
|
279
|
+
readonly startColumn: number;
|
|
280
|
+
readonly endRow: number;
|
|
281
|
+
readonly endColumn: number;
|
|
282
|
+
}
|
|
283
|
+
export interface SpreadsheetSheetInfo {
|
|
284
|
+
readonly name: string;
|
|
285
|
+
readonly frozenRows: number;
|
|
286
|
+
readonly frozenColumns: number;
|
|
287
|
+
readonly mergedRanges: readonly SpreadsheetMergedRange[];
|
|
288
|
+
readonly maxRow: number;
|
|
289
|
+
readonly maxColumn: number;
|
|
290
|
+
/** Geometry is expressed in unscaled CSS pixels and uses 1-based indexes. */
|
|
291
|
+
readonly defaultColumnWidth?: number;
|
|
292
|
+
readonly defaultRowHeight?: number;
|
|
293
|
+
readonly columnWidths?: Readonly<Record<number, number>>;
|
|
294
|
+
readonly rowHeights?: Readonly<Record<number, number>>;
|
|
295
|
+
readonly rowHeaderWidth?: number;
|
|
296
|
+
readonly columnHeaderHeight?: number;
|
|
297
|
+
readonly rightToLeft?: boolean;
|
|
298
|
+
}
|
|
299
|
+
export interface PageSize {
|
|
300
|
+
/** Natural page width in CSS pixels at zoom 1. */
|
|
301
|
+
readonly width: number;
|
|
302
|
+
/** Natural page height in CSS pixels at zoom 1. */
|
|
303
|
+
readonly height: number;
|
|
304
|
+
}
|
|
305
|
+
export interface DocumentInfo {
|
|
306
|
+
readonly format: DocumentFormat;
|
|
307
|
+
readonly unit: RenderUnit;
|
|
308
|
+
readonly pageCount: number;
|
|
309
|
+
readonly sheetNames?: readonly string[];
|
|
310
|
+
readonly sheets?: readonly SpreadsheetSheetInfo[];
|
|
311
|
+
/** Natural page geometry, in document order, when exposed by the backend. */
|
|
312
|
+
readonly pageSizes?: readonly PageSize[];
|
|
313
|
+
readonly warnings?: readonly ViewerWarning[];
|
|
314
|
+
readonly capabilities?: DocumentCapabilities;
|
|
315
|
+
}
|
|
316
|
+
export interface DocumentCapabilities {
|
|
317
|
+
readonly textSelection: boolean;
|
|
318
|
+
readonly cellSelection: boolean;
|
|
319
|
+
readonly search: boolean;
|
|
320
|
+
readonly thumbnails: boolean;
|
|
321
|
+
}
|
|
322
|
+
export type DocumentMetadata = DocumentInfo;
|
|
323
|
+
export interface AdapterOpenContext {
|
|
324
|
+
readonly format: DocumentFormat;
|
|
325
|
+
readonly fileName?: string;
|
|
326
|
+
readonly contentType?: string;
|
|
327
|
+
readonly signal: AbortSignal;
|
|
328
|
+
readonly limits: ResourceLimits;
|
|
329
|
+
readonly assetBaseUrl?: URL;
|
|
330
|
+
readonly reportProgress: (progress: ViewerProgress) => void;
|
|
331
|
+
readonly reportWarning: (warning: ViewerWarning) => void;
|
|
332
|
+
}
|
|
333
|
+
export interface DocumentAdapter<THandle = unknown> {
|
|
334
|
+
readonly id: string;
|
|
335
|
+
readonly formats: readonly DocumentFormat[];
|
|
336
|
+
open(data: Uint8Array, context: AdapterOpenContext): Promise<THandle>;
|
|
337
|
+
getInfo(handle: THandle): Promise<DocumentInfo>;
|
|
338
|
+
render(handle: THandle, target: HTMLCanvasElement | OffscreenCanvas, viewport: RenderViewport, signal?: AbortSignal): Promise<void>;
|
|
339
|
+
getTextMap?(handle: THandle, pageIndex: number, signal?: AbortSignal): Promise<readonly TextRun[]>;
|
|
340
|
+
close(handle: THandle): void | Promise<void>;
|
|
341
|
+
destroy?(): void | Promise<void>;
|
|
342
|
+
}
|
|
343
|
+
export type ViewerEventListener<K extends keyof ViewerEventMap> = (event: ViewerEventMap[K]) => void;
|
|
344
|
+
export interface ViewerApi {
|
|
345
|
+
readonly state: ViewerState;
|
|
346
|
+
load(source: DocumentSource, options?: OpenDocumentOptions): Promise<void>;
|
|
347
|
+
open(source: DocumentSource, options?: OpenDocumentOptions): Promise<void>;
|
|
348
|
+
close(): Promise<void>;
|
|
349
|
+
setZoom(zoom: number): void;
|
|
350
|
+
zoomIn(): void;
|
|
351
|
+
zoomOut(): void;
|
|
352
|
+
setFit(mode: FitMode): void;
|
|
353
|
+
fitWidth(): void;
|
|
354
|
+
fitPage(): void;
|
|
355
|
+
panBy(deltaX: number, deltaY: number): void;
|
|
356
|
+
goToPage(pageIndex: number): void;
|
|
357
|
+
next(): void;
|
|
358
|
+
previous(): void;
|
|
359
|
+
setSheet(sheetIndex: number): void;
|
|
360
|
+
renderPage(pageIndex: number, target: HTMLCanvasElement | OffscreenCanvas, options?: HeadlessRenderOptions): Promise<void>;
|
|
361
|
+
renderThumbnail(pageIndex: number, target: HTMLCanvasElement | OffscreenCanvas, options?: ThumbnailRenderOptions): Promise<void>;
|
|
362
|
+
renderSheetViewport(sheetIndex: number, target: HTMLCanvasElement | OffscreenCanvas, range: SpreadsheetViewportRange, options?: HeadlessRenderOptions): Promise<void>;
|
|
363
|
+
getPageText(pageIndex: number, signal?: AbortSignal): Promise<string>;
|
|
364
|
+
getDocumentInfo(): DocumentInfo;
|
|
365
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult>;
|
|
366
|
+
searchNext(): SearchResult | null;
|
|
367
|
+
searchPrevious(): SearchResult | null;
|
|
368
|
+
clearSearch(): void;
|
|
369
|
+
getSelection(): TextSelection | CellRange | CellSelection | null;
|
|
370
|
+
selectText(range: TextSelectionRange): Promise<TextSelection>;
|
|
371
|
+
selectCells(range: CellRange): CellRange;
|
|
372
|
+
selectCellRanges(ranges: readonly CellRange[]): CellSelection;
|
|
373
|
+
clearSelection(): void;
|
|
374
|
+
copySelection(): Promise<string>;
|
|
375
|
+
getOriginalBytes(): Uint8Array | undefined;
|
|
376
|
+
downloadOriginal(fileName?: string): Blob;
|
|
377
|
+
on<K extends keyof ViewerEventMap>(type: K, listener: ViewerEventListener<K>): () => void;
|
|
378
|
+
destroy(): Promise<void>;
|
|
379
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const supportedFormats = [
|
|
2
|
+
"docx",
|
|
3
|
+
"docm",
|
|
4
|
+
"xlsx",
|
|
5
|
+
"xlsm",
|
|
6
|
+
"pptx",
|
|
7
|
+
"pptm",
|
|
8
|
+
"ppsx",
|
|
9
|
+
"doc",
|
|
10
|
+
"xls",
|
|
11
|
+
"ppt",
|
|
12
|
+
"pdf",
|
|
13
|
+
"csv",
|
|
14
|
+
"tsv",
|
|
15
|
+
"png",
|
|
16
|
+
"jpeg",
|
|
17
|
+
"gif",
|
|
18
|
+
"webp",
|
|
19
|
+
"svg",
|
|
20
|
+
"bmp",
|
|
21
|
+
"tiff",
|
|
22
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { parseDelimitedBytes } from "./adapters/csv-parser.js";
|
|
2
|
+
const workerScope = self;
|
|
3
|
+
workerScope.onmessage = (event) => {
|
|
4
|
+
try {
|
|
5
|
+
const result = parseDelimitedBytes(new Uint8Array(event.data.data), event.data.format, event.data.maxCells);
|
|
6
|
+
workerScope.postMessage({ ok: true, result });
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
workerScope.postMessage({
|
|
10
|
+
ok: false,
|
|
11
|
+
message: error instanceof Error ? error.message : String(error),
|
|
12
|
+
code: typeof error === "object" && error !== null && "code" in error
|
|
13
|
+
? String(error.code)
|
|
14
|
+
: "invalid-file",
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
};
|
package/dist/detect.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DocumentFormat, ViewerWarning } from "./contracts.js";
|
|
2
|
+
export interface FormatHints {
|
|
3
|
+
readonly fileName?: string;
|
|
4
|
+
readonly contentType?: string;
|
|
5
|
+
readonly format?: DocumentFormat;
|
|
6
|
+
}
|
|
7
|
+
export interface FormatDetection {
|
|
8
|
+
readonly format: DocumentFormat;
|
|
9
|
+
readonly confidence: "magic" | "container" | "hint";
|
|
10
|
+
readonly warnings: readonly ViewerWarning[];
|
|
11
|
+
}
|
|
12
|
+
export declare function detectFormat(data: Uint8Array, hints?: FormatHints): FormatDetection;
|
|
13
|
+
export declare function formatFromFileName(fileName: string): DocumentFormat | undefined;
|
|
14
|
+
export declare function formatFromMime(contentType?: string): DocumentFormat | undefined;
|
|
15
|
+
export declare function sniffFormat(data: Uint8Array): DocumentFormat | undefined;
|