file-viewer3 1.0.7 → 1.0.25

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 (423) hide show
  1. package/LICENSE +160 -0
  2. package/README.en.md +390 -0
  3. package/README.md +306 -87
  4. package/dist/_headers +22 -0
  5. package/dist/assets/3MFLoader--yjh7udp.js +1 -0
  6. package/dist/assets/AMFLoader-C0y7NIAO.js +1 -0
  7. package/dist/assets/ArchiveViewer-6AvBZVl3.js +2 -0
  8. package/dist/assets/ArchiveViewer-B2pHxHFv.css +1 -0
  9. package/dist/assets/AudioViewer-0CSMvCtp.css +1 -0
  10. package/dist/assets/AudioViewer-6a_DDcur.js +1 -0
  11. package/dist/assets/CadViewer-A9PKtCth.css +1 -0
  12. package/dist/assets/CadViewer-D94LUXKO.js +110 -0
  13. package/dist/assets/CodeViewer-BdZGsbFh.js +2 -0
  14. package/dist/assets/CodeViewer-CR2CsPRi.css +1 -0
  15. package/dist/assets/ColladaLoader-DTiuvWJL.js +3 -0
  16. package/dist/assets/DrawingViewer-BplS278E.js +2 -0
  17. package/dist/assets/DrawingViewer-DXiF5YWV.css +1 -0
  18. package/dist/assets/EdaViewer-BXH1Jmwr.js +8 -0
  19. package/dist/assets/EdaViewer-CKf1YQnh.css +1 -0
  20. package/dist/assets/EmailViewer-BsBKZ_A5.js +4 -0
  21. package/dist/assets/EmailViewer-BwvGE4ns.css +1 -0
  22. package/dist/assets/EpubViewer-Cci0l1Vm.css +1 -0
  23. package/dist/assets/EpubViewer-DlGzr8_x.js +2 -0
  24. package/dist/assets/FBXLoader-Bj34Z_uf.js +1 -0
  25. package/dist/assets/GLTFLoader-BNUIXeRP.js +1 -0
  26. package/dist/assets/ImageViewer-BKp7YpMs.css +10 -0
  27. package/dist/assets/ImageViewer-D1Yc0jYg.js +1 -0
  28. package/dist/assets/KMZLoader-DTmXWzX_.js +1 -0
  29. package/dist/assets/MarkdownViewer-CIljbLlu.css +1 -0
  30. package/dist/assets/MarkdownViewer-CRi0rhWw.js +64 -0
  31. package/dist/assets/ModelViewer-C4ir9AyI.css +1 -0
  32. package/dist/assets/ModelViewer-yxcVdLzz.js +2 -0
  33. package/dist/assets/OBJLoader-DW4Mv-mq.js +5 -0
  34. package/dist/assets/OfdViewer-DbkG1-Bp.js +2 -0
  35. package/dist/assets/OfdViewer-Ulv-WZWh.css +1 -0
  36. package/dist/assets/PCDLoader-CHA1g8rk.js +3 -0
  37. package/dist/assets/PLYLoader-DwTzA-Dg.js +2 -0
  38. package/dist/assets/PdfView-_Uu48dkU.js +558 -0
  39. package/dist/assets/PdfView-fKwbB_8j.css +1 -0
  40. package/dist/assets/PptxRender-BNoW_9_0.css +1 -0
  41. package/dist/assets/PptxRender-myCCfHiR.js +32 -0
  42. package/dist/assets/STLLoader-Bt7FMgMu.js +1 -0
  43. package/dist/assets/TDSLoader-D__OhSS9.js +1 -0
  44. package/dist/assets/TypstViewer-4dMAIp9x.js +60 -0
  45. package/dist/assets/TypstViewer-BgYR02wU.css +1 -0
  46. package/dist/assets/USDLoader-BovI5HgZ.js +6 -0
  47. package/dist/assets/UmdViewer-BfIWw5dV.js +3 -0
  48. package/dist/assets/UmdViewer-DpObj56a.css +1 -0
  49. package/dist/assets/VRMLLoader-_VxVXPvX.js +140 -0
  50. package/dist/assets/VTKLoader-BfnzBXsa.js +3 -0
  51. package/dist/assets/XYZLoader-DbQZs-aZ.js +2 -0
  52. package/dist/assets/XlsxTable-CKmWT6Iw.js +5 -0
  53. package/dist/assets/XlsxTable-Ccp_ksQc.css +1 -0
  54. package/dist/assets/__vite-browser-external-j1Zxnfxm.js +1 -0
  55. package/dist/assets/ar-SA-G6X2FPQ2-h0GtAVoD.js +10 -0
  56. package/dist/assets/arc-C_eH0vTw.js +1 -0
  57. package/dist/assets/architecture-7EHR7CIX-nPLvVkG5.js +1 -0
  58. package/dist/assets/architectureDiagram-3BPJPVTR-Cx8fJaC_.js +36 -0
  59. package/dist/assets/archive-D-0w4Z7t.js +2 -0
  60. package/dist/assets/audio-IkwcqgJA.js +2 -0
  61. package/dist/assets/az-AZ-76LH7QW2-D_aQ-6Zd.js +1 -0
  62. package/dist/assets/bash-LmRjUKlR.js +1 -0
  63. package/dist/assets/bg-BG-XCXSNQG7-H7Czia1L.js +5 -0
  64. package/dist/assets/blockDiagram-GPEHLZMM-v3Efy6dm.js +132 -0
  65. package/dist/assets/bn-BD-2XOGV67Q-f6ymEr9g.js +5 -0
  66. package/dist/assets/c4Diagram-AAUBKEIU-BdstYnMv.js +10 -0
  67. package/dist/assets/ca-ES-6MX7JW3Y-DTzyqWmS.js +8 -0
  68. package/dist/assets/cad-DFnQbJJO.js +2 -0
  69. package/dist/assets/cfb-Bv6fOQ4m.js +11 -0
  70. package/dist/assets/channel-C66J400U.js +1 -0
  71. package/dist/assets/chunk-2J33WTMH-BoyKZPbs.js +1 -0
  72. package/dist/assets/chunk-3OPIFGDE-a_QAVzsM.js +62 -0
  73. package/dist/assets/chunk-4BX2VUAB-DZj4_o2K.js +1 -0
  74. package/dist/assets/chunk-55IACEB6-C7hP08Mf.js +1 -0
  75. package/dist/assets/chunk-5ZQYHXKU-DBQ_7Zc2.js +2 -0
  76. package/dist/assets/chunk-6U3AYISY-C6-Mtja1.js +12 -0
  77. package/dist/assets/chunk-727SXJPM-BVNP_kQ-.js +206 -0
  78. package/dist/assets/chunk-AGHRB4JF-DrBKq3qz.js +1 -0
  79. package/dist/assets/chunk-AQP2D5EJ-0N6k4ROT.js +231 -0
  80. package/dist/assets/chunk-BSJP7CBP-b8olRIQO.js +1 -0
  81. package/dist/assets/chunk-CSCIHK7Q-B5j-yHKS.js +124 -0
  82. package/dist/assets/chunk-EIO257PC-C6qii-N9.js +22 -0
  83. package/dist/assets/chunk-FMBD7UC4-CBBZh2UU.js +15 -0
  84. package/dist/assets/chunk-K2UTITRG-Cx4xt2xV.js +35 -0
  85. package/dist/assets/chunk-KSCS5N6A-Dwg0HTxH.js +10 -0
  86. package/dist/assets/chunk-L5ZTLDWV-BPuCpePB.js +1 -0
  87. package/dist/assets/chunk-LZXEDZCA-CvLuVK3G.js +2 -0
  88. package/dist/assets/chunk-ND2GUHAM-CWJPhGEg.js +1 -0
  89. package/dist/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  90. package/dist/assets/chunk-NZK2D7GU-DuaLWEa1.js +1 -0
  91. package/dist/assets/chunk-O5CBEL6O-dK2KeDfH.js +70 -0
  92. package/dist/assets/chunk-QZHKN3VN-4Bf82riF.js +1 -0
  93. package/dist/assets/chunk-SRAX5OIU-BhbLEiib.js +1 -0
  94. package/dist/assets/chunk-WU5MYG2G-DLkui5D2.js +1 -0
  95. package/dist/assets/chunk-XPW4576I-BvXQTKbm.js +32 -0
  96. package/dist/assets/chunk-Z3N5DIM6-D9TMVU7m.js +1 -0
  97. package/dist/assets/chunk-ZUYEQ4TG-BzFOpW--.js +7 -0
  98. package/dist/assets/classDiagram-4FO5ZUOK-DKj6zlra.js +1 -0
  99. package/dist/assets/classDiagram-v2-Q7XG4LA2-DKj6zlra.js +1 -0
  100. package/dist/assets/compare-BA1y8ff-.css +1 -0
  101. package/dist/assets/compare-QN3IusOj.js +1 -0
  102. package/dist/assets/compiler-qgJWLAtm.js +1 -0
  103. package/dist/assets/core-S5OLGxXP.js +3 -0
  104. package/dist/assets/cose-bilkent-S5V4N54A-CslZOqNN.js +1 -0
  105. package/dist/assets/cpp-V0F2hNk9.js +1 -0
  106. package/dist/assets/cs-CZ-2BRQDIVT-BRw0NNL_.js +11 -0
  107. package/dist/assets/csharp-GZmu99Fo.js +1 -0
  108. package/dist/assets/css-D5l_8KUR.js +1 -0
  109. package/dist/assets/cytoscape.esm-C8YCVR3_.js +321 -0
  110. package/dist/assets/da-DK-5WZEPLOC-q5u_UoZe.js +5 -0
  111. package/dist/assets/dagre-BM42HDAG-D6fpH9H3.js +4 -0
  112. package/dist/assets/dagre-Bx709z4p.js +1 -0
  113. package/dist/assets/de-DE-XR44H4JA-B79lsSt9.js +8 -0
  114. package/dist/assets/defaultLocale-C8Fc0cco.js +1 -0
  115. package/dist/assets/diagram-2AECGRRQ-DGviV3zF.js +43 -0
  116. package/dist/assets/diagram-5GNKFQAL-D8edmK5r.js +10 -0
  117. package/dist/assets/diagram-KO2AKTUF-DonC_-9l.js +3 -0
  118. package/dist/assets/diagram-LMA3HP47-T0-OD5uV.js +24 -0
  119. package/dist/assets/diagram-OG6HWLK6-BsRJiZE3.js +24 -0
  120. package/dist/assets/diff-CJb8JxGC.js +1 -0
  121. package/dist/assets/directory-open-01563666-D4xXyWb_.js +1 -0
  122. package/dist/assets/directory-open-4ed118d0-1i309Asm.js +1 -0
  123. package/dist/assets/dist-ND9DUPs_.js +1 -0
  124. package/dist/assets/dist-S-2Hyh3N.js +1 -0
  125. package/dist/assets/dist-jshluroQ.js +27 -0
  126. package/dist/assets/docx-preview-CAHEyNQy.js +20 -0
  127. package/dist/assets/drawing-B3sCN7BX.js +2 -0
  128. package/dist/assets/ebook-DDycOGR3.js +2 -0
  129. package/dist/assets/eda-JxVOVy9j.js +2 -0
  130. package/dist/assets/el-GR-BZB4AONW-DVV0CNhT.js +10 -0
  131. package/dist/assets/email-D9tCfCzQ.js +2 -0
  132. package/dist/assets/en-B4ZKOASM-CpbJugBW.js +1 -0
  133. package/dist/assets/erDiagram-TEJ5UH35-O-dDoXsU.js +85 -0
  134. package/dist/assets/es-ES-U4NZUMDT-DUvN9FXg.js +9 -0
  135. package/dist/assets/eu-ES-A7QVB2H4-DV6UAZB_.js +11 -0
  136. package/dist/assets/eventmodeling-FCH6USID-BONfeu8r.js +1 -0
  137. package/dist/assets/fa-IR-HGAKTJCU-0ql2xhuq.js +8 -0
  138. package/dist/assets/fflate.module-BIQmJeC9.js +1 -0
  139. package/dist/assets/fi-FI-Z5N7JZ37-CxtRUMtw.js +6 -0
  140. package/dist/assets/file-open-002ab408-BHUWm0Sh.js +1 -0
  141. package/dist/assets/file-open-7c801643-DZtJT5zp.js +1 -0
  142. package/dist/assets/file-save-3189631c-CO9S4HFW.js +1 -0
  143. package/dist/assets/file-save-745eba88-Bwdfz6OZ.js +1 -0
  144. package/dist/assets/flowDiagram-I6XJVG4X-DsWkZiFB.js +162 -0
  145. package/dist/assets/fr-FR-RHASNOE6-CLi1nCBA.js +9 -0
  146. package/dist/assets/ganttDiagram-6RSMTGT7-r5IfYmu1.js +292 -0
  147. package/dist/assets/gitGraph-WXDBUCRP-BPjRwtiT.js +1 -0
  148. package/dist/assets/gitGraphDiagram-PVQCEYII-DGYT-2sl.js +106 -0
  149. package/dist/assets/gl-ES-HMX3MZ6V-NMLOwshd.js +10 -0
  150. package/dist/assets/global-compiler-D1EEBbpA.js +1 -0
  151. package/dist/assets/global-renderer-AKzBLvRw.js +1 -0
  152. package/dist/assets/go-B-PCS5zA.js +1 -0
  153. package/dist/assets/graphlib-B8gBHxth.js +1 -0
  154. package/dist/assets/he-IL-6SHJWFNN-BWPkP_3r.js +10 -0
  155. package/dist/assets/hi-IN-IWLTKZ5I-KNyxys-k.js +4 -0
  156. package/dist/assets/hu-HU-A5ZG7DT2-BjcxkVW9.js +7 -0
  157. package/dist/assets/id-ID-SAP4L64H-B-oUkzcH.js +10 -0
  158. package/dist/assets/image-6zdrB4g6.js +2 -0
  159. package/dist/assets/image-GAAHSSAO-7tK5sChZ.js +1 -0
  160. package/dist/assets/image-blob-reduce.esm-NzmDxm1v.js +2 -0
  161. package/dist/assets/info-J43DQDTF-sQY7EXUc.js +1 -0
  162. package/dist/assets/infoDiagram-5YYISTIA-Dzg1KIdJ.js +2 -0
  163. package/dist/assets/ini-B1CroMsf.js +1 -0
  164. package/dist/assets/init-D6jRqBbL.js +1 -0
  165. package/dist/assets/ishikawaDiagram-YF4QCWOH-C4gAmRlT.js +70 -0
  166. package/dist/assets/it-IT-JPQ66NNP-Bwud0QsX.js +11 -0
  167. package/dist/assets/ja-JP-DBVTYXUO-DgNQ5bjg.js +8 -0
  168. package/dist/assets/java-ChVphriW.js +1 -0
  169. package/dist/assets/javascript-w9aIBC1S.js +1 -0
  170. package/dist/assets/journeyDiagram-JHISSGLW-ofw85AZe.js +139 -0
  171. package/dist/assets/json-DS4EA3dC.js +1 -0
  172. package/dist/assets/jszip.min-C7VJhIfM.js +2 -0
  173. package/dist/assets/kaa-6HZHGXH3-BMz8LTXv.js +1 -0
  174. package/dist/assets/kab-KAB-ZGHBKWFO-B9w0Zir8.js +8 -0
  175. package/dist/assets/kanban-definition-UN3LZRKU-CljG07f4.js +89 -0
  176. package/dist/assets/katex-Vhh-h91d.js +257 -0
  177. package/dist/assets/kk-KZ-P5N5QNE5-2tUcaoKh.js +1 -0
  178. package/dist/assets/km-KH-HSX4SM5Z-_kaSqGhJ.js +11 -0
  179. package/dist/assets/ko-KR-MTYHY66A-CIjaox2B.js +9 -0
  180. package/dist/assets/ku-TR-6OUDTVRD-CkLMAwgC.js +9 -0
  181. package/dist/assets/lib-CxFoY_GP.js +6 -0
  182. package/dist/assets/libarchive-DknIq1tb.js +1 -0
  183. package/dist/assets/libarchive-DxGirPmi.wasm +0 -0
  184. package/dist/assets/linear-DAeDjlp3.js +1 -0
  185. package/dist/assets/logo-DG62cSZK.png +0 -0
  186. package/dist/assets/lt-LT-XHIRWOB4-BsH7UAds.js +3 -0
  187. package/dist/assets/lv-LV-5QDEKY6T-DH8to9BS.js +7 -0
  188. package/dist/assets/main-B8S7RFzE.js +4 -0
  189. package/dist/assets/main-BZ1u3qpM.css +1 -0
  190. package/dist/assets/markdown-C8bVcNXx.js +1 -0
  191. package/dist/assets/md-OHaN-Ra2.js +2 -0
  192. package/dist/assets/mermaid-parser.core-DX-qibXo.js +4 -0
  193. package/dist/assets/mindmap-definition-RKZ34NQL-5NZ4x9hJ.js +96 -0
  194. package/dist/assets/model-B6Ua5SnP.js +2 -0
  195. package/dist/assets/mp4-Dho29Zd7.js +1 -0
  196. package/dist/assets/mr-IN-CRQNXWMA-BrKaFNSo.js +13 -0
  197. package/dist/assets/my-MM-5M5IBNSE-BZSEmctA.js +1 -0
  198. package/dist/assets/nb-NO-T6EIAALU-6a9gavJA.js +10 -0
  199. package/dist/assets/nestedRender-vUCW8qgY.js +3 -0
  200. package/dist/assets/nl-NL-IS3SIHDZ-uxPhLMYz.js +8 -0
  201. package/dist/assets/nn-NO-6E72VCQL-D4PNCwHO.js +8 -0
  202. package/dist/assets/oc-FR-POXYY2M6-C7kpaHdZ.js +8 -0
  203. package/dist/assets/ofd-CM51fmds.js +2 -0
  204. package/dist/assets/ofd-CsX4S_yH.js +6 -0
  205. package/dist/assets/ordinal-hYBb2elL.js +1 -0
  206. package/dist/assets/pa-IN-N4M65BXN-DudflUsb.js +4 -0
  207. package/dist/assets/package-BuR3Qm_h.css +1 -0
  208. package/dist/assets/package-DbhUOWuO.js +296 -0
  209. package/dist/assets/packet-YPE3B663-zJFiRlih.js +1 -0
  210. package/dist/assets/pdf-CZTifdsT.js +2 -0
  211. package/dist/assets/percentages-BXMCSKIN-DuKjcyNK.js +1 -0
  212. package/dist/assets/php-5k5YNuRS.js +2 -0
  213. package/dist/assets/pica-W1nY7k4k.js +2 -0
  214. package/dist/assets/pie-CZr-MxNa.js +1 -0
  215. package/dist/assets/pie-LRSECV5Y-ChrxPon2.js +1 -0
  216. package/dist/assets/pieDiagram-4H26LBE5-rqS9xOI6.js +30 -0
  217. package/dist/assets/pl-PL-T2D74RX3-BjwyDbo2.js +9 -0
  218. package/dist/assets/postal-mime-kkzCFkih.js +29 -0
  219. package/dist/assets/pptx-HCi3sDR0.js +2 -0
  220. package/dist/assets/printLayout-D2pf0W9y.js +24 -0
  221. package/dist/assets/prod-CAexHIHC.js +149 -0
  222. package/dist/assets/pt-BR-5N22H2LF-dhO4g53z.js +9 -0
  223. package/dist/assets/pt-PT-UZXXM6DQ-B0FVw5E6.js +9 -0
  224. package/dist/assets/python-DwhXSSGr.js +1 -0
  225. package/dist/assets/quadrantDiagram-W4KKPZXB-CvbA748i.js +7 -0
  226. package/dist/assets/radar-GUYGQ44K-Ch58tAlJ.js +1 -0
  227. package/dist/assets/reactivity.esm-bundler-Bfmlzvr-.js +1 -0
  228. package/dist/assets/renderer-69XMfifI.js +1 -0
  229. package/dist/assets/requirementDiagram-4Y6WPE33-Ek_Wtky1.js +84 -0
  230. package/dist/assets/ro-RO-JPDTUUEW-CRyQ9zJm.js +11 -0
  231. package/dist/assets/rough.esm-CIepY_sA.js +1 -0
  232. package/dist/assets/roundRect-D01gJrlt.js +1 -0
  233. package/dist/assets/ru-RU-B4JR7IUQ-Ccj6OqLf.js +9 -0
  234. package/dist/assets/runtime-core.esm-bundler-CR6OOEFf.js +1 -0
  235. package/dist/assets/rust-Dk33Kfe-.js +1 -0
  236. package/dist/assets/sankeyDiagram-5OEKKPKP-D3gZ6xE7.js +40 -0
  237. package/dist/assets/sequenceDiagram-3UESZ5HK-C5489xFA.js +162 -0
  238. package/dist/assets/si-LK-N5RQ5JYF-BwS2qaTv.js +1 -0
  239. package/dist/assets/sk-SK-C5VTKIMK-ly1tHoOw.js +6 -0
  240. package/dist/assets/sl-SI-NN7IZMDC-iZiOFm2y.js +6 -0
  241. package/dist/assets/sql-DWRKyvJ-.js +1 -0
  242. package/dist/assets/src-BrOGWJpF.js +1 -0
  243. package/dist/assets/src-D_n3k0l_.js +5 -0
  244. package/dist/assets/stateDiagram-AJRCARHV-1hoVbE34.js +1 -0
  245. package/dist/assets/stateDiagram-v2-BHNVJYJU-CZmypPHd.js +1 -0
  246. package/dist/assets/style-x1XGuNl0.css +1 -0
  247. package/dist/assets/subset-shared.chunk-CK2m59fy.js +1 -0
  248. package/dist/assets/subset-worker.chunk-B5G7hWyg.js +1 -0
  249. package/dist/assets/sv-SE-XGPEYMSR-BNpkY1PO.js +10 -0
  250. package/dist/assets/ta-IN-2NMHFXQM-DsldkrWk.js +9 -0
  251. package/dist/assets/text-CMp0EW11.js +2 -0
  252. package/dist/assets/th-TH-HPSO5L25-AVrKqKOh.js +2 -0
  253. package/dist/assets/three.module-BFsVh7r1.js +4104 -0
  254. package/dist/assets/time-B8nkukJS.js +1 -0
  255. package/dist/assets/timeline-definition-PNZ67QCA-CfMKM_FS.js +120 -0
  256. package/dist/assets/tr-TR-DEFEU3FU-DYarL0Oa.js +7 -0
  257. package/dist/assets/treeView-BLDUP644-CGGdcSoP.js +1 -0
  258. package/dist/assets/treemap-LRROVOQU-C3Zg5qig.js +1 -0
  259. package/dist/assets/typescript-BvteI6YB.js +1 -0
  260. package/dist/assets/typst-DOlgRigg.js +2 -0
  261. package/dist/assets/typst_ts_renderer_bg-DRRWm1TP.wasm +0 -0
  262. package/dist/assets/uk-UA-QMV73CPH-D36-a0jl.js +6 -0
  263. package/dist/assets/umd-r51rBtd2.js +2 -0
  264. package/dist/assets/vennDiagram-CIIHVFJN-GrdHiqIf.js +34 -0
  265. package/dist/assets/vi-VN-M7AON7JQ-zdUBY1Fz.js +5 -0
  266. package/dist/assets/wardley-L42UT6IY-ilBO1QYS.js +1 -0
  267. package/dist/assets/wardleyDiagram-YWT4CUSO-Cgr3uPws.js +78 -0
  268. package/dist/assets/wasm-C3ukMqzA.js +1 -0
  269. package/dist/assets/wasm-pack-shim-BShYmbRf.js +1 -0
  270. package/dist/assets/wasm-pack-shim-BnuNh1z7.js +1 -0
  271. package/dist/assets/word-DQCwLNG7.js +150 -0
  272. package/dist/assets/worker-bundle-Dx5mKZOL.js +6 -0
  273. package/dist/assets/worker-ref-BbTnHTC-.js +1 -0
  274. package/dist/assets/xlsx-B1qUDXfb.js +2 -0
  275. package/dist/assets/xlsx-ff7ER-JZ.png +0 -0
  276. package/dist/assets/xml-DasnpDVC.js +1 -0
  277. package/dist/assets/xychartDiagram-2RQKCTM6-BwoaSxOF.js +7 -0
  278. package/dist/assets/yaml-1XF8XcZB.js +1 -0
  279. package/dist/assets/zh-CN-LNUGB5OW-WQ7J6JkH.js +10 -0
  280. package/dist/assets/zh-HK-E62DVLB3-BoGXaBos.js +1 -0
  281. package/dist/assets/zh-TW-RAJ6MFWO-DZQOFop7.js +9 -0
  282. package/dist/compare.html +21 -0
  283. package/dist/example/README.md +137 -0
  284. package/dist/example/SOURCES.md +49 -0
  285. package/dist/example/app.log +13 -0
  286. package/dist/example/archive.tar.gz +0 -0
  287. package/dist/example/archive.zip +0 -0
  288. package/dist/example/audio.mp3 +0 -0
  289. package/dist/example/audio.ogg +0 -0
  290. package/dist/example/book.epub +0 -0
  291. package/dist/example/book.umd +0 -0
  292. package/dist/example/change.diff +40 -0
  293. package/dist/example/code.cjs +38 -0
  294. package/dist/example/code.css +64 -0
  295. package/dist/example/code.java +55 -0
  296. package/dist/example/code.js +55 -0
  297. package/dist/example/code.jsx +43 -0
  298. package/dist/example/code.mjs +36 -0
  299. package/dist/example/code.py +56 -0
  300. package/dist/example/code.ts +78 -0
  301. package/dist/example/code.tsx +36 -0
  302. package/dist/example/component.vue +68 -0
  303. package/dist/example/config.yaml +48 -0
  304. package/dist/example/config.yml +25 -0
  305. package/dist/example/data.json +50 -0
  306. package/dist/example/data.xml +47 -0
  307. package/dist/example/drawing.dxf +22186 -0
  308. package/dist/example/embedded.html +316 -0
  309. package/dist/example/excel.fods +0 -0
  310. package/dist/example/excel.numbers +0 -0
  311. package/dist/example/excel.ods +0 -0
  312. package/dist/example/excel.xls +0 -0
  313. package/dist/example/excel.xlsb +0 -0
  314. package/dist/example/excel.xlsm +0 -0
  315. package/dist/example/excel.xlsx +0 -0
  316. package/dist/example/flow.excalidraw +1 -0
  317. package/dist/example/index.php +44 -0
  318. package/dist/example/main.c +39 -0
  319. package/dist/example/main.cpp +50 -0
  320. package/dist/example/main.go +55 -0
  321. package/dist/example/main.h +22 -0
  322. package/dist/example/main.hpp +28 -0
  323. package/dist/example/main.rs +36 -0
  324. package/dist/example/markdown.md +84 -0
  325. package/dist/example/model.gltf +66 -0
  326. package/dist/example/model.obj +10 -0
  327. package/dist/example/model.ply +18 -0
  328. package/dist/example/model.step +9 -0
  329. package/dist/example/model.stl +30 -0
  330. package/dist/example/module.cc +36 -0
  331. package/dist/example/notes.markdown +15 -0
  332. package/dist/example/ofd.ofd +0 -0
  333. package/dist/example/page.htm +29 -0
  334. package/dist/example/page.html +33 -0
  335. package/dist/example/pdf.pdf +9125 -3
  336. package/dist/example/pic.bmp +0 -0
  337. package/dist/example/pic.gif +0 -0
  338. package/dist/example/pic.jpeg +0 -0
  339. package/dist/example/pic.jpg +0 -0
  340. package/dist/example/pic.png +0 -0
  341. package/dist/example/pic.tif +0 -0
  342. package/dist/example/pic.tiff +0 -0
  343. package/dist/example/pic.webp +0 -0
  344. package/dist/example/ppt.pptx +0 -0
  345. package/dist/example/process.drawio +249 -0
  346. package/dist/example/program.cs +42 -0
  347. package/dist/example/query.sql +30 -0
  348. package/dist/example/report.typ +90 -0
  349. package/dist/example/sample.dra +0 -0
  350. package/dist/example/sample.dwg +0 -0
  351. package/dist/example/sample.eml +46 -0
  352. package/dist/example/sample.msg +0 -0
  353. package/dist/example/sample.olb +0 -0
  354. package/dist/example/samples/apache/blocks_and_tables.dwf +0 -0
  355. package/dist/example/samples/autodesk/house.dwfx +0 -0
  356. package/dist/example/samples/autodesk/robot-arm.dwfx +0 -0
  357. package/dist/example/script.bash +36 -0
  358. package/dist/example/script.sh +24 -0
  359. package/dist/example/settings.ini +23 -0
  360. package/dist/example/table.csv +4 -0
  361. package/dist/example/template.dot +0 -0
  362. package/dist/example/test.doc +0 -0
  363. package/dist/example/text.txt +3 -0
  364. package/dist/example/vector.svg +6 -0
  365. package/dist/example/video.mp4 +0 -0
  366. package/dist/example/word.docx +0 -0
  367. package/dist/index.html +302 -0
  368. package/dist/vendor/libarchive/libarchive.wasm +0 -0
  369. package/dist/vendor/libarchive/worker-bundle.js +6 -0
  370. package/dist/wasm/cad/dwfv-render.wasm +0 -0
  371. package/dist/wasm/cad/dwg-worker.js +24 -0
  372. package/dist/wasm/cad/libredwg-web.js +15 -0
  373. package/dist/wasm/cad/libredwg-web.wasm +0 -0
  374. package/package.json +118 -41
  375. package/dist/components/ImageViewer.js +0 -1898
  376. package/dist/components/MarkdownViewer.js +0 -1577
  377. package/dist/components/PdfView.js +0 -21660
  378. package/dist/components/PptxRender.js +0 -21165
  379. package/dist/components/XlsxTable.js +0 -69864
  380. package/dist/components/_commonjs-dynamic-modules.js +0 -6
  381. package/dist/components/_commonjsHelpers.js +0 -36
  382. package/dist/components/docx-preview.min.js +0 -5287
  383. package/dist/components/index.js +0 -1711
  384. package/dist/components/worker-ref.js +0 -21
  385. package/dist/index.mjs +0 -6
  386. package/dist/index.umd.js +0 -436
  387. package/dist/src/package/common/type.d.ts +0 -26
  388. package/dist/src/package/common/util.d.ts +0 -5
  389. package/dist/src/package/common/worker-ref.d.ts +0 -12
  390. package/dist/src/package/components/FileViewer/FileViewer.vue.d.ts +0 -25
  391. package/dist/src/package/components/FileViewer/index.d.ts +0 -2
  392. package/dist/src/package/components/FileViewer/util.d.ts +0 -2
  393. package/dist/src/package/index.d.ts +0 -12
  394. package/dist/src/package/vendors/docx/index.d.ts +0 -4
  395. package/dist/src/package/vendors/image/ImageViewer.vue.d.ts +0 -13
  396. package/dist/src/package/vendors/image/index.d.ts +0 -4
  397. package/dist/src/package/vendors/md/MarkdownViewer.vue.d.ts +0 -13
  398. package/dist/src/package/vendors/md/index.d.ts +0 -4
  399. package/dist/src/package/vendors/mp4/index.d.ts +0 -4
  400. package/dist/src/package/vendors/pdf/PdfView.vue.d.ts +0 -13
  401. package/dist/src/package/vendors/pdf/index.d.ts +0 -1
  402. package/dist/src/package/vendors/pdf/worker/index.d.ts +0 -4
  403. package/dist/src/package/vendors/pptx/PptxRender.vue.d.ts +0 -81
  404. package/dist/src/package/vendors/pptx/index.d.ts +0 -6
  405. package/dist/src/package/vendors/pptx/options.d.ts +0 -39
  406. package/dist/src/package/vendors/pptx/support/chart.d.ts +0 -4
  407. package/dist/src/package/vendors/pptx/worker/index.d.ts +0 -4
  408. package/dist/src/package/vendors/renders.d.ts +0 -3
  409. package/dist/src/package/vendors/text/CodeViewer.vue.d.ts +0 -13
  410. package/dist/src/package/vendors/text/index.d.ts +0 -6
  411. package/dist/src/package/vendors/xlsx/XlsxTable.vue.d.ts +0 -13
  412. package/dist/src/package/vendors/xlsx/index.d.ts +0 -5
  413. package/dist/src/package/vendors/xlsx/render.d.ts +0 -6
  414. package/dist/src/package/vendors/xlsx/util.d.ts +0 -8
  415. package/dist/src/package/vendors/xlsx/worker/SheetData.d.ts +0 -51
  416. package/dist/src/package/vendors/xlsx/worker/color.d.ts +0 -2
  417. package/dist/src/package/vendors/xlsx/worker/context.d.ts +0 -6
  418. package/dist/src/package/vendors/xlsx/worker/index.d.ts +0 -4
  419. package/dist/src/package/vendors/xlsx/worker/util.d.ts +0 -10
  420. package/dist/style.css +0 -57
  421. package/dist/worker/pdf.worker.js +0 -66
  422. package/dist/worker/pptx.worker.js +0 -21
  423. package/dist/worker/xlsx.worker.js +0 -65
@@ -0,0 +1,316 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Flyfish Viewer iframe 嵌入示例</title>
7
+ <style>
8
+ :root {
9
+ color-scheme: light;
10
+ --ink: #172033;
11
+ --muted: #647084;
12
+ --line: #d9e2ec;
13
+ --panel: #ffffff;
14
+ --soft: #f4f7fb;
15
+ --brand: #1d6fd6;
16
+ --brand-dark: #164f9c;
17
+ --accent: #0f8a7a;
18
+ --shadow: 0 22px 54px rgba(23, 32, 51, 0.12);
19
+ }
20
+
21
+ * {
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ html,
26
+ body {
27
+ width: 100%;
28
+ height: 100%;
29
+ margin: 0;
30
+ color: var(--ink);
31
+ background: var(--soft);
32
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
33
+ }
34
+
35
+ body {
36
+ display: flex;
37
+ flex-direction: column;
38
+ }
39
+
40
+ .embed-shell {
41
+ display: grid;
42
+ grid-template-rows: auto minmax(0, 1fr);
43
+ width: 100%;
44
+ min-height: 100vh;
45
+ }
46
+
47
+ .embed-header {
48
+ display: grid;
49
+ grid-template-columns: minmax(0, 1fr) auto;
50
+ gap: 24px;
51
+ align-items: center;
52
+ padding: 18px 24px;
53
+ border-bottom: 1px solid var(--line);
54
+ background:
55
+ linear-gradient(135deg, rgba(29, 111, 214, 0.08), rgba(15, 138, 122, 0.08)),
56
+ rgba(255, 255, 255, 0.94);
57
+ backdrop-filter: blur(14px) saturate(140%);
58
+ }
59
+
60
+ .brand {
61
+ display: flex;
62
+ gap: 14px;
63
+ align-items: center;
64
+ min-width: 0;
65
+ }
66
+
67
+ .brand-mark {
68
+ display: grid;
69
+ flex: 0 0 auto;
70
+ place-items: center;
71
+ width: 42px;
72
+ height: 42px;
73
+ border-radius: 10px;
74
+ background: #172033;
75
+ color: #ffffff;
76
+ font-weight: 800;
77
+ letter-spacing: 0;
78
+ box-shadow: 0 10px 24px rgba(23, 32, 51, 0.2);
79
+ }
80
+
81
+ .brand strong {
82
+ display: block;
83
+ font-size: 18px;
84
+ line-height: 1.2;
85
+ }
86
+
87
+ .brand span {
88
+ display: block;
89
+ margin-top: 4px;
90
+ color: var(--muted);
91
+ font-size: 13px;
92
+ line-height: 1.4;
93
+ }
94
+
95
+ .toolbar {
96
+ display: flex;
97
+ gap: 10px;
98
+ align-items: center;
99
+ min-width: 0;
100
+ }
101
+
102
+ .toolbar label {
103
+ color: var(--muted);
104
+ font-size: 13px;
105
+ font-weight: 700;
106
+ }
107
+
108
+ select,
109
+ button {
110
+ height: 40px;
111
+ border-radius: 8px;
112
+ font: inherit;
113
+ }
114
+
115
+ select {
116
+ min-width: 230px;
117
+ border: 1px solid var(--line);
118
+ padding: 0 36px 0 12px;
119
+ background: #ffffff;
120
+ color: var(--ink);
121
+ }
122
+
123
+ button {
124
+ border: 1px solid var(--brand);
125
+ padding: 0 18px;
126
+ background: var(--brand);
127
+ color: #ffffff;
128
+ font-weight: 760;
129
+ cursor: pointer;
130
+ transition:
131
+ background 0.18s ease,
132
+ border-color 0.18s ease,
133
+ transform 0.18s ease;
134
+ }
135
+
136
+ button:hover {
137
+ border-color: var(--brand-dark);
138
+ background: var(--brand-dark);
139
+ transform: translateY(-1px);
140
+ }
141
+
142
+ .viewer-frame-wrap {
143
+ position: relative;
144
+ min-height: 0;
145
+ padding: 18px;
146
+ }
147
+
148
+ iframe {
149
+ display: block;
150
+ width: 100%;
151
+ height: calc(100vh - 113px);
152
+ min-height: 640px;
153
+ border: 1px solid var(--line);
154
+ border-radius: 10px;
155
+ background: #ffffff;
156
+ box-shadow: var(--shadow);
157
+ }
158
+
159
+ #loading {
160
+ position: absolute;
161
+ inset: 18px;
162
+ display: none;
163
+ place-items: center;
164
+ border-radius: 10px;
165
+ background: rgba(244, 247, 251, 0.78);
166
+ color: var(--brand-dark);
167
+ font-size: 18px;
168
+ font-weight: 760;
169
+ backdrop-filter: blur(8px);
170
+ }
171
+
172
+ #loading[aria-hidden="false"] {
173
+ display: grid;
174
+ }
175
+
176
+ @media (max-width: 860px) {
177
+ .embed-header {
178
+ grid-template-columns: 1fr;
179
+ gap: 16px;
180
+ padding: 16px;
181
+ }
182
+
183
+ .toolbar {
184
+ align-items: stretch;
185
+ flex-direction: column;
186
+ }
187
+
188
+ select,
189
+ button {
190
+ width: 100%;
191
+ }
192
+
193
+ .viewer-frame-wrap {
194
+ padding: 12px;
195
+ }
196
+
197
+ iframe {
198
+ height: calc(100vh - 214px);
199
+ }
200
+
201
+ #loading {
202
+ inset: 12px;
203
+ }
204
+ }
205
+ </style>
206
+ </head>
207
+ <body>
208
+ <main class="embed-shell">
209
+ <header class="embed-header">
210
+ <div class="brand">
211
+ <div class="brand-mark">FV</div>
212
+ <div>
213
+ <strong>Flyfish Viewer iframe 示例</strong>
214
+ <span>宿主系统下载文件后,通过 postMessage 把 Blob 推送给独立预览器。</span>
215
+ </div>
216
+ </div>
217
+
218
+ <div class="toolbar">
219
+ <label for="fileSelect">示例文件</label>
220
+ <select id="fileSelect" onchange="context.url = this.value">
221
+ <option value="./word.docx">Word 文档</option>
222
+ <option value="./test.doc">DOC 文档</option>
223
+ <option value="./pdf.pdf">PDF 文档</option>
224
+ <option value="./ofd.ofd">OFD 版式文件</option>
225
+ <option value="./report.typ">Typst 文档</option>
226
+ <option value="./excel.xlsx">Excel 表格</option>
227
+ <option value="./ppt.pptx">PPT 演示</option>
228
+ <option value="./drawing.dxf">CAD 图纸</option>
229
+ <option value="./flow.excalidraw">Excalidraw 图纸</option>
230
+ <option value="./process.drawio">draw.io 图纸</option>
231
+ <option value="./book.epub">EPUB 电子书</option>
232
+ <option value="./book.umd">UMD 电子书</option>
233
+ <option value="./archive.zip">ZIP 压缩包</option>
234
+ <option value="./archive.tar.gz">TAR.GZ 压缩包</option>
235
+ <option value="./sample.eml">EML 邮件</option>
236
+ <option value="./sample.msg">MSG 邮件</option>
237
+ <option value="./sample.olb">OLB 元件库</option>
238
+ <option value="./sample.dra">DRA 图纸</option>
239
+ <option value="./component.vue">Vue 代码</option>
240
+ <option value="./pic.png">PNG 图片</option>
241
+ <option value="./audio.mp3">MP3 音频</option>
242
+ <option value="./audio.ogg">OGG 音频</option>
243
+ <option value="./video.mp4">MP4 视频</option>
244
+ </select>
245
+ <button type="button" onclick="loadFromUrl()">预览</button>
246
+ </div>
247
+ </header>
248
+
249
+ <section class="viewer-frame-wrap" aria-label="嵌入式文件预览">
250
+ <div id="loading" aria-hidden="true">正在加载服务器文件...</div>
251
+ </section>
252
+ </main>
253
+
254
+ <script>
255
+ var context = {
256
+ // 独立部署预览器的源。示例页和预览器同站部署时直接使用当前 origin,便于本地和线上共用。
257
+ origin: location.origin,
258
+ frame: null,
259
+ url: './word.docx',
260
+ options: {
261
+ toolbar: true,
262
+ archive: {
263
+ cache: true,
264
+ workerTimeoutMs: 30000
265
+ }
266
+ }
267
+ };
268
+ var loading = document.getElementById('loading');
269
+ var frameWrap = document.querySelector('.viewer-frame-wrap');
270
+
271
+ function appendFrame(src) {
272
+ if (context.frame) {
273
+ context.frame.remove();
274
+ }
275
+
276
+ var frame = context.frame = document.createElement('iframe');
277
+ frame.src = src;
278
+ frame.title = 'Flyfish Viewer 文件预览';
279
+ frameWrap.appendChild(frame);
280
+ return frame;
281
+ }
282
+
283
+ function setLoading(active) {
284
+ loading.setAttribute('aria-hidden', active ? 'false' : 'true');
285
+ }
286
+
287
+ function loadFromUrl() {
288
+ // 宿主系统负责拿到真实文件,再把 Blob 推送给 iframe,适合鉴权文件和内网接口。
289
+ var url = context.url;
290
+ var filename = url.substr(url.lastIndexOf('/') + 1);
291
+ var src = context.origin +
292
+ '?name=' + encodeURIComponent(filename) +
293
+ '&from=' + encodeURIComponent(location.origin) +
294
+ '&options=' + encodeURIComponent(JSON.stringify(context.options));
295
+ var frame = appendFrame(src);
296
+
297
+ frame.onload = function() {
298
+ setLoading(true);
299
+ fetch(url).then(function(res) {
300
+ return res.blob();
301
+ }).then(function(data) {
302
+ if (!data) {
303
+ console.error('文件下载失败');
304
+ return;
305
+ }
306
+ frame.contentWindow.postMessage(data, context.origin);
307
+ }).finally(function() {
308
+ setLoading(false);
309
+ });
310
+ };
311
+ }
312
+
313
+ loadFromUrl();
314
+ </script>
315
+ </body>
316
+ </html>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[{"type":"text","id":"title","x":380,"y":20,"width":440,"height":40,"text":"POLE+O Entity Model","fontSize":32,"fontFamily":1,"textAlign":"center","strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"rectangle","id":"person-box","x":40,"y":90,"width":220,"height":160,"backgroundColor":"#b2f2bb","fillStyle":"solid","roundness":{"type":3},"strokeColor":"#2f9e44","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"person-title","x":90,"y":108,"width":120,"height":30,"text":"PERSON","fontSize":24,"fontFamily":1,"textAlign":"center","strokeColor":"#1a6b2e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"person-subs","x":55,"y":148,"width":180,"height":88,"text":"Individual\nProfessional\nAlias\nContact","fontSize":17,"fontFamily":1,"textAlign":"left","strokeColor":"#2d7a3a","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"rectangle","id":"object-box","x":300,"y":90,"width":220,"height":160,"backgroundColor":"#ffd8a8","fillStyle":"solid","roundness":{"type":3},"strokeColor":"#e8590c","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"object-title","x":360,"y":108,"width":100,"height":30,"text":"OBJECT","fontSize":24,"fontFamily":1,"textAlign":"center","strokeColor":"#7d3200","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"object-subs","x":315,"y":148,"width":180,"height":88,"text":"Vehicle\nDevice\nDocument\nWeapon","fontSize":17,"fontFamily":1,"textAlign":"left","strokeColor":"#7d3200","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"rectangle","id":"location-box","x":560,"y":90,"width":220,"height":160,"backgroundColor":"#a5d8ff","fillStyle":"solid","roundness":{"type":3},"strokeColor":"#1971c2","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"location-title","x":600,"y":108,"width":140,"height":30,"text":"LOCATION","fontSize":24,"fontFamily":1,"textAlign":"center","strokeColor":"#0c3f7a","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"location-subs","x":575,"y":148,"width":180,"height":88,"text":"Address\nRegion\nLandmark\nCountry","fontSize":17,"fontFamily":1,"textAlign":"left","strokeColor":"#0c3f7a","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"rectangle","id":"event-box","x":170,"y":310,"width":220,"height":160,"backgroundColor":"#fff3bf","fillStyle":"solid","roundness":{"type":3},"strokeColor":"#e67700","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"event-title","x":235,"y":328,"width":100,"height":30,"text":"EVENT","fontSize":24,"fontFamily":1,"textAlign":"center","strokeColor":"#7d3c00","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"event-subs","x":185,"y":368,"width":180,"height":88,"text":"Meeting\nTransaction\nIncident\nActivity","fontSize":17,"fontFamily":1,"textAlign":"left","strokeColor":"#7d3c00","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"rectangle","id":"org-box","x":430,"y":310,"width":220,"height":160,"backgroundColor":"#d0bfff","fillStyle":"solid","roundness":{"type":3},"strokeColor":"#7048e8","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"org-title","x":440,"y":328,"width":200,"height":30,"text":"ORGANIZATION","fontSize":20,"fontFamily":1,"textAlign":"center","strokeColor":"#3c1a9a","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"org-subs","x":445,"y":368,"width":180,"height":88,"text":"Company\nGovernment\nNGO\nInstitution","fontSize":17,"fontFamily":1,"textAlign":"left","strokeColor":"#3c1a9a","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100},{"type":"text","id":"note","x":40,"y":510,"width":780,"height":22,"text":"Subtypes become PascalCase Neo4j labels: :Entity:Person:Individual | :Entity:Organization:Company","fontSize":16,"fontFamily":1,"textAlign":"left","strokeColor":"#666666","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"roughness":1,"opacity":100}],"appState":{"gridSize":20,"viewBackgroundColor":"#ffffff"},"files":{}}
@@ -0,0 +1,44 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ $renderers = [
6
+ 'pdf' => 'pdfjs-dist',
7
+ 'ofd' => 'DLTech21/ofd.js',
8
+ 'dxf' => '@flyfish-dev/cad-viewer',
9
+ 'dwg' => '@flyfish-dev/cad-viewer',
10
+ 'dwf' => '@flyfish-dev/cad-viewer',
11
+ 'dwfx' => '@flyfish-dev/cad-viewer',
12
+ 'xps' => '@flyfish-dev/cad-viewer',
13
+ 'json' => 'highlight.js',
14
+ 'php' => 'highlight.js',
15
+ ];
16
+
17
+ function extensionOf(string $filename): string
18
+ {
19
+ return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
20
+ }
21
+
22
+ function buildPreviewPlan(array $files, array $renderers): array
23
+ {
24
+ return array_map(static function (string $filename) use ($renderers): array {
25
+ $extension = extensionOf($filename);
26
+ $renderer = $renderers[$extension] ?? 'fallback';
27
+
28
+ return [
29
+ 'filename' => $filename,
30
+ 'extension' => $extension,
31
+ 'renderer' => $renderer,
32
+ 'async' => $renderer !== 'fallback',
33
+ ];
34
+ }, $files);
35
+ }
36
+
37
+ $plans = buildPreviewPlan([
38
+ 'invoice.ofd',
39
+ 'house.dwfx',
40
+ 'controller.php',
41
+ ], $renderers);
42
+
43
+ header('Content-Type: application/json; charset=utf-8');
44
+ echo json_encode($plans, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
@@ -0,0 +1,39 @@
1
+ #include <stdio.h>
2
+ #include <string.h>
3
+ #include "main.h"
4
+
5
+ const char* viewer_name(void) {
6
+ return "Flyfish Viewer";
7
+ }
8
+
9
+ const char* preview_extension(const char* filename) {
10
+ const char* dot = strrchr(filename, '.');
11
+ return dot == NULL ? "" : dot + 1;
12
+ }
13
+
14
+ preview_file_t preview_plan_create(const char* filename, size_t size) {
15
+ const char* extension = preview_extension(filename);
16
+ const char* renderer = "fallback";
17
+
18
+ if (strcmp(extension, "pdf") == 0) renderer = "pdfjs-dist";
19
+ if (strcmp(extension, "ofd") == 0) renderer = "DLTech21/ofd.js";
20
+ if (strcmp(extension, "dxf") == 0) renderer = "@flyfish-dev/cad-viewer";
21
+ if (strcmp(extension, "dwg") == 0) renderer = "@flyfish-dev/cad-viewer";
22
+ if (strcmp(extension, "dwf") == 0) renderer = "@flyfish-dev/cad-viewer";
23
+ if (strcmp(extension, "dwfx") == 0) renderer = "@flyfish-dev/cad-viewer";
24
+ if (strcmp(extension, "xps") == 0) renderer = "@flyfish-dev/cad-viewer";
25
+ if (strcmp(extension, "c") == 0) renderer = "highlight.js";
26
+
27
+ preview_file_t file = { filename, renderer, size, PREVIEW_IDLE };
28
+ return file;
29
+ }
30
+
31
+ int preview_requires_async(preview_file_t file) {
32
+ return strcmp(file.renderer, "fallback") != 0;
33
+ }
34
+
35
+ int main(void) {
36
+ preview_file_t file = preview_plan_create("house.dwfx", 32768);
37
+ printf("%s uses %s async=%d\n", file.name, file.renderer, preview_requires_async(file));
38
+ return 0;
39
+ }
@@ -0,0 +1,50 @@
1
+ #include <iostream>
2
+ #include <map>
3
+ #include <string>
4
+ #include <vector>
5
+ #include "main.hpp"
6
+
7
+ std::string viewer_name() {
8
+ return "Flyfish Viewer";
9
+ }
10
+
11
+ bool PreviewFile::requiresAsyncChunk() const {
12
+ return renderer != "fallback";
13
+ }
14
+
15
+ std::string extensionOf(const std::string& filename) {
16
+ const auto dot = filename.find_last_of('.');
17
+ return dot == std::string::npos ? "" : filename.substr(dot + 1);
18
+ }
19
+
20
+ std::optional<std::string> rendererFor(const std::string& extension) {
21
+ static const std::map<std::string, std::string> renderers = {
22
+ {"pdf", "pdfjs-dist"},
23
+ {"ofd", "DLTech21/ofd.js"},
24
+ {"dxf", "@flyfish-dev/cad-viewer"},
25
+ {"dwg", "@flyfish-dev/cad-viewer"},
26
+ {"dwf", "@flyfish-dev/cad-viewer"},
27
+ {"dwfx", "@flyfish-dev/cad-viewer"},
28
+ {"xps", "@flyfish-dev/cad-viewer"},
29
+ {"cpp", "highlight.js"}
30
+ };
31
+
32
+ const auto found = renderers.find(extension);
33
+ if (found == renderers.end()) return std::nullopt;
34
+ return found->second;
35
+ }
36
+
37
+ std::vector<PreviewFile> createPreviewQueue(const std::vector<std::string>& filenames) {
38
+ std::vector<PreviewFile> queue;
39
+ for (const auto& name : filenames) {
40
+ queue.push_back({ name, rendererFor(extensionOf(name)).value_or("fallback"), 0 });
41
+ }
42
+ return queue;
43
+ }
44
+
45
+ int main() {
46
+ for (const auto& file : createPreviewQueue({"contract.pdf", "house.dwfx", "main.cpp"})) {
47
+ std::cout << file.name << " -> " << file.renderer << std::endl;
48
+ }
49
+ return 0;
50
+ }
@@ -0,0 +1,55 @@
1
+ package main
2
+
3
+ import (
4
+ "encoding/json"
5
+ "fmt"
6
+ "path/filepath"
7
+ "strings"
8
+ )
9
+
10
+ type PreviewFile struct {
11
+ Name string `json:"name"`
12
+ Renderer string `json:"renderer"`
13
+ Async bool `json:"async"`
14
+ }
15
+
16
+ var renderers = map[string]string{
17
+ ".pdf": "pdfjs-dist",
18
+ ".ofd": "DLTech21/ofd.js",
19
+ ".typ": "typst.ts",
20
+ ".dxf": "@flyfish-dev/cad-viewer",
21
+ ".dwg": "@flyfish-dev/cad-viewer",
22
+ ".dwf": "@flyfish-dev/cad-viewer",
23
+ ".dwfx": "@flyfish-dev/cad-viewer",
24
+ ".xps": "@flyfish-dev/cad-viewer",
25
+ ".json": "highlight.js",
26
+ }
27
+
28
+ func planPreview(name string) PreviewFile {
29
+ ext := strings.ToLower(filepath.Ext(name))
30
+ renderer := renderers[ext]
31
+ if renderer == "" {
32
+ renderer = "fallback"
33
+ }
34
+
35
+ return PreviewFile{
36
+ Name: name,
37
+ Renderer: renderer,
38
+ Async: renderer != "fallback",
39
+ }
40
+ }
41
+
42
+ func main() {
43
+ files := []string{"contract.pdf", "invoice.ofd", "report.typ", "component.vue"}
44
+ plans := make([]PreviewFile, 0, len(files))
45
+ for _, name := range files {
46
+ plans = append(plans, planPreview(name))
47
+ }
48
+
49
+ payload, err := json.MarshalIndent(plans, "", " ")
50
+ if err != nil {
51
+ panic(err)
52
+ }
53
+
54
+ fmt.Println(string(payload))
55
+ }
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <stddef.h>
4
+
5
+ typedef enum preview_status {
6
+ PREVIEW_IDLE,
7
+ PREVIEW_LOADING,
8
+ PREVIEW_READY,
9
+ PREVIEW_ERROR
10
+ } preview_status_t;
11
+
12
+ typedef struct preview_file {
13
+ const char* name;
14
+ const char* renderer;
15
+ size_t size;
16
+ preview_status_t status;
17
+ } preview_file_t;
18
+
19
+ const char* viewer_name(void);
20
+ const char* preview_extension(const char* filename);
21
+ preview_file_t preview_plan_create(const char* filename, size_t size);
22
+ int preview_requires_async(preview_file_t file);
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include <cstddef>
4
+ #include <optional>
5
+ #include <string>
6
+ #include <vector>
7
+
8
+ std::string viewer_name();
9
+
10
+ enum class PreviewStatus {
11
+ Idle,
12
+ Loading,
13
+ Ready,
14
+ Error
15
+ };
16
+
17
+ struct PreviewFile {
18
+ std::string name;
19
+ std::string renderer;
20
+ std::size_t size;
21
+ PreviewStatus status = PreviewStatus::Idle;
22
+
23
+ bool requiresAsyncChunk() const;
24
+ };
25
+
26
+ std::string extensionOf(const std::string& filename);
27
+ std::optional<std::string> rendererFor(const std::string& extension);
28
+ std::vector<PreviewFile> createPreviewQueue(const std::vector<std::string>& filenames);
@@ -0,0 +1,36 @@
1
+ #[derive(Debug)]
2
+ struct PreviewPlan<'a> {
3
+ filename: &'a str,
4
+ renderer: &'a str,
5
+ lazy: bool,
6
+ }
7
+
8
+ fn extension(filename: &str) -> &str {
9
+ filename.rsplit_once('.').map(|(_, ext)| ext).unwrap_or("")
10
+ }
11
+
12
+ fn renderer_for(ext: &str) -> &'static str {
13
+ match ext {
14
+ "pdf" => "pdfjs-dist",
15
+ "ofd" => "DLTech21/ofd.js",
16
+ "dxf" | "dwg" | "dwf" | "dwfx" | "xps" => "@flyfish-dev/cad-viewer",
17
+ "rs" | "json" | "yaml" => "highlight.js",
18
+ _ => "fallback",
19
+ }
20
+ }
21
+
22
+ fn plan(filename: &str) -> PreviewPlan<'_> {
23
+ let renderer = renderer_for(extension(filename));
24
+ PreviewPlan {
25
+ filename,
26
+ renderer,
27
+ lazy: renderer != "fallback",
28
+ }
29
+ }
30
+
31
+ fn main() {
32
+ let files = ["invoice.ofd", "drawing.dxf", "house.dwfx", "main.rs", "archive.bin"];
33
+ for item in files.iter().map(|filename| plan(filename)) {
34
+ println!("{:?}", item);
35
+ }
36
+ }