@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.
Files changed (373) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/dist/FileViewer.js +7 -0
  4. package/dist/FileViewer.vue.d.ts +37 -0
  5. package/dist/FileViewer.vue_vue_type_script_setup_true_lang.js +103 -0
  6. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  7. package/dist/components/AppxViewer.js +7 -0
  8. package/dist/components/AppxViewer.vue.d.ts +18 -0
  9. package/dist/components/AppxViewer.vue_vue_type_script_setup_true_lang.js +174 -0
  10. package/dist/components/ArchiveBrowser.js +7 -0
  11. package/dist/components/ArchiveBrowser.vue.d.ts +18 -0
  12. package/dist/components/ArchiveBrowser.vue_vue_type_script_setup_true_lang.js +279 -0
  13. package/dist/components/AudioViewer.js +7 -0
  14. package/dist/components/AudioViewer.vue.d.ts +21 -0
  15. package/dist/components/AudioViewer.vue_vue_type_script_setup_true_lang.js +201 -0
  16. package/dist/components/BinObjBrowser.js +7 -0
  17. package/dist/components/BinObjBrowser.vue.d.ts +19 -0
  18. package/dist/components/BinObjBrowser.vue_vue_type_script_setup_true_lang.js +141 -0
  19. package/dist/components/CertViewer.js +7 -0
  20. package/dist/components/CertViewer.vue.d.ts +17 -0
  21. package/dist/components/CertViewer.vue_vue_type_script_setup_true_lang.js +251 -0
  22. package/dist/components/ClassViewer.js +7 -0
  23. package/dist/components/ClassViewer.vue.d.ts +15 -0
  24. package/dist/components/ClassViewer.vue_vue_type_script_setup_true_lang.js +164 -0
  25. package/dist/components/CodeBlock.js +7 -0
  26. package/dist/components/CodeBlock.vue.d.ts +17 -0
  27. package/dist/components/CodeBlock.vue_vue_type_script_setup_true_lang.js +79 -0
  28. package/dist/components/CodeView.js +7 -0
  29. package/dist/components/CodeView.vue.d.ts +21 -0
  30. package/dist/components/CodeView.vue_vue_type_script_setup_true_lang.js +180 -0
  31. package/dist/components/CsvViewer.js +7 -0
  32. package/dist/components/CsvViewer.vue.d.ts +26 -0
  33. package/dist/components/CsvViewer.vue_vue_type_script_setup_true_lang.js +187 -0
  34. package/dist/components/DicomViewer.js +7 -0
  35. package/dist/components/DicomViewer.vue.d.ts +30 -0
  36. package/dist/components/DicomViewer.vue_vue_type_script_setup_true_lang.js +362 -0
  37. package/dist/components/DocxViewer.js +7 -0
  38. package/dist/components/DocxViewer.vue.d.ts +19 -0
  39. package/dist/components/DocxViewer.vue_vue_type_script_setup_true_lang.js +59 -0
  40. package/dist/components/DrawioViewer.js +7 -0
  41. package/dist/components/DrawioViewer.vue.d.ts +16 -0
  42. package/dist/components/DrawioViewer.vue_vue_type_script_setup_true_lang.js +38 -0
  43. package/dist/components/DxfViewer.js +7 -0
  44. package/dist/components/DxfViewer.vue.d.ts +14 -0
  45. package/dist/components/DxfViewer.vue_vue_type_script_setup_true_lang.js +239 -0
  46. package/dist/components/EbookViewer.js +7 -0
  47. package/dist/components/EbookViewer.vue.d.ts +22 -0
  48. package/dist/components/EbookViewer.vue_vue_type_script_setup_true_lang.js +170 -0
  49. package/dist/components/EmlViewer.js +7 -0
  50. package/dist/components/EmlViewer.vue.d.ts +21 -0
  51. package/dist/components/EmlViewer.vue_vue_type_script_setup_true_lang.js +193 -0
  52. package/dist/components/EplViewer.js +7 -0
  53. package/dist/components/EplViewer.vue.d.ts +19 -0
  54. package/dist/components/EplViewer.vue_vue_type_script_setup_true_lang.js +201 -0
  55. package/dist/components/FileViewerBody.js +7 -0
  56. package/dist/components/FileViewerBody.vue.d.ts +47 -0
  57. package/dist/components/FileViewerBody.vue_vue_type_script_setup_true_lang.js +599 -0
  58. package/dist/components/FileViewerPanel.js +7 -0
  59. package/dist/components/FileViewerPanel.vue.d.ts +3 -0
  60. package/dist/components/FileViewerPanel.vue_vue_type_script_setup_true_lang.js +207 -0
  61. package/dist/components/FontViewer.js +7 -0
  62. package/dist/components/FontViewer.vue.d.ts +17 -0
  63. package/dist/components/FontViewer.vue_vue_type_script_setup_true_lang.js +120 -0
  64. package/dist/components/FrontmatterCard.js +7 -0
  65. package/dist/components/FrontmatterCard.vue.d.ts +11 -0
  66. package/dist/components/FrontmatterCard.vue_vue_type_script_setup_true_lang.js +30 -0
  67. package/dist/components/GeoViewer.js +7 -0
  68. package/dist/components/GeoViewer.vue.d.ts +17 -0
  69. package/dist/components/GeoViewer.vue_vue_type_script_setup_true_lang.js +255 -0
  70. package/dist/components/HarViewer.js +7 -0
  71. package/dist/components/HarViewer.vue.d.ts +20 -0
  72. package/dist/components/HarViewer.vue_vue_type_script_setup_true_lang.js +322 -0
  73. package/dist/components/HexViewer.js +7 -0
  74. package/dist/components/HexViewer.vue.d.ts +22 -0
  75. package/dist/components/HexViewer.vue_vue_type_script_setup_true_lang.js +121 -0
  76. package/dist/components/HprofViewer.js +7 -0
  77. package/dist/components/HprofViewer.vue.d.ts +27 -0
  78. package/dist/components/HprofViewer.vue_vue_type_script_setup_true_lang.js +561 -0
  79. package/dist/components/ImageLightbox.js +7 -0
  80. package/dist/components/ImageLightbox.vue.d.ts +3 -0
  81. package/dist/components/ImageLightbox.vue_vue_type_script_setup_true_lang.js +86 -0
  82. package/dist/components/InlineText.d.ts +29 -0
  83. package/dist/components/InlineText.js +21 -0
  84. package/dist/components/JksViewer.js +7 -0
  85. package/dist/components/JksViewer.vue.d.ts +22 -0
  86. package/dist/components/JksViewer.vue_vue_type_script_setup_true_lang.js +353 -0
  87. package/dist/components/JsonlViewer.js +7 -0
  88. package/dist/components/JsonlViewer.vue.d.ts +15 -0
  89. package/dist/components/JsonlViewer.vue_vue_type_script_setup_true_lang.js +103 -0
  90. package/dist/components/LogViewer.js +7 -0
  91. package/dist/components/LogViewer.vue.d.ts +29 -0
  92. package/dist/components/LogViewer.vue_vue_type_script_setup_true_lang.js +670 -0
  93. package/dist/components/LrcViewer.js +7 -0
  94. package/dist/components/LrcViewer.vue.d.ts +17 -0
  95. package/dist/components/LrcViewer.vue_vue_type_script_setup_true_lang.js +106 -0
  96. package/dist/components/MarkdownTable.js +7 -0
  97. package/dist/components/MarkdownTable.vue.d.ts +19 -0
  98. package/dist/components/MarkdownTable.vue_vue_type_script_setup_true_lang.js +71 -0
  99. package/dist/components/MarkdownText.d.ts +30 -0
  100. package/dist/components/MarkdownText.js +21 -0
  101. package/dist/components/MhtViewer.js +7 -0
  102. package/dist/components/MhtViewer.vue.d.ts +22 -0
  103. package/dist/components/MhtViewer.vue_vue_type_script_setup_true_lang.js +112 -0
  104. package/dist/components/MindMapView.js +7 -0
  105. package/dist/components/MindMapView.vue.d.ts +23 -0
  106. package/dist/components/MindMapView.vue_vue_type_script_setup_true_lang.js +337 -0
  107. package/dist/components/MissingDependency.js +7 -0
  108. package/dist/components/MissingDependency.vue.d.ts +17 -0
  109. package/dist/components/MissingDependency.vue_vue_type_script_setup_true_lang.js +37 -0
  110. package/dist/components/ModelViewer.js +7 -0
  111. package/dist/components/ModelViewer.vue.d.ts +18 -0
  112. package/dist/components/ModelViewer.vue_vue_type_script_setup_true_lang.js +157 -0
  113. package/dist/components/MsiViewer.js +7 -0
  114. package/dist/components/MsiViewer.vue.d.ts +19 -0
  115. package/dist/components/MsiViewer.vue_vue_type_script_setup_true_lang.js +136 -0
  116. package/dist/components/NotebookViewer.js +7 -0
  117. package/dist/components/NotebookViewer.vue.d.ts +20 -0
  118. package/dist/components/NotebookViewer.vue_vue_type_script_setup_true_lang.js +125 -0
  119. package/dist/components/PdfViewer.js +7 -0
  120. package/dist/components/PdfViewer.vue.d.ts +19 -0
  121. package/dist/components/PdfViewer.vue_vue_type_script_setup_true_lang.js +114 -0
  122. package/dist/components/PptxViewer.js +7 -0
  123. package/dist/components/PptxViewer.vue.d.ts +20 -0
  124. package/dist/components/PptxViewer.vue_vue_type_script_setup_true_lang.js +73 -0
  125. package/dist/components/PsdViewer.js +7 -0
  126. package/dist/components/PsdViewer.vue.d.ts +15 -0
  127. package/dist/components/PsdViewer.vue_vue_type_script_setup_true_lang.js +218 -0
  128. package/dist/components/QmcAudioViewer.js +7 -0
  129. package/dist/components/QmcAudioViewer.vue.d.ts +18 -0
  130. package/dist/components/QmcAudioViewer.vue_vue_type_script_setup_true_lang.js +92 -0
  131. package/dist/components/RasterViewer.js +7 -0
  132. package/dist/components/RasterViewer.vue.d.ts +21 -0
  133. package/dist/components/RasterViewer.vue_vue_type_script_setup_true_lang.js +161 -0
  134. package/dist/components/RtfViewer.js +7 -0
  135. package/dist/components/RtfViewer.vue.d.ts +21 -0
  136. package/dist/components/RtfViewer.vue_vue_type_script_setup_true_lang.js +66 -0
  137. package/dist/components/SevenZipBrowser.js +7 -0
  138. package/dist/components/SevenZipBrowser.vue.d.ts +13 -0
  139. package/dist/components/SevenZipBrowser.vue_vue_type_script_setup_true_lang.js +366 -0
  140. package/dist/components/SqliteViewer.js +7 -0
  141. package/dist/components/SqliteViewer.vue.d.ts +18 -0
  142. package/dist/components/SqliteViewer.vue_vue_type_script_setup_true_lang.js +186 -0
  143. package/dist/components/SubtitleViewer.js +7 -0
  144. package/dist/components/SubtitleViewer.vue.d.ts +15 -0
  145. package/dist/components/SubtitleViewer.vue_vue_type_script_setup_true_lang.js +48 -0
  146. package/dist/components/XlsxChart.js +7 -0
  147. package/dist/components/XlsxChart.vue.d.ts +14 -0
  148. package/dist/components/XlsxChart.vue_vue_type_script_setup_true_lang.js +240 -0
  149. package/dist/components/XlsxViewer.js +7 -0
  150. package/dist/components/XlsxViewer.vue.d.ts +22 -0
  151. package/dist/components/XlsxViewer.vue_vue_type_script_setup_true_lang.js +814 -0
  152. package/dist/components/XmindViewer.js +7 -0
  153. package/dist/components/XmindViewer.vue.d.ts +13 -0
  154. package/dist/components/XmindViewer.vue_vue_type_script_setup_true_lang.js +48 -0
  155. package/dist/components/ZipBrowser.js +7 -0
  156. package/dist/components/ZipBrowser.vue.d.ts +14 -0
  157. package/dist/components/ZipBrowser.vue_vue_type_script_setup_true_lang.js +326 -0
  158. package/dist/components/ZoomImage.js +7 -0
  159. package/dist/components/ZoomImage.vue.d.ts +29 -0
  160. package/dist/components/ZoomImage.vue_vue_type_script_setup_true_lang.js +147 -0
  161. package/dist/components/epl/EplCodeBlock.js +7 -0
  162. package/dist/components/epl/EplCodeBlock.vue.d.ts +15 -0
  163. package/dist/components/epl/EplCodeBlock.vue_vue_type_script_setup_true_lang.js +72 -0
  164. package/dist/components/epl/EplDoc.js +7 -0
  165. package/dist/components/epl/EplDoc.vue.d.ts +19 -0
  166. package/dist/components/epl/EplDoc.vue_vue_type_script_setup_true_lang.js +327 -0
  167. package/dist/components/epl/EplMethod.js +7 -0
  168. package/dist/components/epl/EplMethod.vue.d.ts +14 -0
  169. package/dist/components/epl/EplMethod.vue_vue_type_script_setup_true_lang.js +100 -0
  170. package/dist/components/epl/EplResource.js +7 -0
  171. package/dist/components/epl/EplResource.vue.d.ts +15 -0
  172. package/dist/components/epl/EplResource.vue_vue_type_script_setup_true_lang.js +204 -0
  173. package/dist/components/epl/EplTree.js +7 -0
  174. package/dist/components/epl/EplTree.vue.d.ts +27 -0
  175. package/dist/components/epl/EplTree.vue_vue_type_script_setup_true_lang.js +123 -0
  176. package/dist/components/epl/EplVarTable.js +7 -0
  177. package/dist/components/epl/EplVarTable.vue.d.ts +21 -0
  178. package/dist/components/epl/EplVarTable.vue_vue_type_script_setup_true_lang.js +60 -0
  179. package/dist/components/epl/docTypes.d.ts +12 -0
  180. package/dist/components/epl/numbering.d.ts +21 -0
  181. package/dist/components/epl/numbering.js +14 -0
  182. package/dist/components/icons/Icon.js +7 -0
  183. package/dist/components/icons/Icon.vue.d.ts +14 -0
  184. package/dist/components/icons/Icon.vue_vue_type_script_setup_true_lang.js +33 -0
  185. package/dist/components/icons/iconPaths.d.ts +60 -0
  186. package/dist/components/icons/iconPaths.js +54 -0
  187. package/dist/components/optionalViewer.d.ts +14 -0
  188. package/dist/components/optionalViewer.js +37 -0
  189. package/dist/components/ui/ClampBlock.d.ts +82 -0
  190. package/dist/components/ui/ClampBlock.js +63 -0
  191. package/dist/composables/useFileViewer.d.ts +428 -0
  192. package/dist/composables/useFileViewer.js +27 -0
  193. package/dist/composables/useLightbox.d.ts +33 -0
  194. package/dist/composables/useLightbox.js +17 -0
  195. package/dist/composables/useLogRules.d.ts +47 -0
  196. package/dist/composables/useLogRules.js +74 -0
  197. package/dist/index.d.ts +44 -0
  198. package/dist/index.js +30 -0
  199. package/dist/lib/aes.d.ts +25 -0
  200. package/dist/lib/aes.js +99 -0
  201. package/dist/lib/appx.d.ts +66 -0
  202. package/dist/lib/appx.js +112 -0
  203. package/dist/lib/archive.d.ts +29 -0
  204. package/dist/lib/asn1.d.ts +47 -0
  205. package/dist/lib/asn1.js +122 -0
  206. package/dist/lib/binobj.d.ts +69 -0
  207. package/dist/lib/binobj.js +430 -0
  208. package/dist/lib/brotli.d.ts +14 -0
  209. package/dist/lib/brotli.js +16 -0
  210. package/dist/lib/bzip2.d.ts +14 -0
  211. package/dist/lib/bzip2.js +161 -0
  212. package/dist/lib/classfile.d.ts +72 -0
  213. package/dist/lib/classfile.js +210 -0
  214. package/dist/lib/codePreview.d.ts +22 -0
  215. package/dist/lib/codePreview.js +27 -0
  216. package/dist/lib/codefold.d.ts +14 -0
  217. package/dist/lib/codefold.js +30 -0
  218. package/dist/lib/codeformat.d.ts +21 -0
  219. package/dist/lib/codeformat.js +130 -0
  220. package/dist/lib/csv.d.ts +19 -0
  221. package/dist/lib/csv.js +74 -0
  222. package/dist/lib/des.d.ts +17 -0
  223. package/dist/lib/des.js +928 -0
  224. package/dist/lib/diagram.d.ts +5 -0
  225. package/dist/lib/diagram.js +479 -0
  226. package/dist/lib/dicom.d.ts +69 -0
  227. package/dist/lib/dicom.js +442 -0
  228. package/dist/lib/dicomCodecs.d.ts +28 -0
  229. package/dist/lib/dicomCodecs.js +156 -0
  230. package/dist/lib/dicomRender.d.ts +46 -0
  231. package/dist/lib/dicomRender.js +114 -0
  232. package/dist/lib/dxf.d.ts +86 -0
  233. package/dist/lib/dxf.js +399 -0
  234. package/dist/lib/eml.d.ts +40 -0
  235. package/dist/lib/eml.js +46 -0
  236. package/dist/lib/encoding.d.ts +28 -0
  237. package/dist/lib/encoding.js +44 -0
  238. package/dist/lib/epl/code/ast.d.ts +150 -0
  239. package/dist/lib/epl/code/codeDataParser.d.ts +3 -0
  240. package/dist/lib/epl/code/codeDataParser.js +330 -0
  241. package/dist/lib/epl/code/codeLines.d.ts +20 -0
  242. package/dist/lib/epl/code/codeLines.js +191 -0
  243. package/dist/lib/epl/code/structures.d.ts +86 -0
  244. package/dist/lib/epl/code/textCode.d.ts +29 -0
  245. package/dist/lib/epl/code/textCode.js +150 -0
  246. package/dist/lib/epl/code/variable.d.ts +25 -0
  247. package/dist/lib/epl/eplDocument.d.ts +21 -0
  248. package/dist/lib/epl/eplDocument.js +36 -0
  249. package/dist/lib/epl/imageList.d.ts +28 -0
  250. package/dist/lib/epl/imageList.js +66 -0
  251. package/dist/lib/epl/index.d.ts +53 -0
  252. package/dist/lib/epl/index.js +45 -0
  253. package/dist/lib/epl/io/binaryReader.d.ts +56 -0
  254. package/dist/lib/epl/io/binaryReader.js +119 -0
  255. package/dist/lib/epl/io/encoding.d.ts +16 -0
  256. package/dist/lib/epl/io/encoding.js +27 -0
  257. package/dist/lib/epl/model/eplSystemId.d.ts +64 -0
  258. package/dist/lib/epl/model/eplSystemId.js +16 -0
  259. package/dist/lib/epl/model/section.d.ts +46 -0
  260. package/dist/lib/epl/names/eplLibData.js +39 -0
  261. package/dist/lib/epl/names/idToNameMap.d.ts +33 -0
  262. package/dist/lib/epl/names/idToNameMap.js +130 -0
  263. package/dist/lib/epl/names/libNameProvider.d.ts +15 -0
  264. package/dist/lib/epl/names/libNameProvider.js +18 -0
  265. package/dist/lib/epl/program.d.ts +120 -0
  266. package/dist/lib/epl/program.js +134 -0
  267. package/dist/lib/epl/projectFileReader.d.ts +23 -0
  268. package/dist/lib/epl/projectFileReader.js +65 -0
  269. package/dist/lib/epl/sections/code.d.ts +20 -0
  270. package/dist/lib/epl/sections/esystemInfo.d.ts +14 -0
  271. package/dist/lib/epl/sections/losable.d.ts +11 -0
  272. package/dist/lib/epl/sections/projectConfig.d.ts +23 -0
  273. package/dist/lib/epl/sections/resource.d.ts +57 -0
  274. package/dist/lib/fb2.d.ts +14 -0
  275. package/dist/lib/fb2.js +62 -0
  276. package/dist/lib/fileType.d.ts +315 -0
  277. package/dist/lib/fileType.js +800 -0
  278. package/dist/lib/fonts.d.ts +8 -0
  279. package/dist/lib/fonts.js +4 -0
  280. package/dist/lib/format.d.ts +16 -0
  281. package/dist/lib/format.js +38 -0
  282. package/dist/lib/frontmatter.d.ts +13 -0
  283. package/dist/lib/frontmatter.js +23 -0
  284. package/dist/lib/geo.d.ts +30 -0
  285. package/dist/lib/geo.js +235 -0
  286. package/dist/lib/har.d.ts +171 -0
  287. package/dist/lib/har.js +397 -0
  288. package/dist/lib/highlight.d.ts +18 -0
  289. package/dist/lib/highlight.js +34 -0
  290. package/dist/lib/highlightLangs.d.ts +15 -0
  291. package/dist/lib/highlightLangs.js +93 -0
  292. package/dist/lib/hprof.d.ts +211 -0
  293. package/dist/lib/hprof.js +709 -0
  294. package/dist/lib/ipynb.d.ts +48 -0
  295. package/dist/lib/ipynb.js +130 -0
  296. package/dist/lib/jks.d.ts +86 -0
  297. package/dist/lib/jks.js +167 -0
  298. package/dist/lib/jsonl.d.ts +29 -0
  299. package/dist/lib/jsonl.js +24 -0
  300. package/dist/lib/lrc.d.ts +32 -0
  301. package/dist/lib/lrc.js +84 -0
  302. package/dist/lib/lzma.d.ts +70 -0
  303. package/dist/lib/lzma.js +204 -0
  304. package/dist/lib/markdown/blocks.d.ts +9 -0
  305. package/dist/lib/markdown/blocks.js +221 -0
  306. package/dist/lib/markdown/index.d.ts +3 -0
  307. package/dist/lib/markdown/inline.d.ts +33 -0
  308. package/dist/lib/markdown/inline.js +84 -0
  309. package/dist/lib/markdown/math.d.ts +5 -0
  310. package/dist/lib/markdown/math.js +25 -0
  311. package/dist/lib/markdown/segmentize.d.ts +11 -0
  312. package/dist/lib/markdown/segmentize.js +28 -0
  313. package/dist/lib/markdown/styles.d.ts +26 -0
  314. package/dist/lib/markdown/styles.js +135 -0
  315. package/dist/lib/mht.d.ts +51 -0
  316. package/dist/lib/mht.js +122 -0
  317. package/dist/lib/midi.d.ts +28 -0
  318. package/dist/lib/midi.js +84 -0
  319. package/dist/lib/mime.d.ts +82 -0
  320. package/dist/lib/mime.js +151 -0
  321. package/dist/lib/mindmap.d.ts +51 -0
  322. package/dist/lib/mindmap.js +113 -0
  323. package/dist/lib/mobi.d.ts +15 -0
  324. package/dist/lib/mobi.js +68 -0
  325. package/dist/lib/msi.d.ts +50 -0
  326. package/dist/lib/msi.js +332 -0
  327. package/dist/lib/optionalDep.d.ts +26 -0
  328. package/dist/lib/optionalDep.js +20 -0
  329. package/dist/lib/pkcs12.d.ts +56 -0
  330. package/dist/lib/pkcs12.js +356 -0
  331. package/dist/lib/qmc.d.ts +50 -0
  332. package/dist/lib/qmc.js +213 -0
  333. package/dist/lib/rar.d.ts +16 -0
  334. package/dist/lib/rar.js +40 -0
  335. package/dist/lib/rawPreview.d.ts +12 -0
  336. package/dist/lib/rawPreview.js +54 -0
  337. package/dist/lib/rc2.d.ts +12 -0
  338. package/dist/lib/rc2.js +298 -0
  339. package/dist/lib/resolveInput.d.ts +22 -0
  340. package/dist/lib/resolveInput.js +55 -0
  341. package/dist/lib/rtf.d.ts +53 -0
  342. package/dist/lib/rtf.js +413 -0
  343. package/dist/lib/sevenZip.d.ts +82 -0
  344. package/dist/lib/sevenZip.js +395 -0
  345. package/dist/lib/sha1.d.ts +24 -0
  346. package/dist/lib/sha1.js +53 -0
  347. package/dist/lib/sha256.d.ts +21 -0
  348. package/dist/lib/sha256.js +119 -0
  349. package/dist/lib/speechAudio.d.ts +36 -0
  350. package/dist/lib/speechAudio.js +85 -0
  351. package/dist/lib/sqlite.d.ts +38 -0
  352. package/dist/lib/sqlite.js +104 -0
  353. package/dist/lib/subtitle.d.ts +26 -0
  354. package/dist/lib/subtitle.js +99 -0
  355. package/dist/lib/tarball.d.ts +20 -0
  356. package/dist/lib/tarball.js +248 -0
  357. package/dist/lib/viewerFormats.d.ts +35 -0
  358. package/dist/lib/viewerFormats.js +83 -0
  359. package/dist/lib/viewerKind.d.ts +36 -0
  360. package/dist/lib/viewerKind.js +233 -0
  361. package/dist/lib/x509.d.ts +68 -0
  362. package/dist/lib/x509.js +267 -0
  363. package/dist/lib/xlsx.d.ts +55 -0
  364. package/dist/lib/xlsx.js +321 -0
  365. package/dist/lib/xlsxCharts.d.ts +34 -0
  366. package/dist/lib/xlsxCharts.js +152 -0
  367. package/dist/lib/xmind.d.ts +6 -0
  368. package/dist/lib/xmind.js +124 -0
  369. package/dist/lib/zip.d.ts +56 -0
  370. package/dist/lib/zip.js +169 -0
  371. package/dist/style.css +2 -0
  372. package/dist/types.d.ts +42 -0
  373. package/package.json +128 -0
@@ -0,0 +1,85 @@
1
+ //#region src/lib/speechAudio.ts
2
+ var e = [
3
+ 35,
4
+ 33,
5
+ 65,
6
+ 77,
7
+ 82,
8
+ 10
9
+ ], t = [
10
+ 35,
11
+ 33,
12
+ 65,
13
+ 77,
14
+ 82,
15
+ 45,
16
+ 87,
17
+ 66,
18
+ 10
19
+ ], n = [
20
+ 35,
21
+ 33,
22
+ 83,
23
+ 73,
24
+ 76,
25
+ 75,
26
+ 95,
27
+ 86,
28
+ 51
29
+ ];
30
+ function r(e, t, n) {
31
+ if (t + n.length > e.length) return !1;
32
+ for (let r = 0; r < n.length; r++) if (e[t + r] !== n[r]) return !1;
33
+ return !0;
34
+ }
35
+ function i(i) {
36
+ return r(i, 0, n) || r(i, 1, n) ? "silk" : r(i, 0, t) ? "amr-wb" : r(i, 0, e) ? "amr-nb" : null;
37
+ }
38
+ var a = 24e3, o = class extends Error {};
39
+ function s(e) {
40
+ let t = new Uint8Array(e.length * 2), n = new DataView(t.buffer);
41
+ for (let t = 0; t < e.length; t++) {
42
+ let r = Math.max(-1, Math.min(1, e[t]));
43
+ n.setInt16(t * 2, r < 0 ? r * 32768 : r * 32767, !0);
44
+ }
45
+ return t;
46
+ }
47
+ function c(e, t, n = 1) {
48
+ let r = n * 2, i = new Uint8Array(44 + e.length), a = new DataView(i.buffer), o = (e, t) => {
49
+ for (let n = 0; n < t.length; n++) i[e + n] = t.charCodeAt(n);
50
+ };
51
+ return o(0, "RIFF"), a.setUint32(4, 36 + e.length, !0), o(8, "WAVE"), o(12, "fmt "), a.setUint32(16, 16, !0), a.setUint16(20, 1, !0), a.setUint16(22, n, !0), a.setUint32(24, t, !0), a.setUint32(28, t * r, !0), a.setUint16(32, r, !0), a.setUint16(34, 16, !0), o(36, "data"), a.setUint32(40, e.length, !0), i.set(e, 44), i;
52
+ }
53
+ async function l(e) {
54
+ let { decode: t } = await import("silk-wasm"), { data: n, duration: r } = await t(e, a);
55
+ if (!n.length) throw new o("SILK 解码结果为空");
56
+ return {
57
+ wav: c(n, a),
58
+ codec: "silk",
59
+ sampleRate: a,
60
+ channels: 1,
61
+ durationSec: r / 1e3
62
+ };
63
+ }
64
+ async function u(e, t) {
65
+ let { default: n } = await import("@audio/decode-amr"), { channelData: r, sampleRate: i } = await n(e), a = r[0];
66
+ if (!a || !a.length) throw new o("AMR 解码结果为空");
67
+ return {
68
+ wav: c(s(a), i),
69
+ codec: t,
70
+ sampleRate: i,
71
+ channels: 1,
72
+ durationSec: a.length / i
73
+ };
74
+ }
75
+ async function d(e) {
76
+ let t = e instanceof Uint8Array ? e : new Uint8Array(e), n = i(t);
77
+ if (!n) throw new o("不是可识别的 AMR / SILK 语音文件");
78
+ try {
79
+ return n === "silk" ? await l(t) : await u(t, n);
80
+ } catch (e) {
81
+ throw e instanceof o ? e : new o(e instanceof Error ? e.message : String(e));
82
+ }
83
+ }
84
+ //#endregion
85
+ export { d as decodeSpeechToWav, i as sniffSpeechCodec };
@@ -0,0 +1,38 @@
1
+ import type { Database, SqlJsStatic } from 'sql.js';
2
+ /** 加载并初始化 sql.js(WASM)。多次调用复用同一实例。 */
3
+ export declare function initSqlEngine(): Promise<SqlJsStatic>;
4
+ /** 从 .sqlite / .db 文件字节加载一个库(一次性入内存,sql.js 全在内存运行)。 */
5
+ export declare function loadDatabase(SQL: SqlJsStatic, bytes: Uint8Array): Database;
6
+ export type CellValue = string | number | null;
7
+ export interface Column {
8
+ name: string;
9
+ type: string;
10
+ pk?: boolean;
11
+ fk?: boolean;
12
+ idx?: boolean;
13
+ notnull?: boolean;
14
+ }
15
+ /** 一张表 / 视图的概要(不含行数据,行数据按需分页读取)。 */
16
+ export interface TableInfo {
17
+ name: string;
18
+ kind: 'table' | 'view';
19
+ rowCount: number;
20
+ columns: Column[];
21
+ }
22
+ export interface QueryResult {
23
+ columns: string[];
24
+ rows: CellValue[][];
25
+ rowCount: number;
26
+ elapsedMs: number;
27
+ error: string;
28
+ }
29
+ /** 读出某表/视图的列结构(含 pk / fk / idx / notnull 徽标信息)。 */
30
+ export declare function readColumns(db: Database, table: string): Column[];
31
+ /** 表/视图行数(视图可能为表达式,失败回退 0)。 */
32
+ export declare function rowCount(db: Database, table: string): number;
33
+ /** 列出所有用户表与视图(含列结构与行数),按名称排序;排除 sqlite_ 内部表。 */
34
+ export declare function listTables(db: Database): TableInfo[];
35
+ /** 按页读取某表/视图的行(LIMIT/OFFSET)。仅取数据,不带列结构(列结构走 readColumns)。 */
36
+ export declare function readPage(db: Database, table: string, limit: number, offset: number): CellValue[][];
37
+ /** 执行任意 SQL,返回最后一个结果集;出错时 error 非空(只读预览,不强制只读但不暴露写 UI)。 */
38
+ export declare function execSql(db: Database, sql: string): QueryResult;
@@ -0,0 +1,104 @@
1
+ import e from "sql.js";
2
+ import t from "sql.js/dist/sql-wasm.wasm?url";
3
+ //#region src/lib/sqlite.ts
4
+ var n = null;
5
+ function r() {
6
+ return n ||= e({ locateFile: () => t }), n;
7
+ }
8
+ function i(e, t) {
9
+ return new e.Database(t);
10
+ }
11
+ function a(e) {
12
+ return "\"" + e.replace(/"/g, "\"\"") + "\"";
13
+ }
14
+ function o(e) {
15
+ return e == null ? null : e instanceof Uint8Array ? `[BLOB ${e.length}B]` : e;
16
+ }
17
+ function s(e, t) {
18
+ let n = a(t), r = /* @__PURE__ */ new Set(), i = e.exec(`PRAGMA foreign_key_list(${n})`);
19
+ if (i.length) {
20
+ let e = i[0].columns.indexOf("from");
21
+ for (let t of i[0].values) r.add(String(t[e]));
22
+ }
23
+ let o = /* @__PURE__ */ new Set(), s = e.exec(`PRAGMA index_list(${n})`);
24
+ if (s.length) {
25
+ let t = s[0].columns, n = t.indexOf("name"), r = t.indexOf("origin");
26
+ for (let t of s[0].values) {
27
+ let i = String(t[n]);
28
+ if ((r >= 0 ? String(t[r]) : "c") === "pk") continue;
29
+ let s = e.exec(`PRAGMA index_info(${a(i)})`);
30
+ if (s.length) {
31
+ let e = s[0].columns.indexOf("name");
32
+ for (let t of s[0].values) t[e] != null && o.add(String(t[e]));
33
+ }
34
+ }
35
+ }
36
+ let c = [], l = e.exec(`PRAGMA table_info(${n})`);
37
+ if (l.length) {
38
+ let e = l[0].columns, t = e.indexOf("name"), n = e.indexOf("type"), i = e.indexOf("pk"), a = e.indexOf("notnull");
39
+ for (let e of l[0].values) {
40
+ let s = {
41
+ name: String(e[t]),
42
+ type: String(e[n] ?? "")
43
+ };
44
+ Number(e[i]) > 0 && (s.pk = !0), a >= 0 && Number(e[a]) === 1 && (s.notnull = !0), r.has(s.name) && (s.fk = !0), o.has(s.name) && (s.idx = !0), c.push(s);
45
+ }
46
+ }
47
+ return c;
48
+ }
49
+ function c(e, t) {
50
+ try {
51
+ let n = e.exec(`SELECT COUNT(*) FROM ${a(t)}`);
52
+ return n.length && n[0].values.length ? Number(n[0].values[0][0]) : 0;
53
+ } catch {
54
+ return 0;
55
+ }
56
+ }
57
+ function l(e) {
58
+ let t = e.exec("SELECT name, type FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ORDER BY type, name");
59
+ if (!t.length) return [];
60
+ let n = [];
61
+ for (let r of t[0].values) {
62
+ let t = String(r[0]), i = String(r[1]) === "view" ? "view" : "table";
63
+ n.push({
64
+ name: t,
65
+ kind: i,
66
+ rowCount: c(e, t),
67
+ columns: s(e, t)
68
+ });
69
+ }
70
+ return n;
71
+ }
72
+ function u(e, t, n, r) {
73
+ let i = e.exec(`SELECT * FROM ${a(t)} LIMIT ${n} OFFSET ${r}`);
74
+ return i.length ? i[0].values.map((e) => e.map(o)) : [];
75
+ }
76
+ function d(e, t) {
77
+ let n = performance.now();
78
+ try {
79
+ let r = e.exec(t), i = performance.now() - n, a = r.length ? r[r.length - 1] : null;
80
+ return a ? {
81
+ columns: a.columns,
82
+ rows: a.values.map((e) => e.map(o)),
83
+ rowCount: a.values.length,
84
+ elapsedMs: i,
85
+ error: ""
86
+ } : {
87
+ columns: [],
88
+ rows: [],
89
+ rowCount: 0,
90
+ elapsedMs: i,
91
+ error: ""
92
+ };
93
+ } catch (e) {
94
+ return {
95
+ columns: [],
96
+ rows: [],
97
+ rowCount: 0,
98
+ elapsedMs: performance.now() - n,
99
+ error: e instanceof Error ? e.message : String(e)
100
+ };
101
+ }
102
+ }
103
+ //#endregion
104
+ export { d as execSql, r as initSqlEngine, l as listTables, i as loadDatabase, u as readPage };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Hand-rolled, zero-dependency subtitle parser for the side viewer.
3
+ *
4
+ * Parses the three common caption formats into a uniform cue list:
5
+ * - SubRip (.srt): block = optional index line, `HH:MM:SS,mmm --> HH:MM:SS,mmm`, then text lines
6
+ * - WebVTT (.vtt): a `WEBVTT` header, optional cue ids / NOTE / STYLE / REGION blocks, and
7
+ * `HH:MM:SS.mmm --> HH:MM:SS.mmm <settings>` timing lines; inline tags stripped
8
+ * - SubStation Alpha (.ass/.ssa): an `[Events]` section with a `Format:` line + `Dialogue:` rows;
9
+ * override tags `{\…}` and the `\N` / `\h` escapes are handled
10
+ *
11
+ * The viewer only needs start/end/text (plus an optional speaker from the ASS Name field), so styling,
12
+ * positioning, karaoke timing, etc. are intentionally discarded — this is a readable transcript, not a
13
+ * pixel-accurate renderer. Times are normalized to milliseconds.
14
+ */
15
+ export interface SubtitleCue {
16
+ start: number;
17
+ end: number;
18
+ text: string;
19
+ speaker?: string;
20
+ }
21
+ export interface ParsedSubtitle {
22
+ format: 'srt' | 'vtt' | 'ass';
23
+ cues: SubtitleCue[];
24
+ }
25
+ /** Parse subtitle source text into a sorted cue list. `ext` (when known) disambiguates the format. */
26
+ export declare function parseSubtitle(input: string, ext?: string): ParsedSubtitle;
@@ -0,0 +1,99 @@
1
+ //#region src/lib/subtitle.ts
2
+ var e = /(?:(\d+):)?(\d{1,2}):(\d{1,2})[.,](\d{1,3})/;
3
+ function t(t) {
4
+ let n = t.match(e);
5
+ if (!n) return null;
6
+ let r = n[1] ? parseInt(n[1], 10) : 0, i = parseInt(n[2], 10), a = parseInt(n[3], 10), o = parseInt(n[4].padEnd(3, "0").slice(0, 3), 10);
7
+ return ((r * 60 + i) * 60 + a) * 1e3 + o;
8
+ }
9
+ function n(e) {
10
+ return e.replace(/<[^>]*>/g, "").replace(/\{\\[^}]*\}/g, "").replace(/[ \t]+\n/g, "\n").trim();
11
+ }
12
+ function r(e, r) {
13
+ let i = [];
14
+ for (let a of e.split(/\n{2,}/)) {
15
+ if (r && /^\s*(WEBVTT|NOTE|STYLE|REGION)\b/.test(a)) continue;
16
+ let e = a.split("\n"), o = e.findIndex((e) => e.includes("-->"));
17
+ if (o < 0) continue;
18
+ let [s, c = ""] = e[o].split("-->"), l = t(s), u = t(c);
19
+ if (l === null || u === null) continue;
20
+ let d = e.slice(o + 1).join("\n").trim();
21
+ i.push({
22
+ start: l,
23
+ end: u,
24
+ text: n(d)
25
+ });
26
+ }
27
+ return i;
28
+ }
29
+ var i = [
30
+ "layer",
31
+ "start",
32
+ "end",
33
+ "style",
34
+ "name",
35
+ "marginl",
36
+ "marginr",
37
+ "marginv",
38
+ "effect",
39
+ "text"
40
+ ];
41
+ function a(e, t) {
42
+ if (t <= 1) return [e];
43
+ let n = [], r = 0;
44
+ for (let i = 0; i < t - 1; i++) {
45
+ let t = e.indexOf(",", r);
46
+ if (t < 0) break;
47
+ n.push(e.slice(r, t)), r = t + 1;
48
+ }
49
+ return n.push(e.slice(r)), n;
50
+ }
51
+ function o(e) {
52
+ return e.replace(/\{[^}]*\}/g, "").replace(/\\N/gi, "\n").replace(/\\h/gi, " ").trim();
53
+ }
54
+ function s(e) {
55
+ let n = [], r = !1, s = [];
56
+ for (let c of e.split("\n")) {
57
+ let e = c.trim();
58
+ if (e.startsWith("[")) {
59
+ r = /^\[events\]/i.test(e);
60
+ continue;
61
+ }
62
+ if (!(!r || !e)) {
63
+ if (/^format\s*:/i.test(e)) {
64
+ s = e.slice(e.indexOf(":") + 1).split(",").map((e) => e.trim().toLowerCase());
65
+ continue;
66
+ }
67
+ if (/^dialogue\s*:/i.test(e)) {
68
+ let r = s.length ? s : i, c = a(e.slice(e.indexOf(":") + 1), r.length), l = (e) => {
69
+ let t = r.indexOf(e);
70
+ return t >= 0 ? c[t] ?? "" : "";
71
+ }, u = t(l("start")), d = t(l("end"));
72
+ if (u === null || d === null) continue;
73
+ let f = l("name").trim();
74
+ n.push({
75
+ start: u,
76
+ end: d,
77
+ text: o(l("text") || c[c.length - 1] || ""),
78
+ speaker: f || void 0
79
+ });
80
+ }
81
+ }
82
+ }
83
+ return n;
84
+ }
85
+ function c(e, t) {
86
+ let n = (e.charCodeAt(0) === 65279 ? e.slice(1) : e).replace(/\r\n?/g, "\n"), i = (t || "").toLowerCase(), a;
87
+ return a = i === "ass" || i === "ssa" || /^\s*\[script info\]/i.test(n) ? {
88
+ format: "ass",
89
+ cues: s(n)
90
+ } : i === "vtt" || /^\s*WEBVTT/.test(n) ? {
91
+ format: "vtt",
92
+ cues: r(n, !0)
93
+ } : {
94
+ format: "srt",
95
+ cues: r(n, !1)
96
+ }, a.cues.sort((e, t) => e.start - t.start || e.end - t.end), a;
97
+ }
98
+ //#endregion
99
+ export { c as parseSubtitle };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * In-browser reader for the tar family — `.tar` and its compressed wrappers `.gz`/`.tgz`, `.xz`/`.txz`,
3
+ * `.bz2`/`.tbz2`, `.br`/`.tar.br` — plus a lone compressed file (`foo.json.gz`). No dependency beyond the
4
+ * browser's native gzip; xz reuses the project's hand-rolled LZMA2 decoder ({@link lib/lzma}), bzip2 its BWT
5
+ * decoder ({@link lib/bzip2}), and Brotli a lazily-loaded WASM decoder ({@link lib/brotli}).
6
+ *
7
+ * Unlike ZIP/7z (random-access central directories), a tar is solid: the whole stream is decompressed to
8
+ * memory once, then tar headers are walked to index each file as an (offset, size) slice into that buffer —
9
+ * so extraction is a cheap, synchronous sub-array copy. The result is exposed through the shared
10
+ * {@link OpenedArchive} interface so {@link components/ArchiveBrowser} can browse it like any other archive.
11
+ *
12
+ * If the decompressed bytes aren't a tar (a bare `foo.txt.gz`), the archive is presented as a single entry
13
+ * named by stripping the compression suffix.
14
+ */
15
+ import type { OpenedArchive } from '@/lib/archive';
16
+ /**
17
+ * Open a tar-family archive: decompress the outer wrapper (gzip/xz/bzip2, by magic) if present, then either
18
+ * index it as a tar or, failing that, surface the single decompressed file.
19
+ */
20
+ export declare function openTarball(buf: ArrayBuffer, name: string): Promise<OpenedArchive>;
@@ -0,0 +1,248 @@
1
+ import { decodeFileNameBytes as e } from "./encoding.js";
2
+ import { bcjX86Decode as t, lzma2Decode as n } from "./lzma.js";
3
+ import { bzip2Decode as r } from "./bzip2.js";
4
+ //#region src/lib/tarball.ts
5
+ var i = [31, 139], a = [
6
+ 253,
7
+ 55,
8
+ 122,
9
+ 88,
10
+ 90,
11
+ 0
12
+ ], o = [
13
+ 66,
14
+ 90,
15
+ 104
16
+ ];
17
+ function s(e, t, n = 0) {
18
+ return e.length < n + t.length ? !1 : t.every((t, r) => e[n + r] === t);
19
+ }
20
+ async function c(e) {
21
+ if (typeof DecompressionStream > "u") throw Error("当前浏览器不支持解压 gzip(缺少 DecompressionStream)");
22
+ let t = new Blob([e]).stream().pipeThrough(new DecompressionStream("gzip"));
23
+ return new Uint8Array(await new Response(t).arrayBuffer());
24
+ }
25
+ var l = [
26
+ 0,
27
+ 4,
28
+ 4,
29
+ 4,
30
+ 8,
31
+ 8,
32
+ 8,
33
+ 16,
34
+ 16,
35
+ 16,
36
+ 32,
37
+ 32,
38
+ 32,
39
+ 64,
40
+ 64,
41
+ 64
42
+ ];
43
+ function u(e, t) {
44
+ let n = 0, r = 0, i = t;
45
+ for (;;) {
46
+ let t = e[i++];
47
+ if (n += (t & 127) * 2 ** r, !(t & 128)) break;
48
+ if (r += 7, r > 63) throw Error("xz VLI 过长");
49
+ }
50
+ return {
51
+ value: n,
52
+ next: i
53
+ };
54
+ }
55
+ function d(e, t) {
56
+ let n = t, r = 0;
57
+ for (;;) {
58
+ let t = e[n++];
59
+ if (t === 0) break;
60
+ if (t >= 128) {
61
+ let i = ((t & 31) << 16) + (e[n] << 8) + e[n + 1] + 1;
62
+ n += 2;
63
+ let a = (e[n] << 8) + e[n + 1] + 1;
64
+ n += 2, (t >> 5 & 3) >= 2 && n++, n += a, r += i;
65
+ } else {
66
+ if (t > 2) throw Error(`xz LZMA2 非法控制字节 0x${t.toString(16)}`);
67
+ let i = (e[n] << 8) + e[n + 1] + 1;
68
+ n += 2, n += i, r += i;
69
+ }
70
+ }
71
+ return {
72
+ compLen: n - t,
73
+ uncompSize: r
74
+ };
75
+ }
76
+ function f(e) {
77
+ if (!s(e, a)) throw Error("不是有效的 xz 文件");
78
+ let r = l[e[7] & 15], i = [], o = 12;
79
+ for (; o < e.length;) {
80
+ let a = e[o];
81
+ if (a === 0) break;
82
+ let s = (a + 1) * 4, c = e[o + 1], l = (c & 3) + 1, f = o + 2;
83
+ c & 64 && (f = u(e, f).next);
84
+ let p = -1;
85
+ if (c & 128) {
86
+ let t = u(e, f);
87
+ p = t.value, f = t.next;
88
+ }
89
+ let m = new Uint8Array(), h = !1;
90
+ for (let t = 0; t < l; t++) {
91
+ let t = u(e, f);
92
+ f = t.next;
93
+ let n = u(e, f);
94
+ f = n.next;
95
+ let r = e.subarray(f, f + n.value);
96
+ if (f += n.value, t.value === 33) m = r.slice();
97
+ else if (t.value === 4) h = !0;
98
+ else throw Error(`xz 不支持的过滤器 0x${t.value.toString(16)}`);
99
+ }
100
+ let g = o + s, { compLen: _, uncompSize: v } = d(e, g), y = p >= 0 ? p : v, b = n(e.subarray(g, g + _), m, y);
101
+ h && t(b), i.push(b);
102
+ let x = g + _;
103
+ x += (4 - _ % 4) % 4, x += r, o = x;
104
+ }
105
+ let c = 0;
106
+ for (let e of i) c += e.length;
107
+ let f = new Uint8Array(c), p = 0;
108
+ for (let e of i) f.set(e, p), p += e.length;
109
+ return f;
110
+ }
111
+ var p = new TextDecoder("utf-8");
112
+ function m(e, t, n) {
113
+ let r = t;
114
+ for (; r < t + n && e[r] !== 0;) r++;
115
+ return p.decode(e.subarray(t, r));
116
+ }
117
+ function h(t, n, r) {
118
+ let i = n;
119
+ for (; i < n + r && t[i] !== 0;) i++;
120
+ return e(t.subarray(n, i));
121
+ }
122
+ function g(e, t, n) {
123
+ if (e[t] & 128) {
124
+ let r = e[t] & 127;
125
+ for (let i = 1; i < n; i++) r = r * 256 + e[t + i];
126
+ return r;
127
+ }
128
+ let r = m(e, t, n).trim();
129
+ return r && parseInt(r, 8) || 0;
130
+ }
131
+ function _(e) {
132
+ let t = {}, n = 0;
133
+ for (; n < e.length;) {
134
+ let r = e.indexOf(" ", n);
135
+ if (r < 0) break;
136
+ let i = parseInt(e.slice(n, r), 10);
137
+ if (!i || i <= 0) break;
138
+ let a = e.slice(r + 1, n + i - 1), o = a.indexOf("=");
139
+ if (o > 0) {
140
+ let e = a.slice(0, o), n = a.slice(o + 1);
141
+ e === "path" ? t.path = n : e === "size" && (t.size = parseInt(n, 10) || 0);
142
+ }
143
+ n += i;
144
+ }
145
+ return t;
146
+ }
147
+ var v = (e) => e + 511 & -512;
148
+ function y(e) {
149
+ let t = [], n = 0, r = "", i = {};
150
+ for (; n + 512 <= e.length;) {
151
+ let a = e.subarray(n, n + 512), o = !0;
152
+ for (let e = 0; e < 512; e++) if (a[e] !== 0) {
153
+ o = !1;
154
+ break;
155
+ }
156
+ if (o) break;
157
+ let s = h(a, 0, 100), c = h(a, 345, 155), l = String.fromCharCode(a[156]), u = g(a, 124, 12), d = n + 512;
158
+ if (l === "L") {
159
+ r = h(e.subarray(d, d + u), 0, u), n = d + v(u);
160
+ continue;
161
+ }
162
+ if (l === "K") {
163
+ n = d + v(u);
164
+ continue;
165
+ }
166
+ if (l === "x" || l === "g") {
167
+ i = _(p.decode(e.subarray(d, d + u))), n = d + v(u);
168
+ continue;
169
+ }
170
+ let f = r || i.path || (c ? `${c}/${s}` : s);
171
+ i.size !== void 0 && (u = i.size), r = "", i = {};
172
+ let m = l === "5" || f.endsWith("/");
173
+ f = f.replace(/\/+$/, ""), f && t.push({
174
+ path: f,
175
+ name: f.split("/").pop() ?? f,
176
+ size: m ? 0 : u,
177
+ isDir: m,
178
+ offset: d
179
+ }), n = d + (m ? 0 : v(u));
180
+ }
181
+ return t;
182
+ }
183
+ function b(e) {
184
+ return e.length >= 512 && m(e.subarray(257, 263), 0, 5) === "ustar";
185
+ }
186
+ function x(e) {
187
+ let t = e.toLowerCase();
188
+ for (let [n, r] of [
189
+ [".tar.gz", ".tar"],
190
+ [".tar.xz", ".tar"],
191
+ [".tar.bz2", ".tar"],
192
+ [".tgz", ".tar"],
193
+ [".txz", ".tar"],
194
+ [".tbz2", ".tar"],
195
+ [".tbz", ".tar"],
196
+ [".tar.br", ".tar"],
197
+ [".tbr", ".tar"]
198
+ ]) if (t.endsWith(n)) return e.slice(0, -n.length) + r;
199
+ for (let n of [
200
+ ".gz",
201
+ ".xz",
202
+ ".bz2",
203
+ ".bz",
204
+ ".br"
205
+ ]) if (t.endsWith(n)) return e.slice(0, -n.length);
206
+ return `${e}.out`;
207
+ }
208
+ async function S(e, t) {
209
+ let n = new Uint8Array(e);
210
+ if (s(n, i)) n = await c(n);
211
+ else if (s(n, a)) n = f(n);
212
+ else if (s(n, o)) n = r(n);
213
+ else if (!b(n)) {
214
+ let { brotliDecode: e } = await import("./brotli.js");
215
+ n = await e(n);
216
+ }
217
+ if (b(n)) {
218
+ let e = y(n), t = e.map((e, t) => ({
219
+ path: e.path,
220
+ name: e.name,
221
+ size: e.size,
222
+ isDir: e.isDir,
223
+ ref: t
224
+ })), r = n;
225
+ return {
226
+ entries: t,
227
+ extract(t) {
228
+ let n = e[t.ref];
229
+ return !n || n.isDir ? new Uint8Array() : r.subarray(n.offset, n.offset + n.size).slice();
230
+ }
231
+ };
232
+ }
233
+ let l = x(t), u = n;
234
+ return {
235
+ entries: [{
236
+ path: l,
237
+ name: l,
238
+ size: u.length,
239
+ isDir: !1,
240
+ ref: 0
241
+ }],
242
+ extract() {
243
+ return u;
244
+ }
245
+ };
246
+ }
247
+ //#endregion
248
+ export { S as openTarball };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The "open with" formatter set — the universal escape hatch for the side viewer.
3
+ *
4
+ * Auto-detection ({@link classifyViewerFile}) routes a file to a specialized viewer by extension/mime, but that
5
+ * guess can be wrong (a mislabeled file, a `.voice` blob that's really SILK, bytes worth eyeballing as hex).
6
+ * Each formatter here REINTERPRETS the same name/url/size/content as a different {@link ViewerFile}, so it
7
+ * applies to ANY file regardless of what detection picked. The list is shared by:
8
+ * - {@link FileViewerPanel} — renders the header "打开方式" menu (available for every file), and
9
+ * - {@link FileViewerBody} — applies the choice and also offers the same chips on its unpreviewable-binary
10
+ * card (the archive-browser context, where there is no host header).
11
+ *
12
+ * These are deliberately the GENERIC reinterpretations that work on raw bytes — hex / text / markdown / html /
13
+ * svg / image / audio / video. The heavy structured viewers (docx / xlsx / zip / …) stay auto-detected only:
14
+ * forcing arbitrary bytes through them just errors, so they'd be noise in a "force open as" list.
15
+ */
16
+ import type { StrokeIconName } from '@/components/icons/iconPaths';
17
+ import type { ViewerFile } from '@/composables/useFileViewer';
18
+ export interface ViewerFormatter {
19
+ /** Stable id (used for the active-selection highlight and the body↔header sync). */
20
+ key: string;
21
+ label: string;
22
+ icon: StrokeIconName;
23
+ /** Merged onto the base file to force this interpretation; `lang` is always set (it drives the source view). */
24
+ patch: Partial<ViewerFile> & {
25
+ lang: string;
26
+ };
27
+ }
28
+ export declare const VIEWER_FORMATTERS: ViewerFormatter[];
29
+ /** Look a formatter up by its {@link ViewerFormatter.key}; undefined for an unknown key. */
30
+ export declare function findFormatter(key: string): ViewerFormatter | undefined;
31
+ /**
32
+ * Build the EFFECTIVE file for a chosen formatter: same name/url/size/content as the original, but only the
33
+ * formatter's flags (no carried-over detection flags), so the body's dispatch re-runs cleanly as that format.
34
+ */
35
+ export declare function applyFormatter(file: ViewerFile, f: ViewerFormatter): ViewerFile;