@l1yp/file-viewer 0.1.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 +21 -0
- package/README.md +134 -0
- package/dist/FileViewer.js +7 -0
- package/dist/FileViewer.vue.d.ts +37 -0
- package/dist/FileViewer.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/AppxViewer.js +7 -0
- package/dist/components/AppxViewer.vue.d.ts +18 -0
- package/dist/components/AppxViewer.vue_vue_type_script_setup_true_lang.js +174 -0
- package/dist/components/ArchiveBrowser.js +7 -0
- package/dist/components/ArchiveBrowser.vue.d.ts +18 -0
- package/dist/components/ArchiveBrowser.vue_vue_type_script_setup_true_lang.js +279 -0
- package/dist/components/AudioViewer.js +7 -0
- package/dist/components/AudioViewer.vue.d.ts +21 -0
- package/dist/components/AudioViewer.vue_vue_type_script_setup_true_lang.js +201 -0
- package/dist/components/BinObjBrowser.js +7 -0
- package/dist/components/BinObjBrowser.vue.d.ts +19 -0
- package/dist/components/BinObjBrowser.vue_vue_type_script_setup_true_lang.js +141 -0
- package/dist/components/CertViewer.js +7 -0
- package/dist/components/CertViewer.vue.d.ts +17 -0
- package/dist/components/CertViewer.vue_vue_type_script_setup_true_lang.js +251 -0
- package/dist/components/ClassViewer.js +7 -0
- package/dist/components/ClassViewer.vue.d.ts +15 -0
- package/dist/components/ClassViewer.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/components/CodeBlock.js +7 -0
- package/dist/components/CodeBlock.vue.d.ts +17 -0
- package/dist/components/CodeBlock.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/CodeView.js +7 -0
- package/dist/components/CodeView.vue.d.ts +21 -0
- package/dist/components/CodeView.vue_vue_type_script_setup_true_lang.js +180 -0
- package/dist/components/CsvViewer.js +7 -0
- package/dist/components/CsvViewer.vue.d.ts +26 -0
- package/dist/components/CsvViewer.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/DicomViewer.js +7 -0
- package/dist/components/DicomViewer.vue.d.ts +30 -0
- package/dist/components/DicomViewer.vue_vue_type_script_setup_true_lang.js +362 -0
- package/dist/components/DocxViewer.js +7 -0
- package/dist/components/DocxViewer.vue.d.ts +19 -0
- package/dist/components/DocxViewer.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/DrawioViewer.js +7 -0
- package/dist/components/DrawioViewer.vue.d.ts +16 -0
- package/dist/components/DrawioViewer.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/DxfViewer.js +7 -0
- package/dist/components/DxfViewer.vue.d.ts +14 -0
- package/dist/components/DxfViewer.vue_vue_type_script_setup_true_lang.js +239 -0
- package/dist/components/EbookViewer.js +7 -0
- package/dist/components/EbookViewer.vue.d.ts +22 -0
- package/dist/components/EbookViewer.vue_vue_type_script_setup_true_lang.js +170 -0
- package/dist/components/EmlViewer.js +7 -0
- package/dist/components/EmlViewer.vue.d.ts +21 -0
- package/dist/components/EmlViewer.vue_vue_type_script_setup_true_lang.js +193 -0
- package/dist/components/EplViewer.js +7 -0
- package/dist/components/EplViewer.vue.d.ts +19 -0
- package/dist/components/EplViewer.vue_vue_type_script_setup_true_lang.js +201 -0
- package/dist/components/FileViewerBody.js +7 -0
- package/dist/components/FileViewerBody.vue.d.ts +47 -0
- package/dist/components/FileViewerBody.vue_vue_type_script_setup_true_lang.js +599 -0
- package/dist/components/FileViewerPanel.js +7 -0
- package/dist/components/FileViewerPanel.vue.d.ts +3 -0
- package/dist/components/FileViewerPanel.vue_vue_type_script_setup_true_lang.js +207 -0
- package/dist/components/FontViewer.js +7 -0
- package/dist/components/FontViewer.vue.d.ts +17 -0
- package/dist/components/FontViewer.vue_vue_type_script_setup_true_lang.js +120 -0
- package/dist/components/FrontmatterCard.js +7 -0
- package/dist/components/FrontmatterCard.vue.d.ts +11 -0
- package/dist/components/FrontmatterCard.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/GeoViewer.js +7 -0
- package/dist/components/GeoViewer.vue.d.ts +17 -0
- package/dist/components/GeoViewer.vue_vue_type_script_setup_true_lang.js +255 -0
- package/dist/components/HarViewer.js +7 -0
- package/dist/components/HarViewer.vue.d.ts +20 -0
- package/dist/components/HarViewer.vue_vue_type_script_setup_true_lang.js +322 -0
- package/dist/components/HexViewer.js +7 -0
- package/dist/components/HexViewer.vue.d.ts +22 -0
- package/dist/components/HexViewer.vue_vue_type_script_setup_true_lang.js +121 -0
- package/dist/components/HprofViewer.js +7 -0
- package/dist/components/HprofViewer.vue.d.ts +27 -0
- package/dist/components/HprofViewer.vue_vue_type_script_setup_true_lang.js +561 -0
- package/dist/components/ImageLightbox.js +7 -0
- package/dist/components/ImageLightbox.vue.d.ts +3 -0
- package/dist/components/ImageLightbox.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/InlineText.d.ts +29 -0
- package/dist/components/InlineText.js +21 -0
- package/dist/components/JksViewer.js +7 -0
- package/dist/components/JksViewer.vue.d.ts +22 -0
- package/dist/components/JksViewer.vue_vue_type_script_setup_true_lang.js +353 -0
- package/dist/components/JsonlViewer.js +7 -0
- package/dist/components/JsonlViewer.vue.d.ts +15 -0
- package/dist/components/JsonlViewer.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/LogViewer.js +7 -0
- package/dist/components/LogViewer.vue.d.ts +29 -0
- package/dist/components/LogViewer.vue_vue_type_script_setup_true_lang.js +670 -0
- package/dist/components/LrcViewer.js +7 -0
- package/dist/components/LrcViewer.vue.d.ts +17 -0
- package/dist/components/LrcViewer.vue_vue_type_script_setup_true_lang.js +106 -0
- package/dist/components/MarkdownTable.js +7 -0
- package/dist/components/MarkdownTable.vue.d.ts +19 -0
- package/dist/components/MarkdownTable.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/components/MarkdownText.d.ts +30 -0
- package/dist/components/MarkdownText.js +21 -0
- package/dist/components/MhtViewer.js +7 -0
- package/dist/components/MhtViewer.vue.d.ts +22 -0
- package/dist/components/MhtViewer.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/MindMapView.js +7 -0
- package/dist/components/MindMapView.vue.d.ts +23 -0
- package/dist/components/MindMapView.vue_vue_type_script_setup_true_lang.js +337 -0
- package/dist/components/MissingDependency.js +7 -0
- package/dist/components/MissingDependency.vue.d.ts +17 -0
- package/dist/components/MissingDependency.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/ModelViewer.js +7 -0
- package/dist/components/ModelViewer.vue.d.ts +18 -0
- package/dist/components/ModelViewer.vue_vue_type_script_setup_true_lang.js +157 -0
- package/dist/components/MsiViewer.js +7 -0
- package/dist/components/MsiViewer.vue.d.ts +19 -0
- package/dist/components/MsiViewer.vue_vue_type_script_setup_true_lang.js +136 -0
- package/dist/components/NotebookViewer.js +7 -0
- package/dist/components/NotebookViewer.vue.d.ts +20 -0
- package/dist/components/NotebookViewer.vue_vue_type_script_setup_true_lang.js +125 -0
- package/dist/components/PdfViewer.js +7 -0
- package/dist/components/PdfViewer.vue.d.ts +19 -0
- package/dist/components/PdfViewer.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/PptxViewer.js +7 -0
- package/dist/components/PptxViewer.vue.d.ts +20 -0
- package/dist/components/PptxViewer.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/components/PsdViewer.js +7 -0
- package/dist/components/PsdViewer.vue.d.ts +15 -0
- package/dist/components/PsdViewer.vue_vue_type_script_setup_true_lang.js +218 -0
- package/dist/components/QmcAudioViewer.js +7 -0
- package/dist/components/QmcAudioViewer.vue.d.ts +18 -0
- package/dist/components/QmcAudioViewer.vue_vue_type_script_setup_true_lang.js +92 -0
- package/dist/components/RasterViewer.js +7 -0
- package/dist/components/RasterViewer.vue.d.ts +21 -0
- package/dist/components/RasterViewer.vue_vue_type_script_setup_true_lang.js +161 -0
- package/dist/components/RtfViewer.js +7 -0
- package/dist/components/RtfViewer.vue.d.ts +21 -0
- package/dist/components/RtfViewer.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/components/SevenZipBrowser.js +7 -0
- package/dist/components/SevenZipBrowser.vue.d.ts +13 -0
- package/dist/components/SevenZipBrowser.vue_vue_type_script_setup_true_lang.js +366 -0
- package/dist/components/SqliteViewer.js +7 -0
- package/dist/components/SqliteViewer.vue.d.ts +18 -0
- package/dist/components/SqliteViewer.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/components/SubtitleViewer.js +7 -0
- package/dist/components/SubtitleViewer.vue.d.ts +15 -0
- package/dist/components/SubtitleViewer.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/XlsxChart.js +7 -0
- package/dist/components/XlsxChart.vue.d.ts +14 -0
- package/dist/components/XlsxChart.vue_vue_type_script_setup_true_lang.js +240 -0
- package/dist/components/XlsxViewer.js +7 -0
- package/dist/components/XlsxViewer.vue.d.ts +22 -0
- package/dist/components/XlsxViewer.vue_vue_type_script_setup_true_lang.js +814 -0
- package/dist/components/XmindViewer.js +7 -0
- package/dist/components/XmindViewer.vue.d.ts +13 -0
- package/dist/components/XmindViewer.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/ZipBrowser.js +7 -0
- package/dist/components/ZipBrowser.vue.d.ts +14 -0
- package/dist/components/ZipBrowser.vue_vue_type_script_setup_true_lang.js +326 -0
- package/dist/components/ZoomImage.js +7 -0
- package/dist/components/ZoomImage.vue.d.ts +29 -0
- package/dist/components/ZoomImage.vue_vue_type_script_setup_true_lang.js +147 -0
- package/dist/components/epl/EplCodeBlock.js +7 -0
- package/dist/components/epl/EplCodeBlock.vue.d.ts +15 -0
- package/dist/components/epl/EplCodeBlock.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/epl/EplDoc.js +7 -0
- package/dist/components/epl/EplDoc.vue.d.ts +19 -0
- package/dist/components/epl/EplDoc.vue_vue_type_script_setup_true_lang.js +327 -0
- package/dist/components/epl/EplMethod.js +7 -0
- package/dist/components/epl/EplMethod.vue.d.ts +14 -0
- package/dist/components/epl/EplMethod.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/epl/EplResource.js +7 -0
- package/dist/components/epl/EplResource.vue.d.ts +15 -0
- package/dist/components/epl/EplResource.vue_vue_type_script_setup_true_lang.js +204 -0
- package/dist/components/epl/EplTree.js +7 -0
- package/dist/components/epl/EplTree.vue.d.ts +27 -0
- package/dist/components/epl/EplTree.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/components/epl/EplVarTable.js +7 -0
- package/dist/components/epl/EplVarTable.vue.d.ts +21 -0
- package/dist/components/epl/EplVarTable.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/epl/docTypes.d.ts +12 -0
- package/dist/components/epl/numbering.d.ts +21 -0
- package/dist/components/epl/numbering.js +14 -0
- package/dist/components/icons/Icon.js +7 -0
- package/dist/components/icons/Icon.vue.d.ts +14 -0
- package/dist/components/icons/Icon.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/icons/iconPaths.d.ts +60 -0
- package/dist/components/icons/iconPaths.js +54 -0
- package/dist/components/optionalViewer.d.ts +14 -0
- package/dist/components/optionalViewer.js +37 -0
- package/dist/components/ui/ClampBlock.d.ts +82 -0
- package/dist/components/ui/ClampBlock.js +63 -0
- package/dist/composables/useFileViewer.d.ts +428 -0
- package/dist/composables/useFileViewer.js +27 -0
- package/dist/composables/useLightbox.d.ts +33 -0
- package/dist/composables/useLightbox.js +17 -0
- package/dist/composables/useLogRules.d.ts +47 -0
- package/dist/composables/useLogRules.js +74 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +30 -0
- package/dist/lib/aes.d.ts +25 -0
- package/dist/lib/aes.js +99 -0
- package/dist/lib/appx.d.ts +66 -0
- package/dist/lib/appx.js +112 -0
- package/dist/lib/archive.d.ts +29 -0
- package/dist/lib/asn1.d.ts +47 -0
- package/dist/lib/asn1.js +122 -0
- package/dist/lib/binobj.d.ts +69 -0
- package/dist/lib/binobj.js +430 -0
- package/dist/lib/brotli.d.ts +14 -0
- package/dist/lib/brotli.js +16 -0
- package/dist/lib/bzip2.d.ts +14 -0
- package/dist/lib/bzip2.js +161 -0
- package/dist/lib/classfile.d.ts +72 -0
- package/dist/lib/classfile.js +210 -0
- package/dist/lib/codePreview.d.ts +22 -0
- package/dist/lib/codePreview.js +27 -0
- package/dist/lib/codefold.d.ts +14 -0
- package/dist/lib/codefold.js +30 -0
- package/dist/lib/codeformat.d.ts +21 -0
- package/dist/lib/codeformat.js +130 -0
- package/dist/lib/csv.d.ts +19 -0
- package/dist/lib/csv.js +74 -0
- package/dist/lib/des.d.ts +17 -0
- package/dist/lib/des.js +928 -0
- package/dist/lib/diagram.d.ts +5 -0
- package/dist/lib/diagram.js +479 -0
- package/dist/lib/dicom.d.ts +69 -0
- package/dist/lib/dicom.js +442 -0
- package/dist/lib/dicomCodecs.d.ts +28 -0
- package/dist/lib/dicomCodecs.js +156 -0
- package/dist/lib/dicomRender.d.ts +46 -0
- package/dist/lib/dicomRender.js +114 -0
- package/dist/lib/dxf.d.ts +86 -0
- package/dist/lib/dxf.js +399 -0
- package/dist/lib/eml.d.ts +40 -0
- package/dist/lib/eml.js +46 -0
- package/dist/lib/encoding.d.ts +28 -0
- package/dist/lib/encoding.js +44 -0
- package/dist/lib/epl/code/ast.d.ts +150 -0
- package/dist/lib/epl/code/codeDataParser.d.ts +3 -0
- package/dist/lib/epl/code/codeDataParser.js +330 -0
- package/dist/lib/epl/code/codeLines.d.ts +20 -0
- package/dist/lib/epl/code/codeLines.js +191 -0
- package/dist/lib/epl/code/structures.d.ts +86 -0
- package/dist/lib/epl/code/textCode.d.ts +29 -0
- package/dist/lib/epl/code/textCode.js +150 -0
- package/dist/lib/epl/code/variable.d.ts +25 -0
- package/dist/lib/epl/eplDocument.d.ts +21 -0
- package/dist/lib/epl/eplDocument.js +36 -0
- package/dist/lib/epl/imageList.d.ts +28 -0
- package/dist/lib/epl/imageList.js +66 -0
- package/dist/lib/epl/index.d.ts +53 -0
- package/dist/lib/epl/index.js +45 -0
- package/dist/lib/epl/io/binaryReader.d.ts +56 -0
- package/dist/lib/epl/io/binaryReader.js +119 -0
- package/dist/lib/epl/io/encoding.d.ts +16 -0
- package/dist/lib/epl/io/encoding.js +27 -0
- package/dist/lib/epl/model/eplSystemId.d.ts +64 -0
- package/dist/lib/epl/model/eplSystemId.js +16 -0
- package/dist/lib/epl/model/section.d.ts +46 -0
- package/dist/lib/epl/names/eplLibData.js +39 -0
- package/dist/lib/epl/names/idToNameMap.d.ts +33 -0
- package/dist/lib/epl/names/idToNameMap.js +130 -0
- package/dist/lib/epl/names/libNameProvider.d.ts +15 -0
- package/dist/lib/epl/names/libNameProvider.js +18 -0
- package/dist/lib/epl/program.d.ts +120 -0
- package/dist/lib/epl/program.js +134 -0
- package/dist/lib/epl/projectFileReader.d.ts +23 -0
- package/dist/lib/epl/projectFileReader.js +65 -0
- package/dist/lib/epl/sections/code.d.ts +20 -0
- package/dist/lib/epl/sections/esystemInfo.d.ts +14 -0
- package/dist/lib/epl/sections/losable.d.ts +11 -0
- package/dist/lib/epl/sections/projectConfig.d.ts +23 -0
- package/dist/lib/epl/sections/resource.d.ts +57 -0
- package/dist/lib/fb2.d.ts +14 -0
- package/dist/lib/fb2.js +62 -0
- package/dist/lib/fileType.d.ts +315 -0
- package/dist/lib/fileType.js +800 -0
- package/dist/lib/fonts.d.ts +8 -0
- package/dist/lib/fonts.js +4 -0
- package/dist/lib/format.d.ts +16 -0
- package/dist/lib/format.js +38 -0
- package/dist/lib/frontmatter.d.ts +13 -0
- package/dist/lib/frontmatter.js +23 -0
- package/dist/lib/geo.d.ts +30 -0
- package/dist/lib/geo.js +235 -0
- package/dist/lib/har.d.ts +171 -0
- package/dist/lib/har.js +397 -0
- package/dist/lib/highlight.d.ts +18 -0
- package/dist/lib/highlight.js +34 -0
- package/dist/lib/highlightLangs.d.ts +15 -0
- package/dist/lib/highlightLangs.js +93 -0
- package/dist/lib/hprof.d.ts +211 -0
- package/dist/lib/hprof.js +709 -0
- package/dist/lib/ipynb.d.ts +48 -0
- package/dist/lib/ipynb.js +130 -0
- package/dist/lib/jks.d.ts +86 -0
- package/dist/lib/jks.js +167 -0
- package/dist/lib/jsonl.d.ts +29 -0
- package/dist/lib/jsonl.js +24 -0
- package/dist/lib/lrc.d.ts +32 -0
- package/dist/lib/lrc.js +84 -0
- package/dist/lib/lzma.d.ts +70 -0
- package/dist/lib/lzma.js +204 -0
- package/dist/lib/markdown/blocks.d.ts +9 -0
- package/dist/lib/markdown/blocks.js +221 -0
- package/dist/lib/markdown/index.d.ts +3 -0
- package/dist/lib/markdown/inline.d.ts +33 -0
- package/dist/lib/markdown/inline.js +84 -0
- package/dist/lib/markdown/math.d.ts +5 -0
- package/dist/lib/markdown/math.js +25 -0
- package/dist/lib/markdown/segmentize.d.ts +11 -0
- package/dist/lib/markdown/segmentize.js +28 -0
- package/dist/lib/markdown/styles.d.ts +26 -0
- package/dist/lib/markdown/styles.js +135 -0
- package/dist/lib/mht.d.ts +51 -0
- package/dist/lib/mht.js +122 -0
- package/dist/lib/midi.d.ts +28 -0
- package/dist/lib/midi.js +84 -0
- package/dist/lib/mime.d.ts +82 -0
- package/dist/lib/mime.js +151 -0
- package/dist/lib/mindmap.d.ts +51 -0
- package/dist/lib/mindmap.js +113 -0
- package/dist/lib/mobi.d.ts +15 -0
- package/dist/lib/mobi.js +68 -0
- package/dist/lib/msi.d.ts +50 -0
- package/dist/lib/msi.js +332 -0
- package/dist/lib/optionalDep.d.ts +26 -0
- package/dist/lib/optionalDep.js +20 -0
- package/dist/lib/pkcs12.d.ts +56 -0
- package/dist/lib/pkcs12.js +356 -0
- package/dist/lib/qmc.d.ts +50 -0
- package/dist/lib/qmc.js +213 -0
- package/dist/lib/rar.d.ts +16 -0
- package/dist/lib/rar.js +40 -0
- package/dist/lib/rawPreview.d.ts +12 -0
- package/dist/lib/rawPreview.js +54 -0
- package/dist/lib/rc2.d.ts +12 -0
- package/dist/lib/rc2.js +298 -0
- package/dist/lib/resolveInput.d.ts +22 -0
- package/dist/lib/resolveInput.js +55 -0
- package/dist/lib/rtf.d.ts +53 -0
- package/dist/lib/rtf.js +413 -0
- package/dist/lib/sevenZip.d.ts +82 -0
- package/dist/lib/sevenZip.js +395 -0
- package/dist/lib/sha1.d.ts +24 -0
- package/dist/lib/sha1.js +53 -0
- package/dist/lib/sha256.d.ts +21 -0
- package/dist/lib/sha256.js +119 -0
- package/dist/lib/speechAudio.d.ts +36 -0
- package/dist/lib/speechAudio.js +85 -0
- package/dist/lib/sqlite.d.ts +38 -0
- package/dist/lib/sqlite.js +104 -0
- package/dist/lib/subtitle.d.ts +26 -0
- package/dist/lib/subtitle.js +99 -0
- package/dist/lib/tarball.d.ts +20 -0
- package/dist/lib/tarball.js +248 -0
- package/dist/lib/viewerFormats.d.ts +35 -0
- package/dist/lib/viewerFormats.js +83 -0
- package/dist/lib/viewerKind.d.ts +36 -0
- package/dist/lib/viewerKind.js +233 -0
- package/dist/lib/x509.d.ts +68 -0
- package/dist/lib/x509.js +267 -0
- package/dist/lib/xlsx.d.ts +55 -0
- package/dist/lib/xlsx.js +321 -0
- package/dist/lib/xlsxCharts.d.ts +34 -0
- package/dist/lib/xlsxCharts.js +152 -0
- package/dist/lib/xmind.d.ts +6 -0
- package/dist/lib/xmind.js +124 -0
- package/dist/lib/zip.d.ts +56 -0
- package/dist/lib/zip.js +169 -0
- package/dist/style.css +2 -0
- package/dist/types.d.ts +42 -0
- package/package.json +128 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { fileExt as e } from "../lib/fileType.js";
|
|
2
|
+
import { escapeHtml as t, highlightCode as n, highlightLines as ee } from "../lib/highlight.js";
|
|
3
|
+
import { computeFoldRegions as te } from "../lib/codefold.js";
|
|
4
|
+
import { canFormat as ne, formatCode as r } from "../lib/codeformat.js";
|
|
5
|
+
import { langLabel as re, searchLangs as ie } from "../lib/highlightLangs.js";
|
|
6
|
+
import i from "./icons/Icon.js";
|
|
7
|
+
import { Fragment as a, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createVNode as d, defineComponent as f, normalizeClass as p, onBeforeUnmount as m, openBlock as h, reactive as ae, ref as g, renderList as _, toDisplayString as v, unref as oe, vModelText as se, watch as y, withDirectives as ce } from "vue";
|
|
8
|
+
//#region src/components/CodeView.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
+
var le = { class: "cv" }, ue = { class: "cv__tools" }, de = ["aria-expanded"], fe = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "cv__langpop",
|
|
12
|
+
role: "menu"
|
|
13
|
+
}, pe = { class: "cv__langlist" }, me = ["aria-checked"], he = ["aria-checked", "onClick"], ge = { class: "cv__langitem-label" }, _e = {
|
|
14
|
+
key: 1,
|
|
15
|
+
class: "cv__langempty"
|
|
16
|
+
}, ve = ["disabled", "title"], ye = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "cv__scroll cv__scroll--blob"
|
|
19
|
+
}, b = { class: "cv__codewrap" }, x = {
|
|
20
|
+
class: "cv__gutter",
|
|
21
|
+
"aria-hidden": "true"
|
|
22
|
+
}, S = { class: "cv__codecol" }, C = { class: "cv__pre" }, w = ["innerHTML"], T = {
|
|
23
|
+
key: 1,
|
|
24
|
+
class: "cv__scroll"
|
|
25
|
+
}, E = { class: "cv__rows" }, D = { class: "cv__gut" }, O = ["title", "onClick"], k = {
|
|
26
|
+
key: 1,
|
|
27
|
+
class: "cv__fold cv__fold--empty"
|
|
28
|
+
}, A = { class: "cv__ln" }, j = ["innerHTML"], M = ["title", "onClick"], N = 4e3, P = /*@__PURE__*/ f({
|
|
29
|
+
__name: "CodeView",
|
|
30
|
+
props: {
|
|
31
|
+
code: {},
|
|
32
|
+
lang: {},
|
|
33
|
+
name: {}
|
|
34
|
+
},
|
|
35
|
+
setup(f) {
|
|
36
|
+
let P = f, F = g(null), I = o(() => F.value ?? P.lang), L = g(null), R = g(!1), z = g(!1), B = o(() => L.value ?? P.code), V = o(() => e(P.name ?? "")), be = o(() => ne(V.value, I.value)), xe = o(() => B.value.split("\n")), H = o(() => xe.value.length), Se = o(() => H.value <= N), Ce = o(() => ee(B.value, I.value)), U = o(() => te(B.value)), W = ae(/* @__PURE__ */ new Set());
|
|
37
|
+
y(() => [P.code, P.lang], () => {
|
|
38
|
+
L.value = null, z.value = !1, F.value = null;
|
|
39
|
+
}), y(B, () => W.clear());
|
|
40
|
+
let G = g(!1), K = g(null), q = g(""), J = o(() => ie(q.value));
|
|
41
|
+
function Y(e) {
|
|
42
|
+
F.value = e, G.value = !1, q.value = "";
|
|
43
|
+
}
|
|
44
|
+
function X(e) {
|
|
45
|
+
K.value && !K.value.contains(e.target) && (G.value = !1);
|
|
46
|
+
}
|
|
47
|
+
function Z(e) {
|
|
48
|
+
e.key === "Escape" && (G.value = !1);
|
|
49
|
+
}
|
|
50
|
+
y(G, (e) => {
|
|
51
|
+
typeof document > "u" || (e ? (document.addEventListener("click", X), document.addEventListener("keydown", Z)) : (document.removeEventListener("click", X), document.removeEventListener("keydown", Z)));
|
|
52
|
+
}), m(() => {
|
|
53
|
+
typeof document > "u" || (document.removeEventListener("click", X), document.removeEventListener("keydown", Z));
|
|
54
|
+
});
|
|
55
|
+
let Q;
|
|
56
|
+
async function we() {
|
|
57
|
+
if (L.value != null) {
|
|
58
|
+
L.value = null;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (!R.value) {
|
|
62
|
+
R.value = !0, z.value = !1;
|
|
63
|
+
try {
|
|
64
|
+
L.value = await r(P.code, {
|
|
65
|
+
ext: V.value,
|
|
66
|
+
lang: I.value
|
|
67
|
+
});
|
|
68
|
+
} catch {
|
|
69
|
+
z.value = !0, clearTimeout(Q), Q = setTimeout(() => z.value = !1, 2200);
|
|
70
|
+
} finally {
|
|
71
|
+
R.value = !1;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
let Te = o(() => {
|
|
76
|
+
let e = [], t = H.value, n = 0;
|
|
77
|
+
for (; n < t;) {
|
|
78
|
+
e.push(n);
|
|
79
|
+
let t = W.has(n) ? U.value.get(n) : void 0;
|
|
80
|
+
n = t == null ? n + 1 : t + 1;
|
|
81
|
+
}
|
|
82
|
+
return e;
|
|
83
|
+
});
|
|
84
|
+
function $(e) {
|
|
85
|
+
W.has(e) ? W.delete(e) : W.add(e);
|
|
86
|
+
}
|
|
87
|
+
let Ee = o(() => I.value ? n(B.value, I.value) : t(B.value)), De = o(() => Array.from({ length: H.value }, (e, t) => t + 1).join("\n"));
|
|
88
|
+
return (e, t) => (h(), l("div", le, [u("div", ue, [u("div", {
|
|
89
|
+
ref_key: "langMenuRef",
|
|
90
|
+
ref: K,
|
|
91
|
+
class: "cv__lang"
|
|
92
|
+
}, [u("button", {
|
|
93
|
+
type: "button",
|
|
94
|
+
class: p(["cv__toolbtn", { "cv__toolbtn--on": G.value }]),
|
|
95
|
+
title: "高亮语言 —— 选择用哪种语言着色(自动识别不准时手动指定)",
|
|
96
|
+
"aria-haspopup": !0,
|
|
97
|
+
"aria-expanded": G.value,
|
|
98
|
+
onClick: t[0] ||= (e) => G.value = !G.value
|
|
99
|
+
}, [d(i, {
|
|
100
|
+
name: "code",
|
|
101
|
+
size: 12
|
|
102
|
+
}), u("span", null, v(oe(re)(I.value)), 1)], 10, de), G.value ? (h(), l("div", fe, [ce(u("input", {
|
|
103
|
+
"onUpdate:modelValue": t[1] ||= (e) => q.value = e,
|
|
104
|
+
class: "cv__langsearch",
|
|
105
|
+
type: "text",
|
|
106
|
+
placeholder: "搜索语言…",
|
|
107
|
+
spellcheck: "false",
|
|
108
|
+
autocomplete: "off"
|
|
109
|
+
}, null, 512), [[se, q.value]]), u("div", pe, [
|
|
110
|
+
q.value ? c("", !0) : (h(), l("button", {
|
|
111
|
+
key: 0,
|
|
112
|
+
type: "button",
|
|
113
|
+
class: p(["cv__langitem", { "cv__langitem--on": I.value === "" }]),
|
|
114
|
+
role: "menuitemradio",
|
|
115
|
+
"aria-checked": I.value === "",
|
|
116
|
+
onClick: t[2] ||= (e) => Y("")
|
|
117
|
+
}, [t[3] ||= u("span", { class: "cv__langitem-label" }, "纯文本(无高亮)", -1), I.value === "" ? (h(), s(i, {
|
|
118
|
+
key: 0,
|
|
119
|
+
name: "check",
|
|
120
|
+
size: 14,
|
|
121
|
+
class: "cv__langitem-check"
|
|
122
|
+
})) : c("", !0)], 10, me)),
|
|
123
|
+
(h(!0), l(a, null, _(J.value, (e) => (h(), l("button", {
|
|
124
|
+
key: e.id,
|
|
125
|
+
type: "button",
|
|
126
|
+
class: p(["cv__langitem", { "cv__langitem--on": I.value === e.id }]),
|
|
127
|
+
role: "menuitemradio",
|
|
128
|
+
"aria-checked": I.value === e.id,
|
|
129
|
+
onClick: (t) => Y(e.id)
|
|
130
|
+
}, [u("span", ge, v(e.label), 1), I.value === e.id ? (h(), s(i, {
|
|
131
|
+
key: 0,
|
|
132
|
+
name: "check",
|
|
133
|
+
size: 14,
|
|
134
|
+
class: "cv__langitem-check"
|
|
135
|
+
})) : c("", !0)], 10, he))), 128)),
|
|
136
|
+
q.value && !J.value.length ? (h(), l("p", _e, "无匹配语言")) : c("", !0)
|
|
137
|
+
])])) : c("", !0)], 512), be.value ? (h(), l("button", {
|
|
138
|
+
key: 0,
|
|
139
|
+
type: "button",
|
|
140
|
+
class: p(["cv__toolbtn cv__fmt", {
|
|
141
|
+
"cv__toolbtn--on": L.value != null,
|
|
142
|
+
"cv__fmt--err": z.value
|
|
143
|
+
}]),
|
|
144
|
+
disabled: R.value,
|
|
145
|
+
title: z.value ? "格式化失败:源码可能无法解析" : L.value == null ? "用 Prettier 格式化" : "还原为原始格式",
|
|
146
|
+
onClick: we
|
|
147
|
+
}, v(z.value ? "格式化失败" : R.value ? "格式化中…" : L.value == null ? "格式化" : "还原"), 11, ve)) : c("", !0)]), Se.value ? (h(), l("div", T, [u("div", E, [(h(!0), l(a, null, _(Te.value, (e) => (h(), l("div", {
|
|
148
|
+
key: e,
|
|
149
|
+
class: "cv__row"
|
|
150
|
+
}, [
|
|
151
|
+
u("span", D, [U.value.has(e) ? (h(), l("button", {
|
|
152
|
+
key: 0,
|
|
153
|
+
type: "button",
|
|
154
|
+
class: "cv__fold",
|
|
155
|
+
title: W.has(e) ? "展开" : "折叠",
|
|
156
|
+
onClick: (t) => $(e)
|
|
157
|
+
}, [d(i, {
|
|
158
|
+
name: "chevronRight",
|
|
159
|
+
size: 12,
|
|
160
|
+
class: p({ "cv__fold--open": !W.has(e) })
|
|
161
|
+
}, null, 8, ["class"])], 8, O)) : (h(), l("span", k)), u("span", A, v(e + 1), 1)]),
|
|
162
|
+
u("code", {
|
|
163
|
+
class: "cv__code hljs",
|
|
164
|
+
innerHTML: Ce.value[e]
|
|
165
|
+
}, null, 8, j),
|
|
166
|
+
W.has(e) ? (h(), l("button", {
|
|
167
|
+
key: 0,
|
|
168
|
+
type: "button",
|
|
169
|
+
class: "cv__ellipsis",
|
|
170
|
+
title: `展开折叠的 ${(U.value.get(e) ?? e) - e} 行`,
|
|
171
|
+
onClick: (t) => $(e)
|
|
172
|
+
}, " ⋯ ", 8, M)) : c("", !0)
|
|
173
|
+
]))), 128))])])) : (h(), l("div", ye, [u("div", b, [u("pre", x, v(De.value), 1), u("div", S, [u("pre", C, [u("code", {
|
|
174
|
+
class: "hljs",
|
|
175
|
+
innerHTML: Ee.value
|
|
176
|
+
}, null, 8, w)])])])]))]));
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
//#endregion
|
|
180
|
+
export { P as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./CsvViewer.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/CsvViewer.vue
|
|
5
|
+
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-19d40e74"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { n as default };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-viewer CSV / TSV table. Consumes the text the panel already fetched (CSV is plain text — no second
|
|
3
|
+
* download, same as the subtitle / geo viewers) and parses it with the hand-rolled RFC 4180 parser
|
|
4
|
+
* (see lib/csv.ts: quoted fields, doubled-quote escaping, embedded delimiters/newlines, delimiter sniffing).
|
|
5
|
+
*
|
|
6
|
+
* The first row can be treated as a header (toggle). Cell text is rendered via mustache, so Vue escapes it —
|
|
7
|
+
* a cell containing `<script>` or other markup is shown literally, never executed. Only small CSVs reach here
|
|
8
|
+
* (larger ones stream through the log viewer, see isCsvFile / isLogFile); even so the body is capped at the
|
|
9
|
+
* first {@link RENDER_CAP} rows until you ask for all, so a dense file doesn't paint tens of thousands of
|
|
10
|
+
* cells up front.
|
|
11
|
+
*
|
|
12
|
+
* Three affordances on top of the plain table:
|
|
13
|
+
* - hover a cell (delegated `mouseover` on the scroll box) and, after a short intent delay, a floating popover
|
|
14
|
+
* shows the cell's full text — the table cells clip with ellipsis, the popover doesn't;
|
|
15
|
+
* - the popover is reachable: it overlaps the cell's bottom edge and cancels its own hide timer on enter, so you
|
|
16
|
+
* can move the mouse in to select text or hit 「复制」 (writes the exact cell string to the clipboard);
|
|
17
|
+
* - drag the thin handle on a column header's right edge to resize that column. Widths default to a cheap
|
|
18
|
+
* content-based estimate ({@link autoWidths}); a fixed table layout makes the drag pixel-exact.
|
|
19
|
+
*/
|
|
20
|
+
type __VLS_Props = {
|
|
21
|
+
text: string;
|
|
22
|
+
name: string;
|
|
23
|
+
};
|
|
24
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
26
|
+
export default _default;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { fileExt as e } from "../lib/fileType.js";
|
|
2
|
+
import { parseCsv as t } from "../lib/csv.js";
|
|
3
|
+
import { Fragment as n, Teleport as r, computed as i, createBlock as ee, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, defineComponent as l, normalizeClass as u, normalizeStyle as d, onBeforeUnmount as te, openBlock as f, ref as p, renderList as m, toDisplayString as h, vModelCheckbox as g, watch as _, withDirectives as v, withModifiers as y } from "vue";
|
|
4
|
+
//#region src/components/CsvViewer.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var b = { class: "csv" }, x = { class: "csv__bar" }, ne = { class: "csv__count" }, re = { class: "csv__delim" }, ie = { class: "csv__toggle" }, ae = { class: "csv__th-text" }, oe = ["onMousedown"], se = { class: "csv__rownum" }, ce = {
|
|
6
|
+
key: 1,
|
|
7
|
+
class: "csv__empty"
|
|
8
|
+
}, le = {
|
|
9
|
+
key: 2,
|
|
10
|
+
class: "csv__capnote"
|
|
11
|
+
}, ue = { class: "csv-pop__text" }, de = { class: "csv-pop__foot" }, S = 1e3, fe = 48, C = 56, pe = 360, me = 120, he = 7, ge = 130, _e = 160, w = /*@__PURE__*/ l({
|
|
12
|
+
__name: "CsvViewer",
|
|
13
|
+
props: {
|
|
14
|
+
text: {},
|
|
15
|
+
name: {}
|
|
16
|
+
},
|
|
17
|
+
setup(l) {
|
|
18
|
+
let w = l, T = i(() => t(w.text, e(w.name))), E = p(!0), D = p(!1), O = i(() => {
|
|
19
|
+
switch (T.value.delimiter) {
|
|
20
|
+
case " ": return "Tab";
|
|
21
|
+
case ";": return "分号";
|
|
22
|
+
case "|": return "竖线";
|
|
23
|
+
default: return "逗号";
|
|
24
|
+
}
|
|
25
|
+
}), k = i(() => Array.from({ length: T.value.cols }, (e, t) => t)), A = i(() => k.value.map((e) => E.value ? T.value.rows[0]?.[e] ?? "" : P(e))), j = i(() => E.value ? T.value.rows.slice(1) : T.value.rows), M = i(() => D.value ? j.value : j.value.slice(0, S)), N = i(() => !D.value && j.value.length > S);
|
|
26
|
+
function P(e) {
|
|
27
|
+
let t = "", n = e;
|
|
28
|
+
do
|
|
29
|
+
t = String.fromCharCode(65 + n % 26) + t, n = Math.floor(n / 26) - 1;
|
|
30
|
+
while (n >= 0);
|
|
31
|
+
return t;
|
|
32
|
+
}
|
|
33
|
+
function F(e) {
|
|
34
|
+
return E.value ? e + 2 : e + 1;
|
|
35
|
+
}
|
|
36
|
+
function I(e) {
|
|
37
|
+
let t = 0;
|
|
38
|
+
for (let n = 0; n < e.length; n++) {
|
|
39
|
+
let r = e.charCodeAt(n);
|
|
40
|
+
t += r >= 4352 && r <= 4447 || r >= 11904 && r <= 42191 || r >= 44032 && r <= 55203 || r >= 63744 && r <= 64255 || r >= 65280 && r <= 65376 || r >= 65504 && r <= 65510 ? 2 : 1;
|
|
41
|
+
}
|
|
42
|
+
return t;
|
|
43
|
+
}
|
|
44
|
+
let ve = i(() => {
|
|
45
|
+
let e = T.value.cols, t = T.value.rows, n = Array.from({ length: e }).fill(C), r = Math.min(t.length, me);
|
|
46
|
+
for (let i = 0; i < r; i++) {
|
|
47
|
+
let r = t[i];
|
|
48
|
+
if (r) for (let t = 0; t < e; t++) {
|
|
49
|
+
let e = r[t];
|
|
50
|
+
if (!e) continue;
|
|
51
|
+
let i = Math.min(pe, Math.max(C, I(e) * he + 22));
|
|
52
|
+
i > n[t] && (n[t] = i);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return n;
|
|
56
|
+
}), L = p([]);
|
|
57
|
+
_(() => w.text, () => {
|
|
58
|
+
L.value = Array.from({ length: T.value.cols }).fill(null);
|
|
59
|
+
}, { immediate: !0 });
|
|
60
|
+
let R = i(() => k.value.map((e) => L.value[e] ?? ve.value[e] ?? C)), z = i(() => {
|
|
61
|
+
let e = String(Math.max(1, T.value.rows.length)).length;
|
|
62
|
+
return Math.max(46, 20 + e * 8);
|
|
63
|
+
}), ye = i(() => z.value + R.value.reduce((e, t) => e + t, 0)), B = p(!1), V = -1, H = 0, U = 0;
|
|
64
|
+
function be(e, t) {
|
|
65
|
+
V = e, H = t.clientX, U = R.value[e], B.value = !0, $(), window.addEventListener("mousemove", W), window.addEventListener("mouseup", G), document.body.style.userSelect = "none", document.body.style.cursor = "col-resize";
|
|
66
|
+
}
|
|
67
|
+
function W(e) {
|
|
68
|
+
V < 0 || (L.value[V] = Math.max(fe, Math.round(U + (e.clientX - H))));
|
|
69
|
+
}
|
|
70
|
+
function G() {
|
|
71
|
+
V = -1, B.value = !1, window.removeEventListener("mousemove", W), window.removeEventListener("mouseup", G), document.body.style.userSelect = "", document.body.style.cursor = "";
|
|
72
|
+
}
|
|
73
|
+
let K = p(null), q = p(!1), J, Y, X = null;
|
|
74
|
+
function Z(e, t) {
|
|
75
|
+
let n = e.getBoundingClientRect(), r = n.left;
|
|
76
|
+
r + 440 > window.innerWidth - 8 && (r = Math.max(8, window.innerWidth - 8 - 440)), K.value = {
|
|
77
|
+
text: t,
|
|
78
|
+
left: r,
|
|
79
|
+
top: n.bottom - 1
|
|
80
|
+
}, q.value = !1;
|
|
81
|
+
}
|
|
82
|
+
function xe(e) {
|
|
83
|
+
let t = e.querySelector(".csv__th-text") ?? e;
|
|
84
|
+
return t.scrollWidth - t.clientWidth > 1 || t.scrollHeight - t.clientHeight > 1;
|
|
85
|
+
}
|
|
86
|
+
function Se(e) {
|
|
87
|
+
if (B.value) return;
|
|
88
|
+
let t = e.target.closest(".csv__cell");
|
|
89
|
+
if (!t || t === X) return;
|
|
90
|
+
X = t, J &&= (clearTimeout(J), void 0);
|
|
91
|
+
let n = t.textContent ?? "";
|
|
92
|
+
if (!n || !xe(t)) {
|
|
93
|
+
Q();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
Y &&= (clearTimeout(Y), void 0), K.value ? Z(t, n) : J = setTimeout(() => Z(t, n), ge);
|
|
97
|
+
}
|
|
98
|
+
function Q() {
|
|
99
|
+
J &&= (clearTimeout(J), void 0), Y && clearTimeout(Y), Y = setTimeout(() => {
|
|
100
|
+
K.value = null, X = null, Y = void 0;
|
|
101
|
+
}, _e);
|
|
102
|
+
}
|
|
103
|
+
function Ce() {
|
|
104
|
+
Y &&= (clearTimeout(Y), void 0);
|
|
105
|
+
}
|
|
106
|
+
function $() {
|
|
107
|
+
J &&= (clearTimeout(J), void 0), Y &&= (clearTimeout(Y), void 0), K.value = null, X = null;
|
|
108
|
+
}
|
|
109
|
+
async function we() {
|
|
110
|
+
if (K.value) try {
|
|
111
|
+
await navigator.clipboard.writeText(K.value.text), q.value = !0;
|
|
112
|
+
} catch {
|
|
113
|
+
q.value = !1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return te(() => {
|
|
117
|
+
$(), G();
|
|
118
|
+
}), (e, t) => (f(), o("div", b, [
|
|
119
|
+
s("div", x, [
|
|
120
|
+
s("span", ne, h(T.value.rows.length) + " 行 · " + h(T.value.cols) + " 列", 1),
|
|
121
|
+
s("span", re, "分隔符:" + h(O.value), 1),
|
|
122
|
+
s("label", ie, [v(s("input", {
|
|
123
|
+
"onUpdate:modelValue": t[0] ||= (e) => E.value = e,
|
|
124
|
+
type: "checkbox"
|
|
125
|
+
}, null, 512), [[g, E.value]]), t[2] ||= c(" 首行为表头 ", -1)]),
|
|
126
|
+
t[3] ||= s("span", { class: "csv__spacer" }, null, -1),
|
|
127
|
+
N.value ? (f(), o("button", {
|
|
128
|
+
key: 0,
|
|
129
|
+
type: "button",
|
|
130
|
+
class: "csv__more",
|
|
131
|
+
onClick: t[1] ||= (e) => D.value = !0
|
|
132
|
+
}, " 显示全部 " + h(j.value.length) + " 行 ", 1)) : a("", !0)
|
|
133
|
+
]),
|
|
134
|
+
s("div", {
|
|
135
|
+
class: "csv__scroll",
|
|
136
|
+
onMouseover: Se,
|
|
137
|
+
onMouseleave: Q
|
|
138
|
+
}, [T.value.rows.length ? (f(), o("table", {
|
|
139
|
+
key: 0,
|
|
140
|
+
class: "csv__table",
|
|
141
|
+
style: d({ width: ye.value + "px" })
|
|
142
|
+
}, [
|
|
143
|
+
s("colgroup", null, [s("col", { style: d({ width: z.value + "px" }) }, null, 4), (f(!0), o(n, null, m(k.value, (e) => (f(), o("col", {
|
|
144
|
+
key: e,
|
|
145
|
+
style: d({ width: R.value[e] + "px" })
|
|
146
|
+
}, null, 4))), 128))]),
|
|
147
|
+
s("thead", null, [s("tr", null, [t[4] ||= s("th", {
|
|
148
|
+
class: "csv__rownum csv__corner",
|
|
149
|
+
"aria-hidden": "true"
|
|
150
|
+
}, null, -1), (f(!0), o(n, null, m(k.value, (e) => (f(), o("th", {
|
|
151
|
+
key: e,
|
|
152
|
+
class: u(["csv__th", {
|
|
153
|
+
csv__cell: E.value,
|
|
154
|
+
"csv__th--auto": !E.value
|
|
155
|
+
}])
|
|
156
|
+
}, [s("span", ae, h(A.value[e]), 1), s("span", {
|
|
157
|
+
class: "csv__resize",
|
|
158
|
+
title: "拖动调整列宽",
|
|
159
|
+
onMousedown: y((t) => be(e, t), ["prevent", "stop"])
|
|
160
|
+
}, null, 40, oe)], 2))), 128))])]),
|
|
161
|
+
s("tbody", null, [(f(!0), o(n, null, m(M.value, (e, t) => (f(), o("tr", {
|
|
162
|
+
key: t,
|
|
163
|
+
class: "csv__tr"
|
|
164
|
+
}, [s("td", se, h(F(t)), 1), (f(!0), o(n, null, m(k.value, (t) => (f(), o("td", {
|
|
165
|
+
key: t,
|
|
166
|
+
class: "csv__td csv__cell"
|
|
167
|
+
}, h(e[t] ?? ""), 1))), 128))]))), 128))])
|
|
168
|
+
], 4)) : (f(), o("p", ce, "空文件")), N.value ? (f(), o("p", le, " 已显示前 " + h(S) + " 行,共 " + h(j.value.length) + " 行 —— 点上方「显示全部」加载其余。 ", 1)) : a("", !0)], 32),
|
|
169
|
+
(f(), ee(r, { to: "body" }, [K.value ? (f(), o("div", {
|
|
170
|
+
key: 0,
|
|
171
|
+
class: "csv-pop",
|
|
172
|
+
style: d({
|
|
173
|
+
left: K.value.left + "px",
|
|
174
|
+
top: K.value.top + "px"
|
|
175
|
+
}),
|
|
176
|
+
onMouseenter: Ce,
|
|
177
|
+
onMouseleave: Q
|
|
178
|
+
}, [s("div", ue, h(K.value.text), 1), s("div", de, [s("button", {
|
|
179
|
+
type: "button",
|
|
180
|
+
class: "csv-pop__copy",
|
|
181
|
+
onClick: we
|
|
182
|
+
}, h(q.value ? "已复制" : "复制"), 1)])], 36)) : a("", !0)]))
|
|
183
|
+
]));
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
//#endregion
|
|
187
|
+
export { w as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./DicomViewer.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/DicomViewer.vue
|
|
5
|
+
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-36f5a4c5"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { n as default };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type DicomSlice } from '@/lib/dicom';
|
|
2
|
+
/**
|
|
3
|
+
* The side viewer's DICOM (.dcm) mode: fetch a medical image's bytes, parse + decode it entirely in-browser
|
|
4
|
+
* (see lib/dicom.ts → lib/dicomCodecs.ts → lib/dicomRender.ts), and draw it to a canvas with the controls a
|
|
5
|
+
* basic medical viewer needs:
|
|
6
|
+
* - window/level (brightness/contrast): left-drag on the image — horizontal = width, vertical = center.
|
|
7
|
+
* - frames: a slider for multi-frame series (each frame decoded on demand).
|
|
8
|
+
* - invert / zoom (wheel or buttons) / fit / reset.
|
|
9
|
+
* Grayscale (CT/MR/X-ray — MONOCHROME1/2) is the primary path; RGB and palette-colour images render too.
|
|
10
|
+
* The bytes come from the same download endpoint as any other file and never leave the browser.
|
|
11
|
+
*
|
|
12
|
+
* Two frame sources, unified behind {@link framePixelsAt}:
|
|
13
|
+
* • single file (`url`) — frames come from that one file (multi-frame DICOM, e.g. enhanced CT / US cine);
|
|
14
|
+
* • series stack (`slices`) — a list of independent single-frame DICOM files browsed as one scrollable
|
|
15
|
+
* series (the classic "one folder = one series, one file per slice" hospital export). The wheel/cine
|
|
16
|
+
* then steps through *files*. Decoded frames are cached + background-prefetched either way.
|
|
17
|
+
*/
|
|
18
|
+
type __VLS_Props = {
|
|
19
|
+
url?: string;
|
|
20
|
+
name: string;
|
|
21
|
+
/** Single-file: that file's size. Stack: the whole series' total bytes (just for the info strip). */
|
|
22
|
+
size?: number;
|
|
23
|
+
/** Series-stack mode: independent DICOM files browsed as one series. Takes precedence over `url`. */
|
|
24
|
+
slices?: DicomSlice[];
|
|
25
|
+
/** Initial slice index in stack mode (the file the user actually clicked). */
|
|
26
|
+
start?: number;
|
|
27
|
+
};
|
|
28
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: typeof __VLS_export;
|
|
30
|
+
export default _default;
|