@flyfish-group/file-viewer3 1.0.22 → 1.0.23

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 (279) hide show
  1. package/README.en.md +10 -11
  2. package/README.md +20 -21
  3. package/dist/components/3MFLoader.js +1 -1
  4. package/dist/components/AMFLoader.js +1 -1
  5. package/dist/components/AudioViewer.js +1 -1
  6. package/dist/components/CadViewer.js +1 -1
  7. package/dist/components/CodeViewer.js +1 -1
  8. package/dist/components/ColladaLoader.js +1 -1
  9. package/dist/components/DrawingViewer.js +1 -1
  10. package/dist/components/EdaViewer.js +1 -1
  11. package/dist/components/EmailViewer.js +1 -1
  12. package/dist/components/EpubViewer.js +1 -1
  13. package/dist/components/FBXLoader.js +1 -1
  14. package/dist/components/GLTFLoader.js +1 -1
  15. package/dist/components/ImageViewer.js +1 -1
  16. package/dist/components/KMZLoader.js +1 -1
  17. package/dist/components/MarkdownViewer.js +1 -1
  18. package/dist/components/ModelViewer.js +1 -1
  19. package/dist/components/OBJLoader.js +1 -1
  20. package/dist/components/OfdViewer.js +1 -1
  21. package/dist/components/PCDLoader.js +1 -1
  22. package/dist/components/PLYLoader.js +1 -1
  23. package/dist/components/PdfView.js +5234 -5080
  24. package/dist/components/PptxRender.js +1 -1
  25. package/dist/components/STLLoader.js +1 -1
  26. package/dist/components/TDSLoader.js +1 -1
  27. package/dist/components/USDLoader.js +1 -1
  28. package/dist/components/UmdViewer.js +1 -1
  29. package/dist/components/VRMLLoader.js +1 -1
  30. package/dist/components/VTKLoader.js +1 -1
  31. package/dist/components/XYZLoader.js +1 -1
  32. package/dist/components/XlsxTable.js +1 -1
  33. package/dist/components/__vite-browser-external.js +1 -1
  34. package/dist/components/_plugin-vue_export-helper.js +1 -1
  35. package/dist/components/ar-SA-G6X2FPQ2.js +1 -1
  36. package/dist/components/arc.js +1 -1
  37. package/dist/components/architecture-7EHR7CIX.js +1 -1
  38. package/dist/components/architectureDiagram-3BPJPVTR.js +1 -1
  39. package/dist/components/archive.js +1 -1
  40. package/dist/components/asyncToGenerator.js +1 -1
  41. package/dist/components/audio.js +1 -1
  42. package/dist/components/az-AZ-76LH7QW2.js +1 -1
  43. package/dist/components/bash.js +1 -1
  44. package/dist/components/bg-BG-XCXSNQG7.js +1 -1
  45. package/dist/components/blockDiagram-GPEHLZMM.js +1 -1
  46. package/dist/components/bn-BD-2XOGV67Q.js +1 -1
  47. package/dist/components/c4Diagram-AAUBKEIU.js +1 -1
  48. package/dist/components/ca-ES-6MX7JW3Y.js +1 -1
  49. package/dist/components/cad.js +1 -1
  50. package/dist/components/cfb.js +1 -1
  51. package/dist/components/channel.js +1 -1
  52. package/dist/components/chunk-2J33WTMH.js +1 -1
  53. package/dist/components/chunk-3OPIFGDE.js +1 -1
  54. package/dist/components/chunk-4BX2VUAB.js +1 -1
  55. package/dist/components/chunk-55IACEB6.js +1 -1
  56. package/dist/components/chunk-5ZQYHXKU.js +1 -1
  57. package/dist/components/chunk-6U3AYISY.js +1 -1
  58. package/dist/components/chunk-727SXJPM.js +1 -1
  59. package/dist/components/chunk-AGHRB4JF.js +1 -1
  60. package/dist/components/chunk-AQP2D5EJ.js +1 -1
  61. package/dist/components/chunk-BSJP7CBP.js +1 -1
  62. package/dist/components/chunk-CSCIHK7Q.js +1 -1
  63. package/dist/components/chunk-FMBD7UC4.js +1 -1
  64. package/dist/components/chunk-K2UTITRG.js +1 -1
  65. package/dist/components/chunk-KSCS5N6A.js +1 -1
  66. package/dist/components/chunk-L5ZTLDWV.js +1 -1
  67. package/dist/components/chunk-LZXEDZCA.js +1 -1
  68. package/dist/components/chunk-ND2GUHAM.js +1 -1
  69. package/dist/components/chunk-NNHCCRGN.js +1 -1
  70. package/dist/components/chunk-NZK2D7GU.js +1 -1
  71. package/dist/components/chunk-O5CBEL6O.js +1 -1
  72. package/dist/components/chunk-QZHKN3VN.js +1 -1
  73. package/dist/components/chunk-SRAX5OIU.js +1 -1
  74. package/dist/components/chunk-WU5MYG2G.js +1 -1
  75. package/dist/components/chunk-XPW4576I.js +1 -1
  76. package/dist/components/chunk-Z3N5DIM6.js +1 -1
  77. package/dist/components/chunk-ZUYEQ4TG.js +1 -1
  78. package/dist/components/chunk.js +1 -1
  79. package/dist/components/classDiagram-4FO5ZUOK.js +1 -1
  80. package/dist/components/classDiagram-v2-Q7XG4LA2.js +1 -1
  81. package/dist/components/compiler.js +1 -1
  82. package/dist/components/core.js +1 -1
  83. package/dist/components/cose-bilkent-S5V4N54A.js +1 -1
  84. package/dist/components/cpp.js +1 -1
  85. package/dist/components/cs-CZ-2BRQDIVT.js +1 -1
  86. package/dist/components/csharp.js +1 -1
  87. package/dist/components/css.js +1 -1
  88. package/dist/components/cytoscape.esm.js +1 -1
  89. package/dist/components/da-DK-5WZEPLOC.js +1 -1
  90. package/dist/components/dagre-BM42HDAG.js +1 -1
  91. package/dist/components/dagre.js +1 -1
  92. package/dist/components/de-DE-XR44H4JA.js +1 -1
  93. package/dist/components/defaultLocale.js +1 -1
  94. package/dist/components/defineProperty.js +1 -1
  95. package/dist/components/diagram-2AECGRRQ.js +1 -1
  96. package/dist/components/diagram-5GNKFQAL.js +1 -1
  97. package/dist/components/diagram-KO2AKTUF.js +1 -1
  98. package/dist/components/diagram-LMA3HP47.js +1 -1
  99. package/dist/components/diagram-OG6HWLK6.js +1 -1
  100. package/dist/components/diff.js +1 -1
  101. package/dist/components/directory-open-01563666.js +1 -1
  102. package/dist/components/directory-open-4ed118d0.js +1 -1
  103. package/dist/components/dist.js +1 -1
  104. package/dist/components/dist2.js +1 -1
  105. package/dist/components/dist3.js +1 -1
  106. package/dist/components/documentSearch.js +1 -0
  107. package/dist/components/docx-preview.js +1 -1
  108. package/dist/components/drawing.js +1 -1
  109. package/dist/components/ebook.js +1 -1
  110. package/dist/components/eda.js +1 -1
  111. package/dist/components/el-GR-BZB4AONW.js +1 -1
  112. package/dist/components/email.js +1 -1
  113. package/dist/components/en-B4ZKOASM.js +1 -1
  114. package/dist/components/erDiagram-TEJ5UH35.js +1 -1
  115. package/dist/components/es-ES-U4NZUMDT.js +1 -1
  116. package/dist/components/eu-ES-A7QVB2H4.js +1 -1
  117. package/dist/components/eventmodeling-FCH6USID.js +1 -1
  118. package/dist/components/fa-IR-HGAKTJCU.js +1 -1
  119. package/dist/components/fflate.module.js +1 -1
  120. package/dist/components/fi-FI-Z5N7JZ37.js +1 -1
  121. package/dist/components/file-open-002ab408.js +1 -1
  122. package/dist/components/file-open-7c801643.js +1 -1
  123. package/dist/components/file-save-3189631c.js +1 -1
  124. package/dist/components/file-save-745eba88.js +1 -1
  125. package/dist/components/flowDiagram-I6XJVG4X.js +1 -1
  126. package/dist/components/fr-FR-RHASNOE6.js +1 -1
  127. package/dist/components/ganttDiagram-6RSMTGT7.js +1 -1
  128. package/dist/components/gitGraph-WXDBUCRP.js +1 -1
  129. package/dist/components/gitGraphDiagram-PVQCEYII.js +1 -1
  130. package/dist/components/gl-ES-HMX3MZ6V.js +1 -1
  131. package/dist/components/global-compiler.js +1 -1
  132. package/dist/components/global-renderer.js +1 -1
  133. package/dist/components/go.js +1 -1
  134. package/dist/components/graphlib.js +1 -1
  135. package/dist/components/he-IL-6SHJWFNN.js +1 -1
  136. package/dist/components/hi-IN-IWLTKZ5I.js +1 -1
  137. package/dist/components/hu-HU-A5ZG7DT2.js +1 -1
  138. package/dist/components/id-ID-SAP4L64H.js +1 -1
  139. package/dist/components/image-GAAHSSAO.js +1 -1
  140. package/dist/components/image-blob-reduce.esm.js +1 -1
  141. package/dist/components/image.js +1 -1
  142. package/dist/components/info-J43DQDTF.js +1 -1
  143. package/dist/components/infoDiagram-5YYISTIA.js +1 -1
  144. package/dist/components/ini.js +1 -1
  145. package/dist/components/init.js +1 -1
  146. package/dist/components/ishikawaDiagram-YF4QCWOH.js +1 -1
  147. package/dist/components/it-IT-JPQ66NNP.js +1 -1
  148. package/dist/components/ja-JP-DBVTYXUO.js +1 -1
  149. package/dist/components/java.js +1 -1
  150. package/dist/components/javascript.js +1 -1
  151. package/dist/components/journeyDiagram-JHISSGLW.js +1 -1
  152. package/dist/components/json.js +1 -1
  153. package/dist/components/jszip.min.js +1 -1
  154. package/dist/components/kaa-6HZHGXH3.js +1 -1
  155. package/dist/components/kab-KAB-ZGHBKWFO.js +1 -1
  156. package/dist/components/kanban-definition-UN3LZRKU.js +1 -1
  157. package/dist/components/katex.js +1 -1
  158. package/dist/components/kk-KZ-P5N5QNE5.js +1 -1
  159. package/dist/components/km-KH-HSX4SM5Z.js +1 -1
  160. package/dist/components/ko-KR-MTYHY66A.js +1 -1
  161. package/dist/components/ku-TR-6OUDTVRD.js +1 -1
  162. package/dist/components/lib.js +1 -1
  163. package/dist/components/libarchive.js +1 -1
  164. package/dist/components/linear.js +1 -1
  165. package/dist/components/lt-LT-XHIRWOB4.js +1 -1
  166. package/dist/components/lv-LV-5QDEKY6T.js +1 -1
  167. package/dist/components/markdown.js +1 -1
  168. package/dist/components/md.js +1 -1
  169. package/dist/components/mermaid-parser.core.js +1 -1
  170. package/dist/components/mindmap-definition-RKZ34NQL.js +1 -1
  171. package/dist/components/model.js +1 -1
  172. package/dist/components/mp4.js +1 -1
  173. package/dist/components/mr-IN-CRQNXWMA.js +1 -1
  174. package/dist/components/my-MM-5M5IBNSE.js +1 -1
  175. package/dist/components/nb-NO-T6EIAALU.js +1 -1
  176. package/dist/components/nestedRender.js +1 -1
  177. package/dist/components/nl-NL-IS3SIHDZ.js +1 -1
  178. package/dist/components/nn-NO-6E72VCQL.js +1 -1
  179. package/dist/components/objectSpread2.js +1 -1
  180. package/dist/components/objectWithoutProperties.js +1 -1
  181. package/dist/components/oc-FR-POXYY2M6.js +1 -1
  182. package/dist/components/ofd.js +1 -1
  183. package/dist/components/ofd2.js +1 -1
  184. package/dist/components/ordinal.js +1 -1
  185. package/dist/components/pa-IN-N4M65BXN.js +1 -1
  186. package/dist/components/packet-YPE3B663.js +1 -1
  187. package/dist/components/pdf.js +1 -1
  188. package/dist/components/percentages-BXMCSKIN.js +1 -1
  189. package/dist/components/php.js +1 -1
  190. package/dist/components/pica.js +1 -1
  191. package/dist/components/pie-LRSECV5Y.js +1 -1
  192. package/dist/components/pie.js +1 -1
  193. package/dist/components/pieDiagram-4H26LBE5.js +1 -1
  194. package/dist/components/pl-PL-T2D74RX3.js +1 -1
  195. package/dist/components/postal-mime.js +1 -1
  196. package/dist/components/pptx.js +1 -1
  197. package/dist/components/printLayout.js +1 -1
  198. package/dist/components/prod.js +1 -1
  199. package/dist/components/pt-BR-5N22H2LF.js +1 -1
  200. package/dist/components/pt-PT-UZXXM6DQ.js +1 -1
  201. package/dist/components/python.js +1 -1
  202. package/dist/components/quadrantDiagram-W4KKPZXB.js +1 -1
  203. package/dist/components/radar-GUYGQ44K.js +1 -1
  204. package/dist/components/renderer.js +1 -1
  205. package/dist/components/requirementDiagram-4Y6WPE33.js +1 -1
  206. package/dist/components/ro-RO-JPDTUUEW.js +1 -1
  207. package/dist/components/rough.esm.js +1 -1
  208. package/dist/components/roundRect.js +1 -1
  209. package/dist/components/ru-RU-B4JR7IUQ.js +1 -1
  210. package/dist/components/rust.js +1 -1
  211. package/dist/components/sankeyDiagram-5OEKKPKP.js +1 -1
  212. package/dist/components/sequenceDiagram-3UESZ5HK.js +1 -1
  213. package/dist/components/shared.js +1 -1
  214. package/dist/components/shared2.js +1 -1
  215. package/dist/components/si-LK-N5RQ5JYF.js +1 -1
  216. package/dist/components/sk-SK-C5VTKIMK.js +1 -1
  217. package/dist/components/sl-SI-NN7IZMDC.js +1 -1
  218. package/dist/components/sourceLoading.js +1 -1
  219. package/dist/components/sql.js +1 -1
  220. package/dist/components/src.js +1 -1
  221. package/dist/components/src2.js +1 -1
  222. package/dist/components/stateDiagram-AJRCARHV.js +1 -1
  223. package/dist/components/stateDiagram-v2-BHNVJYJU.js +1 -1
  224. package/dist/components/subset-shared.chunk.js +1 -1
  225. package/dist/components/subset-worker.chunk.js +1 -1
  226. package/dist/components/sv-SE-XGPEYMSR.js +1 -1
  227. package/dist/components/ta-IN-2NMHFXQM.js +1 -1
  228. package/dist/components/text.js +1 -1
  229. package/dist/components/th-TH-HPSO5L25.js +1 -1
  230. package/dist/components/three.module.js +1 -1
  231. package/dist/components/time.js +1 -1
  232. package/dist/components/timeline-definition-PNZ67QCA.js +1 -1
  233. package/dist/components/tr-TR-DEFEU3FU.js +1 -1
  234. package/dist/components/treeView-BLDUP644.js +1 -1
  235. package/dist/components/treemap-LRROVOQU.js +1 -1
  236. package/dist/components/typescript.js +1 -1
  237. package/dist/components/typst.js +1 -1
  238. package/dist/components/uk-UA-QMV73CPH.js +1 -1
  239. package/dist/components/umd.js +1 -1
  240. package/dist/components/use.js +1 -1
  241. package/dist/components/util.js +1 -1
  242. package/dist/components/vennDiagram-CIIHVFJN.js +1 -1
  243. package/dist/components/vi-VN-M7AON7JQ.js +1 -1
  244. package/dist/components/wardley-L42UT6IY.js +1 -1
  245. package/dist/components/wardleyDiagram-YWT4CUSO.js +1 -1
  246. package/dist/components/wasm-pack-shim.js +1 -1
  247. package/dist/components/wasm-pack-shim2.js +1 -1
  248. package/dist/components/wasm.js +1 -1
  249. package/dist/components/word.js +1 -1
  250. package/dist/components/worker-ref.js +1 -1
  251. package/dist/components/xlsx.js +1 -1
  252. package/dist/components/xml.js +1 -1
  253. package/dist/components/xychartDiagram-2RQKCTM6.js +1 -1
  254. package/dist/components/yaml.js +1 -1
  255. package/dist/components/zh-CN-LNUGB5OW.js +1 -1
  256. package/dist/components/zh-HK-E62DVLB3.js +1 -1
  257. package/dist/components/zh-TW-RAJ6MFWO.js +1 -1
  258. package/dist/file-viewer3.css +1 -1
  259. package/dist/index.mjs +1 -1
  260. package/dist/src/compare/useSynchronizedScroll.d.ts +7 -0
  261. package/dist/src/package/common/type.d.ts +199 -0
  262. package/dist/src/package/components/FileViewer/FileViewer.vue.d.ts +15 -1
  263. package/dist/src/package/components/FileViewer/hooks/useViewerDocumentFeatures.d.ts +29 -0
  264. package/dist/src/package/components/FileViewer/{useViewerExport.d.ts → hooks/useViewerExport.d.ts} +1 -1
  265. package/dist/src/package/components/FileViewer/hooks/useViewerWatermark.d.ts +8 -0
  266. package/dist/src/package/index.d.ts +1 -1
  267. package/dist/src/package/use/documentLocation.d.ts +15 -0
  268. package/dist/src/package/use/documentSearch.d.ts +234 -0
  269. package/dist/src/package/use/index.d.ts +2 -0
  270. package/dist/src/package/vendors/cad/CadViewer.vue.d.ts +2 -0
  271. package/dist/src/package/vendors/cad/index.d.ts +4 -3
  272. package/dist/src/package/vendors/word/docx.worker.d.ts +1 -0
  273. package/dist/wasm/cad/DwgWorker-CuZJ5EUe.js +349 -0
  274. package/dist/wasm/cad/dwfv-render.wasm +0 -0
  275. package/dist/wasm/cad/dwg-worker.js +349 -0
  276. package/dist/wasm/cad/index-C365l3i9.js +4161 -0
  277. package/dist/wasm/cad/libredwg-web.js +15 -0
  278. package/dist/wasm/cad/libredwg-web.wasm +0 -0
  279. package/package.json +12 -8
package/README.en.md CHANGED
@@ -23,18 +23,18 @@ The viewer does not require a backend conversion service. It is designed for OA
23
23
 
24
24
  | Stack | Package | Version | Recommended branch | Notes |
25
25
  | --- | --- | --- | --- | --- |
26
- | Vue 3 | `@flyfish-group/file-viewer3` | `1.0.22` | `v3` | Recommended version and the runtime baseline for React / vanilla JS iframe integrations |
27
- | Vue 2.7 | `@flyfish-group/file-viewer` | `1.0.22` | `main` | Vue 2 compatible package with the same format coverage and API semantics |
28
- | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.22` | adapter package | iframe component that loads `/file-viewer/index.html` by default |
29
- | Vanilla JavaScript | `@flyfish-group/file-viewer-web` | `1.0.22` | adapter package | iframe helpers and static viewer asset copier |
26
+ | Vue 3 | `@flyfish-group/file-viewer3` | `1.0.23` | `v3` | Recommended version and the runtime baseline for React / vanilla JS iframe integrations |
27
+ | Vue 2.7 | `@flyfish-group/file-viewer` | `1.0.23` | `main` | Vue 2 compatible package with the same format coverage and API semantics |
28
+ | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.23` | adapter package | iframe component that loads `/file-viewer/index.html` by default |
29
+ | Vanilla JavaScript | `@flyfish-group/file-viewer-web` | `1.0.23` | adapter package | iframe helpers and static viewer asset copier |
30
30
 
31
31
  For intranet or offline environments, this artifact repository also ships npm tarballs under `artifacts/`:
32
32
 
33
33
  ```bash
34
- npm install ./artifacts/flyfish-group-file-viewer3-1.0.22.tgz
35
- npm install ./artifacts/flyfish-group-file-viewer-1.0.22.tgz
36
- npm install ./artifacts/flyfish-group-file-viewer-web-1.0.22.tgz
37
- npm install ./artifacts/flyfish-group-file-viewer-react-1.0.22.tgz
34
+ npm install ./artifacts/flyfish-group-file-viewer3-1.0.23.tgz
35
+ npm install ./artifacts/flyfish-group-file-viewer-1.0.23.tgz
36
+ npm install ./artifacts/flyfish-group-file-viewer-web-1.0.23.tgz
37
+ npm install ./artifacts/flyfish-group-file-viewer-react-1.0.23.tgz
38
38
  ```
39
39
 
40
40
  When installing the React tarball offline, install the same-version web tarball first because the React package depends on `@flyfish-group/file-viewer-web`.
@@ -83,8 +83,7 @@ The viewer is organized around preview pipelines rather than one-off file extens
83
83
  | Archives | `zip`, `zipx`, `7z`, `rar`, `tar`, `gz`, `tgz`, `bz2`, `xz`, `zst`, `cab`, `iso`, `jar`, `apk`, `cbz`, `cbr`, and more | `libarchive.js` Worker, directory listing, lazy extraction, IndexedDB cache | Attachment packages and internal document bundles |
84
84
  | Email | `eml`, `msg` | `postal-mime` for EML, `@kenjiuno/msgreader` for MSG, headers, HTML/text body, attachment preview | Email archives and support tickets |
85
85
  | EDA | `olb`, `dra` | CFB-based OrCAD / Allegro structure inspection, trees, symbols, footprints, padstack candidates, properties, strings, diagnostics | Component libraries and EDA attachments |
86
- | CAD | `dxf` | `@cadview/core` 2D CAD preview with pan, zoom, and layer controls | Engineering drawings |
87
- | DWG compatibility | `dwg` | Detects renamed DXF when possible; extracts embedded preview for true DWG and explains conversion boundaries | Upload compatibility for CAD workflows |
86
+ | CAD | `dwg`, `dxf`, `dwf`, `dwfx`, `xps` | `@flyfish-dev/cad-viewer` preview. DWG uses Worker + LibreDWG WASM, DXF uses a JS parser, and DWF/DWFx/XPS use the native `dwf-viewer` path for W2D/W3D/XPS graphics | Engineering drawings and AutoCAD archives |
88
87
  | 3D models | `glb`, `gltf`, `obj`, `stl`, `ply`, `fbx`, `dae`, `3ds`, `3mf`, `amf`, `usd`, `usda`, `usdc`, `usdz`, `kmz`, `pcd`, `wrl`, `vrml`, `xyz`, `vtk`, `vtp`, `step`, `stp`, `iges`, `igs`, `ifc`, `3dm` | Three.js interactive preview, with conversion guidance for heavy CAD/BIM kernels | 3D assets, point clouds, design models |
89
88
  | Excalidraw | `excalidraw` | Official `@excalidraw/excalidraw` restore and `exportToSvg` read-only rendering | Whiteboard sketches and product diagrams |
90
89
  | draw.io | `drawio`, `dio` | Official diagrams.net `GraphViewer` | Flowcharts and architecture diagrams |
@@ -344,7 +343,7 @@ The artifact repository also contains:
344
343
  The project provides a static nginx runtime image and build scripts for `linux/amd64` and `linux/arm64`. A typical deployment can serve the demo and comparison page directly:
345
344
 
346
345
  ```bash
347
- docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.22
346
+ docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.23
348
347
  ```
349
348
 
350
349
  Then open:
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  - 官方文档: [doc.flyfish.dev](https://doc.flyfish.dev)
16
16
  - 在线 Demo: [viewer.flyfish.dev](https://viewer.flyfish.dev)
17
17
  - 文档比对 Demo: [viewer.flyfish.dev/compare.html](https://viewer.flyfish.dev/compare.html)
18
- - Docker 镜像发布目标: `flyfishdev/file-viewer:1.0.22`
18
+ - Docker 镜像发布目标: `flyfishdev/file-viewer:1.0.23`
19
19
  - 公开成品仓库(GitHub): [github.com/flyfish-dev/file-viewer](https://github.com/flyfish-dev/file-viewer)
20
20
  - 公开成品仓库(Gitee): [gitee.com/flyfish-dev/file-viewer](https://gitee.com/flyfish-dev/file-viewer)
21
21
  - 源码自助开通: [https://dev.flyfish.group/shop](https://dev.flyfish.group/shop)
@@ -24,18 +24,18 @@
24
24
 
25
25
  | 技术栈 | npm 包 | 最新版本 | 推荐分支 | 说明 |
26
26
  | --- | --- | --- | --- | --- |
27
- | Vue3 | `@flyfish-group/file-viewer3` | `1.0.22` | `v3` | 主推版本,也是 React / 纯 Web 私有化 iframe 适配层的构建基线 |
28
- | Vue2.7 | `@flyfish-group/file-viewer` | `1.0.22` | `main` | 兼容 Vue2 项目,格式能力与 Vue3 保持一致 |
29
- | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.22` | 当前仓库子工程 | iframe 组件,默认加载 `/file-viewer/index.html` |
30
- | 纯 JS | `@flyfish-group/file-viewer-web` | `1.0.22` | 当前仓库子工程 | iframe helper 和 viewer 产物复制工具 |
27
+ | Vue3 | `@flyfish-group/file-viewer3` | `1.0.23` | `v3` | 主推版本,也是 React / 纯 Web 私有化 iframe 适配层的构建基线 |
28
+ | Vue2.7 | `@flyfish-group/file-viewer` | `1.0.23` | `main` | 兼容 Vue2 项目,格式能力与 Vue3 保持一致 |
29
+ | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.23` | 当前仓库子工程 | iframe 组件,默认加载 `/file-viewer/index.html` |
30
+ | 纯 JS | `@flyfish-group/file-viewer-web` | `1.0.23` | 当前仓库子工程 | iframe helper 和 viewer 产物复制工具 |
31
31
 
32
32
  如果你在内网、离线环境,或者 npm 发布权限还没有完成配置,也可以直接使用公开成品仓库 `artifacts/` 里的 tarball。离线安装 React 包时请先安装同版本 web 包:
33
33
 
34
34
  ```bash
35
- npm install ./artifacts/flyfish-group-file-viewer3-1.0.22.tgz
36
- npm install ./artifacts/flyfish-group-file-viewer-1.0.22.tgz
37
- npm install ./artifacts/flyfish-group-file-viewer-web-1.0.22.tgz
38
- npm install ./artifacts/flyfish-group-file-viewer-react-1.0.22.tgz
35
+ npm install ./artifacts/flyfish-group-file-viewer3-1.0.23.tgz
36
+ npm install ./artifacts/flyfish-group-file-viewer-1.0.23.tgz
37
+ npm install ./artifacts/flyfish-group-file-viewer-web-1.0.23.tgz
38
+ npm install ./artifacts/flyfish-group-file-viewer-react-1.0.23.tgz
39
39
  ```
40
40
 
41
41
  Vue3、Vue2、React 和纯 JS tarball 都会随公开成品仓库一起生成。离线安装 React 包时请先安装同版本 web 包;React / 纯 JS 包推荐用 `npm install` 获得安装即复制的体验。pnpm 10 默认会拦截依赖包的 `postinstall`,如果看到 `Ignored build scripts: @flyfish-group/file-viewer-web`,请执行 `pnpm approve-builds` 允许该包,或安装后运行 `pnpm exec file-viewer-copy-assets ./public/file-viewer`。
@@ -47,12 +47,12 @@ Vue3、Vue2、React 和纯 JS tarball 都会随公开成品仓库一起生成。
47
47
  - **纯前端 Serverless。** 文档解析和展示全部在浏览器内完成,部署简单,不依赖 Office 服务端、LibreOffice 守护进程或额外转码链路。
48
48
  - **格式覆盖完整。** 当前内置 149 个扩展名映射,覆盖 Word、Excel、PowerPoint、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、图片、音频、代码/文本和 MP4,能覆盖绝大多数业务附件场景。
49
49
  - **按需异步加载。** PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、绘图、Office、EPUB、UMD、Markdown 和代码高亮渲染器都按需加载,重型解析依赖不会进入其他格式的首屏路径。
50
- - **预览器操作完整。** 内置下载原文件、打印完整渲染结果、导出渲染后 HTML、水印开关、水印 options 和主题 options;`theme` 支持 `light`、`dark`、`system`,默认跟随系统,浅色业务 UI 可显式锁定 `light`;打印按钮会按当前格式和渲染链路动态显隐,Word / PDF 使用专属完整页导出适配器,不依赖当前视口,适合合同、归档和审批类场景。
50
+ - **预览器操作完整。** 内置下载原文件、打印完整渲染结果、导出渲染后 HTML、水印开关、水印 options、主题 options、搜索高亮、上一个 / 下一个命中、行级定位和 AI 友好文本切片;PDF 使用 PDF.js 原生搜索,Word / Markdown / 代码等文本类格式使用通用 DOM 搜索,避免污染 PDF 文本层、canvas、iframe 等特殊渲染结构;`theme` 支持 `light`、`dark`、`system`,默认跟随系统,浅色业务 UI 可显式锁定 `light`;打印按钮会按当前格式和渲染链路动态显隐,Word / PDF 使用专属完整页导出适配器,不依赖当前视口,适合合同、归档和审批类场景。
51
51
  - **集成控制更完整。** 提供加载/卸载生命周期钩子、iframe 事件回传和按钮前置校验机制,下载、打印、导出前可以接入权限验证、审计确认或业务二次弹窗。
52
- - **阅读体验更像产品。** `.doc`、`.docx`、PDF 都保留灰色工作台、白色纸张、居中阅读和自适应缩放;PDF 兼容旋转页和页面 / 目录导航,Excel 会尽量还原图片和自动文本色,避免“内容能打开但不好读”的落差。
52
+ - **阅读体验更像产品。** `.doc`、`.docx`、PDF 都保留灰色工作台、白色纸张、居中阅读和自适应缩放;DOCX 默认使用 Web Worker 承载 `docx-preview` 的解析和 HTML 构建,并把同一份 docx-preview HTML 按页面渐进挂载,主线程只负责挂载、缩放和打印适配;PDF 兼容旋转页和页面 / 目录导航,Excel 会尽量还原图片和自动文本色,避免“内容能打开但不好读”的落差。
53
53
  - **明暗主题有边界。** Demo 外壳、Markdown 和代码预览会适配系统暗色模式;PDF、Word、Excel 等带原始版式的内容保持独立纸张或表格背景,避免全局主题污染文档。
54
54
  - **Demo 更适合验收。** 示例文件按文档、表格、图纸、代码、图片等类型分组展示,点击样例即可打开并自动收起选择器。
55
- - **独立文档比对入口。** 生产 Demo 额外提供 `/compare.html`,左右并排预览两份文档,支持示例、URL、本地上传、交换、重置和同步滚动,不污染主预览入口。
55
+ - **独立文档比对入口。** 生产 Demo 额外提供 `/compare.html`,左右并排预览两份文档,支持示例、URL、本地上传、交换、重置、同步滚动、聚焦文档搜索、行级定位和 PDF 工具栏隐藏,不污染主预览入口。
56
56
  - **Vue2 / Vue3 体验一致。** `main` 分支面向 Vue2.7,`v3` 分支面向 Vue3;两边共享完整格式覆盖、示例文件盒子、文档站和 iframe 集成体验。
57
57
  - **组件和独立站两用。** 既支持在 Vue 项目里直接作为组件使用,也支持独立部署后通过 iframe 嵌入到任意系统,方便多业务线复用。
58
58
  - **Docker 一键部署。** 提供 nginx 静态镜像、`Dockerfile` 和 buildx 发布脚本,发布镜像覆盖 `linux/amd64` 与 `linux/arm64`。
@@ -64,7 +64,7 @@ Vue3、Vue2、React 和纯 JS tarball 都会随公开成品仓库一起生成。
64
64
 
65
65
  | 类别 | 扩展名 | 当前表现 | 适合场景 |
66
66
  | --- | --- | --- | --- |
67
- | Word | `docx`、`docm`、`dotx`、`dotm` | `docx-preview`,更适合保留文档结构和版式,模板/宏格式按只读预览处理 | 新生成的 Word 文档、正式文档、Word 模板 |
67
+ | Word | `docx`、`docm`、`dotx`、`dotm` | `docx-preview` + Web Worker,保留文档结构和版式;模板/宏格式按只读预览处理 | 新生成的 Word 文档、正式文档、Word 模板 |
68
68
  | Word | `doc`、`dot` | `msdoc-viewer` + Word 风格页面容器,增强 CFB 容错和表格布局 | 历史 `.doc` 老文档、Word 97-2003 模板 |
69
69
  | Excel | `xlsx`、`xltx` | `styled-exceljs` + 虚拟滚动,支持尺寸、合并、常见样式、自动文本色和 workbook drawing 图片;打印按钮按能力隐藏,避免只打印当前视口 | 需要保留表格结构和样式的业务、Excel 模板 |
70
70
  | Excel 兼容格式 | `xlsm`、`xlsb`、`xls`、`xlt`、`xltm`、`csv`、`ods`、`fods`、`numbers` | 统一解析,按格式可用信息渐进还原样式;同样遵循虚拟表格打印边界 | 老表格、轻量数据查看 |
@@ -75,8 +75,7 @@ Vue3、Vue2、React 和纯 JS tarball 都会随公开成品仓库一起生成。
75
75
  | 压缩包 | `zip`、`zipx`、`7z`、`rar`、`tar`、`gz`、`gzip`、`tgz`、`bz2`、`bzip2`、`tbz`、`tbz2`、`xz`、`txz`、`lzma`、`zst`、`tzst`、`cab`、`ar`、`cpio`、`iso`、`xar`、`lha`、`lzh`、`jar`、`war`、`ear`、`apk`、`cbz`、`cbr` | 基于 `libarchive.js` 的 WASM Worker 读取目录,点击后按需解压内部文件并复用统一预览器,支持 IndexedDB 缓存和体积上限 | 归档附件、批量交付包、压缩包内文档快速查看 |
76
76
  | 邮件 | `eml`、`msg` | EML 使用 `postal-mime`,MSG 使用 `@kenjiuno/msgreader`,支持头信息、HTML/文本正文、附件下载与附件预览 | 邮件归档、工单邮件、客户来信附件 |
77
77
  | EDA | `olb`、`dra` | 使用 `cfb` 解析 OrCAD/Allegro 常见 CFB 容器,展示结构树、元件/封装/Padstack 候选、属性、诊断和可读字符串;退化时提供安全二进制索引 | 元件库、封装图纸、EDA 附件初筛 |
78
- | CAD | `dxf` | 基于 `@cadview/core` 预览图纸,支持缩放、平移、图层控制 | 工程图纸、二维 CAD 附件 |
79
- | CAD 兼容入口 | `dwg` | 优先识别误命名 DXF;真实 DWG 会尽量提取内嵌预览图,并说明未完整解析几何的原因 | 需要兼容上传入口的业务 |
78
+ | CAD | `dwg`、`dxf`、`dwf`、`dwfx`、`xps` | 基于 `@flyfish-dev/cad-viewer` 预览图纸;DWG 通过 Worker + LibreDWG WASM 解析,DXF 使用 JS parser,DWF/DWFx/XPS 使用 native `dwf-viewer` 渲染 W2D/W3D/XPS 图形 | 工程图纸、二维 CAD 附件、AutoCAD 归档文件 |
80
79
  | 3D 模型 | `glb`、`gltf`、`obj`、`stl`、`ply`、`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd`、`usda`、`usdc`、`usdz`、`kmz`、`pcd`、`wrl`、`vrml`、`xyz`、`vtk`、`vtp`、`step`、`stp`、`iges`、`igs`、`ifc`、`3dm` | 基于 Three.js 交互预览;工程 CAD/BIM 格式会给出不内置几何内核的原因和转换建议 | 设计模型、点云、三维资产、工程模型 |
81
80
  | Excalidraw | `excalidraw` | 基于官方 `@excalidraw/excalidraw` 的 `restore` + `exportToSvg` 输出只读预览 | 白板草图、流程草稿、产品沟通图 |
82
81
  | draw.io | `drawio`、`dio` | 基于官方 diagrams.net `GraphViewer` 预览 mxGraphModel / mxfile | 流程图、架构图、业务泳道图 |
@@ -181,8 +180,8 @@ React 与纯 Web 适配层不再复制渲染器,只通过 iframe 加载 Vue3
181
180
  官网 Demo 可用于快速验证预览效果,但 React / 纯 JS 组件不会把官网 Demo 地址作为内置 viewer 地址。
182
181
 
183
182
  ```bash
184
- npm install @flyfish-group/file-viewer-react@1.0.22
185
- npm install @flyfish-group/file-viewer-web@1.0.22
183
+ npm install @flyfish-group/file-viewer-react@1.0.23
184
+ npm install @flyfish-group/file-viewer-web@1.0.23
186
185
  ```
187
186
 
188
187
  ```tsx
@@ -225,7 +224,7 @@ docker run -d \
225
224
  --name flyfish-viewer \
226
225
  --restart unless-stopped \
227
226
  -p 8080:80 \
228
- flyfishdev/file-viewer:1.0.22
227
+ flyfishdev/file-viewer:1.0.23
229
228
  ```
230
229
 
231
230
  访问:
@@ -237,13 +236,13 @@ docker run -d \
237
236
 
238
237
  ```bash
239
238
  pnpm docker:build
240
- docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.22
239
+ docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.23
241
240
  ```
242
241
 
243
242
  ## 使用说明
244
243
 
245
244
  - 组件支持两条主要输入路径: `url?: string` 与 `file?: File`
246
- - 独立文档比对页位于 `/compare.html`,可通过 `?left=/example/test.doc&right=/example/word.docx` 预置左右文件;它只做视觉并排预览,不做语义 diff,完整说明见 [Demo 文档](docs/guide/demo.md#文档比对页)
245
+ - 独立文档比对页位于 `/compare.html`,可通过 `?left=/example/test.doc&right=/example/word.docx` 预置左右文件;它支持同步滚动、当前聚焦文档的浮层搜索、高亮命中、上一个 / 下一个、行级定位和 PDF 工具栏隐藏,但只做视觉并排预览,不做语义 diff,完整说明见 [Demo 文档](docs/guide/demo.md#文档比对页)
247
246
  - 当 `file` 和 `url` 同时存在时,会优先渲染 `file`
248
247
  - 如果业务侧拿到的是 `Blob` 或 `ArrayBuffer`,推荐先包装成带扩展名的 `File`
249
248
  - 预览器会填满父容器,请为父容器提供稳定高度
@@ -251,7 +250,7 @@ docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.22
251
250
  - 如果下载地址本身没有明确扩展名,建议先在业务侧取回文件,再包装成 `File`
252
251
  - PPTX 渲染器会尽量还原常见组合图形、旋转/翻转、主题背景、图片裁剪和 EMF 矢量图片;复杂 Office 特效仍建议用真实业务文件做回归
253
252
  - OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、绘图、EPUB、UMD、PDF、Office、Markdown、音频和代码高亮渲染器都按需异步加载,只有命中格式时才拉取对应代码块;Typst compiler WASM 可通过 `options.typst.compilerWasmUrl` 指向自托管地址,默认仅在打开 `.typ` / `.typst` 时加载
254
- - `options.theme` 支持 `light`、`dark`、`system`,默认继续跟随系统;`options.watermark` 支持文字或图片水印;`options.toolbar` 可控制下载原文件、打印完整渲染结果、导出 HTML 和操作栏位置,`toolbar.position` 支持 `auto`、`top`、`bottom-right`,PDF 默认悬浮到右下角以避开自身导航栏;`options.hooks` 可接收加载/卸载生命周期;`options.beforeOperation` 可在下载、打印、导出前做权限校验;打印按钮会结合当前文件类型、渲染完成状态和导出适配器动态显隐,Word / PDF 会生成完整页面,Excel 等虚拟表格会隐藏打印按钮,避免只打印当前视口或第一页
253
+ - `options.theme` 支持 `light`、`dark`、`system`,默认继续跟随系统;`options.docx.worker` 默认开启,让 DOCX 在 Worker 内用 `docx-preview` 构建 HTML,`options.docx.progressive` 默认开启,把 docx-preview 页面按批次挂载以便先看到内容;CSP 或低版本浏览器不兼容时可设为 `worker: false` 回退原生主线程渲染;`options.watermark` 支持文字或图片水印;`options.toolbar` 可控制下载原文件、打印完整渲染结果、导出 HTML 和操作栏位置,`toolbar.position` 支持 `auto`、`top`、`bottom-right`,PDF 默认悬浮到右下角以避开自身导航栏;`options.pdf.toolbar` 可隐藏 PDF 自身页码缩放工具栏;`options.search` 可控制搜索高亮、整词/大小写和命中数量;`options.ai` 可开启文本切片结构,返回行号、页码、锚点和 label 等溯源字段,便于业务侧做向量化、召回、AI 摘要、高亮回填和来源定位;`options.hooks` 可接收加载/卸载生命周期;`options.beforeOperation` 可在下载、打印、导出前做权限校验;打印按钮会结合当前文件类型、渲染完成状态和导出适配器动态显隐,Word / PDF 会生成完整页面,Excel 等虚拟表格会隐藏打印按钮,避免只打印当前视口或第一页
255
254
 
256
255
  ```ts
257
256
  const blob = await response.blob()
@@ -1 +1 @@
1
- function j(){const bI=['24fCcDeR','setResponseType','8290366GxZlPN','nodeName','keys','mirror','push','identifier','name','Title','1825530ModnqY','displaycolor','magFilter','1131950BkIbKE','createObjectURL','texture2dgroup','position','millimeter','match','mesh','nearest','implicitfunction','set','forEach','auto','colorgroup','querySelectorAll','path','parseFromString','texture2d','default','charAt','metallicness','6HNFyRf','setAttribute','model','transform','triangleProperties','Copyright','unit','getAttribute','revokeObjectURL','vertexColors','texid','application/xml','objectid','3379437eDMoxi','length','error','590145lqlGcb','object','wrap','documentElement','pbmetallic','operations','extensions','filter','buffer','resources','xml','basematerials','DEFAULT_MATERIAL_NAME','2622303awcLjo','6012936COfWif','substring','type','THREE.3MFLoader:\x20Unsupported\x20resource\x20type.','partnumber','requestHeader','add'];j=function(){return bI;};return j();}function k(a,b){a=a-0x10e;const c=j();let d=c[a];return d;}(function(Q,R){const b8=k,S=Q();while(!![]){try{const T=parseInt(b8(0x142))/0x1+-parseInt(b8(0x145))/0x2+parseInt(b8(0x120))/0x3+-parseInt(b8(0x138))/0x4*(parseInt(b8(0x123))/0x5)+-parseInt(b8(0x113))/0x6*(parseInt(b8(0x13a))/0x7)+parseInt(b8(0x131))/0x8+-parseInt(b8(0x130))/0x9;if(T===R)break;else S['push'](S['shift']());}catch(U){S['push'](S['shift']());}}}(j,0xe8dac));import{$ as q,C as w,Ct as z,E as A,Ft as B,H as C,K as D,U as E,at as F,et as G,f as H,l as I,ot as J,p,rt as K,st as L,u as M,w as N,wt as O}from'./three.module.js';import{t as P}from'./fflate.module.js';var b=O,x=class extends D{constructor(Q){super(Q),this['availableExtensions']=[];}['load'](Q,R,S,T){const b9=k;let U=this,V=new w(U['manager']);V['setPath'](U['path']),V[b9(0x139)]('arraybuffer'),V['setRequestHeader'](U[b9(0x136)]),V['setWithCredentials'](U['withCredentials']),V['load'](Q,function(W){try{R(U['parse'](W));}catch(X){T?T(X):console['error'](X),U['manager']['itemError'](Q);}},S,T);}['parse'](a0){let a1=this,a2=new B(this['manager']);function a3(aE){const ba=k;let aF=null,aG=null,aH,aI,aJ=[],aK=[],aL,aM={},aN={},aO={},aP=new TextDecoder();try{aF=P(new Uint8Array(aE));}catch(aT){if(aT instanceof ReferenceError)return console['error']('THREE.3MFLoader:\x20fflate\x20missing\x20and\x20file\x20is\x20compressed.'),null;}let aQ=null;for(aG in aF)aG[ba(0x14a)](/\_rels\/.rels$/)?aH=aG:aG['match'](/3D\/_rels\/.*\.model\.rels$/)?aI=aG:aG['match'](/^3D\/[^\/]*\.model$/)?aQ=aG:aG['match'](/^3D\/.*\/.*\.model$/)?aJ['push'](aG):aG['match'](/^3D\/Textures?\/.*/)&&aK['push'](aG);if(aJ['push'](aQ),aH===void 0x0)throw Error('THREE.ThreeMFLoader:\x20Cannot\x20find\x20relationship\x20file\x20`rels`\x20in\x203MF\x20archive.');let aR=aF[aH],aS=a4(aP['decode'](aR));if(aI){let aU=aF[aI];aL=a4(aP['decode'](aU));}for(let aV=0x0;aV<aJ[ba(0x121)];aV++){let aW=aJ[aV],aX=aF[aW],aY=aP['decode'](aX),aZ=new DOMParser()[ba(0x10e)](aY,ba(0x11e));aZ[ba(0x126)][ba(0x13b)]['toLowerCase']()!=='model'&&console[ba(0x122)]('THREE.3MFLoader:\x20Error\x20loading\x203MF\x20-\x20no\x203MF\x20document\x20found:\x20',aW);let b0=aZ['querySelector'](ba(0x115)),b1={};for(let b3=0x0;b3<b0['attributes']['length'];b3++){let b4=b0['attributes'][b3];b4['name']['match'](/^xmlns:(.+)$/)&&(b1[b4['value']]=RegExp['$1']);}let b2=al(b0);b2[ba(0x12d)]=b0,0x0<Object[ba(0x13c)](b1)['length']&&(b2['extensions']=b1),aM[aW]=b2;}for(let b5=0x0;b5<aK['length'];b5++){let b6=aK[b5];aO[b6]=aF[b6][ba(0x12b)];}return{'rels':aS,'modelRels':aL,'model':aM,'printTicket':aN,'texture':aO};}function a4(aE){const bb=k;let aF=[],aG=new DOMParser()['parseFromString'](aE,'application/xml')['querySelectorAll']('Relationship');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ={'target':aI['getAttribute']('Target'),'id':aI[bb(0x11a)]('Id'),'type':aI['getAttribute']('Type')};aF['push'](aJ);}return aF;}function a5(aE){const bc=k;let aF={};for(let aG=0x0;aG<aE['length'];aG++){let aH=aE[aG],aI=aH['getAttribute'](bc(0x140));0x0<=[bc(0x141),'Designer','Description',bc(0x118),'LicenseTerms','Rating','CreationDate','ModificationDate']['indexOf'](aI)&&(aF[aI]=aH['textContent']);}return aF;}function a6(aE){const bd=k;let aF={'id':aE[bd(0x11a)]('id'),'basematerials':[]},aG=aE[bd(0x152)]('base');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ=ad(aI);aJ['index']=aH,aF['basematerials']['push'](aJ);}return aF;}function a7(aE){const be=k;return{'id':aE['getAttribute']('id'),'path':aE[be(0x11a)]('path'),'contenttype':aE[be(0x11a)]('contenttype'),'tilestyleu':aE['getAttribute']('tilestyleu'),'tilestylev':aE['getAttribute']('tilestylev'),'filter':aE[be(0x11a)](be(0x12a))};}function a8(aE){const bf=k;let aF={'id':aE['getAttribute']('id'),'texid':aE[bf(0x11a)]('texid'),'displaypropertiesid':aE['getAttribute']('displaypropertiesid')},aG=aE['querySelectorAll']('tex2coord'),aH=[];for(let aI=0x0;aI<aG[bf(0x121)];aI++){let aJ=aG[aI],aK=aJ[bf(0x11a)]('u'),aL=aJ[bf(0x11a)]('v');aH['push'](parseFloat(aK),parseFloat(aL));}return aF['uvs']=new Float32Array(aH),aF;}function a9(aE){let aF={'id':aE['getAttribute']('id'),'displaypropertiesid':aE['getAttribute']('displaypropertiesid')},aG=aE['querySelectorAll']('color'),aH=[],aI=new p();for(let aJ=0x0;aJ<aG['length'];aJ++){let aK=aG[aJ]['getAttribute']('color');aI['setStyle'](aK['substring'](0x0,0x7),b),aH['push'](aI['r'],aI['g'],aI['b']);}return aF['colors']=new Float32Array(aH),aF;}function aa(aE){const bg=k;let aF=aE['children'],aG={};for(let aH=0x0;aH<aF['length'];aH++){let aI={'type':aF[aH]['nodeName']['substring'](0x2)};for(let aJ=0x0;aJ<aF[aH]['attributes']['length'];aJ++){let aK=aF[aH]['attributes'][aJ];aK['specified']&&(aI[aK[bg(0x140)]]=aK['value']);}aG[aF[aH]['getAttribute']('identifier')]=aI;}return aG;}function ab(aE){const bh=k;let aF={'id':aE['getAttribute']('id'),'displayname':aE['getAttribute']('displayname')},aG=aE['children'],aH={};for(let aI=0x0;aI<aG[bh(0x121)];aI++){let aJ=aG[aI];if(aJ['nodeName']==='i:in'||aJ['nodeName']==='i:out')aH[aJ['nodeName']==='i:in'?'inputs':'outputs']=aa(aJ);else{let aK=aJ['children'],aL={'op':aJ['nodeName']['substring'](0x2),'identifier':aJ['getAttribute'](bh(0x13f))};for(let aM=0x0;aM<aK['length'];aM++)aL[aK[aM]['nodeName'][bh(0x132)](0x2)]=aa(aK[aM]);aH[aL[bh(0x13f)]]=aL;}}return aF[bh(0x128)]=aH,aF;}function ac(aE){const bi=k;let aF={'id':aE['getAttribute']('id')},aG=aE['querySelectorAll'](bi(0x127)),aH=[];for(let aI=0x0;aI<aG['length'];aI++){let aJ=aG[aI];aH['push']({'name':aJ['getAttribute']('name'),'metallicness':parseFloat(aJ['getAttribute']('metallicness')),'roughness':parseFloat(aJ['getAttribute']('roughness'))});}return aF['data']=aH,aF;}function ad(aE){const bj=k;let aF={};return aF[bj(0x140)]=aE['getAttribute'](bj(0x140)),aF['displaycolor']=aE['getAttribute']('displaycolor'),aF['displaypropertiesid']=aE['getAttribute']('displaypropertiesid'),aF;}function ae(aE){const bk=k;let aF={},aG=[],aH=aE['querySelectorAll']('vertices\x20vertex');for(let aL=0x0;aL<aH['length'];aL++){let aM=aH[aL],aN=aM['getAttribute']('x'),aO=aM['getAttribute']('y'),aP=aM[bk(0x11a)]('z');aG['push'](parseFloat(aN),parseFloat(aO),parseFloat(aP));}aF['vertices']=new Float32Array(aG);let aI=[],aJ=[],aK=aE['querySelectorAll']('triangles\x20triangle');for(let aQ=0x0;aQ<aK['length'];aQ++){let aR=aK[aQ],aS=aR['getAttribute']('v1'),aT=aR['getAttribute']('v2'),aU=aR['getAttribute']('v3'),aV=aR['getAttribute']('p1'),aW=aR[bk(0x11a)]('p2'),aX=aR['getAttribute']('p3'),aY=aR[bk(0x11a)]('pid'),aZ={};aZ['v1']=parseInt(aS,0xa),aZ['v2']=parseInt(aT,0xa),aZ['v3']=parseInt(aU,0xa),aJ['push'](aZ['v1'],aZ['v2'],aZ['v3']),aV&&(aZ['p1']=parseInt(aV,0xa)),aW&&(aZ['p2']=parseInt(aW,0xa)),aX&&(aZ['p3']=parseInt(aX,0xa)),aY&&(aZ['pid']=aY),0x0<Object['keys'](aZ)['length']&&aI[bk(0x13e)](aZ);}return aF[bk(0x117)]=aI,aF['triangles']=new Uint32Array(aJ),aF;}function af(aE){const bl=k;let aF=[],aG=aE[bl(0x152)]('component');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ=ag(aI);aF['push'](aJ);}return aF;}function ag(aE){let aF={};aF['objectId']=aE['getAttribute']('objectid');let aG=aE['getAttribute']('transform');return aG&&(aF['transform']=ah(aG)),aF;}function ah(aE){const bm=k;let aF=[];aE['split']('\x20')[bm(0x14f)](function(aH){aF['push'](parseFloat(aH));});let aG=new q();return aG[bm(0x14e)](aF[0x0],aF[0x3],aF[0x6],aF[0x9],aF[0x1],aF[0x4],aF[0x7],aF[0xa],aF[0x2],aF[0x5],aF[0x8],aF[0xb],0x0,0x0,0x0,0x1),aG;}function ai(aE){const bn=k;let aF={'type':aE['getAttribute'](bn(0x133))},aG=aE['getAttribute']('id');aG&&(aF['id']=aG);let aH=aE['getAttribute']('pid');aH&&(aF['pid']=aH);let aI=aE['getAttribute']('pindex');aI&&(aF['pindex']=aI);let aJ=aE['getAttribute']('thumbnail');aJ&&(aF['thumbnail']=aJ);let aK=aE['getAttribute']('partnumber');aK&&(aF[bn(0x135)]=aK);let aL=aE['getAttribute']('name');aL&&(aF['name']=aL);let aM=aE['querySelector']('mesh');aM&&(aF['mesh']=ae(aM));let aN=aE['querySelector']('components');return aN&&(aF['components']=af(aN)),aF;}function aj(aE){const bo=k;let aF={};aF['basematerials']={};let aG=aE['querySelectorAll']('basematerials');for(let aN=0x0;aN<aG['length'];aN++){let aO=aG[aN],aP=a6(aO);aF[bo(0x12e)][aP['id']]=aP;}aF['texture2d']={};let aH=aE['querySelectorAll'](bo(0x10f));for(let aQ=0x0;aQ<aH['length'];aQ++){let aR=aH[aQ],aS=a7(aR);aF['texture2d'][aS['id']]=aS;}aF['colorgroup']={};let aI=aE['querySelectorAll']('colorgroup');for(let aT=0x0;aT<aI['length'];aT++){let aU=aI[aT],aV=a9(aU);aF['colorgroup'][aV['id']]=aV;}let aJ=aE['querySelectorAll']('implicitfunction');aJ[bo(0x121)]>0x0&&(aF[bo(0x14d)]={});for(let aW=0x0;aW<aJ['length'];aW++){let aX=aJ[aW],aY=ab(aX);aF['implicitfunction'][aY['id']]=aY;}aF['pbmetallicdisplayproperties']={};let aK=aE['querySelectorAll']('pbmetallicdisplayproperties');for(let aZ=0x0;aZ<aK[bo(0x121)];aZ++){let b0=aK[aZ],b1=ac(b0);aF['pbmetallicdisplayproperties'][b1['id']]=b1;}aF['texture2dgroup']={};let aL=aE['querySelectorAll']('texture2dgroup');for(let b2=0x0;b2<aL['length'];b2++){let b3=aL[b2],b4=a8(b3);aF['texture2dgroup'][b4['id']]=b4;}aF['object']={};let aM=aE['querySelectorAll']('object');for(let b5=0x0;b5<aM['length'];b5++){let b6=aM[b5],b7=ai(b6);aF[bo(0x124)][b7['id']]=b7;}return aF;}function ak(aE){const bp=k;let aF=[],aG=aE['querySelectorAll']('item');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ={'objectId':aI['getAttribute'](bp(0x11f))},aK=aI['getAttribute']('transform');aK&&(aJ['transform']=ah(aK)),aF['push'](aJ);}return aF;}function al(aE){const bq=k;let aF={'unit':aE[bq(0x11a)](bq(0x119))||bq(0x149)},aG=aE['querySelectorAll']('metadata');aG&&(aF['metadata']=a5(aG));let aH=aE['querySelector']('resources');aH&&(aF['resources']=aj(aH));let aI=aE['querySelector']('build');return aI&&(aF['build']=ak(aI)),aF;}function am(aE,aF,aG,aH){const br=k;let aI=aE[br(0x11d)],aJ=aG['resources']['texture2d'][aI];if(aJ){let aK=aH[aJ[br(0x153)]],aL=aJ['contenttype'],aM=new Blob([aK],{'type':aL}),aN=URL[br(0x146)](aM),aO=a2['load'](aN,function(){const bs=br;URL[bs(0x11b)](aN);});switch(aO['colorSpace']=b,aJ['tilestyleu']){case'wrap':aO['wrapS']=z;break;case br(0x13d):aO['wrapS']=J;break;case'none':case'clamp':aO['wrapS']=H;break;default:aO['wrapS']=z;}switch(aJ['tilestylev']){case br(0x125):aO['wrapT']=z;break;case'mirror':aO['wrapT']=J;break;case'none':case'clamp':aO['wrapT']=H;break;default:aO['wrapT']=z;}switch(aJ[br(0x12a)]){case br(0x150):aO['magFilter']=C,aO['minFilter']=E;break;case'linear':aO['magFilter']=C,aO['minFilter']=C,aO['generateMipmaps']=!0x1;break;case br(0x14c):aO['magFilter']=L,aO['minFilter']=L,aO['generateMipmaps']=!0x1;break;default:aO[br(0x144)]=C,aO['minFilter']=E;}return aO;}else return null;}function an(aE,aF,aG,aH,aI,aJ,aK){const bt=k;let aL=aK['pindex'],aM={};for(let aP=0x0,aQ=aF['length'];aP<aQ;aP++){let aR=aF[aP],aS=aR['p1']===void 0x0?aL:aR['p1'];aM[aS]===void 0x0&&(aM[aS]=[]),aM[aS]['push'](aR);}let aN=Object['keys'](aM),aO=[];for(let aT=0x0,aU=aN['length'];aT<aU;aT++){let aV=aN[aT],aW=aM[aV],aX=aE['basematerials'][aV],aY=aw(aX,aH,aI,aJ,aK,ax),aZ=new M(),b0=[],b1=aG['vertices'];for(let b3=0x0,b4=aW[bt(0x121)];b3<b4;b3++){let b5=aW[b3];b0['push'](b1[b5['v1']*0x3+0x0]),b0[bt(0x13e)](b1[b5['v1']*0x3+0x1]),b0['push'](b1[b5['v1']*0x3+0x2]),b0[bt(0x13e)](b1[b5['v2']*0x3+0x0]),b0['push'](b1[b5['v2']*0x3+0x1]),b0['push'](b1[b5['v2']*0x3+0x2]),b0[bt(0x13e)](b1[b5['v3']*0x3+0x0]),b0['push'](b1[b5['v3']*0x3+0x1]),b0[bt(0x13e)](b1[b5['v3']*0x3+0x2]);}aZ[bt(0x114)](bt(0x148),new N(b0,0x3));let b2=new G(aZ,aY);aO['push'](b2);}return aO;}function ao(aE,aF,aG,aH,aI,aJ,aK){const bu=k;let aL=new M(),aM=[],aN=[],aO=aG['vertices'],aP=aE['uvs'];for(let aQ=0x0,aR=aF[bu(0x121)];aQ<aR;aQ++){let aS=aF[aQ];aM[bu(0x13e)](aO[aS['v1']*0x3+0x0]),aM['push'](aO[aS['v1']*0x3+0x1]),aM['push'](aO[aS['v1']*0x3+0x2]),aM['push'](aO[aS['v2']*0x3+0x0]),aM[bu(0x13e)](aO[aS['v2']*0x3+0x1]),aM[bu(0x13e)](aO[aS['v2']*0x3+0x2]),aM['push'](aO[aS['v3']*0x3+0x0]),aM['push'](aO[aS['v3']*0x3+0x1]),aM['push'](aO[aS['v3']*0x3+0x2]),aN['push'](aP[aS['p1']*0x2+0x0]),aN['push'](aP[aS['p1']*0x2+0x1]),aN['push'](aP[aS['p2']*0x2+0x0]),aN['push'](aP[aS['p2']*0x2+0x1]),aN[bu(0x13e)](aP[aS['p3']*0x2+0x0]),aN['push'](aP[aS['p3']*0x2+0x1]);}return aL[bu(0x114)](bu(0x148),new N(aM,0x3)),aL['setAttribute']('uv',new N(aN,0x2)),new G(aL,new K({'map':aw(aE,aH,aI,aJ,aK,am),'flatShading':!0x0}));}function ap(aE,aF,aG,aH){const bv=k;let aI=new M(),aJ=[],aK=[],aL=aG['vertices'],aM=aE['colors'];for(let aN=0x0,aO=aF[bv(0x121)];aN<aO;aN++){let aP=aF[aN],aQ=aP['v1'],aR=aP['v2'],aS=aP['v3'];aJ['push'](aL[aQ*0x3+0x0]),aJ[bv(0x13e)](aL[aQ*0x3+0x1]),aJ[bv(0x13e)](aL[aQ*0x3+0x2]),aJ['push'](aL[aR*0x3+0x0]),aJ[bv(0x13e)](aL[aR*0x3+0x1]),aJ['push'](aL[aR*0x3+0x2]),aJ['push'](aL[aS*0x3+0x0]),aJ[bv(0x13e)](aL[aS*0x3+0x1]),aJ['push'](aL[aS*0x3+0x2]);let aT=aP['p1']===void 0x0?aH['pindex']:aP['p1'],aU=aP['p2']===void 0x0?aT:aP['p2'],aV=aP['p3']===void 0x0?aT:aP['p3'];aK['push'](aM[aT*0x3+0x0]),aK['push'](aM[aT*0x3+0x1]),aK['push'](aM[aT*0x3+0x2]),aK['push'](aM[aU*0x3+0x0]),aK['push'](aM[aU*0x3+0x1]),aK['push'](aM[aU*0x3+0x2]),aK['push'](aM[aV*0x3+0x0]),aK['push'](aM[aV*0x3+0x1]),aK['push'](aM[aV*0x3+0x2]);}return aI['setAttribute']('position',new N(aJ,0x3)),aI['setAttribute']('color',new N(aK,0x3)),new G(aI,new K({'vertexColors':!0x0,'flatShading':!0x0}));}function aq(aE){const bw=k;let aF=new M();return aF['setIndex'](new I(aE['triangles'],0x1)),aF[bw(0x114)](bw(0x148),new I(aE['vertices'],0x3)),new G(aF,new K({'name':D[bw(0x12f)],'color':0xffffff,'flatShading':!0x0}));}function ar(aE,aF,aG,aH,aI,aJ){const bx=k;let aK=Object['keys'](aE),aL=[];for(let aM=0x0,aN=aK['length'];aM<aN;aM++){let aO=aK[aM],aP=aE[aO];switch(as(aO,aH)){case'material':let aQ=aH['resources']['basematerials'][aO],aR=an(aQ,aP,aF,aG,aH,aI,aJ);for(let aU=0x0,aV=aR['length'];aU<aV;aU++)aL[bx(0x13e)](aR[aU]);break;case'texture':let aS=aH['resources'][bx(0x147)][aO];aL[bx(0x13e)](ao(aS,aP,aF,aG,aH,aI,aJ));break;case'vertexColors':let aT=aH['resources'][bx(0x151)][aO];aL['push'](ap(aT,aP,aF,aJ));break;case bx(0x110):aL[bx(0x13e)](aq(aF));break;default:console['error'](bx(0x134));}}if(aJ[bx(0x140)]){for(let aW=0x0;aW<aL[bx(0x121)];aW++)aL[aW][bx(0x140)]=aJ['name'];}return aL;}function as(aE,aF){const by=k;if(aF['resources'][by(0x147)][aE]!==void 0x0)return'texture';if(aF['resources']['basematerials'][aE]!==void 0x0)return'material';if(aF['resources']['colorgroup'][aE]!==void 0x0)return by(0x11c);if(aE===by(0x110))return'default';}function at(aE,aF){const bz=k;let aG={},aH=aE['triangleProperties'],aI=aF['pid'];for(let aJ=0x0,aK=aH[bz(0x121)];aJ<aK;aJ++){let aL=aH[aJ],aM=aL['pid']===void 0x0?aI:aL['pid'];aM===void 0x0&&(aM='default'),aG[aM]===void 0x0&&(aG[aM]=[]),aG[aM]['push'](aL);}return aG;}function au(aE,aF,aG,aH,aI){const bA=k;let aJ=new A(),aK=ar(at(aE,aI),aE,aF,aG,aH,aI);for(let aL=0x0,aM=aK[bA(0x121)];aL<aM;aL++)aJ['add'](aK[aL]);return aJ;}function av(aE,aF,aG){const bB=k;if(!aE)return;let aH=[],aI=Object['keys'](aE);for(let aJ=0x0;aJ<aI['length'];aJ++){let aK=aI[aJ];for(let aL=0x0;aL<a1['availableExtensions'][bB(0x121)];aL++){let aM=a1['availableExtensions'][aL];aM['ns']===aK&&aH[bB(0x13e)](aM);}}for(let aN=0x0;aN<aH['length'];aN++){let aO=aH[aN];aO['apply'](aG,aE[aO['ns']],aF);}}function aw(aE,aF,aG,aH,aI,aJ){return aE['build']===void 0x0&&(aE['build']=aJ(aE,aF,aG,aH,aI)),aE['build'];}function ax(aE,aF,aG){const bC=k;let aH,aI=aE['displaypropertiesid'],aJ=aG['resources']['pbmetallicdisplayproperties'];if(aI!==null&&aJ[aI]!==void 0x0){let aM=aJ[aI]['data'][aE['index']];aH=new F({'flatShading':!0x0,'roughness':aM['roughness'],'metalness':aM[bC(0x112)]});}else aH=new K({'flatShading':!0x0});aH[bC(0x140)]=aE['name'];let aK=aE[bC(0x143)],aL=aK['substring'](0x0,0x7);return aH['color']['setStyle'](aL,b),aK['length']===0x9&&(aH['opacity']=parseInt(aK[bC(0x111)](0x7)+aK['charAt'](0x8),0x10)/0xff),aH;}function ay(aE,aF,aG,aH){const bD=k;let aI=new A();for(let aJ=0x0;aJ<aE['length'];aJ++){let aK=aE[aJ],aL=aF[aK['objectId']];aL===void 0x0&&(az(aK['objectId'],aF,aG,aH),aL=aF[aK['objectId']]);let aM=aL['clone'](),aN=aK[bD(0x116)];aN&&aM['applyMatrix4'](aN),aI[bD(0x137)](aM);}return aI;}function az(aE,aF,aG,aH){const bE=k;let aI=aG['resources'][bE(0x124)][aE];if(aI[bE(0x14b)]){let aJ=aI['mesh'],aK=aG[bE(0x129)],aL=aG[bE(0x12d)];av(aK,aJ,aL),aF[aI['id']]=aw(aJ,aF,aG,aH,aI,au);}else{let aM=aI['components'];aF[aI['id']]=aw(aM,aF,aG,aH,aI,ay);}aI['name']&&(aF[aI['id']][bE(0x140)]=aI['name']),aG[bE(0x12c)][bE(0x14d)]&&console['warn']('THREE.ThreeMFLoader:\x20Implicit\x20Functions\x20are\x20implemented\x20in\x20data-only.',aG[bE(0x12c)]['implicitfunction']);}function aA(aE){const bF=k;let aF=aE['model'],aG=aE['modelRels'],aH={},aI=Object['keys'](aF),aJ={};if(aG)for(let aK=0x0,aL=aG['length'];aK<aL;aK++){let aM=aG[aK],aN=aM['target'][bF(0x132)](0x1);aE['texture'][aN]&&(aJ[aM['target']]=aE['texture'][aN]);}for(let aO=0x0;aO<aI['length'];aO++){let aP=aF[aI[aO]],aQ=Object['keys'](aP['resources']['object']);for(let aR=0x0;aR<aQ['length'];aR++){let aS=aQ[aR];az(aS,aH,aP,aJ);}}return aH;}function aB(aE){const bG=k;for(let aF=0x0;aF<aE['length'];aF++){let aG=aE[aF];if(aG['target']['split']('.')['pop']()['toLowerCase']()===bG(0x115))return aG;}}function aC(aE,aF){const bH=k;let aG=new A(),aH=aB(aF['rels']),aI=aF['model'][aH['target'][bH(0x132)](0x1)]['build'];for(let aJ=0x0;aJ<aI['length'];aJ++){let aK=aI[aJ],aL=aE[aK['objectId']]['clone'](),aM=aK['transform'];aM&&aL['applyMatrix4'](aM),aG[bH(0x137)](aL);}return aG;}let aD=a3(a0);return aC(aA(aD),aD);}['addExtension'](Q){this['availableExtensions']['push'](Q);}};export{x as ThreeMFLoader};
1
+ const bG=k;(function(Q,R){const b8=k,S=Q();while(!![]){try{const T=-parseInt(b8(0x1c2))/0x1+parseInt(b8(0x1f5))/0x2+parseInt(b8(0x1e6))/0x3+-parseInt(b8(0x1c0))/0x4+-parseInt(b8(0x1d8))/0x5*(parseInt(b8(0x1b7))/0x6)+parseInt(b8(0x1c5))/0x7+parseInt(b8(0x1f9))/0x8;if(T===R)break;else S['push'](S['shift']());}catch(U){S['push'](S['shift']());}}}(j,0x3a79d));import{$ as q,C as w,Ct as z,E as A,Ft as B,H as C,K as D,U as E,at as F,et as G,f as H,l as I,ot as J,p,rt as K,st as L,u as M,w as N,wt as O}from'./three.module.js';import{t as P}from'./fflate.module.js';var b=O,x=class extends D{constructor(Q){const b9=k;super(Q),this[b9(0x1f0)]=[];}['load'](Q,R,S,T){const ba=k;let U=this,V=new w(U['manager']);V['setPath'](U['path']),V[ba(0x1c8)]('arraybuffer'),V[ba(0x1bd)](U['requestHeader']),V['setWithCredentials'](U['withCredentials']),V['load'](Q,function(W){try{R(U['parse'](W));}catch(X){T?T(X):console['error'](X),U['manager']['itemError'](Q);}},S,T);}['parse'](a0){let a1=this,a2=new B(this['manager']);function a3(aE){const bb=k;let aF=null,aG=null,aH,aI,aJ=[],aK=[],aL,aM={},aN={},aO={},aP=new TextDecoder();try{aF=P(new Uint8Array(aE));}catch(aT){if(aT instanceof ReferenceError)return console['error']('THREE.3MFLoader:\x20fflate\x20missing\x20and\x20file\x20is\x20compressed.'),null;}let aQ=null;for(aG in aF)aG[bb(0x1e9)](/\_rels\/.rels$/)?aH=aG:aG['match'](/3D\/_rels\/.*\.model\.rels$/)?aI=aG:aG['match'](/^3D\/[^\/]*\.model$/)?aQ=aG:aG[bb(0x1e9)](/^3D\/.*\/.*\.model$/)?aJ['push'](aG):aG['match'](/^3D\/Textures?\/.*/)&&aK['push'](aG);if(aJ['push'](aQ),aH===void 0x0)throw Error('THREE.ThreeMFLoader:\x20Cannot\x20find\x20relationship\x20file\x20`rels`\x20in\x203MF\x20archive.');let aR=aF[aH],aS=a4(aP['decode'](aR));if(aI){let aU=aF[aI];aL=a4(aP['decode'](aU));}for(let aV=0x0;aV<aJ[bb(0x1d4)];aV++){let aW=aJ[aV],aX=aF[aW],aY=aP['decode'](aX),aZ=new DOMParser()['parseFromString'](aY,bb(0x1ce));aZ['documentElement']['nodeName'][bb(0x1ea)]()!==bb(0x1d6)&&console['error']('THREE.3MFLoader:\x20Error\x20loading\x203MF\x20-\x20no\x203MF\x20document\x20found:\x20',aW);let b0=aZ['querySelector']('model'),b1={};for(let b3=0x0;b3<b0['attributes']['length'];b3++){let b4=b0['attributes'][b3];b4['name']['match'](/^xmlns:(.+)$/)&&(b1[b4['value']]=RegExp['$1']);}let b2=al(b0);b2['xml']=b0,0x0<Object['keys'](b1)['length']&&(b2[bb(0x1d2)]=b1),aM[aW]=b2;}for(let b5=0x0;b5<aK['length'];b5++){let b6=aK[b5];aO[b6]=aF[b6][bb(0x1f8)];}return{'rels':aS,'modelRels':aL,'model':aM,'printTicket':aN,'texture':aO};}function a4(aE){let aF=[],aG=new DOMParser()['parseFromString'](aE,'application/xml')['querySelectorAll']('Relationship');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ={'target':aI['getAttribute']('Target'),'id':aI['getAttribute']('Id'),'type':aI['getAttribute']('Type')};aF['push'](aJ);}return aF;}function a5(aE){const bc=k;let aF={};for(let aG=0x0;aG<aE[bc(0x1d4)];aG++){let aH=aE[aG],aI=aH['getAttribute']('name');0x0<=['Title','Designer','Description','Copyright',bc(0x1d0),'Rating',bc(0x1dc),'ModificationDate']['indexOf'](aI)&&(aF[aI]=aH['textContent']);}return aF;}function a6(aE){let aF={'id':aE['getAttribute']('id'),'basematerials':[]},aG=aE['querySelectorAll']('base');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ=ad(aI);aJ['index']=aH,aF['basematerials']['push'](aJ);}return aF;}function a7(aE){return{'id':aE['getAttribute']('id'),'path':aE['getAttribute']('path'),'contenttype':aE['getAttribute']('contenttype'),'tilestyleu':aE['getAttribute']('tilestyleu'),'tilestylev':aE['getAttribute']('tilestylev'),'filter':aE['getAttribute']('filter')};}function a8(aE){const bd=k;let aF={'id':aE['getAttribute']('id'),'texid':aE['getAttribute']('texid'),'displaypropertiesid':aE['getAttribute']('displaypropertiesid')},aG=aE['querySelectorAll'](bd(0x1ec)),aH=[];for(let aI=0x0;aI<aG['length'];aI++){let aJ=aG[aI],aK=aJ['getAttribute']('u'),aL=aJ[bd(0x1dd)]('v');aH['push'](parseFloat(aK),parseFloat(aL));}return aF['uvs']=new Float32Array(aH),aF;}function a9(aE){const be=k;let aF={'id':aE[be(0x1dd)]('id'),'displaypropertiesid':aE['getAttribute']('displaypropertiesid')},aG=aE['querySelectorAll']('color'),aH=[],aI=new p();for(let aJ=0x0;aJ<aG['length'];aJ++){let aK=aG[aJ]['getAttribute'](be(0x1f2));aI['setStyle'](aK[be(0x1cd)](0x0,0x7),b),aH['push'](aI['r'],aI['g'],aI['b']);}return aF[be(0x1f7)]=new Float32Array(aH),aF;}function aa(aE){const bf=k;let aF=aE['children'],aG={};for(let aH=0x0;aH<aF['length'];aH++){let aI={'type':aF[aH]['nodeName'][bf(0x1cd)](0x2)};for(let aJ=0x0;aJ<aF[aH]['attributes']['length'];aJ++){let aK=aF[aH][bf(0x1d7)][aJ];aK[bf(0x1bc)]&&(aI[aK['name']]=aK['value']);}aG[aF[aH]['getAttribute']('identifier')]=aI;}return aG;}function ab(aE){const bg=k;let aF={'id':aE['getAttribute']('id'),'displayname':aE['getAttribute'](bg(0x1d9))},aG=aE['children'],aH={};for(let aI=0x0;aI<aG['length'];aI++){let aJ=aG[aI];if(aJ[bg(0x1bf)]==='i:in'||aJ['nodeName']==='i:out')aH[aJ['nodeName']==='i:in'?'inputs':'outputs']=aa(aJ);else{let aK=aJ['children'],aL={'op':aJ['nodeName'][bg(0x1cd)](0x2),'identifier':aJ['getAttribute']('identifier')};for(let aM=0x0;aM<aK['length'];aM++)aL[aK[aM][bg(0x1bf)]['substring'](0x2)]=aa(aK[aM]);aH[aL['identifier']]=aL;}}return aF['operations']=aH,aF;}function ac(aE){const bh=k;let aF={'id':aE['getAttribute']('id')},aG=aE['querySelectorAll'](bh(0x1c1)),aH=[];for(let aI=0x0;aI<aG[bh(0x1d4)];aI++){let aJ=aG[aI];aH[bh(0x1be)]({'name':aJ['getAttribute']('name'),'metallicness':parseFloat(aJ['getAttribute']('metallicness')),'roughness':parseFloat(aJ['getAttribute']('roughness'))});}return aF['data']=aH,aF;}function ad(aE){const bi=k;let aF={};return aF['name']=aE['getAttribute'](bi(0x1eb)),aF['displaycolor']=aE['getAttribute']('displaycolor'),aF['displaypropertiesid']=aE['getAttribute']('displaypropertiesid'),aF;}function ae(aE){const bj=k;let aF={},aG=[],aH=aE['querySelectorAll']('vertices\x20vertex');for(let aL=0x0;aL<aH['length'];aL++){let aM=aH[aL],aN=aM['getAttribute']('x'),aO=aM[bj(0x1dd)]('y'),aP=aM['getAttribute']('z');aG['push'](parseFloat(aN),parseFloat(aO),parseFloat(aP));}aF['vertices']=new Float32Array(aG);let aI=[],aJ=[],aK=aE['querySelectorAll'](bj(0x1ca));for(let aQ=0x0;aQ<aK[bj(0x1d4)];aQ++){let aR=aK[aQ],aS=aR['getAttribute']('v1'),aT=aR['getAttribute']('v2'),aU=aR['getAttribute']('v3'),aV=aR['getAttribute']('p1'),aW=aR[bj(0x1dd)]('p2'),aX=aR[bj(0x1dd)]('p3'),aY=aR['getAttribute'](bj(0x1da)),aZ={};aZ['v1']=parseInt(aS,0xa),aZ['v2']=parseInt(aT,0xa),aZ['v3']=parseInt(aU,0xa),aJ['push'](aZ['v1'],aZ['v2'],aZ['v3']),aV&&(aZ['p1']=parseInt(aV,0xa)),aW&&(aZ['p2']=parseInt(aW,0xa)),aX&&(aZ['p3']=parseInt(aX,0xa)),aY&&(aZ['pid']=aY),0x0<Object[bj(0x1e0)](aZ)['length']&&aI['push'](aZ);}return aF['triangleProperties']=aI,aF['triangles']=new Uint32Array(aJ),aF;}function af(aE){const bk=k;let aF=[],aG=aE['querySelectorAll']('component');for(let aH=0x0;aH<aG[bk(0x1d4)];aH++){let aI=aG[aH],aJ=ag(aI);aF['push'](aJ);}return aF;}function ag(aE){let aF={};aF['objectId']=aE['getAttribute']('objectid');let aG=aE['getAttribute']('transform');return aG&&(aF['transform']=ah(aG)),aF;}function ah(aE){const bl=k;let aF=[];aE['split']('\x20')['forEach'](function(aH){aF['push'](parseFloat(aH));});let aG=new q();return aG[bl(0x1e1)](aF[0x0],aF[0x3],aF[0x6],aF[0x9],aF[0x1],aF[0x4],aF[0x7],aF[0xa],aF[0x2],aF[0x5],aF[0x8],aF[0xb],0x0,0x0,0x0,0x1),aG;}function ai(aE){const bm=k;let aF={'type':aE['getAttribute']('type')},aG=aE['getAttribute']('id');aG&&(aF['id']=aG);let aH=aE['getAttribute'](bm(0x1da));aH&&(aF['pid']=aH);let aI=aE['getAttribute']('pindex');aI&&(aF['pindex']=aI);let aJ=aE['getAttribute']('thumbnail');aJ&&(aF['thumbnail']=aJ);let aK=aE['getAttribute']('partnumber');aK&&(aF[bm(0x1c9)]=aK);let aL=aE['getAttribute']('name');aL&&(aF[bm(0x1eb)]=aL);let aM=aE[bm(0x1b8)](bm(0x1e8));aM&&(aF['mesh']=ae(aM));let aN=aE['querySelector']('components');return aN&&(aF[bm(0x1c7)]=af(aN)),aF;}function aj(aE){const bn=k;let aF={};aF[bn(0x1c4)]={};let aG=aE['querySelectorAll'](bn(0x1c4));for(let aN=0x0;aN<aG['length'];aN++){let aO=aG[aN],aP=a6(aO);aF['basematerials'][aP['id']]=aP;}aF[bn(0x1f3)]={};let aH=aE[bn(0x1cb)]('texture2d');for(let aQ=0x0;aQ<aH['length'];aQ++){let aR=aH[aQ],aS=a7(aR);aF['texture2d'][aS['id']]=aS;}aF['colorgroup']={};let aI=aE['querySelectorAll'](bn(0x1cc));for(let aT=0x0;aT<aI['length'];aT++){let aU=aI[aT],aV=a9(aU);aF['colorgroup'][aV['id']]=aV;}let aJ=aE['querySelectorAll']('implicitfunction');aJ['length']>0x0&&(aF['implicitfunction']={});for(let aW=0x0;aW<aJ['length'];aW++){let aX=aJ[aW],aY=ab(aX);aF[bn(0x1e7)][aY['id']]=aY;}aF['pbmetallicdisplayproperties']={};let aK=aE['querySelectorAll']('pbmetallicdisplayproperties');for(let aZ=0x0;aZ<aK['length'];aZ++){let b0=aK[aZ],b1=ac(b0);aF['pbmetallicdisplayproperties'][b1['id']]=b1;}aF[bn(0x1e5)]={};let aL=aE['querySelectorAll']('texture2dgroup');for(let b2=0x0;b2<aL['length'];b2++){let b3=aL[b2],b4=a8(b3);aF['texture2dgroup'][b4['id']]=b4;}aF['object']={};let aM=aE[bn(0x1cb)]('object');for(let b5=0x0;b5<aM['length'];b5++){let b6=aM[b5],b7=ai(b6);aF['object'][b7['id']]=b7;}return aF;}function ak(aE){const bo=k;let aF=[],aG=aE[bo(0x1cb)]('item');for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ={'objectId':aI['getAttribute'](bo(0x1bb))},aK=aI['getAttribute']('transform');aK&&(aJ['transform']=ah(aK)),aF[bo(0x1be)](aJ);}return aF;}function al(aE){const bp=k;let aF={'unit':aE[bp(0x1dd)]('unit')||'millimeter'},aG=aE['querySelectorAll'](bp(0x1d5));aG&&(aF['metadata']=a5(aG));let aH=aE['querySelector']('resources');aH&&(aF['resources']=aj(aH));let aI=aE['querySelector']('build');return aI&&(aF[bp(0x1c3)]=ak(aI)),aF;}function am(aE,aF,aG,aH){const bq=k;let aI=aE['texid'],aJ=aG['resources'][bq(0x1f3)][aI];if(aJ){let aK=aH[aJ['path']],aL=aJ['contenttype'],aM=new Blob([aK],{'type':aL}),aN=URL[bq(0x1f1)](aM),aO=a2['load'](aN,function(){URL['revokeObjectURL'](aN);});switch(aO['colorSpace']=b,aJ['tilestyleu']){case'wrap':aO['wrapS']=z;break;case'mirror':aO[bq(0x1ef)]=J;break;case'none':case bq(0x1e2):aO['wrapS']=H;break;default:aO['wrapS']=z;}switch(aJ[bq(0x1b9)]){case'wrap':aO['wrapT']=z;break;case'mirror':aO['wrapT']=J;break;case'none':case'clamp':aO['wrapT']=H;break;default:aO['wrapT']=z;}switch(aJ['filter']){case'auto':aO[bq(0x1c6)]=C,aO['minFilter']=E;break;case'linear':aO['magFilter']=C,aO['minFilter']=C,aO['generateMipmaps']=!0x1;break;case'nearest':aO['magFilter']=L,aO[bq(0x1db)]=L,aO['generateMipmaps']=!0x1;break;default:aO['magFilter']=C,aO['minFilter']=E;}return aO;}else return null;}function an(aE,aF,aG,aH,aI,aJ,aK){const br=k;let aL=aK['pindex'],aM={};for(let aP=0x0,aQ=aF['length'];aP<aQ;aP++){let aR=aF[aP],aS=aR['p1']===void 0x0?aL:aR['p1'];aM[aS]===void 0x0&&(aM[aS]=[]),aM[aS]['push'](aR);}let aN=Object['keys'](aM),aO=[];for(let aT=0x0,aU=aN['length'];aT<aU;aT++){let aV=aN[aT],aW=aM[aV],aX=aE[br(0x1c4)][aV],aY=aw(aX,aH,aI,aJ,aK,ax),aZ=new M(),b0=[],b1=aG['vertices'];for(let b3=0x0,b4=aW['length'];b3<b4;b3++){let b5=aW[b3];b0['push'](b1[b5['v1']*0x3+0x0]),b0['push'](b1[b5['v1']*0x3+0x1]),b0['push'](b1[b5['v1']*0x3+0x2]),b0['push'](b1[b5['v2']*0x3+0x0]),b0[br(0x1be)](b1[b5['v2']*0x3+0x1]),b0[br(0x1be)](b1[b5['v2']*0x3+0x2]),b0[br(0x1be)](b1[b5['v3']*0x3+0x0]),b0['push'](b1[b5['v3']*0x3+0x1]),b0['push'](b1[b5['v3']*0x3+0x2]);}aZ['setAttribute'](br(0x1df),new N(b0,0x3));let b2=new G(aZ,aY);aO['push'](b2);}return aO;}function ao(aE,aF,aG,aH,aI,aJ,aK){const bs=k;let aL=new M(),aM=[],aN=[],aO=aG[bs(0x1d3)],aP=aE[bs(0x1d1)];for(let aQ=0x0,aR=aF['length'];aQ<aR;aQ++){let aS=aF[aQ];aM['push'](aO[aS['v1']*0x3+0x0]),aM[bs(0x1be)](aO[aS['v1']*0x3+0x1]),aM['push'](aO[aS['v1']*0x3+0x2]),aM['push'](aO[aS['v2']*0x3+0x0]),aM['push'](aO[aS['v2']*0x3+0x1]),aM['push'](aO[aS['v2']*0x3+0x2]),aM['push'](aO[aS['v3']*0x3+0x0]),aM['push'](aO[aS['v3']*0x3+0x1]),aM['push'](aO[aS['v3']*0x3+0x2]),aN['push'](aP[aS['p1']*0x2+0x0]),aN[bs(0x1be)](aP[aS['p1']*0x2+0x1]),aN[bs(0x1be)](aP[aS['p2']*0x2+0x0]),aN[bs(0x1be)](aP[aS['p2']*0x2+0x1]),aN[bs(0x1be)](aP[aS['p3']*0x2+0x0]),aN['push'](aP[aS['p3']*0x2+0x1]);}return aL['setAttribute'](bs(0x1df),new N(aM,0x3)),aL['setAttribute']('uv',new N(aN,0x2)),new G(aL,new K({'map':aw(aE,aH,aI,aJ,aK,am),'flatShading':!0x0}));}function ap(aE,aF,aG,aH){const bt=k;let aI=new M(),aJ=[],aK=[],aL=aG['vertices'],aM=aE['colors'];for(let aN=0x0,aO=aF['length'];aN<aO;aN++){let aP=aF[aN],aQ=aP['v1'],aR=aP['v2'],aS=aP['v3'];aJ['push'](aL[aQ*0x3+0x0]),aJ['push'](aL[aQ*0x3+0x1]),aJ['push'](aL[aQ*0x3+0x2]),aJ[bt(0x1be)](aL[aR*0x3+0x0]),aJ['push'](aL[aR*0x3+0x1]),aJ['push'](aL[aR*0x3+0x2]),aJ[bt(0x1be)](aL[aS*0x3+0x0]),aJ['push'](aL[aS*0x3+0x1]),aJ['push'](aL[aS*0x3+0x2]);let aT=aP['p1']===void 0x0?aH['pindex']:aP['p1'],aU=aP['p2']===void 0x0?aT:aP['p2'],aV=aP['p3']===void 0x0?aT:aP['p3'];aK['push'](aM[aT*0x3+0x0]),aK['push'](aM[aT*0x3+0x1]),aK['push'](aM[aT*0x3+0x2]),aK['push'](aM[aU*0x3+0x0]),aK['push'](aM[aU*0x3+0x1]),aK['push'](aM[aU*0x3+0x2]),aK['push'](aM[aV*0x3+0x0]),aK[bt(0x1be)](aM[aV*0x3+0x1]),aK[bt(0x1be)](aM[aV*0x3+0x2]);}return aI['setAttribute']('position',new N(aJ,0x3)),aI[bt(0x1ee)](bt(0x1f2),new N(aK,0x3)),new G(aI,new K({'vertexColors':!0x0,'flatShading':!0x0}));}function aq(aE){const bu=k;let aF=new M();return aF['setIndex'](new I(aE['triangles'],0x1)),aF['setAttribute']('position',new I(aE[bu(0x1d3)],0x3)),new G(aF,new K({'name':D['DEFAULT_MATERIAL_NAME'],'color':0xffffff,'flatShading':!0x0}));}function ar(aE,aF,aG,aH,aI,aJ){const bv=k;let aK=Object['keys'](aE),aL=[];for(let aM=0x0,aN=aK['length'];aM<aN;aM++){let aO=aK[aM],aP=aE[aO];switch(as(aO,aH)){case'material':let aQ=aH['resources']['basematerials'][aO],aR=an(aQ,aP,aF,aG,aH,aI,aJ);for(let aU=0x0,aV=aR['length'];aU<aV;aU++)aL['push'](aR[aU]);break;case bv(0x1b6):let aS=aH['resources'][bv(0x1e5)][aO];aL['push'](ao(aS,aP,aF,aG,aH,aI,aJ));break;case'vertexColors':let aT=aH[bv(0x1f4)][bv(0x1cc)][aO];aL['push'](ap(aT,aP,aF,aJ));break;case bv(0x1e4):aL['push'](aq(aF));break;default:console['error']('THREE.3MFLoader:\x20Unsupported\x20resource\x20type.');}}if(aJ['name']){for(let aW=0x0;aW<aL['length'];aW++)aL[aW]['name']=aJ['name'];}return aL;}function as(aE,aF){const bw=k;if(aF['resources'][bw(0x1e5)][aE]!==void 0x0)return'texture';if(aF[bw(0x1f4)]['basematerials'][aE]!==void 0x0)return bw(0x1ba);if(aF['resources'][bw(0x1cc)][aE]!==void 0x0)return'vertexColors';if(aE==='default')return'default';}function at(aE,aF){const bx=k;let aG={},aH=aE['triangleProperties'],aI=aF['pid'];for(let aJ=0x0,aK=aH[bx(0x1d4)];aJ<aK;aJ++){let aL=aH[aJ],aM=aL['pid']===void 0x0?aI:aL[bx(0x1da)];aM===void 0x0&&(aM='default'),aG[aM]===void 0x0&&(aG[aM]=[]),aG[aM]['push'](aL);}return aG;}function au(aE,aF,aG,aH,aI){const by=k;let aJ=new A(),aK=ar(at(aE,aI),aE,aF,aG,aH,aI);for(let aL=0x0,aM=aK[by(0x1d4)];aL<aM;aL++)aJ['add'](aK[aL]);return aJ;}function av(aE,aF,aG){const bz=k;if(!aE)return;let aH=[],aI=Object['keys'](aE);for(let aJ=0x0;aJ<aI['length'];aJ++){let aK=aI[aJ];for(let aL=0x0;aL<a1['availableExtensions'][bz(0x1d4)];aL++){let aM=a1['availableExtensions'][aL];aM['ns']===aK&&aH['push'](aM);}}for(let aN=0x0;aN<aH['length'];aN++){let aO=aH[aN];aO['apply'](aG,aE[aO['ns']],aF);}}function aw(aE,aF,aG,aH,aI,aJ){return aE['build']===void 0x0&&(aE['build']=aJ(aE,aF,aG,aH,aI)),aE['build'];}function ax(aE,aF,aG){const bA=k;let aH,aI=aE['displaypropertiesid'],aJ=aG['resources']['pbmetallicdisplayproperties'];if(aI!==null&&aJ[aI]!==void 0x0){let aM=aJ[aI]['data'][aE['index']];aH=new F({'flatShading':!0x0,'roughness':aM['roughness'],'metalness':aM['metallicness']});}else aH=new K({'flatShading':!0x0});aH['name']=aE['name'];let aK=aE['displaycolor'],aL=aK[bA(0x1cd)](0x0,0x7);return aH[bA(0x1f2)]['setStyle'](aL,b),aK[bA(0x1d4)]===0x9&&(aH['opacity']=parseInt(aK['charAt'](0x7)+aK['charAt'](0x8),0x10)/0xff),aH;}function ay(aE,aF,aG,aH){const bB=k;let aI=new A();for(let aJ=0x0;aJ<aE['length'];aJ++){let aK=aE[aJ],aL=aF[aK[bB(0x1f6)]];aL===void 0x0&&(az(aK['objectId'],aF,aG,aH),aL=aF[aK['objectId']]);let aM=aL[bB(0x1ed)](),aN=aK['transform'];aN&&aM['applyMatrix4'](aN),aI['add'](aM);}return aI;}function az(aE,aF,aG,aH){const bC=k;let aI=aG['resources']['object'][aE];if(aI['mesh']){let aJ=aI['mesh'],aK=aG['extensions'],aL=aG['xml'];av(aK,aJ,aL),aF[aI['id']]=aw(aJ,aF,aG,aH,aI,au);}else{let aM=aI[bC(0x1c7)];aF[aI['id']]=aw(aM,aF,aG,aH,aI,ay);}aI['name']&&(aF[aI['id']]['name']=aI['name']),aG['resources']['implicitfunction']&&console['warn']('THREE.ThreeMFLoader:\x20Implicit\x20Functions\x20are\x20implemented\x20in\x20data-only.',aG['resources']['implicitfunction']);}function aA(aE){const bD=k;let aF=aE['model'],aG=aE['modelRels'],aH={},aI=Object['keys'](aF),aJ={};if(aG)for(let aK=0x0,aL=aG[bD(0x1d4)];aK<aL;aK++){let aM=aG[aK],aN=aM['target']['substring'](0x1);aE['texture'][aN]&&(aJ[aM['target']]=aE['texture'][aN]);}for(let aO=0x0;aO<aI['length'];aO++){let aP=aF[aI[aO]],aQ=Object[bD(0x1e0)](aP['resources']['object']);for(let aR=0x0;aR<aQ['length'];aR++){let aS=aQ[aR];az(aS,aH,aP,aJ);}}return aH;}function aB(aE){const bE=k;for(let aF=0x0;aF<aE['length'];aF++){let aG=aE[aF];if(aG['target']['split']('.')[bE(0x1de)]()['toLowerCase']()==='model')return aG;}}function aC(aE,aF){const bF=k;let aG=new A(),aH=aB(aF['rels']),aI=aF['model'][aH['target']['substring'](0x1)][bF(0x1c3)];for(let aJ=0x0;aJ<aI[bF(0x1d4)];aJ++){let aK=aI[aJ],aL=aE[aK['objectId']]['clone'](),aM=aK['transform'];aM&&aL[bF(0x1cf)](aM),aG['add'](aL);}return aG;}let aD=a3(a0);return aC(aA(aD),aD);}[bG(0x1e3)](Q){this['availableExtensions']['push'](Q);}};export{x as ThreeMFLoader};function k(a,b){a=a-0x1b6;const c=j();let d=c[a];return d;}function j(){const bH=['match','toLowerCase','name','tex2coord','clone','setAttribute','wrapS','availableExtensions','createObjectURL','color','texture2d','resources','914252QLwHvL','objectId','colors','buffer','351272WtgFCA','texture','853014hTErbF','querySelector','tilestylev','material','objectid','specified','setRequestHeader','push','nodeName','776980BzzqHr','pbmetallic','143976pgTuLt','build','basematerials','62748SSSvjm','magFilter','components','setResponseType','partnumber','triangles\x20triangle','querySelectorAll','colorgroup','substring','application/xml','applyMatrix4','LicenseTerms','uvs','extensions','vertices','length','metadata','model','attributes','5cTRACL','displayname','pid','minFilter','CreationDate','getAttribute','pop','position','keys','set','clamp','addExtension','default','texture2dgroup','629724olMoCQ','implicitfunction','mesh'];j=function(){return bH;};return j();}
@@ -1 +1 @@
1
- (function(v,w){const ac=d,x=v();while(!![]){try{const y=-parseInt(ac(0x20c))/0x1*(parseInt(ac(0x1f4))/0x2)+parseInt(ac(0x20b))/0x3*(-parseInt(ac(0x215))/0x4)+-parseInt(ac(0x1f8))/0x5*(-parseInt(ac(0x1fd))/0x6)+-parseInt(ac(0x219))/0x7*(-parseInt(ac(0x1f6))/0x8)+-parseInt(ac(0x216))/0x9+-parseInt(ac(0x1f1))/0xa*(parseInt(ac(0x1fe))/0xb)+-parseInt(ac(0x209))/0xc*(-parseInt(ac(0x20a))/0xd);if(y===w)break;else x['push'](x['shift']());}catch(z){x['push'](x['shift']());}}}(b,0xa022a));function d(a,c){a=a-0x1f1;const e=b();let f=e[a];return f;}import{C as f,E as g,K as h,et as j,p as k,rt as m,u as p,w as q}from'./three.module.js';import{t as u}from'./fflate.module.js';var l=class extends h{constructor(v){super(v);}['load'](v,w,x,y){const ad=d;let z=this,A=new f(z['manager']);A['setPath'](z[ad(0x204)]),A['setResponseType']('arraybuffer'),A[ad(0x201)](z['requestHeader']),A['setWithCredentials'](z['withCredentials']),A['load'](v,function(B){try{w(z['parse'](B));}catch(C){y?y(C):console['error'](C),z['manager']['itemError'](v);}},x,y);}['parse'](z){const al=d;function A(W){const ae=d;let X=new DataView(W);if(String['fromCharCode'](X['getUint8'](0x0),X['getUint8'](0x1))==='PK'){let a0=null,a1=null;console['log'](ae(0x20f));try{a0=u(new Uint8Array(W));}catch(a2){if(a2 instanceof ReferenceError)return console[ae(0x207)]('THREE.AMFLoader:\x20fflate\x20missing\x20and\x20file\x20is\x20compressed.'),null;}for(a1 in a0)if(a1['toLowerCase']()['slice'](-0x4)==='.amf')break;console['log']('THREE.AMFLoader:\x20Trying\x20to\x20load\x20file\x20asset:\x20'+a1),X=new DataView(a0[a1][ae(0x21e)]);}let Y=new TextDecoder()['decode'](X),Z=new DOMParser()['parseFromString'](Y,'application/xml');return Z['documentElement']['nodeName']['toLowerCase']()==='amf'?Z:(console['log']('THREE.AMFLoader:\x20Error\x20loading\x20AMF\x20-\x20no\x20AMF\x20document\x20found.'),null);}function B(W){const af=d;let X=0x1,Y='millimeter';W['documentElement']['attributes']['unit']!==void 0x0&&(Y=W['documentElement']['attributes'][af(0x214)]['value']['toLowerCase']());let Z={'millimeter':0x1,'inch':25.4,'feet':304.8,'meter':0x3e8,'micron':0.001};return Z[Y]!==void 0x0&&(X=Z[Y]),console['log'](af(0x208)+X),X;}function D(W){const ag=d;let X='AMF\x20Material',Y=W['attributes']['id']['textContent'],Z={'r':0x1,'g':0x1,'b':0x1,'a':0x1},a0=null;for(let a1=0x0;a1<W['childNodes']['length'];a1++){let a2=W['childNodes'][a1];a2['nodeName']==='metadata'&&a2['attributes']['type']!==void 0x0?a2['attributes']['type']['value']==='name'&&(X=a2['textContent']):a2['nodeName']==='color'&&(Z=F(a2));}return a0=new m({'flatShading':!0x0,'color':new k(Z['r'],Z['g'],Z['b']),'name':X}),Z['a']!==0x1&&(a0['transparent']=!0x0,a0[ag(0x200)]=Z['a']),{'id':Y,'material':a0};}function F(W){const ah=d;let X={'r':0x1,'g':0x1,'b':0x1,'a':0x1};for(let Y=0x0;Y<W['childNodes']['length'];Y++){let Z=W['childNodes'][Y];Z['nodeName']==='r'?X['r']=Z['textContent']:Z['nodeName']==='g'?X['g']=Z['textContent']:Z[ah(0x20d)]==='b'?X['b']=Z['textContent']:Z['nodeName']==='a'&&(X['a']=Z['textContent']);}return X;}function G(W){const ai=d;let X={'name':'','triangles':[],'materialId':null},Y=W['firstElementChild'];for(W['attributes'][ai(0x21a)]!==void 0x0&&(X['materialId']=W['attributes']['materialid']['nodeValue']);Y;){if(Y['nodeName']===ai(0x1fc))Y['attributes']['type']!==void 0x0&&Y['attributes']['type'][ai(0x210)]==='name'&&(X['name']=Y['textContent']);else{if(Y[ai(0x20d)]==='triangle'){let Z=Y[ai(0x206)]('v1')[0x0]['textContent'],a0=Y[ai(0x206)]('v2')[0x0]['textContent'],a1=Y['getElementsByTagName']('v3')[0x0]['textContent'];X['triangles']['push'](Z,a0,a1);}}Y=Y['nextElementSibling'];}return X;}function H(W){const aj=d;let X=[],Y=[],Z=W['firstElementChild'];for(;Z;){if(Z[aj(0x20d)]===aj(0x20e)){let a0=Z['firstElementChild'];for(;a0;){if(a0[aj(0x20d)]==='coordinates'){let a1=a0[aj(0x206)]('x')[0x0][aj(0x21b)],a2=a0['getElementsByTagName']('y')[0x0][aj(0x21b)],a3=a0[aj(0x206)]('z')[0x0]['textContent'];X['push'](a1,a2,a3);}else{if(a0[aj(0x20d)]==='normal'){let a4=a0['getElementsByTagName']('nx')[0x0]['textContent'],a5=a0['getElementsByTagName']('ny')[0x0]['textContent'],a6=a0['getElementsByTagName']('nz')[0x0]['textContent'];Y[aj(0x205)](a4,a5,a6);}}a0=a0['nextElementSibling'];}}Z=Z['nextElementSibling'];}return{'vertices':X,'normals':Y};}function I(W){const ak=d;let X=W['attributes']['id']['textContent'],Y={'name':'amfobject','meshes':[]},Z=null,a0=W['firstElementChild'];for(;a0;){if(a0['nodeName']==='metadata')a0['attributes']['type']!==void 0x0&&a0['attributes']['type']['value']==='name'&&(Y[ak(0x202)]=a0[ak(0x21b)]);else{if(a0['nodeName']===ak(0x217))Z=F(a0);else{if(a0['nodeName']===ak(0x218)){let a1=a0[ak(0x213)],a2={'vertices':[],'normals':[],'volumes':[],'color':Z};for(;a1;){if(a1['nodeName']==='vertices'){let a3=H(a1);a2['normals']=a2['normals']['concat'](a3[ak(0x212)]),a2['vertices']=a2['vertices']['concat'](a3['vertices']);}else a1['nodeName']===ak(0x1f9)&&a2['volumes']['push'](G(a1));a1=a1['nextElementSibling'];}Y[ak(0x1fa)][ak(0x205)](a2);}}}a0=a0['nextElementSibling'];}return{'id':X,'obj':Y};}let J=A(z),K='',L='',M=B(J),N={},O={},P=J['documentElement'][al(0x203)],Q,R;for(Q=0x0;Q<P['length'];Q++){let W=P[Q];if(W['nodeName']==='metadata')W['attributes']['type']!==void 0x0&&(W['attributes'][al(0x21c)]['value']===al(0x202)?K=W['textContent']:W['attributes']['type']['value']==='author'&&(L=W['textContent']));else{if(W['nodeName']==='material'){let X=D(W);N[X['id']]=X['material'];}else{if(W['nodeName']==='object'){let Y=I(W);O[Y['id']]=Y['obj'];}}}}let U=new g(),V=new m({'name':h['DEFAULT_MATERIAL_NAME'],'color':0xaaaaff,'flatShading':!0x0});U[al(0x202)]=K,U['userData'][al(0x21d)]=L,U['userData'][al(0x1fb)]='AMF';for(let Z in O){let a0=O[Z],a1=a0[al(0x1fa)],a2=new g();for(a2['name']=a0[al(0x202)]||'',Q=0x0;Q<a1[al(0x211)];Q++){let a3=V,a4=a1[Q],a5=new q(a4['vertices'],0x3),a6=null;if(a4[al(0x212)]['length']&&(a6=new q(a4['normals'],0x3)),a4['color']){let a8=a4['color'];a3=V['clone'](),a3['color']=new k(a8['r'],a8['g'],a8['b']),a8['a']!==0x1&&(a3[al(0x1f7)]=!0x0,a3['opacity']=a8['a']);}let a7=a4['volumes'];for(R=0x0;R<a7[al(0x211)];R++){let a9=a7[R],aa=new p(),ab=a3;aa['setIndex'](a9['triangles']),aa['setAttribute'](al(0x1f5),a5['clone']()),a6&&aa[al(0x1ff)](al(0x1f3),a6[al(0x1f2)]()),N[a9['materialId']]!==void 0x0&&(ab=N[a9['materialId']]),aa['scale'](M,M,M),a2['add'](new j(aa,ab['clone']()));}}U['add'](a2);}return U;}};function b(){const am=['color','mesh','245RqjaHW','materialid','textContent','type','author','buffer','3696050UTlJDm','clone','normal','643154xeFDSD','position','280744rMvMEZ','transparent','5foldSY','volume','meshes','loader','metadata','7413396uPJOnV','11mVVMsV','setAttribute','opacity','setRequestHeader','name','childNodes','path','push','getElementsByTagName','log','THREE.AMFLoader:\x20Unit\x20scale:\x20','12PwPwwl','14127334luFIqJ','2655831PPzbLp','3LyjjnQ','nodeName','vertex','THREE.AMFLoader:\x20Loading\x20Zip','value','length','normals','firstElementChild','unit','4BGjtQN','6075108aKLhmt'];b=function(){return am;};return b();}export{l as AMFLoader};
1
+ function b(){const an=['293424MxVgGT','THREE.AMFLoader:\x20Error\x20loading\x20AMF\x20-\x20no\x20AMF\x20document\x20found.','getElementsByTagName','value','35TNCiJz','materialid','vertices','textContent','clone','57144pZgTGR','AMF\x20Material','40qqenlh','784432AOjITr','vertex','nextElementSibling','51AGIztp','attributes','author','amf','transparent','type','metadata','concat','2586960zXgnMV','unit','879137pFsfrY','error','807840enEryZ','obj','21676XiJRKS','nodeValue','manager','volume','setIndex','48RaAOkf','nodeName','decode','209KSBUbE'];b=function(){return an;};return b();}(function(v,w){const ac=d,x=v();while(!![]){try{const y=parseInt(ac(0x19a))/0x1+-parseInt(ac(0x1ae))/0x2*(parseInt(ac(0x1b4))/0x3)+-parseInt(ac(0x19c))/0x4*(-parseInt(ac(0x1a9))/0x5)+parseInt(ac(0x1a1))/0x6*(parseInt(ac(0x198))/0x7)+-parseInt(ac(0x1b1))/0x8+-parseInt(ac(0x196))/0x9*(parseInt(ac(0x1b0))/0xa)+parseInt(ac(0x1a4))/0xb*(parseInt(ac(0x1a5))/0xc);if(y===w)break;else x['push'](x['shift']());}catch(z){x['push'](x['shift']());}}}(b,0x8dfaf));function d(a,c){a=a-0x190;const e=b();let f=e[a];return f;}import{C as f,E as g,K as h,et as j,p as k,rt as m,u as p,w as q}from'./three.module.js';import{t as u}from'./fflate.module.js';var l=class extends h{constructor(v){super(v);}['load'](v,w,x,y){const ad=d;let z=this,A=new f(z[ad(0x19e)]);A['setPath'](z['path']),A['setResponseType']('arraybuffer'),A['setRequestHeader'](z['requestHeader']),A['setWithCredentials'](z['withCredentials']),A['load'](v,function(B){const ae=ad;try{w(z['parse'](B));}catch(C){y?y(C):console[ae(0x199)](C),z['manager']['itemError'](v);}},x,y);}['parse'](z){const am=d;function A(W){const af=d;let X=new DataView(W);if(String['fromCharCode'](X['getUint8'](0x0),X['getUint8'](0x1))==='PK'){let a0=null,a1=null;console['log']('THREE.AMFLoader:\x20Loading\x20Zip');try{a0=u(new Uint8Array(W));}catch(a2){if(a2 instanceof ReferenceError)return console['log']('THREE.AMFLoader:\x20fflate\x20missing\x20and\x20file\x20is\x20compressed.'),null;}for(a1 in a0)if(a1['toLowerCase']()['slice'](-0x4)==='.amf')break;console['log']('THREE.AMFLoader:\x20Trying\x20to\x20load\x20file\x20asset:\x20'+a1),X=new DataView(a0[a1]['buffer']);}let Y=new TextDecoder()[af(0x1a3)](X),Z=new DOMParser()['parseFromString'](Y,'application/xml');return Z['documentElement'][af(0x1a2)]['toLowerCase']()===af(0x191)?Z:(console['log'](af(0x1a6)),null);}function B(W){const ag=d;let X=0x1,Y='millimeter';W['documentElement']['attributes'][ag(0x197)]!==void 0x0&&(Y=W['documentElement']['attributes']['unit'][ag(0x1a8)]['toLowerCase']());let Z={'millimeter':0x1,'inch':25.4,'feet':304.8,'meter':0x3e8,'micron':0.001};return Z[Y]!==void 0x0&&(X=Z[Y]),console['log']('THREE.AMFLoader:\x20Unit\x20scale:\x20'+X),X;}function D(W){const ah=d;let X=ah(0x1af),Y=W['attributes']['id']['textContent'],Z={'r':0x1,'g':0x1,'b':0x1,'a':0x1},a0=null;for(let a1=0x0;a1<W['childNodes']['length'];a1++){let a2=W['childNodes'][a1];a2['nodeName']===ah(0x194)&&a2['attributes'][ah(0x193)]!==void 0x0?a2['attributes']['type']['value']==='name'&&(X=a2['textContent']):a2['nodeName']==='color'&&(Z=F(a2));}return a0=new m({'flatShading':!0x0,'color':new k(Z['r'],Z['g'],Z['b']),'name':X}),Z['a']!==0x1&&(a0[ah(0x192)]=!0x0,a0['opacity']=Z['a']),{'id':Y,'material':a0};}function F(W){const ai=d;let X={'r':0x1,'g':0x1,'b':0x1,'a':0x1};for(let Y=0x0;Y<W['childNodes']['length'];Y++){let Z=W['childNodes'][Y];Z['nodeName']==='r'?X['r']=Z['textContent']:Z['nodeName']==='g'?X['g']=Z['textContent']:Z['nodeName']==='b'?X['b']=Z[ai(0x1ac)]:Z[ai(0x1a2)]==='a'&&(X['a']=Z['textContent']);}return X;}function G(W){const aj=d;let X={'name':'','triangles':[],'materialId':null},Y=W['firstElementChild'];for(W[aj(0x1b5)]['materialid']!==void 0x0&&(X['materialId']=W['attributes'][aj(0x1aa)][aj(0x19d)]);Y;){if(Y['nodeName']==='metadata')Y[aj(0x1b5)]['type']!==void 0x0&&Y['attributes']['type']['value']==='name'&&(X['name']=Y['textContent']);else{if(Y['nodeName']==='triangle'){let Z=Y['getElementsByTagName']('v1')[0x0][aj(0x1ac)],a0=Y['getElementsByTagName']('v2')[0x0][aj(0x1ac)],a1=Y['getElementsByTagName']('v3')[0x0]['textContent'];X['triangles']['push'](Z,a0,a1);}}Y=Y['nextElementSibling'];}return X;}function H(W){const ak=d;let X=[],Y=[],Z=W['firstElementChild'];for(;Z;){if(Z['nodeName']===ak(0x1b2)){let a0=Z['firstElementChild'];for(;a0;){if(a0['nodeName']==='coordinates'){let a1=a0['getElementsByTagName']('x')[0x0]['textContent'],a2=a0['getElementsByTagName']('y')[0x0]['textContent'],a3=a0[ak(0x1a7)]('z')[0x0]['textContent'];X['push'](a1,a2,a3);}else{if(a0['nodeName']==='normal'){let a4=a0['getElementsByTagName']('nx')[0x0]['textContent'],a5=a0[ak(0x1a7)]('ny')[0x0]['textContent'],a6=a0[ak(0x1a7)]('nz')[0x0]['textContent'];Y['push'](a4,a5,a6);}}a0=a0['nextElementSibling'];}}Z=Z[ak(0x1b3)];}return{'vertices':X,'normals':Y};}function I(W){const al=d;let X=W['attributes']['id'][al(0x1ac)],Y={'name':'amfobject','meshes':[]},Z=null,a0=W['firstElementChild'];for(;a0;){if(a0['nodeName']==='metadata')a0['attributes']['type']!==void 0x0&&a0['attributes']['type']['value']==='name'&&(Y['name']=a0['textContent']);else{if(a0['nodeName']==='color')Z=F(a0);else{if(a0['nodeName']==='mesh'){let a1=a0['firstElementChild'],a2={'vertices':[],'normals':[],'volumes':[],'color':Z};for(;a1;){if(a1[al(0x1a2)]==='vertices'){let a3=H(a1);a2['normals']=a2['normals'][al(0x195)](a3['normals']),a2['vertices']=a2['vertices']['concat'](a3['vertices']);}else a1['nodeName']===al(0x19f)&&a2['volumes']['push'](G(a1));a1=a1['nextElementSibling'];}Y['meshes']['push'](a2);}}}a0=a0['nextElementSibling'];}return{'id':X,'obj':Y};}let J=A(z),K='',L='',M=B(J),N={},O={},P=J['documentElement']['childNodes'],Q,R;for(Q=0x0;Q<P['length'];Q++){let W=P[Q];if(W[am(0x1a2)]===am(0x194))W[am(0x1b5)]['type']!==void 0x0&&(W['attributes']['type']['value']==='name'?K=W[am(0x1ac)]:W['attributes'][am(0x193)]['value']==='author'&&(L=W['textContent']));else{if(W['nodeName']==='material'){let X=D(W);N[X['id']]=X['material'];}else{if(W['nodeName']==='object'){let Y=I(W);O[Y['id']]=Y[am(0x19b)];}}}}let U=new g(),V=new m({'name':h['DEFAULT_MATERIAL_NAME'],'color':0xaaaaff,'flatShading':!0x0});U['name']=K,U['userData'][am(0x190)]=L,U['userData']['loader']='AMF';for(let Z in O){let a0=O[Z],a1=a0['meshes'],a2=new g();for(a2['name']=a0['name']||'',Q=0x0;Q<a1['length'];Q++){let a3=V,a4=a1[Q],a5=new q(a4[am(0x1ab)],0x3),a6=null;if(a4['normals']['length']&&(a6=new q(a4['normals'],0x3)),a4['color']){let a8=a4['color'];a3=V['clone'](),a3['color']=new k(a8['r'],a8['g'],a8['b']),a8['a']!==0x1&&(a3['transparent']=!0x0,a3['opacity']=a8['a']);}let a7=a4['volumes'];for(R=0x0;R<a7['length'];R++){let a9=a7[R],aa=new p(),ab=a3;aa[am(0x1a0)](a9['triangles']),aa['setAttribute']('position',a5['clone']()),a6&&aa['setAttribute']('normal',a6['clone']()),N[a9['materialId']]!==void 0x0&&(ab=N[a9['materialId']]),aa['scale'](M,M,M),a2['add'](new j(aa,ab[am(0x1ad)]()));}}U['add'](a2);}return U;}};export{l as AMFLoader};
@@ -1 +1 @@
1
- var a7=j;(function(H,I){var a6=j,J=H();while(!![]){try{var K=parseInt(a6(0x1d5))/0x1*(-parseInt(a6(0x1d8))/0x2)+-parseInt(a6(0x1d6))/0x3*(parseInt(a6(0x1c8))/0x4)+-parseInt(a6(0x1d3))/0x5*(parseInt(a6(0x1cf))/0x6)+-parseInt(a6(0x1c6))/0x7*(-parseInt(a6(0x1c4))/0x8)+-parseInt(a6(0x1c5))/0x9+parseInt(a6(0x1d7))/0xa+parseInt(a6(0x1d9))/0xb*(parseInt(a6(0x1d4))/0xc);if(K===I)break;else J['push'](J['shift']());}catch(L){J['push'](J['shift']());}}}(b,0x94b8d));import{t as k}from'./_plugin-vue_export-helper.js';function j(a,c){a=a-0x1c3;var d=b();var e=d[a];return e;}import{computed as q,createElementBlock as w,createElementVNode as x,defineComponent as z,normalizeStyle as A,onBeforeUnmount as B,onMounted as C,openBlock as D,ref as E,toDisplayString as F,watch as G}from'vue';var f={'class':'audio-viewer'},p={'class':'audio-card'},m={'class':'audio-copy'},h={'class':'audio-kicker'},g={'class':'audio-meter'},_={'class':'audio-progress','aria-hidden':'true'},v=[a7(0x1d1)],y=k(z({'__name':'AudioViewer','props':{'data':{},'type':{}},'setup'(H){var a8=a7;let I=H,J=E(null),K=E(''),L=E(0x0),P=E(0x0),Q=E(!0x1),R={'aac':a8(0x1ca),'flac':'audio/flac','m4a':a8(0x1d0),'mp3':'audio/mpeg','mpeg':'audio/mpeg','oga':'audio/ogg','ogg':'audio/ogg','opus':'audio/ogg;\x20codecs=opus','wav':'audio/wav','weba':'audio/webm'},U=q(()=>I[a8(0x1d2)]['trim']()[a8(0x1da)]()),V=q(()=>R[U[a8(0x1cb)]]||'audio/*'),W=q(()=>U[a8(0x1cb)]['toUpperCase']()||'AUDIO'),X=q(()=>!Number['isFinite'](P['value'])||P['value']<=0x0?0x0:Math['min'](0x64,Math['max'](0x0,L['value']/P['value']*0x64))),Y=a3=>{var a9=a8;if(!Number['isFinite'](a3)||a3<=0x0)return'00:00';let a4=Math['floor'](a3/0x3c),a5=Math['floor'](a3%0x3c);return String(a4)['padStart'](0x2,'0')+':'+String(a5)[a9(0x1c9)](0x2,'0');},Z=()=>{var aa=a8;K['value']&&(URL['revokeObjectURL'](K['value']),K[aa(0x1cb)]='');},a0=()=>{var ab=a8;Z(),L['value']=0x0,P[ab(0x1cb)]=0x0,Q['value']=!0x1,K['value']=URL['createObjectURL'](new Blob([I[ab(0x1c3)]],{'type':V['value']}));},a1=()=>{var a3;P['value']=((a3=J['value'])==null?void 0x0:a3['duration'])||0x0,Q['value']=!0x0;},a2=()=>{var ac=a8,a3;L['value']=((a3=J[ac(0x1cb)])==null?void 0x0:a3['currentTime'])||0x0;};return C(a0),G(()=>[I['data'],I['type']],a0),B(Z),(a3,a4)=>(D(),w('div',f,[x('section',p,[a4[0x2]||(a4[0x2]=x('div',{'class':'audio-art'},[x('span'),x('i')],-0x1)),x(a8(0x1c7),m,[x(a8(0x1cd),h,F(W['value']),0x1),a4[0x0]||(a4[0x0]=x('strong',null,'音频预览',-0x1)),a4[0x1]||(a4[0x1]=x('p',null,a8(0x1ce),-0x1))]),x('div',g,[x('span',null,F(Y(L['value'])),0x1),x('div',_,[x('i',{'style':A({'width':X[a8(0x1cb)]+'%'})},null,0x4)]),x('span',null,F(Q['value']?Y(P[a8(0x1cb)]):'--:--'),0x1)]),x('audio',{'ref_key':'audioRef','ref':J,'class':a8(0x1cc),'src':K['value'],'controls':'','preload':'metadata','onLoadedmetadata':a1,'onTimeupdate':a2},'\x20当前浏览器不支持音频播放。\x20',0x28,v)])]));}}),[['__scopeId','data-v-608bd328']]);function b(){var ad=['2131660CxJTOf','1814Wdxsmd','20185uEiTdg','toLowerCase','data','2791224vtcCCA','3352293sQLypi','21GMupiU','div','1056GfruXM','padStart','audio/aac','value','audio-control','span','使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。','114pyfbVQ','audio/mp4','src','type','286175ZLYGDB','10608zXqIIk','556gZxeON','3507SranrO'];b=function(){return ad;};return b();}export{y as default};
1
+ var ad=j;(function(H,I){var a6=j,J=H();while(!![]){try{var K=-parseInt(a6(0x72))/0x1*(parseInt(a6(0x77))/0x2)+parseInt(a6(0x6c))/0x3*(-parseInt(a6(0x7c))/0x4)+parseInt(a6(0x6b))/0x5+-parseInt(a6(0x74))/0x6*(parseInt(a6(0x71))/0x7)+-parseInt(a6(0x70))/0x8+parseInt(a6(0x7e))/0x9*(parseInt(a6(0x7f))/0xa)+parseInt(a6(0x7b))/0xb;if(K===I)break;else J['push'](J['shift']());}catch(L){J['push'](J['shift']());}}}(b,0xd382d));function b(){var ae=['audio/aac','3740328TwhICZ','7hXlhRA','2DllwsC','floor','235842lRlUQW','audio/wav','audioRef','1591034vxxwll','createObjectURL','value','duration','24154031iYdmoj','5608QAjsrt','data-v-608bd328','27ZtTKhk','1049350xcmZhZ','6067445WdJnQh','1626TCJqtI','span','currentTime'];b=function(){return ae;};return b();}function j(a,c){a=a-0x6b;var d=b();var e=d[a];return e;}import{t as k}from'./_plugin-vue_export-helper.js';import{computed as q,createElementBlock as w,createElementVNode as x,defineComponent as z,normalizeStyle as A,onBeforeUnmount as B,onMounted as C,openBlock as D,ref as E,toDisplayString as F,watch as G}from'vue';var f={'class':'audio-viewer'},p={'class':'audio-card'},m={'class':'audio-copy'},h={'class':'audio-kicker'},g={'class':'audio-meter'},_={'class':'audio-progress','aria-hidden':'true'},v=['src'],y=k(z({'__name':'AudioViewer','props':{'data':{},'type':{}},'setup'(H){var a7=j;let I=H,J=E(null),K=E(''),L=E(0x0),P=E(0x0),Q=E(!0x1),R={'aac':a7(0x6f),'flac':'audio/flac','m4a':'audio/mp4','mp3':'audio/mpeg','mpeg':'audio/mpeg','oga':'audio/ogg','ogg':'audio/ogg','opus':'audio/ogg;\x20codecs=opus','wav':a7(0x75),'weba':'audio/webm'},U=q(()=>I['type']['trim']()['toLowerCase']()),V=q(()=>R[U['value']]||'audio/*'),W=q(()=>U['value']['toUpperCase']()||'AUDIO'),X=q(()=>!Number['isFinite'](P['value'])||P['value']<=0x0?0x0:Math['min'](0x64,Math['max'](0x0,L['value']/P['value']*0x64))),Y=a3=>{var a8=a7;if(!Number['isFinite'](a3)||a3<=0x0)return'00:00';let a4=Math[a8(0x73)](a3/0x3c),a5=Math['floor'](a3%0x3c);return String(a4)['padStart'](0x2,'0')+':'+String(a5)['padStart'](0x2,'0');},Z=()=>{var a9=a7;K[a9(0x79)]&&(URL['revokeObjectURL'](K['value']),K['value']='');},a0=()=>{var aa=a7;Z(),L['value']=0x0,P['value']=0x0,Q['value']=!0x1,K[aa(0x79)]=URL[aa(0x78)](new Blob([I['data']],{'type':V['value']}));},a1=()=>{var ab=a7,a3;P[ab(0x79)]=((a3=J['value'])==null?void 0x0:a3[ab(0x7a)])||0x0,Q[ab(0x79)]=!0x0;},a2=()=>{var ac=a7,a3;L[ac(0x79)]=((a3=J['value'])==null?void 0x0:a3[ac(0x6e)])||0x0;};return C(a0),G(()=>[I['data'],I['type']],a0),B(Z),(a3,a4)=>(D(),w('div',f,[x('section',p,[a4[0x2]||(a4[0x2]=x('div',{'class':'audio-art'},[x('span'),x('i')],-0x1)),x('div',m,[x(a7(0x6d),h,F(W['value']),0x1),a4[0x0]||(a4[0x0]=x('strong',null,'音频预览',-0x1)),a4[0x1]||(a4[0x1]=x('p',null,'使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。',-0x1))]),x('div',g,[x('span',null,F(Y(L['value'])),0x1),x('div',_,[x('i',{'style':A({'width':X['value']+'%'})},null,0x4)]),x('span',null,F(Q[a7(0x79)]?Y(P['value']):'--:--'),0x1)]),x('audio',{'ref_key':a7(0x76),'ref':J,'class':'audio-control','src':K['value'],'controls':'','preload':'metadata','onLoadedmetadata':a1,'onTimeupdate':a2},'\x20当前浏览器不支持音频播放。\x20',0x28,v)])]));}}),[['__scopeId',ad(0x7d)]]);export{y as default};