@flyfish-group/file-viewer3 1.0.23 → 1.0.24

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 (259) hide show
  1. package/README.en.md +25 -11
  2. package/README.md +37 -23
  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/PptxRender.js +1 -1
  24. package/dist/components/STLLoader.js +1 -1
  25. package/dist/components/TDSLoader.js +1 -1
  26. package/dist/components/USDLoader.js +1 -1
  27. package/dist/components/UmdViewer.js +1 -1
  28. package/dist/components/VRMLLoader.js +1 -1
  29. package/dist/components/VTKLoader.js +1 -1
  30. package/dist/components/XYZLoader.js +1 -1
  31. package/dist/components/XlsxTable.js +1 -1
  32. package/dist/components/__vite-browser-external.js +1 -1
  33. package/dist/components/_plugin-vue_export-helper.js +1 -1
  34. package/dist/components/ar-SA-G6X2FPQ2.js +1 -1
  35. package/dist/components/arc.js +1 -1
  36. package/dist/components/architecture-7EHR7CIX.js +1 -1
  37. package/dist/components/architectureDiagram-3BPJPVTR.js +1 -1
  38. package/dist/components/archive.js +1 -1
  39. package/dist/components/asyncToGenerator.js +1 -1
  40. package/dist/components/audio.js +1 -1
  41. package/dist/components/az-AZ-76LH7QW2.js +1 -1
  42. package/dist/components/bash.js +1 -1
  43. package/dist/components/bg-BG-XCXSNQG7.js +1 -1
  44. package/dist/components/blockDiagram-GPEHLZMM.js +1 -1
  45. package/dist/components/bn-BD-2XOGV67Q.js +1 -1
  46. package/dist/components/c4Diagram-AAUBKEIU.js +1 -1
  47. package/dist/components/ca-ES-6MX7JW3Y.js +1 -1
  48. package/dist/components/cad.js +1 -1
  49. package/dist/components/cfb.js +1 -1
  50. package/dist/components/channel.js +1 -1
  51. package/dist/components/chunk-2J33WTMH.js +1 -1
  52. package/dist/components/chunk-3OPIFGDE.js +1 -1
  53. package/dist/components/chunk-4BX2VUAB.js +1 -1
  54. package/dist/components/chunk-55IACEB6.js +1 -1
  55. package/dist/components/chunk-5ZQYHXKU.js +1 -1
  56. package/dist/components/chunk-6U3AYISY.js +1 -1
  57. package/dist/components/chunk-727SXJPM.js +1 -1
  58. package/dist/components/chunk-AGHRB4JF.js +1 -1
  59. package/dist/components/chunk-AQP2D5EJ.js +1 -1
  60. package/dist/components/chunk-BSJP7CBP.js +1 -1
  61. package/dist/components/chunk-CSCIHK7Q.js +1 -1
  62. package/dist/components/chunk-FMBD7UC4.js +1 -1
  63. package/dist/components/chunk-K2UTITRG.js +1 -1
  64. package/dist/components/chunk-KSCS5N6A.js +1 -1
  65. package/dist/components/chunk-L5ZTLDWV.js +1 -1
  66. package/dist/components/chunk-LZXEDZCA.js +1 -1
  67. package/dist/components/chunk-ND2GUHAM.js +1 -1
  68. package/dist/components/chunk-NNHCCRGN.js +1 -1
  69. package/dist/components/chunk-NZK2D7GU.js +1 -1
  70. package/dist/components/chunk-O5CBEL6O.js +1 -1
  71. package/dist/components/chunk-QZHKN3VN.js +1 -1
  72. package/dist/components/chunk-SRAX5OIU.js +1 -1
  73. package/dist/components/chunk-WU5MYG2G.js +1 -1
  74. package/dist/components/chunk-XPW4576I.js +1 -1
  75. package/dist/components/chunk-Z3N5DIM6.js +1 -1
  76. package/dist/components/chunk-ZUYEQ4TG.js +1 -1
  77. package/dist/components/chunk.js +1 -1
  78. package/dist/components/classDiagram-4FO5ZUOK.js +1 -1
  79. package/dist/components/classDiagram-v2-Q7XG4LA2.js +1 -1
  80. package/dist/components/compiler.js +1 -1
  81. package/dist/components/core.js +1 -1
  82. package/dist/components/cose-bilkent-S5V4N54A.js +1 -1
  83. package/dist/components/cpp.js +1 -1
  84. package/dist/components/cs-CZ-2BRQDIVT.js +1 -1
  85. package/dist/components/csharp.js +1 -1
  86. package/dist/components/css.js +1 -1
  87. package/dist/components/cytoscape.esm.js +1 -1
  88. package/dist/components/da-DK-5WZEPLOC.js +1 -1
  89. package/dist/components/dagre-BM42HDAG.js +1 -1
  90. package/dist/components/dagre.js +1 -1
  91. package/dist/components/de-DE-XR44H4JA.js +1 -1
  92. package/dist/components/defaultLocale.js +1 -1
  93. package/dist/components/defineProperty.js +1 -1
  94. package/dist/components/diagram-2AECGRRQ.js +1 -1
  95. package/dist/components/diagram-5GNKFQAL.js +1 -1
  96. package/dist/components/diagram-KO2AKTUF.js +1 -1
  97. package/dist/components/diagram-LMA3HP47.js +1 -1
  98. package/dist/components/diagram-OG6HWLK6.js +1 -1
  99. package/dist/components/diff.js +1 -1
  100. package/dist/components/directory-open-01563666.js +1 -1
  101. package/dist/components/directory-open-4ed118d0.js +1 -1
  102. package/dist/components/dist.js +1 -1
  103. package/dist/components/dist2.js +1 -1
  104. package/dist/components/dist3.js +1 -1
  105. package/dist/components/documentSearch.js +1 -1
  106. package/dist/components/docx-preview.js +1 -1
  107. package/dist/components/drawing.js +1 -1
  108. package/dist/components/ebook.js +1 -1
  109. package/dist/components/eda.js +1 -1
  110. package/dist/components/el-GR-BZB4AONW.js +1 -1
  111. package/dist/components/email.js +1 -1
  112. package/dist/components/en-B4ZKOASM.js +1 -1
  113. package/dist/components/erDiagram-TEJ5UH35.js +1 -1
  114. package/dist/components/es-ES-U4NZUMDT.js +1 -1
  115. package/dist/components/eu-ES-A7QVB2H4.js +1 -1
  116. package/dist/components/eventmodeling-FCH6USID.js +1 -1
  117. package/dist/components/fa-IR-HGAKTJCU.js +1 -1
  118. package/dist/components/fflate.module.js +1 -1
  119. package/dist/components/fi-FI-Z5N7JZ37.js +1 -1
  120. package/dist/components/file-open-002ab408.js +1 -1
  121. package/dist/components/file-open-7c801643.js +1 -1
  122. package/dist/components/file-save-3189631c.js +1 -1
  123. package/dist/components/file-save-745eba88.js +1 -1
  124. package/dist/components/flowDiagram-I6XJVG4X.js +1 -1
  125. package/dist/components/fr-FR-RHASNOE6.js +1 -1
  126. package/dist/components/ganttDiagram-6RSMTGT7.js +1 -1
  127. package/dist/components/gitGraph-WXDBUCRP.js +1 -1
  128. package/dist/components/gitGraphDiagram-PVQCEYII.js +1 -1
  129. package/dist/components/gl-ES-HMX3MZ6V.js +1 -1
  130. package/dist/components/global-compiler.js +1 -1
  131. package/dist/components/global-renderer.js +1 -1
  132. package/dist/components/go.js +1 -1
  133. package/dist/components/graphlib.js +1 -1
  134. package/dist/components/he-IL-6SHJWFNN.js +1 -1
  135. package/dist/components/hi-IN-IWLTKZ5I.js +1 -1
  136. package/dist/components/hu-HU-A5ZG7DT2.js +1 -1
  137. package/dist/components/id-ID-SAP4L64H.js +1 -1
  138. package/dist/components/image-GAAHSSAO.js +1 -1
  139. package/dist/components/image-blob-reduce.esm.js +1 -1
  140. package/dist/components/image.js +1 -1
  141. package/dist/components/info-J43DQDTF.js +1 -1
  142. package/dist/components/infoDiagram-5YYISTIA.js +1 -1
  143. package/dist/components/ini.js +1 -1
  144. package/dist/components/init.js +1 -1
  145. package/dist/components/ishikawaDiagram-YF4QCWOH.js +1 -1
  146. package/dist/components/it-IT-JPQ66NNP.js +1 -1
  147. package/dist/components/ja-JP-DBVTYXUO.js +1 -1
  148. package/dist/components/java.js +1 -1
  149. package/dist/components/javascript.js +1 -1
  150. package/dist/components/journeyDiagram-JHISSGLW.js +1 -1
  151. package/dist/components/json.js +1 -1
  152. package/dist/components/jszip.min.js +1 -1
  153. package/dist/components/kaa-6HZHGXH3.js +1 -1
  154. package/dist/components/kab-KAB-ZGHBKWFO.js +1 -1
  155. package/dist/components/kanban-definition-UN3LZRKU.js +1 -1
  156. package/dist/components/katex.js +1 -1
  157. package/dist/components/kk-KZ-P5N5QNE5.js +1 -1
  158. package/dist/components/km-KH-HSX4SM5Z.js +1 -1
  159. package/dist/components/ko-KR-MTYHY66A.js +1 -1
  160. package/dist/components/ku-TR-6OUDTVRD.js +1 -1
  161. package/dist/components/lib.js +1 -1
  162. package/dist/components/libarchive.js +1 -1
  163. package/dist/components/linear.js +1 -1
  164. package/dist/components/lt-LT-XHIRWOB4.js +1 -1
  165. package/dist/components/lv-LV-5QDEKY6T.js +1 -1
  166. package/dist/components/markdown.js +1 -1
  167. package/dist/components/md.js +1 -1
  168. package/dist/components/mermaid-parser.core.js +1 -1
  169. package/dist/components/mindmap-definition-RKZ34NQL.js +1 -1
  170. package/dist/components/model.js +1 -1
  171. package/dist/components/mp4.js +1 -1
  172. package/dist/components/mr-IN-CRQNXWMA.js +1 -1
  173. package/dist/components/my-MM-5M5IBNSE.js +1 -1
  174. package/dist/components/nb-NO-T6EIAALU.js +1 -1
  175. package/dist/components/nestedRender.js +1 -1
  176. package/dist/components/nl-NL-IS3SIHDZ.js +1 -1
  177. package/dist/components/nn-NO-6E72VCQL.js +1 -1
  178. package/dist/components/objectSpread2.js +1 -1
  179. package/dist/components/objectWithoutProperties.js +1 -1
  180. package/dist/components/oc-FR-POXYY2M6.js +1 -1
  181. package/dist/components/ofd.js +1 -1
  182. package/dist/components/ofd2.js +1 -1
  183. package/dist/components/ordinal.js +1 -1
  184. package/dist/components/pa-IN-N4M65BXN.js +1 -1
  185. package/dist/components/packet-YPE3B663.js +1 -1
  186. package/dist/components/pdf.js +1 -1
  187. package/dist/components/percentages-BXMCSKIN.js +1 -1
  188. package/dist/components/php.js +1 -1
  189. package/dist/components/pica.js +1 -1
  190. package/dist/components/pie-LRSECV5Y.js +1 -1
  191. package/dist/components/pie.js +1 -1
  192. package/dist/components/pieDiagram-4H26LBE5.js +1 -1
  193. package/dist/components/pl-PL-T2D74RX3.js +1 -1
  194. package/dist/components/postal-mime.js +1 -1
  195. package/dist/components/pptx.js +1 -1
  196. package/dist/components/printLayout.js +1 -1
  197. package/dist/components/prod.js +1 -1
  198. package/dist/components/pt-BR-5N22H2LF.js +1 -1
  199. package/dist/components/pt-PT-UZXXM6DQ.js +1 -1
  200. package/dist/components/python.js +1 -1
  201. package/dist/components/quadrantDiagram-W4KKPZXB.js +1 -1
  202. package/dist/components/radar-GUYGQ44K.js +1 -1
  203. package/dist/components/renderer.js +1 -1
  204. package/dist/components/requirementDiagram-4Y6WPE33.js +1 -1
  205. package/dist/components/ro-RO-JPDTUUEW.js +1 -1
  206. package/dist/components/rough.esm.js +1 -1
  207. package/dist/components/roundRect.js +1 -1
  208. package/dist/components/ru-RU-B4JR7IUQ.js +1 -1
  209. package/dist/components/rust.js +1 -1
  210. package/dist/components/sankeyDiagram-5OEKKPKP.js +1 -1
  211. package/dist/components/sequenceDiagram-3UESZ5HK.js +1 -1
  212. package/dist/components/shared.js +1 -1
  213. package/dist/components/shared2.js +1 -1
  214. package/dist/components/si-LK-N5RQ5JYF.js +1 -1
  215. package/dist/components/sk-SK-C5VTKIMK.js +1 -1
  216. package/dist/components/sl-SI-NN7IZMDC.js +1 -1
  217. package/dist/components/sourceLoading.js +1 -1
  218. package/dist/components/sql.js +1 -1
  219. package/dist/components/src.js +1 -1
  220. package/dist/components/src2.js +1 -1
  221. package/dist/components/stateDiagram-AJRCARHV.js +1 -1
  222. package/dist/components/stateDiagram-v2-BHNVJYJU.js +1 -1
  223. package/dist/components/subset-shared.chunk.js +1 -1
  224. package/dist/components/subset-worker.chunk.js +1 -1
  225. package/dist/components/sv-SE-XGPEYMSR.js +1 -1
  226. package/dist/components/ta-IN-2NMHFXQM.js +1 -1
  227. package/dist/components/text.js +1 -1
  228. package/dist/components/th-TH-HPSO5L25.js +1 -1
  229. package/dist/components/three.module.js +1 -1
  230. package/dist/components/time.js +1 -1
  231. package/dist/components/timeline-definition-PNZ67QCA.js +1 -1
  232. package/dist/components/tr-TR-DEFEU3FU.js +1 -1
  233. package/dist/components/treeView-BLDUP644.js +1 -1
  234. package/dist/components/treemap-LRROVOQU.js +1 -1
  235. package/dist/components/typescript.js +1 -1
  236. package/dist/components/typst.js +1 -1
  237. package/dist/components/uk-UA-QMV73CPH.js +1 -1
  238. package/dist/components/umd.js +1 -1
  239. package/dist/components/use.js +1 -1
  240. package/dist/components/util.js +1 -1
  241. package/dist/components/vennDiagram-CIIHVFJN.js +1 -1
  242. package/dist/components/vi-VN-M7AON7JQ.js +1 -1
  243. package/dist/components/wardley-L42UT6IY.js +1 -1
  244. package/dist/components/wardleyDiagram-YWT4CUSO.js +1 -1
  245. package/dist/components/wasm-pack-shim.js +1 -1
  246. package/dist/components/wasm-pack-shim2.js +1 -1
  247. package/dist/components/wasm.js +1 -1
  248. package/dist/components/word.js +1 -1
  249. package/dist/components/worker-ref.js +1 -1
  250. package/dist/components/xlsx.js +1 -1
  251. package/dist/components/xml.js +1 -1
  252. package/dist/components/xychartDiagram-2RQKCTM6.js +1 -1
  253. package/dist/components/yaml.js +1 -1
  254. package/dist/components/zh-CN-LNUGB5OW.js +1 -1
  255. package/dist/components/zh-HK-E62DVLB3.js +1 -1
  256. package/dist/components/zh-TW-RAJ6MFWO.js +1 -1
  257. package/dist/file-viewer3.css +1 -1
  258. package/dist/index.mjs +1 -1
  259. package/package.json +2 -2
package/README.en.md CHANGED
@@ -15,6 +15,7 @@ The viewer does not require a backend conversion service. It is designed for OA
15
15
  - Official documentation: [doc.flyfish.dev](https://doc.flyfish.dev)
16
16
  - Online demo: [viewer.flyfish.dev](https://viewer.flyfish.dev)
17
17
  - Document comparison demo: [viewer.flyfish.dev/compare.html](https://viewer.flyfish.dev/compare.html)
18
+ - Release downloads: [github.com/flyfish-dev/file-viewer/releases](https://github.com/flyfish-dev/file-viewer/releases)
18
19
  - GitHub artifact repository: [github.com/flyfish-dev/file-viewer](https://github.com/flyfish-dev/file-viewer)
19
20
  - Gitee artifact mirror: [gitee.com/flyfish-dev/file-viewer](https://gitee.com/flyfish-dev/file-viewer)
20
21
  - Source access and commercial customization: [https://dev.flyfish.group/shop](https://dev.flyfish.group/shop)
@@ -23,18 +24,18 @@ The viewer does not require a backend conversion service. It is designed for OA
23
24
 
24
25
  | Stack | Package | Version | Recommended branch | Notes |
25
26
  | --- | --- | --- | --- | --- |
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 |
27
+ | Vue 3 | `@flyfish-group/file-viewer3` | `1.0.24` | `v3` | Recommended version and the runtime baseline for React / vanilla JS iframe integrations |
28
+ | Vue 2.7 | `@flyfish-group/file-viewer` | `1.0.24` | `main` | Vue 2 compatible package with the same format coverage and API semantics |
29
+ | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.24` | adapter package | iframe component that loads `/file-viewer/index.html` by default |
30
+ | Vanilla JavaScript | `@flyfish-group/file-viewer-web` | `1.0.24` | adapter package | iframe helpers and static viewer asset copier |
30
31
 
31
32
  For intranet or offline environments, this artifact repository also ships npm tarballs under `artifacts/`:
32
33
 
33
34
  ```bash
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
35
+ npm install ./artifacts/flyfish-group-file-viewer3-1.0.24.tgz
36
+ npm install ./artifacts/flyfish-group-file-viewer-1.0.24.tgz
37
+ npm install ./artifacts/flyfish-group-file-viewer-web-1.0.24.tgz
38
+ npm install ./artifacts/flyfish-group-file-viewer-react-1.0.24.tgz
38
39
  ```
39
40
 
40
41
  When installing the React tarball offline, install the same-version web tarball first because the React package depends on `@flyfish-group/file-viewer-web`.
@@ -51,12 +52,25 @@ Then allow `@flyfish-group/file-viewer-web`, or manually copy the bundled viewer
51
52
  pnpm exec file-viewer-copy-assets ./public/file-viewer
52
53
  ```
53
54
 
55
+ GitHub Releases provide all distribution downloads:
56
+
57
+ | File | Purpose |
58
+ | --- | --- |
59
+ | `file-viewer-v3-*-demo.tar.gz` | Main demo / iframe private deployment static site; extract it and use `/index.html?url=...` |
60
+ | `file-viewer-v3-*-adapter-demo.tar.gz` | React / vanilla JavaScript adapter demo site |
61
+ | `file-viewer-v3-*-lib-dist.tar.gz` | Vue 3 library dist for offline inspection or self-hosted packaging |
62
+ | `file-viewer-v3-*-docs.tar.gz` | Documentation site static output |
63
+ | `flyfish-group-file-viewer3-*.tgz` | Vue 3 local npm package |
64
+ | `flyfish-group-file-viewer-*.tgz` | Vue 2.7 local npm package |
65
+ | `flyfish-group-file-viewer-web-*.tgz` | Vanilla JavaScript iframe helper with viewer asset copy tooling |
66
+ | `flyfish-group-file-viewer-react-*.tgz` | React iframe component; install the same-version web package together with it |
67
+
54
68
  ![Flyfish Viewer demo](docs/_images/demo-main.png)
55
69
 
56
70
  ## Why Use It
57
71
 
58
72
  - **Pure frontend and serverless.** File parsing and rendering happen in the browser. You do not need Office Server, a LibreOffice daemon, or a document conversion backend.
59
- - **Broad format coverage.** The current release maps 149 extensions across 20 preview pipelines, including Office, PDF, OFD, Typst, archives, email, EDA files, CAD, 3D models, Excalidraw, draw.io, EPUB, UMD, Markdown, images, audio, video, and source code.
73
+ - **Broad format coverage.** The current release maps 152 extensions across 20 preview pipelines, including Office, PDF, OFD, Typst, archives, email, EDA files, CAD, 3D models, Excalidraw, draw.io, EPUB, UMD, Markdown, images, audio, video, and source code.
60
74
  - **Lazy loaded renderers.** Heavy PDF, Office, OFD, Typst, archive, email, CAD, 3D, ebook, Markdown, and code highlighting dependencies are loaded only when the file type needs them.
61
75
  - **Production-ready operations.** The viewer includes original file download, full rendered printing, rendered HTML export, watermark options, theme options, lifecycle hooks, iframe events, and before-operation guards for permission checks.
62
76
  - **Better document reading.** Word and PDF keep a grey workspace, white paper surface, centered reading, width fitting, navigation, zoom, rotation, and complete print / HTML export paths.
@@ -343,7 +357,7 @@ The artifact repository also contains:
343
357
  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:
344
358
 
345
359
  ```bash
346
- docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.23
360
+ docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.24
347
361
  ```
348
362
 
349
363
  Then open:
@@ -357,7 +371,7 @@ If you build the image yourself, use the provided `Dockerfile` and keep the stat
357
371
 
358
372
  ## Public Artifacts vs Source Code
359
373
 
360
- This public repository is for artifact delivery. It contains minified build output, static demo sites, sample files, documentation output, and npm tarballs. It intentionally does not include the private source tree.
374
+ This public repository is for artifact delivery. It contains minified build output, static demo sites, sample files, documentation output, and npm tarballs. It intentionally does not include the private source tree. The Gitee mirror is synchronized from a clean latest-artifact snapshot when needed, so domestic users can clone the full expanded artifact repository without inheriting oversized binary release history.
361
375
 
362
376
  If you need source code access, second development resources, or commercial customization, use the self-service source access portal:
363
377
 
package/README.md CHANGED
@@ -15,7 +15,8 @@
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.23`
18
+ - Release 下载: [github.com/flyfish-dev/file-viewer/releases](https://github.com/flyfish-dev/file-viewer/releases)
19
+ - Docker 镜像发布目标: `flyfishdev/file-viewer:1.0.24`
19
20
  - 公开成品仓库(GitHub): [github.com/flyfish-dev/file-viewer](https://github.com/flyfish-dev/file-viewer)
20
21
  - 公开成品仓库(Gitee): [gitee.com/flyfish-dev/file-viewer](https://gitee.com/flyfish-dev/file-viewer)
21
22
  - 源码自助开通: [https://dev.flyfish.group/shop](https://dev.flyfish.group/shop)
@@ -24,28 +25,41 @@
24
25
 
25
26
  | 技术栈 | npm 包 | 最新版本 | 推荐分支 | 说明 |
26
27
  | --- | --- | --- | --- | --- |
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 产物复制工具 |
28
+ | Vue3 | `@flyfish-group/file-viewer3` | `1.0.24` | `v3` | 主推版本,也是 React / 纯 Web 私有化 iframe 适配层的构建基线 |
29
+ | Vue2.7 | `@flyfish-group/file-viewer` | `1.0.24` | `main` | 兼容 Vue2 项目,格式能力与 Vue3 保持一致 |
30
+ | React 17 / 18 / 19 | `@flyfish-group/file-viewer-react` | `1.0.24` | 当前仓库子工程 | iframe 组件,默认加载 `/file-viewer/index.html` |
31
+ | 纯 JS | `@flyfish-group/file-viewer-web` | `1.0.24` | 当前仓库子工程 | iframe helper 和 viewer 产物复制工具 |
31
32
 
32
33
  如果你在内网、离线环境,或者 npm 发布权限还没有完成配置,也可以直接使用公开成品仓库 `artifacts/` 里的 tarball。离线安装 React 包时请先安装同版本 web 包:
33
34
 
34
35
  ```bash
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
36
+ npm install ./artifacts/flyfish-group-file-viewer3-1.0.24.tgz
37
+ npm install ./artifacts/flyfish-group-file-viewer-1.0.24.tgz
38
+ npm install ./artifacts/flyfish-group-file-viewer-web-1.0.24.tgz
39
+ npm install ./artifacts/flyfish-group-file-viewer-react-1.0.24.tgz
39
40
  ```
40
41
 
41
42
  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`。
42
43
 
44
+ GitHub Release 会同步提供完整下载项:
45
+
46
+ | 文件 | 用途 |
47
+ | --- | --- |
48
+ | `file-viewer-v3-*-demo.tar.gz` | 主 Demo / iframe 私有化部署静态站,解压后即可用 `/index.html?url=...` 接入 |
49
+ | `file-viewer-v3-*-adapter-demo.tar.gz` | React / 纯 JS 适配层演示站 |
50
+ | `file-viewer-v3-*-lib-dist.tar.gz` | Vue3 组件库构建产物,适合离线检查 dist 内容 |
51
+ | `file-viewer-v3-*-docs.tar.gz` | 文档站静态产物 |
52
+ | `flyfish-group-file-viewer3-*.tgz` | Vue3 本地 npm 安装包 |
53
+ | `flyfish-group-file-viewer-*.tgz` | Vue2.7 本地 npm 安装包 |
54
+ | `flyfish-group-file-viewer-web-*.tgz` | 纯 JS iframe helper,本地安装后复制 viewer 静态产物 |
55
+ | `flyfish-group-file-viewer-react-*.tgz` | React iframe 组件,本地安装时请同时安装同版本 web 包 |
56
+
43
57
  ![Flyfish Viewer demo](docs/_images/demo-main.png)
44
58
 
45
59
  ## 为什么值得接入
46
60
 
47
61
  - **纯前端 Serverless。** 文档解析和展示全部在浏览器内完成,部署简单,不依赖 Office 服务端、LibreOffice 守护进程或额外转码链路。
48
- - **格式覆盖完整。** 当前内置 149 个扩展名映射,覆盖 Word、Excel、PowerPoint、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、图片、音频、代码/文本和 MP4,能覆盖绝大多数业务附件场景。
62
+ - **格式覆盖完整。** 当前内置 152 个扩展名映射,覆盖 Word、Excel、PowerPoint、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、图片、音频、代码/文本和 MP4,能覆盖绝大多数业务附件场景。
49
63
  - **按需异步加载。** PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、3D 模型、绘图、Office、EPUB、UMD、Markdown 和代码高亮渲染器都按需加载,重型解析依赖不会进入其他格式的首屏路径。
50
64
  - **预览器操作完整。** 内置下载原文件、打印完整渲染结果、导出渲染后 HTML、水印开关、水印 options、主题 options、搜索高亮、上一个 / 下一个命中、行级定位和 AI 友好文本切片;PDF 使用 PDF.js 原生搜索,Word / Markdown / 代码等文本类格式使用通用 DOM 搜索,避免污染 PDF 文本层、canvas、iframe 等特殊渲染结构;`theme` 支持 `light`、`dark`、`system`,默认跟随系统,浅色业务 UI 可显式锁定 `light`;打印按钮会按当前格式和渲染链路动态显隐,Word / PDF 使用专属完整页导出适配器,不依赖当前视口,适合合同、归档和审批类场景。
51
65
  - **集成控制更完整。** 提供加载/卸载生命周期钩子、iframe 事件回传和按钮前置校验机制,下载、打印、导出前可以接入权限验证、审计确认或业务二次弹窗。
@@ -60,7 +74,7 @@ Vue3、Vue2、React 和纯 JS tarball 都会随公开成品仓库一起生成。
60
74
 
61
75
  ## 支持格式
62
76
 
63
- 当前版本内置 149 个扩展名映射,覆盖 20 条预览链路。
77
+ 当前版本内置 152 个扩展名映射,覆盖 20 条预览链路。
64
78
 
65
79
  | 类别 | 扩展名 | 当前表现 | 适合场景 |
66
80
  | --- | --- | --- | --- |
@@ -180,8 +194,8 @@ React 与纯 Web 适配层不再复制渲染器,只通过 iframe 加载 Vue3
180
194
  官网 Demo 可用于快速验证预览效果,但 React / 纯 JS 组件不会把官网 Demo 地址作为内置 viewer 地址。
181
195
 
182
196
  ```bash
183
- npm install @flyfish-group/file-viewer-react@1.0.23
184
- npm install @flyfish-group/file-viewer-web@1.0.23
197
+ npm install @flyfish-group/file-viewer-react@1.0.24
198
+ npm install @flyfish-group/file-viewer-web@1.0.24
185
199
  ```
186
200
 
187
201
  ```tsx
@@ -224,7 +238,7 @@ docker run -d \
224
238
  --name flyfish-viewer \
225
239
  --restart unless-stopped \
226
240
  -p 8080:80 \
227
- flyfishdev/file-viewer:1.0.23
241
+ flyfishdev/file-viewer:1.0.24
228
242
  ```
229
243
 
230
244
  访问:
@@ -236,7 +250,7 @@ docker run -d \
236
250
 
237
251
  ```bash
238
252
  pnpm docker:build
239
- docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.23
253
+ docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.24
240
254
  ```
241
255
 
242
256
  ## 使用说明
@@ -332,17 +346,17 @@ npm publish --access public
332
346
 
333
347
  如果 npm 账号启用了 MFA,请使用交互式终端完成浏览器确认后再等待发布结果。
334
348
 
335
- 公开 GitHub / Gitee 成品仓库只提交可直接使用的构建产物、示例、文档和 npm tarball,不提交当前源码目录。需要源码、二开包或商业自助开通的用户,可以前往 [https://dev.flyfish.group/shop](https://dev.flyfish.group/shop),付费 4.99 后自助开通。
349
+ 公开 GitHub / Gitee 成品仓库只提交可直接使用的构建产物、Demo、文档站、示例文件和 npm tarball,不提交当前源码目录。为避免 Gitee 因历史二进制膨胀超过 1GB,同步 Gitee 时会使用最新完整成品快照的干净历史,而不是把多轮构建产物历史全部带过去。需要源码、二开包或商业自助开通的用户,可以前往 [https://dev.flyfish.group/shop](https://dev.flyfish.group/shop),付费 4.99 后自助开通。
336
350
 
337
351
  ## 文档导航
338
352
 
339
- - [文档导览](docs/guide/index.md)
340
- - [快速开始](docs/guide/quickstart.md)
341
- - [Demo 说明](docs/guide/demo.md)
342
- - [组件用法](docs/guide/usage.md)
343
- - [支持格式](docs/guide/formats.md)
344
- - [本地开发与打包](docs/guide/development.md)
345
- - [Docker 部署](docs/guide/docker.md)
353
+ - [文档导览](https://doc.flyfish.dev/guide/)
354
+ - [快速开始](https://doc.flyfish.dev/guide/quickstart)
355
+ - [Demo 说明](https://doc.flyfish.dev/guide/demo)
356
+ - [组件用法](https://doc.flyfish.dev/guide/usage)
357
+ - [支持格式](https://doc.flyfish.dev/guide/formats)
358
+ - [本地开发与打包](https://doc.flyfish.dev/guide/development)
359
+ - [Docker 部署](https://doc.flyfish.dev/guide/docker)
346
360
 
347
361
  ## 开源说明
348
362
 
@@ -1 +1 @@
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
+ function k(a,b){a=a-0x1ce;const c=j();let d=c[a];return d;}const bb=k;(function(Q,R){const b8=k,S=Q();while(!![]){try{const T=-parseInt(b8(0x1e4))/0x1+-parseInt(b8(0x1fd))/0x2*(parseInt(b8(0x201))/0x3)+-parseInt(b8(0x1e1))/0x4*(-parseInt(b8(0x212))/0x5)+-parseInt(b8(0x1ee))/0x6+-parseInt(b8(0x1f0))/0x7*(-parseInt(b8(0x202))/0x8)+parseInt(b8(0x207))/0x9+parseInt(b8(0x1ff))/0xa*(parseInt(b8(0x206))/0xb);if(T===R)break;else S['push'](S['shift']());}catch(U){S['push'](S['shift']());}}}(j,0x48d1b));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';function j(){const bJ=['itemError','index','availableExtensions','material','mesh','partnumber','transform','i:in','THREE.ThreeMFLoader:\x20Implicit\x20Functions\x20are\x20implemented\x20in\x20data-only.','toLowerCase','name','resources','none','triangles\x20triangle','identifier','createObjectURL','parse','decode','DEFAULT_MATERIAL_NAME','262732YlotTL','nodeName','length','61800uOKNVU','texture2d','parseFromString','contenttype','model','querySelectorAll','operations','displaypropertiesid','item','default','3080478GNWSsY','extensions','511091LzdHEF','match','wrap','minFilter','push','pop','setAttribute','generateMipmaps','color','basematerials','THREE.3MFLoader:\x20Error\x20loading\x203MF\x20-\x20no\x203MF\x20document\x20found:\x20','pid','getAttribute','36GofwSb','opacity','36610llrclO','objectId','73812GQdxqt','64Ggbvig','wrapS','uvs','build','1386abtwBj','1847511VXacXm','object','attributes','setWithCredentials','warn','modelRels','implicitfunction','substring','filter','base','error','5dimkjr','children'];j=function(){return bJ;};return j();}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['setResponseType']('arraybuffer'),V['setRequestHeader'](U['requestHeader']),V[b9(0x20a)](U['withCredentials']),V['load'](Q,function(W){const ba=b9;try{R(U['parse'](W));}catch(X){T?T(X):console[ba(0x211)](X),U['manager'][ba(0x1ce)](Q);}},S,T);}[bb(0x1de)](a0){let a1=this,a2=new B(this['manager']);function a3(aE){const bc=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['match'](/\_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[bc(0x1f1)](/^3D\/Textures?\/.*/)&&aK['push'](aG);if(aJ[bc(0x1f4)](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[bc(0x1df)](aU));}for(let aV=0x0;aV<aJ['length'];aV++){let aW=aJ[aV],aX=aF[aW],aY=aP['decode'](aX),aZ=new DOMParser()['parseFromString'](aY,'application/xml');aZ['documentElement']['nodeName'][bc(0x1d7)]()!==bc(0x1e8)&&console['error'](bc(0x1fa),aW);let b0=aZ['querySelector']('model'),b1={};for(let b3=0x0;b3<b0['attributes']['length'];b3++){let b4=b0[bc(0x209)][b3];b4['name']['match'](/^xmlns:(.+)$/)&&(b1[b4['value']]=RegExp['$1']);}let b2=al(b0);b2['xml']=b0,0x0<Object['keys'](b1)['length']&&(b2[bc(0x1ef)]=b1),aM[aW]=b2;}for(let b5=0x0;b5<aK['length'];b5++){let b6=aK[b5];aO[b6]=aF[b6]['buffer'];}return{'rels':aS,'modelRels':aL,'model':aM,'printTicket':aN,'texture':aO};}function a4(aE){const bd=k;let aF=[],aG=new DOMParser()[bd(0x1e6)](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 be=k;let aF={};for(let aG=0x0;aG<aE[be(0x1e3)];aG++){let aH=aE[aG],aI=aH['getAttribute']('name');0x0<=['Title','Designer','Description','Copyright','LicenseTerms','Rating','CreationDate','ModificationDate']['indexOf'](aI)&&(aF[aI]=aH['textContent']);}return aF;}function a6(aE){const bf=k;let aF={'id':aE['getAttribute']('id'),'basematerials':[]},aG=aE['querySelectorAll'](bf(0x210));for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ=ad(aI);aJ[bf(0x1cf)]=aH,aF['basematerials']['push'](aJ);}return aF;}function a7(aE){const bg=k;return{'id':aE['getAttribute']('id'),'path':aE['getAttribute']('path'),'contenttype':aE['getAttribute']('contenttype'),'tilestyleu':aE[bg(0x1fc)]('tilestyleu'),'tilestylev':aE['getAttribute']('tilestylev'),'filter':aE['getAttribute'](bg(0x20f))};}function a8(aE){const bh=k;let aF={'id':aE['getAttribute']('id'),'texid':aE['getAttribute']('texid'),'displaypropertiesid':aE[bh(0x1fc)](bh(0x1eb))},aG=aE['querySelectorAll']('tex2coord'),aH=[];for(let aI=0x0;aI<aG['length'];aI++){let aJ=aG[aI],aK=aJ['getAttribute']('u'),aL=aJ['getAttribute']('v');aH['push'](parseFloat(aK),parseFloat(aL));}return aF['uvs']=new Float32Array(aH),aF;}function a9(aE){const bi=k;let aF={'id':aE['getAttribute']('id'),'displaypropertiesid':aE[bi(0x1fc)]('displaypropertiesid')},aG=aE['querySelectorAll'](bi(0x1f8)),aH=[],aI=new p();for(let aJ=0x0;aJ<aG['length'];aJ++){let aK=aG[aJ][bi(0x1fc)]('color');aI['setStyle'](aK['substring'](0x0,0x7),b),aH[bi(0x1f4)](aI['r'],aI['g'],aI['b']);}return aF['colors']=new Float32Array(aH),aF;}function aa(aE){const bj=k;let aF=aE['children'],aG={};for(let aH=0x0;aH<aF[bj(0x1e3)];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[bj(0x1d8)]]=aK['value']);}aG[aF[aH]['getAttribute'](bj(0x1dc))]=aI;}return aG;}function ab(aE){const bk=k;let aF={'id':aE['getAttribute']('id'),'displayname':aE['getAttribute']('displayname')},aG=aE['children'],aH={};for(let aI=0x0;aI<aG['length'];aI++){let aJ=aG[aI];if(aJ['nodeName']===bk(0x1d5)||aJ['nodeName']==='i:out')aH[aJ['nodeName']===bk(0x1d5)?'inputs':'outputs']=aa(aJ);else{let aK=aJ[bk(0x213)],aL={'op':aJ['nodeName'][bk(0x20e)](0x2),'identifier':aJ['getAttribute']('identifier')};for(let aM=0x0;aM<aK['length'];aM++)aL[aK[aM][bk(0x1e2)][bk(0x20e)](0x2)]=aa(aK[aM]);aH[aL['identifier']]=aL;}}return aF[bk(0x1ea)]=aH,aF;}function ac(aE){let aF={'id':aE['getAttribute']('id')},aG=aE['querySelectorAll']('pbmetallic'),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 bl=k;let aF={};return aF[bl(0x1d8)]=aE['getAttribute']('name'),aF['displaycolor']=aE['getAttribute']('displaycolor'),aF['displaypropertiesid']=aE[bl(0x1fc)]('displaypropertiesid'),aF;}function ae(aE){const bm=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['getAttribute']('z');aG['push'](parseFloat(aN),parseFloat(aO),parseFloat(aP));}aF['vertices']=new Float32Array(aG);let aI=[],aJ=[],aK=aE['querySelectorAll'](bm(0x1db));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['getAttribute']('p2'),aX=aR['getAttribute']('p3'),aY=aR['getAttribute']('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['push'](aZ);}return aF['triangleProperties']=aI,aF['triangles']=new Uint32Array(aJ),aF;}function af(aE){const bn=k;let aF=[],aG=aE[bn(0x1e9)]('component');for(let aH=0x0;aH<aG[bn(0x1e3)];aH++){let aI=aG[aH],aJ=ag(aI);aF['push'](aJ);}return aF;}function ag(aE){const bo=k;let aF={};aF[bo(0x200)]=aE['getAttribute']('objectid');let aG=aE['getAttribute']('transform');return aG&&(aF['transform']=ah(aG)),aF;}function ah(aE){let aF=[];aE['split']('\x20')['forEach'](function(aH){aF['push'](parseFloat(aH));});let aG=new q();return aG['set'](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 bp=k;let aF={'type':aE['getAttribute']('type')},aG=aE[bp(0x1fc)]('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[bp(0x1fc)](bp(0x1d3));aK&&(aF['partnumber']=aK);let aL=aE[bp(0x1fc)]('name');aL&&(aF[bp(0x1d8)]=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 bq=k;let aF={};aF[bq(0x1f9)]={};let aG=aE['querySelectorAll'](bq(0x1f9));for(let aN=0x0;aN<aG['length'];aN++){let aO=aG[aN],aP=a6(aO);aF['basematerials'][aP['id']]=aP;}aF['texture2d']={};let aH=aE['querySelectorAll']('texture2d');for(let aQ=0x0;aQ<aH[bq(0x1e3)];aQ++){let aR=aH[aQ],aS=a7(aR);aF[bq(0x1e5)][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[bq(0x1e9)](bq(0x20d));aJ['length']>0x0&&(aF[bq(0x20d)]={});for(let aW=0x0;aW<aJ['length'];aW++){let aX=aJ[aW],aY=ab(aX);aF[bq(0x20d)][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['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'](bq(0x208));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 br=k;let aF=[],aG=aE['querySelectorAll'](br(0x1ec));for(let aH=0x0;aH<aG['length'];aH++){let aI=aG[aH],aJ={'objectId':aI['getAttribute']('objectid')},aK=aI[br(0x1fc)](br(0x1d4));aK&&(aJ['transform']=ah(aK)),aF['push'](aJ);}return aF;}function al(aE){const bs=k;let aF={'unit':aE['getAttribute']('unit')||'millimeter'},aG=aE['querySelectorAll']('metadata');aG&&(aF['metadata']=a5(aG));let aH=aE['querySelector']('resources');aH&&(aF['resources']=aj(aH));let aI=aE['querySelector'](bs(0x205));return aI&&(aF['build']=ak(aI)),aF;}function am(aE,aF,aG,aH){const bt=k;let aI=aE['texid'],aJ=aG[bt(0x1d9)]['texture2d'][aI];if(aJ){let aK=aH[aJ['path']],aL=aJ[bt(0x1e7)],aM=new Blob([aK],{'type':aL}),aN=URL[bt(0x1dd)](aM),aO=a2['load'](aN,function(){URL['revokeObjectURL'](aN);});switch(aO['colorSpace']=b,aJ['tilestyleu']){case bt(0x1f2):aO[bt(0x203)]=z;break;case'mirror':aO['wrapS']=J;break;case bt(0x1da):case'clamp':aO['wrapS']=H;break;default:aO[bt(0x203)]=z;}switch(aJ['tilestylev']){case'wrap':aO['wrapT']=z;break;case'mirror':aO['wrapT']=J;break;case bt(0x1da):case'clamp':aO['wrapT']=H;break;default:aO['wrapT']=z;}switch(aJ['filter']){case'auto':aO['magFilter']=C,aO['minFilter']=E;break;case'linear':aO['magFilter']=C,aO[bt(0x1f3)]=C,aO[bt(0x1f7)]=!0x1;break;case'nearest':aO['magFilter']=L,aO['minFilter']=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 bu=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['length'];b3<b4;b3++){let b5=aW[b3];b0[bu(0x1f4)](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['push'](b1[b5['v2']*0x3+0x1]),b0['push'](b1[b5['v2']*0x3+0x2]),b0[bu(0x1f4)](b1[b5['v3']*0x3+0x0]),b0['push'](b1[b5['v3']*0x3+0x1]),b0['push'](b1[b5['v3']*0x3+0x2]);}aZ['setAttribute']('position',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 bv=k;let aL=new M(),aM=[],aN=[],aO=aG['vertices'],aP=aE[bv(0x204)];for(let aQ=0x0,aR=aF['length'];aQ<aR;aQ++){let aS=aF[aQ];aM['push'](aO[aS['v1']*0x3+0x0]),aM['push'](aO[aS['v1']*0x3+0x1]),aM[bv(0x1f4)](aO[aS['v1']*0x3+0x2]),aM['push'](aO[aS['v2']*0x3+0x0]),aM['push'](aO[aS['v2']*0x3+0x1]),aM[bv(0x1f4)](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[bv(0x1f4)](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['push'](aP[aS['p3']*0x2+0x0]),aN[bv(0x1f4)](aP[aS['p3']*0x2+0x1]);}return aL[bv(0x1f6)]('position',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 bw=k;let aI=new M(),aJ=[],aK=[],aL=aG['vertices'],aM=aE['colors'];for(let aN=0x0,aO=aF[bw(0x1e3)];aN<aO;aN++){let aP=aF[aN],aQ=aP['v1'],aR=aP['v2'],aS=aP['v3'];aJ[bw(0x1f4)](aL[aQ*0x3+0x0]),aJ[bw(0x1f4)](aL[aQ*0x3+0x1]),aJ['push'](aL[aQ*0x3+0x2]),aJ['push'](aL[aR*0x3+0x0]),aJ['push'](aL[aR*0x3+0x1]),aJ[bw(0x1f4)](aL[aR*0x3+0x2]),aJ[bw(0x1f4)](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[bw(0x1f4)](aM[aU*0x3+0x0]),aK[bw(0x1f4)](aM[aU*0x3+0x1]),aK[bw(0x1f4)](aM[aU*0x3+0x2]),aK['push'](aM[aV*0x3+0x0]),aK[bw(0x1f4)](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 bx=k;let aF=new M();return aF['setIndex'](new I(aE['triangles'],0x1)),aF['setAttribute']('position',new I(aE['vertices'],0x3)),new G(aF,new K({'name':D[bx(0x1e0)],'color':0xffffff,'flatShading':!0x0}));}function ar(aE,aF,aG,aH,aI,aJ){const by=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[by(0x1d9)][by(0x1f9)][aO],aR=an(aQ,aP,aF,aG,aH,aI,aJ);for(let aU=0x0,aV=aR[by(0x1e3)];aU<aV;aU++)aL['push'](aR[aU]);break;case'texture':let aS=aH[by(0x1d9)]['texture2dgroup'][aO];aL[by(0x1f4)](ao(aS,aP,aF,aG,aH,aI,aJ));break;case'vertexColors':let aT=aH[by(0x1d9)]['colorgroup'][aO];aL['push'](ap(aT,aP,aF,aJ));break;case'default':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 bz=k;if(aF['resources']['texture2dgroup'][aE]!==void 0x0)return'texture';if(aF[bz(0x1d9)]['basematerials'][aE]!==void 0x0)return bz(0x1d1);if(aF['resources']['colorgroup'][aE]!==void 0x0)return'vertexColors';if(aE==='default')return bz(0x1ed);}function at(aE,aF){const bA=k;let aG={},aH=aE['triangleProperties'],aI=aF['pid'];for(let aJ=0x0,aK=aH['length'];aJ<aK;aJ++){let aL=aH[aJ],aM=aL[bA(0x1fb)]===void 0x0?aI:aL[bA(0x1fb)];aM===void 0x0&&(aM='default'),aG[aM]===void 0x0&&(aG[aM]=[]),aG[aM]['push'](aL);}return aG;}function au(aE,aF,aG,aH,aI){let aJ=new A(),aK=ar(at(aE,aI),aE,aF,aG,aH,aI);for(let aL=0x0,aM=aK['length'];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[bB(0x1d0)]['length'];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 bC=k;let aH,aI=aE[bC(0x1eb)],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['substring'](0x0,0x7);return aH['color']['setStyle'](aL,b),aK['length']===0x9&&(aH[bC(0x1fe)]=parseInt(aK['charAt'](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[bD(0x200)],aF,aG,aH),aL=aF[aK['objectId']]);let aM=aL['clone'](),aN=aK['transform'];aN&&aM['applyMatrix4'](aN),aI['add'](aM);}return aI;}function az(aE,aF,aG,aH){const bE=k;let aI=aG['resources']['object'][aE];if(aI[bE(0x1d2)]){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['components'];aF[aI['id']]=aw(aM,aF,aG,aH,aI,ay);}aI['name']&&(aF[aI['id']][bE(0x1d8)]=aI['name']),aG['resources']['implicitfunction']&&console[bE(0x20b)](bE(0x1d6),aG['resources']['implicitfunction']);}function aA(aE){const bF=k;let aF=aE['model'],aG=aE[bF(0x20c)],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']['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['keys'](aP[bF(0x1d9)][bF(0x208)]);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']('.')[bG(0x1f5)]()['toLowerCase']()==='model')return aG;}}function aC(aE,aF){const bH=k;let aG=new A(),aH=aB(aF['rels']),aI=aF[bH(0x1e8)][aH['target']['substring'](0x1)]['build'];for(let aJ=0x0;aJ<aI['length'];aJ++){let aK=aI[aJ],aL=aE[aK[bH(0x200)]]['clone'](),aM=aK['transform'];aM&&aL['applyMatrix4'](aM),aG['add'](aL);}return aG;}let aD=a3(a0);return aC(aA(aD),aD);}['addExtension'](Q){const bI=bb;this[bI(0x1d0)]['push'](Q);}};export{x as ThreeMFLoader};
@@ -1 +1 @@
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
+ function d(a,c){a=a-0x1a8;const e=b();let f=e[a];return f;}function b(){const ao=['clone','color','2351760xuIbZQ','THREE.AMFLoader:\x20Unit\x20scale:\x20','log','nodeName','THREE.AMFLoader:\x20Trying\x20to\x20load\x20file\x20asset:\x20','2916960tsyjLx','value','textContent','opacity','setPath','type','metadata','1800211hKzyot','documentElement','parse','495gfgpGR','toLowerCase','material','volumes','31eMxGun','6XkjKzM','.amf','userData','materialId','113901Vtvjgs','20236hsHklu','2588APRFwB','4334SeINok','getUint8','unit','attributes','slice','length','object','meshes','26916AnTuAg','9MndKZU','AMF\x20Material','childNodes'];b=function(){return ao;};return b();}const af=d;(function(v,w){const ac=d,x=v();while(!![]){try{const y=-parseInt(ac(0x1c0))/0x1*(parseInt(ac(0x1c6))/0x2)+-parseInt(ac(0x1c5))/0x3+parseInt(ac(0x1c7))/0x4*(-parseInt(ac(0x1bc))/0x5)+parseInt(ac(0x1c1))/0x6*(-parseInt(ac(0x1b9))/0x7)+parseInt(ac(0x1ad))/0x8+parseInt(ac(0x1a8))/0x9*(-parseInt(ac(0x1b2))/0xa)+parseInt(ac(0x1c8))/0xb*(parseInt(ac(0x1d0))/0xc);if(y===w)break;else x['push'](x['shift']());}catch(z){x['push'](x['shift']());}}}(b,0x340ad));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[ad(0x1b6)](z['path']),A['setResponseType']('arraybuffer'),A['setRequestHeader'](z['requestHeader']),A['setWithCredentials'](z['withCredentials']),A['load'](v,function(B){const ae=ad;try{w(z[ae(0x1bb)](B));}catch(C){y?y(C):console['error'](C),z['manager']['itemError'](v);}},x,y);}[af(0x1bb)](z){const an=af;function A(W){const ag=d;let X=new DataView(W);if(String['fromCharCode'](X['getUint8'](0x0),X[ag(0x1c9)](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[ag(0x1af)]('THREE.AMFLoader:\x20fflate\x20missing\x20and\x20file\x20is\x20compressed.'),null;}for(a1 in a0)if(a1['toLowerCase']()[ag(0x1cc)](-0x4)===ag(0x1c2))break;console['log'](ag(0x1b1)+a1),X=new DataView(a0[a1]['buffer']);}let Y=new TextDecoder()['decode'](X),Z=new DOMParser()['parseFromString'](Y,'application/xml');return Z[ag(0x1ba)]['nodeName'][ag(0x1bd)]()==='amf'?Z:(console['log']('THREE.AMFLoader:\x20Error\x20loading\x20AMF\x20-\x20no\x20AMF\x20document\x20found.'),null);}function B(W){const ah=d;let X=0x1,Y='millimeter';W[ah(0x1ba)]['attributes'][ah(0x1ca)]!==void 0x0&&(Y=W['documentElement'][ah(0x1cb)]['unit']['value'][ah(0x1bd)]());let Z={'millimeter':0x1,'inch':25.4,'feet':304.8,'meter':0x3e8,'micron':0.001};return Z[Y]!==void 0x0&&(X=Z[Y]),console[ah(0x1af)](ah(0x1ae)+X),X;}function D(W){const ai=d;let X=ai(0x1a9),Y=W[ai(0x1cb)]['id'][ai(0x1b4)],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[ai(0x1cb)]['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['opacity']=Z['a']),{'id':Y,'material':a0};}function F(W){const aj=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[aj(0x1b4)]:Z['nodeName']==='g'?X['g']=Z[aj(0x1b4)]:Z['nodeName']==='b'?X['b']=Z['textContent']:Z['nodeName']==='a'&&(X['a']=Z['textContent']);}return X;}function G(W){const ak=d;let X={'name':'','triangles':[],'materialId':null},Y=W['firstElementChild'];for(W['attributes']['materialid']!==void 0x0&&(X[ak(0x1c4)]=W['attributes']['materialid']['nodeValue']);Y;){if(Y['nodeName']===ak(0x1b8))Y['attributes'][ak(0x1b7)]!==void 0x0&&Y['attributes']['type']['value']==='name'&&(X['name']=Y['textContent']);else{if(Y['nodeName']==='triangle'){let Z=Y['getElementsByTagName']('v1')[0x0]['textContent'],a0=Y['getElementsByTagName']('v2')[0x0]['textContent'],a1=Y['getElementsByTagName']('v3')[0x0][ak(0x1b4)];X['triangles']['push'](Z,a0,a1);}}Y=Y['nextElementSibling'];}return X;}function H(W){const al=d;let X=[],Y=[],Z=W['firstElementChild'];for(;Z;){if(Z['nodeName']==='vertex'){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['getElementsByTagName']('z')[0x0]['textContent'];X['push'](a1,a2,a3);}else{if(a0['nodeName']==='normal'){let a4=a0['getElementsByTagName']('nx')[0x0][al(0x1b4)],a5=a0['getElementsByTagName']('ny')[0x0]['textContent'],a6=a0['getElementsByTagName']('nz')[0x0]['textContent'];Y['push'](a4,a5,a6);}}a0=a0['nextElementSibling'];}}Z=Z['nextElementSibling'];}return{'vertices':X,'normals':Y};}function I(W){const am=d;let X=W['attributes']['id']['textContent'],Y={'name':'amfobject','meshes':[]},Z=null,a0=W['firstElementChild'];for(;a0;){if(a0[am(0x1b0)]==='metadata')a0['attributes']['type']!==void 0x0&&a0['attributes']['type']['value']==='name'&&(Y['name']=a0['textContent']);else{if(a0['nodeName']===am(0x1ac))Z=F(a0);else{if(a0['nodeName']==='mesh'){let a1=a0['firstElementChild'],a2={'vertices':[],'normals':[],'volumes':[],'color':Z};for(;a1;){if(a1['nodeName']==='vertices'){let a3=H(a1);a2['normals']=a2['normals']['concat'](a3['normals']),a2['vertices']=a2['vertices']['concat'](a3['vertices']);}else a1['nodeName']==='volume'&&a2[am(0x1bf)]['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'][an(0x1aa)],Q,R;for(Q=0x0;Q<P['length'];Q++){let W=P[Q];if(W['nodeName']==='metadata')W['attributes']['type']!==void 0x0&&(W['attributes']['type'][an(0x1b3)]==='name'?K=W['textContent']:W['attributes']['type'][an(0x1b3)]==='author'&&(L=W['textContent']));else{if(W['nodeName']===an(0x1be)){let X=D(W);N[X['id']]=X['material'];}else{if(W['nodeName']===an(0x1ce)){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['name']=K,U[an(0x1c3)]['author']=L,U['userData']['loader']='AMF';for(let Z in O){let a0=O[Z],a1=a0[an(0x1cf)],a2=new g();for(a2['name']=a0['name']||'',Q=0x0;Q<a1['length'];Q++){let a3=V,a4=a1[Q],a5=new q(a4['vertices'],0x3),a6=null;if(a4['normals'][an(0x1cd)]&&(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[an(0x1b5)]=a8['a']);}let a7=a4['volumes'];for(R=0x0;R<a7['length'];R++){let a9=a7[R],aa=new p(),ab=a3;aa['setIndex'](a9['triangles']),aa['setAttribute']('position',a5[an(0x1ab)]()),a6&&aa['setAttribute']('normal',a6[an(0x1ab)]()),N[a9[an(0x1c4)]]!==void 0x0&&(ab=N[a9[an(0x1c4)]]),aa['scale'](M,M,M),a2['add'](new j(aa,ab['clone']()));}}U['add'](a2);}return U;}};export{l as AMFLoader};
@@ -1 +1 @@
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};
1
+ var a7=j;(function(H,I){var a6=j,J=H();while(!![]){try{var K=-parseInt(a6(0x1a2))/0x1+parseInt(a6(0x198))/0x2*(-parseInt(a6(0x1a0))/0x3)+parseInt(a6(0x1a1))/0x4+parseInt(a6(0x194))/0x5*(parseInt(a6(0x191))/0x6)+parseInt(a6(0x190))/0x7+-parseInt(a6(0x19a))/0x8*(-parseInt(a6(0x192))/0x9)+-parseInt(a6(0x19c))/0xa*(parseInt(a6(0x195))/0xb);if(K===I)break;else J['push'](J['shift']());}catch(L){J['push'](J['shift']());}}}(b,0x9a9de));import{t as k}from'./_plugin-vue_export-helper.js';function b(){var ab=['span','min','2ogPDjO','AudioViewer','218504LkAQXY','true','10IPdDka','audio-copy','type','audio/mpeg','3063429wJftzl','2236816JbxcfX','663866vcIYHi','data-v-608bd328','div','createObjectURL','audio/ogg;\x20codecs=opus','863121YgtAKn','18YljaXv','288LYRydO','value','1565575fUgjUu','1953039QmdCKT'];b=function(){return ab;};return b();}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';function j(a,c){a=a-0x18e;var d=b();var e=d[a];return e;}var f={'class':'audio-viewer'},p={'class':'audio-card'},m={'class':a7(0x19d)},h={'class':'audio-kicker'},g={'class':'audio-meter'},_={'class':'audio-progress','aria-hidden':a7(0x19b)},v=['src'],y=k(z({'__name':a7(0x199),'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':'audio/aac','flac':'audio/flac','m4a':'audio/mp4','mp3':a8(0x19f),'mpeg':'audio/mpeg','oga':'audio/ogg','ogg':'audio/ogg','opus':a8(0x18f),'wav':'audio/wav','weba':'audio/webm'},U=q(()=>I[a8(0x19e)]['trim']()['toLowerCase']()),V=q(()=>R[U['value']]||'audio/*'),W=q(()=>U['value']['toUpperCase']()||'AUDIO'),X=q(()=>!Number['isFinite'](P['value'])||P[a8(0x193)]<=0x0?0x0:Math[a8(0x197)](0x64,Math['max'](0x0,L['value']/P['value']*0x64))),Y=a3=>{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)['padStart'](0x2,'0');},Z=()=>{var a9=a8;K[a9(0x193)]&&(URL['revokeObjectURL'](K['value']),K['value']='');},a0=()=>{var aa=a8;Z(),L['value']=0x0,P[aa(0x193)]=0x0,Q['value']=!0x1,K['value']=URL[aa(0x18e)](new Blob([I['data']],{'type':V[aa(0x193)]}));},a1=()=>{var a3;P['value']=((a3=J['value'])==null?void 0x0:a3['duration'])||0x0,Q['value']=!0x0;},a2=()=>{var a3;L['value']=((a3=J['value'])==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(a8(0x196)),x('i')],-0x1)),x('div',m,[x('span',h,F(W['value']),0x1),a4[0x0]||(a4[0x0]=x('strong',null,'音频预览',-0x1)),a4[0x1]||(a4[0x1]=x('p',null,'使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。',-0x1))]),x(a8(0x1a4),g,[x('span',null,F(Y(L['value'])),0x1),x(a8(0x1a4),_,[x('i',{'style':A({'width':X['value']+'%'})},null,0x4)]),x('span',null,F(Q[a8(0x193)]?Y(P['value']):'--:--'),0x1)]),x('audio',{'ref_key':'audioRef','ref':J,'class':'audio-control','src':K['value'],'controls':'','preload':'metadata','onLoadedmetadata':a1,'onTimeupdate':a2},'\x20当前浏览器不支持音频播放。\x20',0x28,v)])]));}}),[['__scopeId',a7(0x1a3)]]);export{y as default};